家庭财务管理系统可编辑修改word版.docx

上传人:b****8 文档编号:9954244 上传时间:2023-05-22 格式:DOCX 页数:29 大小:503.65KB
下载 相关 举报
家庭财务管理系统可编辑修改word版.docx_第1页
第1页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第2页
第2页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第3页
第3页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第4页
第4页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第5页
第5页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第6页
第6页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第7页
第7页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第8页
第8页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第9页
第9页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第10页
第10页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第11页
第11页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第12页
第12页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第13页
第13页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第14页
第14页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第15页
第15页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第16页
第16页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第17页
第17页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第18页
第18页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第19页
第19页 / 共29页
家庭财务管理系统可编辑修改word版.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

家庭财务管理系统可编辑修改word版.docx

《家庭财务管理系统可编辑修改word版.docx》由会员分享,可在线阅读,更多相关《家庭财务管理系统可编辑修改word版.docx(29页珍藏版)》请在冰点文库上搜索。

家庭财务管理系统可编辑修改word版.docx

家庭财务管理系统可编辑修改word版

 

数据库原理课程设计

题目:

家庭财务管理系统

组长:

组员:

 

所属院(系):

计算机科学学院

专业年级:

计算机科学与技术

指导教师:

职称:

讲师

时间:

2015-5-27

 

摘要

1.项目的设计目标

现代社会家庭的理财观念进一步提高,理财手段变得更加丰富。

随着生

活水平和文化水平的提高,家庭购买电脑的能力和应用电脑的能力开始提高。

电脑及其应用的普及化,人们应用电脑进行家庭财务管理的观念增强,因此,开发一个通用性家庭理财软件已经成为社会需求。

本系统是一个家庭通用型理财软件,系统目标是把适合家庭化管理的各种理财手段及家庭日常收支管理实现计算机化管理,使对家庭及家庭成员的收支活动更好地进行记录并加以统计分析成为可能,也使家庭理财变得方便、全面、快捷。

2.项目的设计思路

我们是根据咨询家长在记账时一般需要做哪些记录,并且有哪些统计不方便手工处理,需要计算机帮忙处理,如果有一个这样的记账软件,用户会希望有哪些功能。

所以我们先确定了有以下几大模块:

收入记录,支出记录,借入记录,借出记录,总结。

然后就开始构思总的界面实现,以及各分界面实现,最后到数据库与各界面的链接以及相关功能实现。

第一章前言

现在,人们的生活水平和文化素质普遍提高,并且开始注重生活质量。

随着市场经济的快速发展,观念的不断更新,个人理财意识普遍增强,特别是家庭理财意识得到很大发展,在意识上,一方面,人们对家庭和个人的各方面消费有想进行统计和分析的愿望,以便更好地做好家庭收支计划,和家庭财务管理。

另一方面,各种理财手段不断丰富,如何把各种理财手段统一起来,并且能更加方便的操作成为要求。

在物质基础上,计算机的应用开始普及,人们购置计算机和使用计算机的能力增强,人均计算机拥有量将快速提高。

这些条件说明,人们有使用一个家庭化财务软件的需求。

第二章需求分析

一、调查用户需求

本系统的最终用户为以家庭为单位的个人。

根据我们日常生活中的经验,结合自己对父母或其他家庭成员的咨询与调查,得出用户的下列实际要求:

用户以家庭为单位注册一个家庭财务信息管理系统的账号,同为一个家庭的家庭成员只要知道本家庭的账号及账号密码,便可登录使用该系统。

1.家庭收入的基本信息

每个用户都有一个唯一的家庭财务信息管理系统账号,登录之后,每次收入记录都有唯一的收入编号,并且将同时记录下收入的日期,收款人等相关信息。

2.家庭支出的基本信息

每条支出记录都有唯一的编号,用户填入付款人,日期、金额等信息后,将记录到支出资产状况登记表中,并且显示出经过统计之后同一天内的支出合计总额。

3.家庭借入的基本信息

除了基本的收入支出以外,家庭财务还会涉及到借贷方面,用户在登录系统后,填入借款信息,包括是向谁借的款,借了多少等,在还款后也要填入已还金额以便查询。

4.家庭借出的基本信息

用户借出款后,要及时填入相关信息,如:

款项借给谁,是现金还是存款,当然,和借入一样,在还款之后也要及时填入已还金额,这样可以帮助用户记忆所需要的信息。

二、用户对系统的要求

1.信息要求:

用户能查询到上面提到的家庭财务的所有相关信息,包括单独的家庭收入信息、支出信息、借入信息、借出信息,还可以多表联查,以得出总的财产状况。

2.处理要求:

系统在用户进行登录时,能根据用户输入的账号和密码与用户信息登记表中的数据进行配对,配对成功即可登录到系统页面中,配对不成功则提示该账号不存在或密码错误,请重新输入。

