# 基于JAVA和SQL SERVER数据库实现的个人财务管理系统
# 一、需求分析
个人财务管理系统是智能化简单化个人管理的重要的组成部分。并且随着计算机技术的飞速发展,计算机在管理方面应用的旁及,利用计算机来实现个人财务管理势在必行。本文首先介绍了个人财务管理系统的开发目的,其次对个人财务管理系统的需求分析做了详细的描述。接着,又对系统数据库设计和功能结构的划分做了详细论述。然后又对个人财务管理系统的实现做了详尽的说明。在报告的最后给出了项目的测试结果以及结果分析。
本系统是对个人的收支情况做一个简单的管理,其中宝库哦个人信息管理以及收支信息管理。 其中,个人信息管理包括用户对自己的信息进行增删查改的一些操作,同样,收支信息管理包括用户对收支情况的信息进行增删查改的管理。
## 1.1 系统业务需求
该系统具体需求应该有用户登录模块,用户修改信息模块,用户修改信息模块,收支查询模块,收支删除模块,收支添加模块,收支修改模块。
## 1.2 系统技术目标
该系统的目标主要是能对个人信息以及收支信息进行较快的增删查改,同时也能对收支信息进行各种方式的查询。
## 1.3 系统的具体需求
根据以上对系统的任务和目标的分析,系统的具体需求如下:
- 个人信息:用户名(唯一),密码,姓名,性别,出生日期,工作,身份证号,电话号码
- 收支信息:收支编号(唯一),收支日期,收支方式,收支项目,收入金额,支出金额,,总金额
# 二、软件功能结构分析
由需求分析可知,软件的功能应包括:个人信息管理,收支信息管理。其中,个人信息应包括,个人信息的增删查该,登录时候验证功能。收支信息管理应包括对对收支信息的各种方式查询,以及对收支信息的增加,修改以及删除功能。当然,每个用户应对应其各自的收支信息。
## 2.1 个人信息功能
在登录界面用户输入用户名以及密码,如果用户与密码都输入正确则可以登录进系统,如果其中任何一项与数据库中的数据不匹配则要求重新输入。当用户没有账户时候,可以点击登录界面的注册按钮注册。成功进入系统后,可以进行个人信息的查询以及修改。
具体流程图如下:
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/791a7befde01fe073f9db626b936085e.writebug)
## 2.2 收支管理功能
用户登录成功后进入主界面后可以选择查询方式,全部查询:查询用户所有收入支出的信息;收入查询:查询用户收入信息;支出查询:查询用户支出信息;按日期查询:查询用户当天的收入支出信息。用户也可以对收入支出信息进行修改和删除以及添加。
具体流程图如下:
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/5bf8cc9c809e3a7a7f98808a08707764.writebug)
# 三、数据库设计
经过以上的需求的分析以及系统功能的分析,需要建立出该系统数据库的各种模型,为建立一个好的,完善的数据库做准备。
## 3.1 概念模型
由于该系统涉及的较少,只涉及到用户以及财务管理,所以设计比较简单。一个用户可以有多条收支记录,所以用户表与收支表是一对多的关系。通过PowerDesigner工具设计出的概念数据模型如下:
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/c4d36b45c2a57bcbca4f6769fd4a2f54.writebug)
其对应的E-R模型如下图:
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/a70810d1d09c6f661a99fc9885a9de7c.writebug)
## 3.2 逻辑模型
**联系转换**
一个用户可以有多条记录,而一条记录只能对应一个用户,所以用户与记录之间是一对多的关系。
**其逻辑结构设计如下**
- 个人信息(用户名,密码,姓名,性别,出生日期,工作,身份证号,电话号码)
- 收支信息(收支编号,收支日期,收支方式,收支项目,收入金额,支出金额,总金额)
**关系模式**
- 个人信息(用户名,密码,姓名,性别,出生日期,工作,身份证号,电话号码)
- 收支信息(收支编号,收支日期,收支方式,收支项目,收入金额,支出金额,总金额)
## 3.3 物理模型
通过PowerDesigner中的概念模型生成物理模型如下:
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/54fd1e9c814aee5b3d87c053634ba3c4.writebug)
## 3.4 表结构设计
**用户表**
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/ca302b5dfc37788d5d8bb818514dcc86.writebug)
**收支信息表**
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/0055e178d8ef17efd346e38db63fd222.writebug)
# 四、软件代码设计
本系统是对个人财政的管理,下面给出具体的功能模块以及代码实现。
## 4.1 功能模块
**登录界面模块**
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/8c59de5aa59cb536251db4bb8fbaf0e6.writebug)
说明:
- 该界面为登录界面,如果没有账户,则可以点击注册按钮注册
- 当用户输入的用户名或者密码输入错误时,会提示用户名或者密码输入错误
- 当点击登录时,如果用户名以及密码都正确则会提示登录成功,并跳转到主界面
**用户注册模块**
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/0ba476891634217be327193ccc9dd27c.writebug)
说明:
- 该界面为用户注册模块
- 用户填入信息,其中用户名唯一,当用户名重复时会提示“用户名已存在,请重新输入”
**主界面模块**
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/8d7535b016c442dd75486f4e2e591de6.writebug)
说明:
**该界面为用户主信息界面**
- 用户可以有多种查询方式:全部查询(查询全部收支信息)、收入查询(只查询收入信息)、支出管理(只查询支出信息)、日期查询(查询当天收支信息)
- 显示用户所有的收入总计、支出总计以及收入支出总计
**个人信息显示模块**
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/970e55ff680b9dc99a52654f66e2d0cd.writebug)
说明:
- 该界面为用户显示模块
- 用户如果不想使用该系统可以注销掉自己的账户
**个人信息修改模块**
说明:
- 修改界面与个人信息查询界面在同一模块
- 用户名不能修改
**收支信息插入模块**
说明:
- 该界面为添加收支信息界面
- 当点击主界面的插入按钮时候,会跳转到该界面
- 收支编号不能重复
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/0af5dd12a333efade4d669a0f828aa54.writebug)
**收支信息修改界面**
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/2a4ac1bd7b6e3d1e3ea9c8587f8ddf01.writebug)
说明:
- 该界面为收支信息修改界面
- 当点击主界面中的修改按钮时(必须选中一行),跳转到该界面
- 收支编号不能修改
**收支信息删除界面**
说明:
- 该功能与在主界面上
- 选中一行,然后点击删除,即可提示删除成功
## 4.2 代码实现
**登录界面主要功能实现(Login.java)**
```java
jb1.addActionListener(new ActionListener() {//登陆按钮
public void actionPerformed(ActionEvent e) {
jLabel5.setVisible(false);
String ad = jf1.getText();
String pass = jf2.getText();
int i=0;
String sc = "select userName,passWord from admin where userName='"+ad+"'";
try {
ResultSet rs = st.executeQuery(sc);
wh