第一章 绪论
1.1 课题背景、目的及意义
从 20 世纪末以来,在全球经济日趋一体化的背景之下,中国经济也得到了飞速的发展,家庭收入也快速增长。居民的消费结构发生了巨大变化,购置房产、旅游、汽车消费、教育等成为居民消费重点。现代家庭越来越重视如何实现财富的有效管理、增加价值、合理使用等问题。我国银行从首次推出个人理财产品至今已近二十年,如今差不多所有的银行都成立了针对客户的理财部门,会根据现有的目标客户群体进行分析,然后有针对性的开发出各种理财产品。更有甚者部分银行还有针对 VIP 客户的高端理财部门。银行为银行尚且重视客户财产管理,家庭更需要重视。因而家庭理财管理软件应时而生。
现如今,家庭理财需求随着家庭收支规模的扩大而不断增加。而与此相适应,各类家庭理财信息也呈现出激增的发展趋势。而面对着庞大的信息量,家庭管理者往往变得毫无头绪,无法充分利用这些信息资源,造成了资源的浪费。而且,在应对这些信息的过程中,需要花费大量的时间和精力,难免不会造成工作效率的下降。在这种形势下,迫切需要建立一套科学的、合理的、实用的家庭理财管理系统,为家庭管理者提供一个专业的管理收支理财工具。
1.2 国内外研究现状
1.2.1 国外的研究现状
在欧洲和美国等许多发达国家,家庭理财管理系统的使用是相当普遍的。而且系统功能比较完善、比较全面,如系统包括股票、基金的管理、投资分析等等。近年来,随着计算机的迅速普及,用计算机软件来管理家庭财务也变得越来越广泛。从早期的简单的手、纸、笔记帐情况,到现在使用计算机对财务数据的查询、汇总等等进行处理。巨大的市场需求下,吸引了许多计算机软件公司对家庭理财管理系统的投入和开发。
随着经济和科技的发展,当下在欧美等经济发达国家相当多的家庭都把家庭财务交给理财管理软件来处理,当前理财管理系统有两种模式非常流行,通常被国外的家庭选用:一种选择是把家庭的收入、支出、储蓄、保险、股票、基金、期货、外汇、债券等主要个人理财事务,交给专业的理财网站来管理。国外很多的理财网站都把服务方向定位在普通的家庭理财,并给用户提供专业的投资理财服务。理财网站在提供给消费者一个专业的理财平台的同时,还提供大量的专业理财信息,及理财方法。大大降低了家庭理财的难度,节约了更多的时间和成本,提高家庭财务管理的效率。而且还可以对家庭的经济状况进行总体的评估,资金成本效益核算准确,并能在事后来进行数据的统计分析及处理,使家庭理财避免繁琐的手工计算。 另一种选择是把家庭财务管理交给单机版的个人理财软件来管理。如 Quicken 软件在美国就拥有上千万用户。这些单机版的家庭理财软件也有他们不可忽视的优点,比如他们能够通过对用户财务数据的分析,提出一些简单的理财建议功能,能够自动根据每个家庭资金流的变化提供一些消费、投资方面的合理建议。
1.2.2 国内的研究现状
在我国,家庭理财发展的时间相对国外较短,自改革开放以来,随着人们生活水平的提高,知道二十世纪九十年代中期,我国才出现家庭理财业务。到了2003年以后,我国的家庭理财才开始发展起来,特别是一些较富裕的家庭,由于家庭资产的增多,需要通过理财服务增加自身资产的流动性、安全性和收益性。近几年,我国理财业务发展迅猛,各种各样的理财业务开始出现,除了股票、债券、基金等,又涌现出期货、外汇、保险、金融衍生品、网络理财等新型理财产品,使人们能够通过多种渠道进行理财。而且由于人们生活水平的提高,日常生活中的各种消费也不断增加,消费项目也是多种多样,因此仅靠传统的记账式理财已经不能满足我国家庭理财的需求,通过计算机和信息技术进行家庭理财已经成为我国家庭理财的趋势。由于我国特殊的国情,仅仅照搬国外现有的理财软件是不行的。
随着信息技术的发展,我国也有很多公司开发出了适合我国家庭理财的软件,例如银冬瓜家庭理财软件、水滴家庭理财软件等。通过这些软件的使用,对提高家庭理财的效率,满足家庭理财的需求具有重要的作用随着我国信息化技术的发展,出现了一批家庭理财软件,但我国人口众多,民俗习惯不相同,消费习惯差异明显,所以目前市场上还没有一款软件系统能够满足我国所有家庭的理财需求。基于以上背景,针对家庭理财进行研究,根据调研结果,力求开发一款我国普通家庭理财需求的软件系统,对完善我国家庭理财系统的开发与发展具有一定的实际意义。
第二章 可行性分析
2.1 社会可行性
家庭理财需求随着家庭收支规模的扩大而不断增加。而与此相适应,各类家庭理财信息也呈现出激增的发展趋势。而面对着庞大的信息量,家庭管理者往往变得毫无头绪,无法充分利用这些信息资源,造成了资源的浪费。而且,在应对这些信息的过程中,需要花费大量的时间和精力,难免不会造成工作效率的下降。在这种形势下,迫切需要建立一套科学的、合理的、实用的家庭理财管理系统,为家庭管理者提供一个专业的管理收支理财工具。因此该系统具有社会可行性。
2.2 技术可行性
本次介绍的系统采用的是Jsp+MySQL+SSM框架进行开发,Windows XP Professional操作系统,前端采用EasyUI框架,采用MyBatis与后台数据库进行连接,MyBatis是SSM中的M,是对Jdbc的封装,完成数据的添加、修改、删除、查询等功能。SSM框架是一个常用的Web项目框架,功能强大而且稳定,而MySQL灵活易维护在开发方面具有方便快捷、使用灵活的特点,以及目前的广泛实际应用,因此使用Jsp、SSM、MySQL来开发该系统十分合理,从而说明本系统在技术方面可行。
硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。。
2.3 操作可行性
目前,大多数计算机都能运行该系统,该系统的安装、调试、运行不会改变原计算机系统的设置和布局,并且系统界面简单,提示信息完整,由相关人员指导便能够方便的操作此软件。
2.4 系统的技术介绍
2.4.1 Javascript
JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。它最初由网景公司(Netscape)的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类。
Javascript语言与Java语言在语法上比较相似,但随着对Javascript的深入了解后你会发现,它们说到底是两种语言!
2.4.2 jQuery
jQuery是一个兼容多浏览器的javascript框架,核心理念是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发。如今,jQuery已经成为最流行的javascript框架,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。
jQuery是免费、开源的,使用MIT许可协议。jQuery的语法设计可以使开发者更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。除此以外,jQuery提供API让开发者编写插件。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页。
2.4.3 Servlet
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
最早支持Servlet标准的是JavaSoft的Java Web Server,此后,一些其它的基于Java的Web服务器开始支持标准的Servlet。
2.4.4 EasyUI
EasyUI是一种基于jQuery、Angular、Vue和React的用户界面插件集合。它为创建现代化、互动的JavaScript应用程序提供必要的功能。使用EasyUI不需要编写很多代码,你只需要通过编写一些简单HTML标记,就可以定义用户界面,虽然很简单但功能强大的。EasyUI完美支持HTML5网页框架,它的出现大大降低了开发者开发时间与规模。
2.4.5 MySQL
MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
自从Oracle公司收购了MySQL后不久,就发行了MySQL的企业版(不再免费)!
2.4.6 MVC
MVC即模型-视图-控制器,是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。
MVC是一种设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务.
(1)模型
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
(2)视图
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
(3)控制器
控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何的处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。
综上所述,MVC的处理过程是首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
2.4.7 SSM
SSM为Spring+SpringMVC+ MyBatis的缩写,由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。
(1)Spring
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
(2)SpringMVC
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
(3)MyBatis
MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
2.5 系统开发平台及运行环境
2.5.1 系统开发平台
系统的开发是在Tomcat环境下进行的。Tomcat是一个免费的开源的Servlet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat被Java World杂志的编辑选为2001年度最具创新的Java产品,可见其在业界的地位。
Tomcat的环境主要有以下几方面技术优势:
1.Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。
2.在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。
3.Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理html页面。
4.Tomcat也可以与其它一些软件集成起来实现更多的功能。
2.5.2 运行环境
操作系统:Windows XP以上版本。
服务器软件:Tomcat6.0以上版本。
浏览器:IE、Fire Fox、Google Chrome。
第三章 需求分析
3.1 系统功能模块概述和分析
《家庭理财管理系统》采用B/S架构,主要针对管理员与普通用户两种角色。本系统的主要功能包括登录、收支管理、财务管理、报表管理以及用户管理五个部分,其中每一部分的功能会因为用户角色的不同而有所不同,例如普通用户的用户管理部分只能用来管理自己的信息,而管理员则可以管理角色、其他用户的用户信息等,具体不同会在后面的文档中加以说明。本系统在系统的设计与开发过程中严格遵守软件工程的规范,运用软件设计模式,从而减少系统模块间的偶合,力求做到系统的稳定性、可重用性和可扩充性。
《家庭理财管理系统》主要功能如下:
- 理财管理:
- 收支管理:包括用户收入信息的维护以及支出信息的维护;
- 财务管理:包括证券账户管理、持股管理以及证券流水帐管理;
- 报表管理:可以查看按时间收入报表、按时间支出报表以及按类型报表;
- 系统管理:
- 用户登录:验证登入系统用户的合法性,并且在登录时区分其角色;
- 角色管理:包括角色的添加删除等;
- 用户信息管理:管理用户的基本信息等于用户信息相关的操作;
3.2 系统业务需求分析
- 登录管理:
用户输入正确的用户名、密码以及选择正确的角色,方可登录系统,否则提示错误信息拒绝用户登入系统。
- 收支管理:
收支管理针对所有用户开放,管理员可查看所有用人的收支情况,普通用户仅能查看自身的收支情况,其用例图如下:
- 财务管理:
财务管理针对所有用户开放,管理员可查看所有人的收支情况,普通用户仅能查看自身的收支情况,其用例图如下:
- 报表管理:
报表管理针对所有用户开放,管理员可以查考所有人的报表情况,普通用户仅能查看自身的报表情况,其用例图如下:
- 角色管理:
角色管理仅针对管理员开放,其用例图如下:
- 用户信息管理:
用户信息管理仅针对管理员开放,其用例图如下:
3.3 系统功能模块设计
根据系统功能分析,将整个系统的功能模块规划为如下的功能模块图。
3.4 数据库分析
信息系统的主要任务是通过大量数据获得管理所需要的信息,这就要求系统本身能够存储和管理大量的数据,而这一功能的实现必须借助大型数据库系统。本系统的开发选择MySQL作为后台数据库开发工具。
- 概念模型设计
概念模型用于信息世界的建模,与具体的DBMS无关。为了把现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型。人们常常首先将现实世界抽象为信息世界,然后再将信息世界转换为机器世界。也就是说,首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统和具体的DBMS,而是概念级的模型,然后再把模型转换为计算机上某一个DBMS支持的数据模型。实际上,概念模型是现实世界到机器世界的一个中间层次。
信息世界中包含的基本概念有实体和联系。
(1) 实体 (entity)
客观存在并可相互区别的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如,一个学生、一门课、一个供应商、一个部门、一本 书、一位读者等都是实体。
(2) 联系 (relationship)
在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系。实体内部的联系通常是组成实体的各属性之间的联系。两个实体型之间的联系可以分为3类,一对一联系,(1:1);一对多联系(1 : n);多对多联系(m : n)。
概念模型是对信息世界建模,所以概念模型应该能够方便、准确地表示信息世界中的常用概念。概念模型的表示方法很多,其中最为常用的是P.P.S.Chen于1976年提出的实体,联系方法(Entity-Relationship Approach)简记为E-R表示法)。该方法用E-R图来描述现实世界的概念模型,称为实体-联系模型,简称E-R模型。
根据功能模块的设计,整个系统的E-R图设计如下所示:
根据整个系统的功能设计以及E-R图设计所规划的主要实体有:管理员、用户、支出、收入、证券、股票、流水以及角色。各个实体具体的描述属性图如下(由于实体属性较多,下图各个实体仅展示了与功能设计相关的属性):
- 管理员实体
- 用员实体
- 支出实体
- 收入实体
- 证券实体
- 股票实体
- 证券流水实体
- 角色实体
- 数据库表设计
数据库表设计主要是把概念结构设计时设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。它包括数据项、记录及记录间的联系、安全性和一致性约束等等。导出的逻辑结构是否与概念模式一致,从功能和性能上是否满足用户的要求,要进行模式评价。
本系统数据库表如下:
- t_users表
字段名称 |
数据类型 |
主键 |
是否空 |
说明 |
id |
int(11) |
Y |
N |
ID |
username |
varchar(255) |
N |
N |
用户名 |
password |
varchar(255) |
N |
N |
密码 |
truename |
varchar(255) |
N |
N |
真是姓名 |
|
varchar(255) |
N |
N |
电子邮箱 |
phone |
varchar(255) |
N |
N |
电话 |
address |
varchar(255) |
N |
N |
地址 |
sex |
tinyint(2) |
N |
N |
性别 |
age |
int(11) |
N |
N |
年龄 |
appellation |
varchar(255) |
N |
N |
角色 |
salary |
int(11) |
N |
N |
工资 |
card |
varchar(255) |
N |
N |
银行卡 |
isvalid |
tinyint(2) |
N |
N |
是否可用 |
createtime |
datetime |
N |
N |
创建时间 |
updatetime |
datetime |
N |
N |
跟新时间 |
- t_pay表
字段名称 |
数据类型 |
主键 |
是否空 |
说明 |
id |
int(11) |
Y |
N |
ID |
userid |
int(11) |
N |
N |
用户ID |
payer |
varchar(255) |
N |
N |
用户名 |
tword |
varchar(255) |
N |
N |
用途 |
money |
bigint(20) |
N |
N |
金额 |
dataid |
int(11) |
N |
N |
支出类型 |
content |
varchar(255) |
N |
N |
说明 |
paytime |
varchar(255) |
N |
N |
支付时间 |
createtime |
varchar(255) |
N |
N |
创建时间 |
updatetime |
varchar(255) |
N |
N |
更新时间 |
- t_income表
字段名称 |
数据类型 |
主键 |
是否空 |
说明 |
id |
int(11) |
Y |
N |
ID |
userid |
int(11) |
N |
N |
用户ID |
incomer |
varchar(255) |
N |
N |
收入人 |
source |
varchar(255) |
N |
N |
来源 |
money |
bigint(20) |
N |
N |
金额 |
dataid |
int(11) |
N |
N |
类型 |
content |
varchar(255) |
N |
N |
说明 |
incometime |
varchar(255) |
N |
N |
收入时间 |
createtime |
varchar(255) |
N |
N |
创建时间 |
updatetime |
varchar(255) |
N |
N |
更新时间 |
- t_security表
字段名称 |
数据类型 |
主键 |
是否空 |
说明 |
id |
int(11) |
Y |
N |
ID |
userid |
int(11) |
N |
N |
用户ID |
securityname |
varchar(255) |
N |
N |
证券用户名 |
securitypassward |
varchar(255) |
N |
N |
证券密码 |
company |
varchar(255) |
N |
N |
公司名称 |
dataid |
int(11) |
N |
N |
类型 |
starttime |
varchar(255) |
N |
N |
开始时间 |
endtime |
varchar(255) |
N |
N |
结束时间 |
createtime |
varchar(255) |
N |
N |
创建时间 |
updatetime |
varchar(255) |
N |
N |
更新时间 |
- t_shares表
字段名称 |
数据类型 |
主键 |
是否空 |
说明 |
id |
int(11) |
Y |
N |
ID |
userid |
int(11) |
N |
N |
用户ID |
securityid |
int(11) |
N |
N |
证券ID |
sharesname |
varchar(255) |
N |
N |
股票名称 |
holder |
varchar(255) |
N |
N |
持有人 |
createtime |
varchar(255) |
N |
N |
创建时间 |
updatetime |
varchar(255) |
N |
N |
更新时间 |
- t_trade表
字段名称 |
数据类型 |
主键 |
是否空 |
说明 |
id |
bigint(20) |
Y |
N |
ID |
userid |
int(11) |
N |
N |
用户ID |
sharesid |
int(11) |
N |
N |
股票ID |
price |
bigint(20) |
N |
N |
价格 |
number |
int(11) |
N |
N |
数量 |
money |
bigint(20) |
N |
N |
金额 |
dataid |
int(11) |
N |
N |
类型 |
content |
varchar(255) |
N |
N |
说明 |
time |
varchar(255) |
N |
N |
时间 |
createtime |
varchar(255) |
N |
N |
创建时间 |
updatetime |
varchar(255) |
N |
N |
更新时间 |
- t_role表
字段名称 |
数据类型 |
主键 |
是否空 |
说明 |
id |
int(11) |
Y |
N |
ID |
rolename |
varchar(255) |
N |
N |
角色名 |
本系统还有一些实现网站功能的辅助数据表,由于与主要业务关系不大,在此就不加赘述了。
3.5系统流程分析
本系统流程设计类似于传统的后台管理系统。所有用户需要登录后才能进行业务操作。同时所有增、改操作,都会进行合法性验证,验证通过则完成相应操作,否则会提示错误信息。具体的系统流程图如下图所示:
第四章 家庭理财管理系统的设计与实现
4.1 登录页面设计
登录页面设计如下所示,需要用户填写正确的用户名密码以及选其相对应的用户类型才能完成系统的登录操作,登录的表单信息会在前端和后端进行两次合法性校验,通过验证后才能登录到系统中,否则系统将会提示相对应的错误信息。
该系统也支持新用户的注册,用户注册页面如下图所示,新用户注册需要注册用户合法的填写用户名以及密码,通过前后端两次校验后才能完成新用户的注册,否则系统就会提示用户相对应的错误信息。
登录成功后会进入到该系统的首页位置,如下图所示,左侧为可供用户选择的功能菜单,右侧则会在用户选择具体的功能时显示对应的功能信息。
4.2 收支管理设计
下图为收支管理菜单的收入信息维护页面,右侧以列表的形式显示了用户的收入信息详情,包括收入人、收入来源、金额、收入类型、备注和收入时间等信息。列表的上方为操作类型选择,对应增加、修改、删除和查看详细四类操作。同时还提供了搜索栏,供用户按需搜索需要操作的内容信息。需注意,截图均以管理员账号进行截取,管理员与普通用户页面一致,区别在于管理员查看和管理所有用户的信息,而普通用户仅查看和管理自己的用户信息,这一点在下文将不再赘述。如存在特殊场景,会在下文中加以特殊说明。
下图为收支管理菜单的支出信息维护页面,右侧以列表的形式显示了用户的支出信息详情,包括支出人、支出用途、金额、支出类型、备注以及支出时间等信息。并且提供给用户对这些信息的增加、修改、删除以及查看详情操作。用户还可以根据系统提供的搜索功能,按需搜索需要操作的内容信息。
4.3 财务管理设计
下图为收支管理菜单的证券账户管理页面,右侧以列表的形式显示了用户证券账户的相关信息,包括证券持有人、证券账号、证券密码、证券公司、证券类型、证券有效日期的开始和结束日期等。系统提供给用户对这些信息的增加、修改、删除和查看详情的操作。用户还可以根据系统提供的搜索功能,按需搜索需要操作的内容。
下图为收支管理菜单的持股管理页面,右侧以列表的形式显示了用户股票的相关信息,包括记录人、股票名称、持股人、证券账号以及创建时间等。系统提供给用户对这些信息的增加、修改、删除和查看详情的操作。用户还可以根据系统提供的搜索功能,按需搜索需要操作的内容。
下图为收支管理菜单的证券流水账管理页面,右侧以列表的形式显示了用户证券流水账的相关信息,包括记录人、股票名称、单价、数量、金额、交易类型、备注以及交易时间等。系统提供给用户对这些信息的增加、修改、删除和查看详情的操作。用户还可以根据系统提供的搜索功能,按需搜索需要操作的内容。
4.4 报表管理设计
下图为报表管理菜单的按时间收入报表页面,右侧用户通过设置收入的起止时间来查询该时间段内的收入情况,同时系统提供了折线图、柱状图和饼状图三类数据可视化方式展示收入信息,使得用户可以从多个维度对具体的数据有更加直观了解。
下图为以折线图形式展示2018年1月1日到2019年1月1日的收入报表情况,纵坐标为金额,横坐标为时间段。不同用户的收入会以不同颜色表示,并且会在折线图的右侧的图例中加以说明。
下图为以柱状图的形式展示2018年1月1日到2019年1月1日的收入报表情况,纵坐标为金额,横坐标为时间段。不同用户的收入会以不同颜色表示,并且会在柱状图的下方的图例中加以说明。
下图为以饼状图的形式展示2018年1月1日到2019年1月1日的收入报表情况,不同的用户以不同的饼状图加以区分,每个时间段的收入比例会按照它在饼状图所占的比例大小加以直观展示。
下图为报表管理菜单的按时间支出报表页面,右侧用户通过设置收入的起止时间来查询该时间段内的支出情况,同时系统提供了折线图、柱状图和饼状图三类数据可视化方式展示支出信息,使得用户可以从多个维度对具体的数据有更加直观了解。
由于支出与收入在图表展示上非常的类似,在这里仅以支出报表的折线图展示为例来说明。下图为2018年1月1日到2019年1月1日的支出报表情况,纵坐标为金额,横坐标为时间段。不同用户的支出会以不同颜色表示,并且会在折线图的右侧的图例中加以说明
下图为报表管理菜单的按类型报表页面,按类型报表顾名思义就是按照类型来统计收入和支出的报表,该类报表由于主要反映某类收入(或支出)占总收入(或支出)的多说,所有均已饼状图加以展示。
下图为2018年1月1日到2019年1月1日的收入类型报表展示情况,不同类型的收入占总收入的多少以饼状图的形式直观的展示给用户。支出类型报表与收入类型报表页面类似,就不再赘述了。
4.5 用户管理设计
用户管理功能对于管理员用户与普通用户就有较大的区别了。由于管理员需要管理其他的用户信息,以及管理角色和数据字典,而普通用户则仅需要对自身信息的修改以及对自身密码的修改功能。所有在用户管理功能中,管理员有用户信息管理、角色管理、数据字典管理、修改用户信息以及修改密码的选项,而普通用户仅有修改用户信息和修改密码两个选项可以使用。
下图为管理员所使用的用户管理菜单的用户信息管理页面,右侧以列表的形式显示了所有用户的信息,包括用户名、密码、性别、年龄、真实姓名、家庭称谓、工资、银行卡号和其所属系统角色等。系统提供给管理员对这些信息的增加、修改、删除和查看详情的操作。用户还可以根据系统提供的搜索功能,按需搜索需要操作的内容。
下图为管理员所使用的用户管理菜单的角色管理页面,右侧以列表的形式显示了所有角色的信息,包括角色编号和角色名称。系统提供给管理员对这些信息的增加、修改、删除和查看详情的操作。用户还可以根据系统提供的搜索功能,按需搜索需要操作的内容。
下图为管理员所使用的用户管理菜单的数据字典管理页面,右侧以列表的形式显示了所有数据字典信息,数据字典名称以及数据字典的值。系统提供给管理员对这些信息的增加、修改、删除和查看详情的操作。用户还可以根据系统提供的搜索功能,按需搜索需要操作的内容。
下图为用户管理菜单的修改用户信息页面,页面中弹出对话框显示了当前用户的所有用户信息,用户可以更具自身情况修改其中的部分信息,当然该信息的修改会经过系统前端和后端的两次验证,验证通过后,用户完成对用户信息的修改,否则系统会提示用户相应的错误信息。
下图为用户管理菜单的修改密码页面,页面中弹出对话框显示了当前用户的用户名。用户需要正确的输入原密码,并且两次输入一致的新密码,并通过系统前后端两侧的校验才能完成密码的修改,否则系统会提示用户相应的错误信息。
第五章 系统测试
5.1 测试的目的与目标
在此系统进行初步实现之后,开始进行对系统进行测试,找出系统中存在的Bug,通过测试,用提交的Bug报告来为以后软件的改进提供标准和参考,能够在以后的系统改进中找到依据。
测试后的软件各模块基本功能可以顺利进行,尽可能的提高软件的健壮性。
5.2 测试方法
- 从是否关心软件内部结构和具体实现的角度划分:黑盒测试和白盒测试;
- 从是否执行程序的角度:静态测试和动态测试;
- 从软件开发的过程按阶段划分有:单元测试、集成测试、确认测试、系统测试、验收测试、回归测试、Alpha测试、Beta测试;
单元测试又称模块测试,是针对软件设计的最小单位 ─ 程序模块(这里所说的程序模块在Java中一个模块就是一个方法),进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。
集成测试 (组装测试、联合测试),通常在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:
- 在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;
- 一个模块的功能是否会对另一个模块的功能产生不利的影响;
- 各个子功能组合起来,能否达到预期要求的父功能;
- 全局数据结构是否有问题;
- 单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。
确认测试(Validation Testing),确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。
系统测试(System Testing),是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试的目的在于通过与系统的需求定义作比较, 发现软件与系统的定义不符合或与之矛盾的地方。
验收测试(Acceptance Testing),在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。验收测试是以用户为主的测试。软件开发人员和QA(质量保证)人员也应参加。由用户参加设计测试用例,使用生产中的实际数据进行测试。在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。
5.3 测试用例
由于功能模块较多,测试内容篇幅较长,所以在本论文中只介绍登入系统的测试用例,表6.1是本系统用户登入的测试表,从测试的结果来看与期望结果完全相同。
用户登录测试用例
功能特性 |
用户登入验证 |
||||
测试目的 |
验证是否输入合法的信息 |
||||
测试数据 |
用户名称:xiepengfei 密码:123456 用户类型:普通用户 |
||||
测试内容 |
操作描述 |
数据 |
期望结果 |
实际结果 |
测试状态 |
1 |
输入用户姓名和选择普通用户类型,按“登陆”按钮。 |
用户姓名:xiepengfei, 密码为空 用户类型:普通用户 |
显示警告信息“用户名或密码为空!” |
显示警告信息“用户名或密码为空!” |
与期望结果相同 |
2 |
输入密码和选择普通用户类型,按“登陆”按钮。 |
用户姓名为空,密码:123456 用户类型:普通用户 |
显示警告信息“用户名或密码为空!” |
显示警告信息“用户名或密码为空!” |
与期望结果相同 |
3 |
输入用户姓名和密码以及选择普通用户类型,按“登陆”按钮。 |
用户姓名:xxxxxx, 密 码:1111111 用户类型:普通用户 |
显示警告信息“用户名或密码误!” |
显示警告信息“用户名或密码误” |
与期望结果相同 |
4 |
输入用户姓名和密码以及选择系统管理员类型,按“登陆”按钮。 |
用户姓名:xiepengfei, 密 码:123456 用户类型:系统管理员 |
显示警告信息“用户角色不匹配!” |
显示警告信息“用户角色不匹配” |
与期望结果相同 |
5 |
输入用户姓名和密码和选择普通用户类型,按“登陆”按钮。 |
用户名:xiepengfei,密 码:123456 用户类型:普通用户 |
正确登入到会员操作界面 |
正确登入到会员操作界面 |
与期望结果相同 |
5.4 测试结论
把开始的代码写得越好,它出现的错误也就越少,你也就越能相信所做过的测试是彻底的。系统化测试以一种有序方式设法探测潜在的麻烦位置。同样,毛病最可能出现在边界,这可以通过手工的或者程序的方式检查。自动进行测试是最理想的,用得越多越好,因为机器不会犯错误、不会疲劳、不会用臆想某此实际无法工作的东西能行来欺骗自己。回归测试检查一个程序是否能产生与它们过去相同的输出。在做了小改变之后就测试是一种好技术, 能帮助我们将出现问题的范围局部化,因为新问题一般就出现在新代码里面。
测试和排错常常被说成是一个阶段,实际上它们根本不是同一件事。简单地说,排错是在你已经知道程序有问题时要做的事情。而测试则是在你在认为程序能工作的情况下,排错是在你已经知道程序有问题时要做的事情。而测试则是在你在认为程序能工作的情况下,为设法打败它而进行的一整套确定的系统化的试验。
Edsger Dijkstra有一个非常有名的说法:测试能够说明程序中有错误,但却不能说明其中没有错误。他的希望是,程序可以通过某种构造过程正确地做出来,这样就不再会有错误了,因此测试也就不必要了。这确实是个美好生活的目标,但是,对今天的实际程序而言,这仍然还只是一个理想。所以应该集中精力讨论如何测试,如何才能够更快地发现程序错误,如何才可以使得工作更有成效、效率更高。
第六章 结论
本文阐述了《家庭理财管理系统》的开发背景与意义,并对系统进行了全面设计,进而实现了该系统。该系统实现了对家庭日常理财所需要的基本功能,并且整个系统在完成功能跟的基础上,还具备了界面简洁操作友好的特点,是具有一定的实用性的家庭理财系统。
总的来说,使用电脑辅助进行家庭理财相较传统的手写记录的优势还是显而易见的,随着世界的发展,家庭理财已经越来越多的得到人们的重视,相信在未来家庭理财系统会得到进一步的发展。
通过开发这个系统,我较为全面的掌握了JAVA的基本知识和编程技巧,并在开发过程进一步提高了我的JAVA开发能力,也让我积累了许多宝贵经验:系统分析的好坏将决定着的系统开发成功与否,一份好分析设计将是成功开发主要因素。我们在着手开发之前不要急于编程,先应有较长的时间去把分析做好,做好数据库设计工作,写出相关的开发文档等。然后再开始编写程序代码,这样做到每段代码心底都有数,有条不紊。
本文对系统的开发只是基于个人的一个尝试性的开发,虽然取得了一定的成果,但是由于时间的限制,仍然存在许多的不足之处,因此需要后期的不断完善。
今天的文章SSM家庭理财个人理财系统-JAVA【数据库设计、源码、开题报告】分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/29784.html