当用户发现过去输入的收支记录有错误时,可以对其进行添加、修改以及删除,例如某账号中,李明今天发了3000元工资,则可在收入模块中添加记录,填写好日期、收款人为李明、项目为工资、金额3000元。

在发生借贷情况时,如果有还款行为,可填写已还金额一栏,系统可为用户记录,方便用户查询还有多少欠款。

3.安全性与完整性要求

安全性要求:

(1)系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用。

完整性要求:

(1)各种信息记录的完整性;

(2)各种数据间相互的联系的正确性;

(3)相同的数据在不同记录中的一致性。

三、系统功能的设计和划分

根据如上得到的用户需求,我们将本系统按照所能完成的功能分成以下几个模块:

1.处理用户登录

2.用户可以记录家庭收入信息

3.用户可以记录家庭支出信息

4.用户可以记录家庭借入信息

5.用户可以记录家庭借出信息

6.用户可以对以上信息进行查询并查询总的财务状况

四、数据流图

收入分数据流图

用户在登录家庭财务管理系统之后,点击增加按钮,选择收入栏,便会弹出对话框,用户将收入信息(日期、收入金额、收款人、项目)填写好,点击确认,收入信息将自动存入收入资产登记表中。

用户可以点击左侧的收入按钮,即提出收入查询请求,系统则会将数据库中的收入资产信息显示给用户。

如图2-1

图2-1收入分数据流图

 

支出分数据流图

用户在登录家庭财务管理系统之后,点击增加按钮,选择支出栏,便会弹出对话框,用户将支出信息(日期、支出金额、付款人、项目)填写好,点击确认,支出信息将自动存入支出资产登记表中。

用户可以点击左侧的支出按钮,即提出支出查询请求,系统则会将数据库中的支出资产信息显示给用户。

如图2-2

图2-2支出分数据流图

借入分数据流图

用户在登录家庭财务管理系统之后,点击增加按钮,选择借入栏,便会弹出对话框,用户将借入信息(日期、借入金额、已还金额、借款人、项目)填写好,点击确认,借入信息将自动存入借入资产登记表中。

用户可以点击左侧的借入按钮,即提出借入查询请求,系统则会将数据库中的借入资产信息显示给用户。

如图2-3

图2-3借入分数据流图

借出分数据流图

用户在登录家庭财务管理系统之后,点击增加按钮,选择借出栏,便会弹出对话框,用户将借出信息(日期、借出金额、已还金额、借款人、项目)填写好,点击确认,借出信息将自动存入借出资产登记表中。

用户可以点击左侧的借出按钮,即提出借出查询请求,系统则会将数据库中的借出资产信息显示给用户。

如图2-4

图2-4借出分数据流图

总数据流图

图2-5总数据流图

五、数据字典

1.数据项

家庭收入数据字典

属性名

存储代码

类型

长度

备注

收入编号

收入编号

char

5

同一天以内的收入编号

收款人

收款人

char

10

该收入的家庭成员姓名

项目

项目

char

10

收入来源

收入金额

收入金额

int

20

收入金额

日期

日期

char

15

收入的时间

家庭支出数据字典

属性名

存储代码

类型

长度

备注

支出编号

支出编号

char

5

同一天以内的支出编号

付款人

付款人

char

10

该支出的家庭成员姓名

项目

项目

char

10

支出去向

支出金额

支出金额

int

20

支出金额

日期

日期

char

15

支出的时间

借入数据字典

属性名

存储代码

类型

长度

备注

借入编号

借入编号

char

5

同一天以内的借入编号

日期

日期

char

15

借款日期

借入金额

借入金额

int

20

借款金额

已还金额

已还金额

int

20

已还金额

借款人

借款人

char

10

向谁借的款

借出数据字典

属性名

存储代码

类型

长度

备注

借出编号

借出编号

char

5

同一天以内的借出编号

日期

日期

char

15

借款日期

借出金额

借出金额

int

20

借出金额

已还金额

已还金额

int

20

已还金额

借款人

借款人

char

10

款项借给谁

用户数据字典

属性名

存储代码

类型

长度

备注

账号

账号

char

20

登录账号

密码

密码

char

20

登录密码

2.数据结构

数据结构名

组成

家庭收入信息

收入编号,收款人,项目,金额,日期

家庭支出信息

支出编号,付款人,项目,金额,日期

家庭借入信息

借入编号,日期,借入金额,已还金额,借款人

家庭借出信息

借出编号,日期,借出金额,已还金额,借款人

用户信息

账号,密码

3.数据流

数据流名

数据流来源

数据流去向

组成

收入登记信息

用户

收入资产状况登记表

收入信息

收入查询信息

收入状况登记表

用户

收入信息

收入查询请求

用户

收入查询

收入查询请求

支出登记信息

用户

支出资产状况登记表

支出信息

