个人家庭理财系统.docx
《个人家庭理财系统.docx》由会员分享,可在线阅读,更多相关《个人家庭理财系统.docx(36页珍藏版)》请在冰豆网上搜索。
![个人家庭理财系统.docx](https://file1.bdocx.com/fileroot1/2023-2/6/ce7ca5a1-66a7-4e0a-bac7-94b525c12c8d/ce7ca5a1-66a7-4e0a-bac7-94b525c12c8d1.gif)
个人家庭理财系统
注:
本文档仅供交流学习使用,禁止其他用途
目录
一.开发背景………………………………………………….1
二.相关技术介绍…………………………………………….1
三.需求分析………………………………………………….2
四.概念结构设计…………………………………………….5
五.逻辑结构设计…………………………………………….7
六.数据库物理设计………………………………………….9
七.数据库实施……………………………………………….9
八.测试………………………………………………………14
九.系统的主要功能实现代码………………………………20
十.系统安装及使用说明……………………………………26
十一.小结…………………………………………………....27
附录:
参考文献………………………………………………28
一、开发背景
随着软硬件技术的急速发展,计算机技术在社会生活中的方方面面都发挥着重要的作用。
对人们的个人生活质量和生活方式也有着深远的影响,应用先进的网络和数据库技术,可以大大节省人力,物力,并且让我们生活的更舒服。
现今社会发展越来越快,人民生活水平越来越高,人民的消费项目越来越多,使得我们对于怎样合理地进行财务上的收支,债务的管理很难做到完美无缺,以至于我们常常抱怨钱总是不够。
在总的来说离不开信息处理,这正是计算机被广泛应用于信息管理系统的原因。
计算机的最大优点在于利用它能够高效准确地进行信息管理。
使用计算机进行信息管理,不仅提高了工作效率,而且大大的提高了其安全性。
财务管理系统是利用互联网的管理系统。
家庭和个人的用户使用此软件,可以方便的进行个人理财,投资管理。
用户可以将自己的每一笔收入和支出输入到数据库中,软件帮你理财。
本系统是在对当代社会家庭财务状况进行了全面分析的基础上,制作的一款通过对个人收支、资产及负债信息进行管理,提供财务分析报表的数据库访问软件。
通过此软件可以清楚的了解个人的收支,财产的明细,完成对各类信息的浏览、查询、添加、删除、修改。
该系统是典型的财务管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点。
二、相关技术介绍
本系统采用B/S结构,使用JSP技术完成动态网页的生成,利用Hibernate技术来持久化对象,通过struts技术来实现程序的扭转,用开源的Tomcat服务器作为WEB服务器。
1、B/S结构:
B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。
这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。
客户机上只要安装一个浏览器(Browser),如NetscapeNavigator或InternetExplorer,服务器安装Oracle、Sybase、Informix或SQLServer等数据库。
浏览器通过WebServer同数据库进行数据交互。
2、JSP技术:
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。
网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。
JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
JSP(JavaServerPages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
3、Hibernate技术:
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
4、struts技术:
struts是开源软件。
使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。
如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。
5、Tomcat服务器:
Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。
实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。
三、需求分析
1、开发工具(平台):
MySQL,MyEclipse,Tomcat,JDK
2、系统综合需求:
该系统是一个个人理财的系统管理,在该系统中,没有注册模块,用户开始的信息是保存在数据库中的,在用户登陆以后,分以下几个模块:
收支记账:
收支记账是把日常收入,支出等所有与财务有关的事件准确,及时的计入帐簿。
收支记账是整个软件中最常用的功能,也是最重要的功能,它是家庭理财分析软件的基础。
资产管理:
资产管理界面可以显示家庭物品详细资料,同时提供资产目前的现值情况。
债务管理:
债务管理界面显示了所有债务信息,包括债务的详细资料以及对债务进行新建,删除,修改。
统计管理:
通过软件生成的多种统计报表,让用户清楚的了解自己的账户余额,债务项目,收支情况,方便我们定期的对自己的财务进行管理。
个人信息:
清楚的表现出用户注册资金与现在的剩余资金
3、系统各部分用例图
总体用例图3-3-1
生活账用例图3-3-2
资产记录用例图3-3-3
负债记录用例图3-3-4
记录统计账用例图3-3-5
个人信息用例图3-3-6
四、概念结构设计
E-R图
五、逻辑结构设计
1、表结构
字段
字段名
类型
长度
说明
1
id
INT
12
自增整形主键
2
username
VARCHAR
30
30位非空字符
3
password
VARCHAR
30
30位非空字符
4
money
DOUBLE
20
保留2位小数,非空
5
balance
DOUBLE
20
保留2位小数,非空
用户信息表5-1-1
字段
字段名
类型
长度
说明
1
id
INT
12
自增整形主键
2
iremName
VARCHAR
30
30位字符
3
debtType
VARCHAR
30
30位字符
4
itemType
VARCHAR
30
30位字符
5
description
VARCHAR
255
255位字符
6
userid
INT
12
外键关联用户表用户号
项目信息表5-1-2
字段
字段名
类型
长度
说明
1
id
INT
12
自增整形主键
2
productName
VARCHAR
30
30位字符
3
buyPrice
DOUBLE
20
20位,保留2位小数
4
presentValue
DOUBLE
20
20位,保留2位小数
5
description
VARCHAR
255
255位字符
6
userid
INT
12
外键关联用户表用户号
固定资产表5-1-3
字段
字段名
类型
长度
说明
1
id
INT
12
自增整形主键
2
money
DOUBLE
30
30位,保留2位小数
3
bizDate
DATE
日期
4
description
VARCHAR
255
255位字符
5
userid
INT
12
外键关联用户表用户号
6
itemid
INT
12
外键关联项目表项目号
流水账信息表5-1-4
2、范式分析
用户信息表(用户号,用户姓名,密码,开户金额,户口余额):
用户号是主码,所有决定因素都包含码,所以这个表满足BCNF。
用户信息表(项目号,项目名,债务类型,项目类型,说明,所属用户号):
项目号是主码,所有决定因素都包含码,所以这个表满足BCNF。
用户信息表(资产号,资产名,购入价格,目前价格,说明,所属用户号):
资产号是主码,所有决定因素都包含码,所以这个表满足BCNF。
用户信息表(流水账号,金额,日期,说明,所属用户号,所属项目号):
流水账号是主码,所有决定因素都包含码,所以这个表满足BCNF。
3、本系统没有用户子模式
4、系统功能模块图
系统功能模块图5-4-1
5、数据完整性设计
1)主键约束。
用户信息表的主键约束用户号(id),项目信息表的主键约束是项目号(id),固定资产表的主键约束是资产号(id),流水账信息表的主键约束是流水账号(id)。
2)非空约束
给每个表的主键都加上非空约束,以及用户表所有属性加上非空约束
3)外键约束
项目表的所属用户号外键关联于用户信息表的用户号(定义外键);
固定资产表的所属用户号外键关联于用户信息表的用户号(定义外键);
流水账信息表的所属用户号外键关联于用户信息表的用户号(定义外键);
流水账信息表的所属项目号外键关联于项目信息表的项目号(定义外键)。
4)惟一约束
每个表主码都定义唯一约束,用户信息表的用户名也定义唯一约束。
5)定义自增约束
每个表的主码,定义为自增类型(整形ID)。
六、数据库物理设计
1、本系统未设置视图,所有表中的的唯一性属性都自动生成了索引。
2、数据的存放位置:
B/S结构中程序和数据都存放在服务器中。
3、系统配置:
WIN7+MySQL+MyEclipse+Tomcat+IE6
4、模块设计(模块IPO图)
IPO图6-4-1
七、数据库实施
1、创建数据库及数据库对象的SQL脚本文件
create.sql文件:
createdatabaseifnotexistsfinancingdefaultcharactersetutf8;
usefinancing;
createtableIFNOTEXISTSusers(
idint(12)auto_incrementprimarykey,
usernamevarchar(30)notnull,
passwordvarchar(30)notnull,
moneydouble(20,2)notnull,
balancedouble(20,2)notnull,
unique(username)
);
createtableIFNOTEXISTSitems(
idint(12)auto_incrementprimarykey,
itemNamevarchar(30),
debtTypevarchar(30),
itemTypevarchar(30),
descriptionvarchar(255),
useridint(12)referencesusers(id)
);
createtableIFNOTEXISTSfixedassets(
idint(12)auto_incrementprimarykey,
productNamevarchar(30),
buyPricedouble(20,2),
presentValuedouble(20,2),
descriptionvarchar(255),
useridint(12)referencesusers(id)
);
createtableIFNOTEXISTSwastebooks(
idint(12)auto_incrementprimarykey,
moneydouble(30,2),
bizDatedate,
descriptionvarchar(255),
useridint(12)referencesusers(id),
itemidint(12)referencesitems(id)
);
insert.sql文件:
usefinancing;
insertintousersvalues(1,'tarena','123456',1000.00,2000.00);
2、建表后表结构
固定资产表结构7-2-1
用户信息表结构7-2-2
项目信息表结构7-2-3
流水账信息表结构7-2-4
3、MySQL数据库备份和恢复方案:
方法一:
使用图形化辅助工具
首先需要安装MySQLGUIToolsv5.0,它是一个可视化界面的MySQL数据库管理控制台,提供了四个非常好用的图形化应用程序,方便数据库管理和数据查询。
这些图形化管理工具可以大大提高数据库管理、备份、迁移和查询效率,即使没有丰富的SQL语言基础的用户也可以应用自如。
它们分别是:
MySQL Migration Toolkit:
数据库迁移
MySQL Administrator:
MySQL管理器
MySQL Query Browser:
用于数据查询的图形化客户端
MySQL Workbench:
DB Design工具
方法二:
使用MySQL自带的命令行方式
MySQL导入导出.sql文件:
步骤如下:
1)MySQL的命令行模式的设置:
桌面->我的电脑->属性->环境变量->新建->
PATH=“;path\MySQL\bin;”其中path为MySQL的安装路径。
2)简单的介绍一下命令行进入MySQL的方法:
1.C:
\>MySQL-hhostname-uusername-p
按ENTER键,等待然后输入密码。
这里hostname为服务器的名称,如localhost,username为MySQL的用户名,如root。
进入命令行后可以直接操作MySQL了。
2.简单介绍一下MySQL命令:
MySQL->CREATEDATABASEdbname;//创建数据库
MySQL->CREATETABLEtablename;//创建表
MySQL->SHOWDATABASES;//显示数据库信息,有那些可用的数据库。
MySQL->USEdbname;//选择数据库
MySQL->SHOWTABLES;//显示表信息,有那些可用的表
MySQL->DESCRIBEtablename;//显示创建的表的信息
3)从数据库导出数据库文件:
1.将数据库mydb导出到e:
\MySQL\mydb.sql文件中:
打开开始->运行->输入cmd进入命令行模式
c:
\>MySQLdump -h localhost -u root -p mydb >e:
\MySQL\mydb.sql
然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。
2.将数据库mydb中的mytable导出到e:
\MySQL\mytable.sql文件中:
c:
\>MySQLdump -h localhost -u root -p mydb mytable>e:
\MySQL\mytable.sql
3.将数据库mydb的结构导出到e:
\MySQL\mydb_stru.sql文件中:
c:
\>MySQLdump -h localhost -u root -p mydb --add-drop-table >e:
\MySQL\mydb_stru.sql
//-hlocalhost可以省略,其一般在虚拟主机上用
命令行导出和导入MySQL数据库
备份MySQL数据库的命令
mysqldump-hhostname-uusername-ppassworddatabasename>backupfile.sql
备份MySQL数据库为带删除表的格式
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
mysqldump-–add-drop-table-uusername-ppassworddatabasename>backupfile.sql
直接将MySQL数据库压缩备份
mysqldump-hhostname-uusername-ppassworddatabasename|gzip>backupfile.sql.gz
备份MySQL数据库某个(些)表
mysqldump-hhostname-uusername-ppassworddatabasenamespecific_table1specific_table2>backupfile.sql
同时备份多个MySQL数据库
mysqldump-hhostname-uusername-ppassword–databasesdatabasename1databasename2databasename3>multibackupfile.sql
仅仅备份数据库结构
mysqldump–no-data–databasesdatabasename1databasename2databasename3>structurebackupfile.sql
备份服务器上所有数据库
mysqldump–all-databases>allbackupfile.sql
还原MySQL数据库的命令
mysql-hhostname-uusername-ppassworddatabasename还原压缩的MySQL数据库
gunzip将数据库转移到新服务器
mysqldump-uusername-ppassworddatabasename|mysql–host=*.*.*.*-Cdatabasename
4)从外部文件导入数据到数据库中:
从e:
\MySQL\mydb2.sql中将文件中的SQL语句导入数据库中:
1.从命令行进入MySQL,然后用命令CREATEDATABASEmydb2;创建数据库mydb2。
2.退出MySQL可以输入命令exit;或者quit;
3.在CMD中输入下列命令:
c:
\>MySQL -h localhost -u root -p mydb2 < e:
\MySQL\mydb2.sql
然后输入密码,就OK了。
5)下面谈一下关于导入文件大小限制问题的解决:
默认情况下:
MySQL导入文件大小有限制的,最大为2M,所以当文件很大时候,直接无法导入,下面就这个问题的解决列举如下:
1.在php.ini中修改相关参数:
影响MySQL导入文件大小的参数有三个:
memory_limit=128M,upload_max_filesize=2M,post_max_size=8M
修改upload_......
4、连接数据库代码:
hibernate框架
jdbc:
mysql:
//localhost:
3306/financing?
characterEncoding=UTF-8
root
liguo1992326
com.mysql.jdbc.Driver
org.hibernate.dialect.MySQL5Dialect
org.hibernate.cache.NoCacheProvider
true
true
--
八、测试
本地地址登陆财务系统:
http:
//localhost:
8080/financing/
1、此页面是系统第一个页面,有登陆、注册两个功能。
8-1
2、注册页面
8-2
3、成功登陆后页面,左侧为各个操作,中间整个区域为操作显示区。
8-3
4、部分操作截图
添加收支项目8-4-1
查看项目列表8-4-2
登记流水账8-4-3
统计年报表8-4-4
登记固定资产8-4-5
查看固定资产8-4-6
查看个人信息8-4-7
修改密码8-4-8
5、数据库内容
固定资产表8-5-1
项目信息表8-5-2
用户信息表8-5-3
流水账信息表8-5-4
6、测试结果:
各项功能测试成功,数据库里数据与网页内容同步更新。
九、系统的主要功能实现代码
1、struts-config.xml配置文件(节选)
struts-config.xml,是前台显示层,后台逻辑处理层和数据保存容器层,相互联系协调的控制器。
各个层都是通过控制器struts-config来进行业务处理的。
在该文件中,可以配置数据源、form-bean、action和plug-in(插件)和资源文件的信息。
1)元素用来配置多个ActionFormBean,包含多个子元素,,每个包含多个属性。
例如: