SSM家庭理财个人理财系统-JAVA【数据库设计、源码、开题报告】

2023-11-17

第一章 绪论

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架构,主要针对管理员与普通用户两种角色。本系统的主要功能包括登录、收支管理、财务管理、报表管理以及用户管理五个部分,其中每一部分的功能会因为用户角色的不同而有所不同,例如普通用户的用户管理部分只能用来管理自己的信息,而管理员则可以管理角色、其他用户的用户信息等,具体不同会在后面的文档中加以说明。本系统在系统的设计与开发过程中严格遵守软件工程的规范,运用软件设计模式,从而减少系统模块间的偶合,力求做到系统的稳定性、可重用性和可扩充性。

《家庭理财管理系统》主要功能如下:

  1. 理财管理:
  • 收支管理:包括用户收入信息的维护以及支出信息的维护;
  • 财务管理:包括证券账户管理、持股管理以及证券流水帐管理;
  • 报表管理:可以查看按时间收入报表、按时间支出报表以及按类型报表;
  1. 系统管理:
  • 用户登录:验证登入系统用户的合法性,并且在登录时区分其角色;
  • 角色管理:包括角色的添加删除等;
  • 用户信息管理:管理用户的基本信息等于用户信息相关的操作;

3.2 系统业务需求分析

  • 登录管理:

用户输入正确的用户名、密码以及选择正确的角色,方可登录系统,否则提示错误信息拒绝用户登入系统。

  • 收支管理:

收支管理针对所有用户开放,管理员可查看所有用人的收支情况,普通用户仅能查看自身的收支情况,其用例图如下:

  • 财务管理:

财务管理针对所有用户开放,管理员可查看所有人的收支情况,普通用户仅能查看自身的收支情况,其用例图如下:

  • 报表管理:

报表管理针对所有用户开放,管理员可以查考所有人的报表情况,普通用户仅能查看自身的报表情况,其用例图如下:

  • 角色管理:

角色管理仅针对管理员开放,其用例图如下:

  • 用户信息管理:

用户信息管理仅针对管理员开放,其用例图如下:

3.3 系统功能模块设计

根据系统功能分析,将整个系统的功能模块规划为如下的功能模块图。

3.4 数据库分析

  信息系统的主要任务是通过大量数据获得管理所需要的信息,这就要求系统本身能够存储和管理大量的数据,而这一功能的实现必须借助大型数据库系统。本系统的开发选择MySQL作为后台数据库开发工具。

  1. 概念模型设计

概念模型用于信息世界的建模,与具体的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图设计所规划的主要实体有:管理员、用户、支出、收入、证券、股票、流水以及角色。各个实体具体的描述属性图如下(由于实体属性较多,下图各个实体仅展示了与功能设计相关的属性):

  1. 管理员实体

  1. 用员实体

  1. 支出实体

  1. 收入实体

  1. 证券实体

  1. 股票实体

  1. 证券流水实体

  1. 角色实体

  1. 数据库表设计

数据库表设计主要是把概念结构设计时设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。它包括数据项、记录及记录间的联系、安全性和一致性约束等等。导出的逻辑结构是否与概念模式一致,从功能和性能上是否满足用户的要求,要进行模式评价。

本系统数据库表如下:

  1. t_users表

字段名称

数据类型

主键

是否空

说明

id

int(11)

Y

N

ID

username

varchar(255)

N

N

用户名

password

varchar(255)

N

N

密码

truename

varchar(255)

N

N

真是姓名

email

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

跟新时间

  1. 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

更新时间

  1. 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

更新时间

  1. 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

更新时间

  1. 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

更新时间

  1. 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

更新时间

  1. 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 测试方法

  1. 从是否关心软件内部结构和具体实现的角度划分:黑盒测试和白盒测试;
  2. 从是否执行程序的角度:静态测试和动态测试;
  3. 从软件开发的过程按阶段划分有:单元测试、集成测试、确认测试、系统测试、验收测试、回归测试、Alpha测试、Beta测试;

单元测试又称模块测试,是针对软件设计的最小单位 ─ 程序模块(这里所说的程序模块在Java中一个模块就是一个方法),进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。

集成测试 (组装测试、联合测试),通常在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:

  1. 在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;
  2. 一个模块的功能是否会对另一个模块的功能产生不利的影响;
  3. 各个子功能组合起来,能否达到预期要求的父功能;
  4. 全局数据结构是否有问题;
  5. 单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。