支出查询信息

支出状况登记表

用户

支出信息

支出查询请求

用户

支出查询

支出查询请求

借入登记信息

用户

借入资产状况登记表

借入信息

借入资产信息

借入资产状况登记表

用户

借入资产信息

借出登记信息

用户

借出资产状况登记表

借出信息

借出资产信息

借出资产状况登记表

用户

借出资产信息

登录信息

用户

用户登录

登录信息

用户信息

用户信息登记表

用户登录

用户信息

登录情况

用户登录

用户

登录情况

4.数据存储

数据存储名

输入的数据流

输出的数据流

组成

收入资产状况

登记表

收入信息

收入信息

收入信息

支出资产状况

登记表

支出信息

支出信息

支出信息

借入资产状况

登记表

借入信息

借入资产状况

借入信息借入资产状况

借出资产状况

登记表

借出信息

借出资产状况

借出信息借出资产状况

用户信息登记

用户信息登录信

登录情况

用户信息登录信息登录情

5.处理过程

处理过程名

输入数据流

输出数据流

收入登记

收入信息

收入信息

收入查询

收入信息查询请求

收入信息

支出登记

支出信息

支出信息

支出查询

支出信息查询请求

支出信息

借入登记

借入信息

借入信息

借出登记

借出信息

借出信息

用户登录

登录信息用户信息

登录情况

第三章系统概要设计

本部分的目标是根据需求分析说明书设计ER图

 

图3-1总ER图

收入分ER图

如图3-2所示,家庭收入这个实体共有三个属性,分别是收款人,收入金额以及收入的项目(来源),其与实体用户的联系:

收入,又有两个属性,分别是日期和编号

 

图3-2收入分ER图

支出分ER图

如图3-3所示,家庭支出这个实体共有三个属性,分别是付款人,支出金额以及支出的项目(去向),其与实体用户的联系:

支出,又有两个属性,分别是日期和编号

图3-3支出分ER图

借入分ER图

如图3-4所示,家庭借入这个实体共有三个属性,分别是借款人,借入金额以及已还金额,其与实体用户的联系:

借入,又有两个属性,分别是日期和编号

图3-4借入分ER图

借出分ER图

如图3-5所示,家庭借出这个实体共有三个属性,分别是借款人,借出金额以及已还金额,其与实体用户的联系:

借出,又有两个属性,分别是日期和编号

 

图3-5借出分ER图

第四章逻辑及物理设计

本章的核心内容是将ER图转换为关系模式和创建数据库

关系模式:

用户(账号,密码)

家庭收入(收入编号,日期,收款人,项目,金额)家庭支出(支出编号,日期,付款人,项目,金额)

家庭借入(借入编号,日期,借入金额,已还金额,借款人)家庭借出(借出编号,日期,借出金额,已还金额,借款人)

(下划线标注的属性为主码)

 

 

1.系统实体对象设计

第五章系统实现及测试

实体类对象主要用java类来结构化后台数据表,完成对后台对数据表的封装,定义与表结构相一致的各种类属性和读取、设置累属性的get、set类方法。

在工程的model包中建立一个java类,定义相应的属性,并为每一个属性

定义相应的get()、set()方法,这样就完成了一个实体类的设计。

下面给出家庭收入实体类的源代码:

/***********************家庭收入.java************************/

packagemodel;

publicclass家庭收入{privateString收入编号;privateString日期;privateint收入金额;privateString账户;privateString项目编号;privateString成员编号;

publicStringget收入编号(){

return收入编号;

}

publicStringget日期(){

return日期;

}

publicintget收入金额(){

return收入金额;

}

publicStringget账户(){

return账户;

}

publicStringget项目编号(){

return项目编号;

}

publicStringget成员编号(){

return成员编号;

}

publicvoidset收入编号(String收入编号){

this.收入编号=收入编号;

}

publicvoidset日期(String日期){

this.日期=日期;

}

publicvoidset收入金额(int收入金额){

this.收入金额=收入金额;

}

publicvoidset账户(String账户){

this.账户=账户;

}

publicvoidset项目编号(String项目编号){

this.项目编号=项目编号;

}

publicvoidset成员编号(String成员编号){

this.成员编号=成员编号;

}

}

其他实体类(家庭支出,家庭借入,家庭借出,用户)的设计与家庭收入类的设计相似,所不同的就是对应的后台表结构有所区别。

2.操作数据库的公共类CommonaJdbc.java

数据库的连接操作是系统中的重要一步,系统运行首先进行数据库的连接操

作,如果连接失败,则程序不能够运行。

在包util下建立类CommonaJdbc.java文件,导入jdbc包文件,定义一个静态类型的类变量connection用来建立数据库的连接,这样在其他类中就可以直接访问到这个变量,定义公共方法getCon()为实例变量赋值,详细CommonaJdbc代码如下:

/***********************CommonaJdbc.java************************/packageutil;

importjava.sql.Connection;

importjava.sql.DriverManager;publicclassCommonaJdbc{

publicstaticConnectionconection=null;

//连接数据库

publicCommonaJdbc(){

}

publicstaticConnectiongetCon(){try{

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");conection=

DriverManager.getConnection("jdbc:

microsoft:

sqlserver:

//localhost

:

1433;DatabaseName=score","sa","");

}catch(java.lang.ClassNotFoundExceptionex){ex.printStackTrace();

}catch(java.sql.SQLExceptionex){ex.printStackTrace();

}

returnconection;

}

}

3.操作数据库的公共类

在util包下建立公共类JdbcAdapter.java文件,该类封装了对所有数据表的添加修改删除操作,前台业务中的相应功能都是通过这个类来完成的,它的设计思想是,通过上面设计的各种实体对象作为参数,进而执行类中的相应方法。

(1)定义一个私有类方法AdapterObject()用来执行数据表的所有操作,方法参数为生成的sql语句。

该方法的详细代码如下:

/***********************JdbcAdapter.java************************/

privatestaticbooleanAdapterObject(StringsqlState){

booleanflag=false;

System.out.println("执行的语句为:

"+sqlState);

con=CommonaJdbc.conection;

try{

con=CommonaJdbc.conection;pstmt=con.createStatement();pstmt.executeUpdate(sqlState);flag=true;

JOptionPane.showMessageDialog(null,infoStr+"数据成

功!

!

!

","系统提示",JOptionPane.INFORMATION_MESSAGE);

}catch(java.sql.SQLExceptionsql){flag=false;sql.printStackTrace();

}

returnflag;

}

(2)由于这个类中封装了所有的表操作,它们的实现方法都是一样的,因此这里仅以操作家庭收入表插入的InsertObject()方法和操作家庭收入表修改的UpdateObject()方法,其他的方法的编写相似。

/***********************JdbcAdapter.java************************/publicstaticbooleanInsertObject(家庭收入家庭收入info){

StringsqlStatement=null;

sqlStatement="Insert家庭收入values('"

+家庭收入info.get收入编号()+"','"+

家庭收入info.get日期()

+"','"+家庭收入info.get收入金额()+"','"+

家庭收入info.get项目编号()

+"','"+家庭收入info.get成员编号()

+"')";

infoStr="添加收入";System.out.println(sqlStatement);returnAdapterObject(sqlStatement);

}

publicstaticbooleanUpdateObject(家庭收入家庭收入info){StringsqlStatement=null;

sqlStatement="Update家庭收入set收入编号='"

+家庭收入info.get收入编号()+"',日期='"+

家庭收入info.get日期()

+"',收入金额='"+家庭收入info.get收入金额()+"',项目

='"+家庭收入info.get项目编号()

+"',收款人='"+家庭收入info.get成员编号()

+"'where收入编号='"+家庭收入info.get收入编号

().trim()+"'";

infoStr="更新收入";System.out.println(sqlStatement);returnAdapterObject(sqlStatement);

}

4.检索数据的公共类RetrieveObject.java

数据的检索功能在整个系统中占有重要位置,系统中的所有查询都是通过该公共类实现的,该公共类通过传递的查询语句调用相应的类方法,查询满足条件的数据或者数据集合。

该类定义类方法getTableModel()用来生产一个表格数据模型,该方法返回类型为DefaultTableModel,该方法中一个数组参数name用来生成表模型的列名,方法getTableModel()的详细代码如下。

/***********************RetrieveObject.java*********************/

publicDefaultTableModelgetTableModel(String[]name,StringsqlStr){Vectorvname=newVector();

for(inti=0;i

}

DefaultTableModeltableModel=new

DefaultTableModel(vname,0);

connection=CommonaJdbc.getCon();

try{

rs=connection.prepareStatement(sqlStr).executeQuery();rsmd=rs.getMetaData();

while(rs.next()){

Vectorvdata=newVector();

for(inti=1;i<=rsmd.getColumnCount();i++){vdata.addElement(rs.getObject(i));

}

tableModel.addRow(vdata);

}

}catch(java.sql.SQLExceptionsql){sql.printStackTrace();

returnnull;

}

returntableModel;

}

5.用户登录模块设计

系统用户登录主要用来验证用户的登录信息,完成用户的登录功能。

在ui包下建立JF_login文件,通过使用MYeclipse中的插件SWT对界面进行布局,文件的组件结构图如下:

(1)JF_login文件在公共方法textField1_keyPressed()中,定义一个String类型的变量sqlSelect用来生产SQL查询语句,再定义一个公共类RetrieveObject类型变量retrieve,然后调用retrieve的getObjectRow()方法,其参数为sqlSelect,用来判断该用户是否存在。

该方法的详细代码如下:

/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2