确认测试(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开发能力,也让我积累了许多宝贵经验:系统分析的好坏将决定着的系统开发成功与否,一份好分析设计将是成功开发主要因素。我们在着手开发之前不要急于编程,先应有较长的时间去把分析做好,做好数据库设计工作,写出相关的开发文档等。然后再开始编写程序代码,这样做到每段代码心底都有数,有条不紊。

本文对系统的开发只是基于个人的一个尝试性的开发,虽然取得了一定的成果,但是由于时间的限制,仍然存在许多的不足之处,因此需要后期的不断完善。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SSM家庭理财个人理财系统-JAVA【数据库设计、源码、开题报告】 的相关文章

  • 如何使用javac编译java包结构

    我正在尝试编译 从命令行 一个 java 包 该包导入我自己的另一个包 我正在关注一个在线教程 http www roseindia net java master java createsubpackage shtml但当我尝试编译最终的
  • SWT:如何进行高质量图像调整大小

    我的应用程序需要调整 ImageData 的大小 不幸的是 我还没有通过 GC 开启抗锯齿和高插值 或 ImageData scaledTo 获得我想要的结果 生成的图像质量太低 无法接受 进行高质量 ImageData 调整大小的最佳方法
  • cygwin有java sdk吗?

    cygwin有java sdk吗 如果有一个使用 cygwin 文件系统和 X windows 进行显示的本机 cygwin 实现 那就太好了 不幸的是我不知道这样的版本 我认为移植 OpenJDK 也需要付出很大的努力 但我还没有尝试过
  • JTree 避免重新加载后崩溃

    我正在尝试找到解决崩溃问题的方法JTree重新加载后 情况 JTree Office A Office A 1 Office A 1 1 Office A 1 2 Office B Office B 1 Office B 1 1 Offic
  • Guice:当 FactoryBuilder 中提供合适的构造函数时,“找不到合适的构造函数”

    我使用 Guice 进行依赖注入 但收到此错误 1 Could not find a suitable constructor in java lang Void Classes must have either one and only
  • 枚举内的枚举

    这不是我被卡住的问题 而是我正在寻找一种简洁的方式来编写我的代码 本质上 我正在编写一个事件驱动的应用程序 用户触发事件 事件被发送到适当的对象 然后对象处理事件 现在我正在编写偶数处理程序方法 我希望使用 switch 语句来确定如何处理
  • docker 中带有参数的 jar 文件

    Helo 我有一个 java jar 文件 当我从终端运行它时 它会接受一堆参数作为输入 我想制作一个 docker 映像并运行它 其中包含 jar 文件 我仍然可以在其中传递 jar 文件的参数 将 jar 文件设置为您的入口点 http
  • 声纳要求将这一领域定为最终目标

    我的程序中有以下代码 在与 Maven 集成后 我正在运行 SonarQube 5 对其进行代码质量检查 我面临这个错误 将此 public static processStatus 字段设为最终字段 将此 public static pr
  • 如何使用jdbc驱动编写事务?

    我想使用 jdbc 编写一个事务java 我尝试过这个简单的交易 BEGIN TRANSACTION NL GO NL UPDATE table SET col test where id 1010 NL GO NL COMMIT 我尝试过
  • 使用嵌入式 Jetty 7 发布 JAX-WS 端点

    有人可以帮忙吗 我想使用嵌入式 Jetty 7 作为端点 这是我尝试过的 public class MiniTestJetty WebService targetNamespace http public static class Calc
  • MongoDb Spring 在嵌套对象中查找

    我正在使用 Spring Data Mongodb 和这样的文档 id ObjectId 565c5ed433a140520cdedd7f attributes 565c5ed433a140520cdedd73 333563851 list
  • oracle.jdbc.driver.OracleDriver ClassNotFoundException

    这是我收到错误的代码 我的classes12 jar已作为外部 jar 导入 import java io IOException import java io PrintWriter import java sql Connection
  • Spark java:如何处理多部分/表单数据输入?

    我在用spark http sparkjava com 开发网络应用程序 当我想上传文件时出现问题 public final class SparkTesting public static void main final String a
  • java中从视频中提取图像

    我想知道如何使用 JMF 从视频中提取图像 Player player Manager createRealizedPlayer cdi getLocator player start FrameGrabbingControl frameG
  • Maven编译错误:包不存在

    我正在尝试向现有企业项目添加 Maven 支持 这是一个多模块项目 前 2 个模块编译和打包没有问题 但我面临编译错误 我尝试在多个模块中使用相同的依赖项 我的结构是 gt parent gt pom xml gt module 1 gt
  • 如何强制 Spark 执行代码?

    我如何强制 Spark 执行对 map 的调用 即使它认为由于其惰性求值而不需要执行它 我试过把cache 与地图调用 但这仍然没有解决问题 我的地图方法实际上将结果上传到 HDFS 所以 它并非无用 但 Spark 认为它是无用的 简短回
  • Android 中的自定义相机应用程序问题 - 旋转 270、拉伸捕获视图且未获取所有功能

    我从代码中得到了帮助https github com josnidhin Android Camera Example https github com josnidhin Android Camera Example 但面临一些问题 例如
  • 如何在 logback 中启动时滚动日志文件

    我想配置 logback 来执行以下操作 记录到文件 当文件达到 50MB 时滚动文件 仅保留 7 天的日志 启动时始终生成一个新文件 滚动 除了最后一项 启动卷 外 我一切都正常 有谁知道如何实现这一目标 这是配置
  • 最新版本 6.* Struts2 支持 Tomcat 10 吗? [复制]

    这个问题在这里已经有答案了 最新版本 6 Struts2 支持 Tomcat 10 吗 异常启动过滤器 struts2 java lang ClassCastException class org apache struts2 dispat
  • Encog:BasicNetwork:无需预先构建数据集的在线学习

    我正在尝试使用 encog 库作为强化学习问题的函数逼近器 更准确地说 我正在尝试启动并运行多层感知器 BasicNetwork 由于我的代理将根据我选择的任何 RL 算法以某种方式探索世界 因此我无法预先构建任何 BasicNeuralD

随机推荐

  • HashSet(使用方法详解)

    HashSet 使用方法详解 1 HashSet 基于 HashMap 来实现的 是一个不允许有重复元素的集合 2 HashSet 允许有 null 值 3 HashSet 是无序的 即不会记录插入的顺序 4 HashSet 不是线程安全的
  • 在同一个Tomcat下部署多个同名系统

    有多个同名war要部署在同一台服务器上 除了部署多个Tomcat 还可以在同一个Tomcat下设置多个Service 流程 打开Tomcat conf server xml 选中已有的整个
  • [Python从零到壹] 五十一.图像增强及运算篇之图像灰度直方图对比分析万字详解

    欢迎大家来到 Python从零到壹 在这里我将分享约200篇Python系列文章 带大家一起去学习和玩耍 看看Python这个有趣的世界 所有文章都将结合案例 代码和作者的经验讲解 真心想把自己近十年的编程经验分享给大家 希望对您有所帮助
  • 【开发环境搭建】3.Anaconda安装包和channels管理

    文章目录 1 conda 管理包 2 conda channel管理 2 1 指定安装包的channel 2 2 default中找不到合适包时的包安装方法 2 3 environment yml中指定pip安装的包 本文内容对linux系
  • 项目实战04_构建企业级maven私服

    注意 在一个互联网企业中 都是采用分模块的开发模式 每个团队维护自己的模块 是无法看到另外项目团队的模块代码的 需要实现业务的通讯就会使用到rpc远程调用技术 Maven私服作用 1 构建一个企业级Maven私服 缓存微服务团队中jar包
  • 乐高wedo搭建图纸_乐高课程 wedo2.0编程

    乐高wedo2 0编程套装 编号45300 乐高教育 WeDo 2 0 通过乐高模型和简单的程序编写 鼓励和激发 2 到 6 年级小学生对科学 工程以及相关课程的学习兴趣 WeDo 2 0强调孩子通过动手体验来树立信心 敢于发现 提出和思考
  • Java使用POI导出Word文档

    POI是Apache组织的一套关于文档操作的api 可以实现word文档和excel文档的读取和写出的功能 所需jar包点击下载 生成word文档 public class WordStudy Test public void test1
  • 已解决(MongoDB安装报错)Service ‘MongoDB Server (MongoDB)’ (MongoDB) failed tostart. Verify that you have su

    成功解决 MongoDB安装报错 Service MongoDB Server MongoDB MongoDB failed tostart Verify that you have sufficient privileges to sta
  • [命令技巧]alias

    转自 http www dutor net index php 2011 03 commands alias alias 假名 别名 bash的一个内建命令 用来给常用的较长的命令定义个简短的名称 alias命令的基本格式为alias wo
  • Tomcat环境搭建部署

    目录 Tomcat 环境搭建 Win10 Tomcat部署 Tomcat是常见的免费的web服务器 Tomcat 环境搭建 Win10 自己在搭建的过程中出现了一些问题 网上找了找解决方法 发现还是有一些问题 记录一下 Tomcat下载 h
  • overflow相关面试题

    overflow 是 CSS 属性 用于控制元素的溢出内容的处理方式 当元素中的内容超出其容器时 可以通过该属性进行控制 overflow 属性通常与容器元素 如 div 或 一起使用 overflow 属性可以取以下几个值 visible
  • osgEarth的Rex引擎原理分析(五十七)osgEarth中多个着色器的源代码的编译链接过程

    目标 五十四 中的问题129 osgEarth中多个着色器的源代码的编译链接过程 1 先一个一个编译 void Shader PerContextShader compileShader osg State state extensions
  • 在Ubuntu 20.04上成功安装 rtx 3060 notebook Nvidia cuda 和基本图形驱动

    cuda Toolkits中包含了对应的图形驱动 所以只需要安装CUDA 顺便就安装了基本的显卡驱动 最好在新笔记本上安装 经常会失败 重装Ubuntu也不怕丢失重要数据 为了保存用户数据 至少把硬盘分为3个区 1 swap 32GB 2
  • 阿里云发布首台云电脑“无影”,传统 PC 已“末路”?

    作者 硬核云顶宫来源 硬核编辑部 在9月17日的云栖大会上 阿里云智能总裁 达摩院院长发布阿里云第一台云电脑 无影 这是一台长在云上的 超级电脑 只需将一张名片夹大小的 C Key 上连接一块屏幕 就可以进入专属云电脑桌面 访问各种应用和文
  • 整数规划的分支定界法

    分支定界法 把全部可行解空间进行恰当地进行系统搜索 这就是分支定界法的基本内容 我们通常把全部可行解空间反复分割为越来越小的子集 这就称为分支 并对每个子集内的解集计算出一个目标下界 针对最小值问题 这称为定界 在每次分支后 凡是界限超过已
  • 轻轨服务器一般用什么系统,原来轨道交通集成平台的优势是因为这个啊......

    原标题 原来轨道交通集成平台的优势是因为这个啊 轨道交通的重要性就不多说了 火车 高铁 地铁都是大多数人的出行首选 也因此带来铁路交通管理的困难 仅靠人力是远远不够的 必须依靠现代安防科技 但是各个安防系统无法兼容 会造成后台管理的困难 飞
  • 【registries】registrie rest-service idea 无法引入

    1 概述 因为需要 我在外网mac环境尝试本地运行registry 经过一番折腾后 运行主类报错com hortonworks registries webservice RegistryApplication java lang Clas
  • 目标检测从零开始的学习之路--原理篇

    安装相关 Anaconda官网下载安装下一步进行到底 相关环境那儿记得打勾 不然就自己添加下环境变量就好 另 一般进官网就找Download 再找相关想下载的版本 适配系统之类的 这里下载的是Python 3 7 version for W
  • 设计模式:命令模式

    命令模式很好理解 举个例子 司令员下令让士兵去干件事情 从整个事情的角度来考虑 司令员的作用是 发出口令 口令经过传递 传到了士兵耳朵里 士兵去执行 这个过程好在 三者相互解耦 任何一方都不用去依赖其他人 只需要做好自己的事儿就行 司令员要
  • SSM家庭理财个人理财系统-JAVA【数据库设计、源码、开题报告】

    第一章 绪论 1 1 课题背景 目的及意义 从 20 世纪末以来 在全球经济日趋一体化的背景之下 中国经济也得到了飞速的发展 家庭收入也快速增长 居民的消费结构发生了巨大变化 购置房产 旅游 汽车消费 教育等成为居民消费重点 现代家庭越来越