张琳莹 张云洁
摘要:理财系统一直应用在企业单位,关系着企业的发展前景。随着当今社会对经济效益的日益重视,财务管理已经不仅仅局限于一个企业,小到一个家庭,也必不可少。在计算机技术迅速发展的大时代背景下,发展家庭财务自动化管理势在必行,可以极大改善传统手工记账工作繁琐,不易保存的弊端,因此搭建属于家庭自身内部的财务系统具有一定的现实意义。采用Eclipse开发工具,以MySQL 5.6数据库作为后台数据库比较常用的应用架构——贫血模式和SSH应用组合设计睿思家庭财务自动化管理系统,利用电子记账取代传统的纸质记账,最大限度的节约成本,并为用户提供更加方便高效的财务信息管理和统计功能。现有家庭财务管理系统大多是单机管理,睿思财务管理系统基于Web开发,用户可随时随地登录系统进行家庭财务管理,系统更增加了普通用户與家庭管理者之间申请支出与批复申请功能,使管理者更加全局的管理家庭财务。
关键词:家庭财务;管理系统;自动化;贫血模式:SSH组合
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)11-0104-04
1 导论
对家庭财务信息进行管理,以利于了解家庭财务状况,计划家庭支出预算,制定家庭投资计划。本人的这个睿思家庭财务管理系统就是为满足当代家庭理财管理的需要而设计的,能够为每一个家庭用户提供充足的信息和和快捷的查询手段,大大方便家庭成员对家庭收支的管理工作。随着社会发展,计算机科学在人类社会的各个领域都发挥着重要作用。在这样的环境下,开发一个系统软件,实现对家庭财务信息系统化、规范化、科学化的管理,是很有必要的。
1.1 论文的选题背景和意义
中国进入21世纪以来,经济飞速增长,生活水平不断提高,家庭财富不断积累,家庭理财已经成为一项必要的家庭活动。适当的家庭理财和投资计划,有利于保持家庭财富持续稳定的增长。然而理财活动的进行需要依赖大量财务数据信息,以及对自身资产情况的充分了解,并且与每一个家庭成员都休戚相关,个人财务管理活动是非常普遍的。
家庭财务管理其实并不新鲜,每个家庭都有一定的存款,可能还会购买股票、基金,或者有亲戚朋友间的欠款利用计算机开发一个自动化的家庭财务管理系统,是顺应发展趋势的最好选择。使用计算机对家庭财务信息进行管理有很多优点,例如:成本低、存储量大、保密性好、查找方便、检索迅速、可靠性高、寿命长。这些优点能够有效提高家庭财务管理的效率。综上所述,开发一个新系统来使用一系列的家庭收支管理工作是很有必要的。
2 家庭财务管理系统的相关技术概述
2.1 传统表现层技术:JSP
Java Server Page(JSP)是基于Java语言服务器端脚本技术。JSP提供动态网页设计技术,建立在Java Servlet技术基础之上;使用JSP技术,程序开发人员可以利用JSP的标记在HTML静态内容中加入动态数据,制作动态网页;编写HTML代码的工作可以由网页设计者负责,而动态数据则由程序开发人员负责,这样可更有利于网页设计者和程序开发人员发挥各自的特长[1]。
2.2 MVC框架
MVC是一种设计模式,它将应用划分为3个部分:数据(模型)、展现层(视图)和用户交互层(控制器);模型用来存放应用的所有数据对象,比如,可能有一个User模型,用以存放用户列表、他们的属性及所有与模型有关的逻辑;视图层是呈现给用户的,用户与之产生交互;控制器是模型和视图之间的纽带,控制器从视图获得事件和输入,对它们(很可能包含模型)进行处理,并相应更新视图,当页面加载时,控制器会给视图增加事件监听,比如监听表单提交或按钮点击,然后当用户和你的应用产生交互时,控制器中的事件触发器就开始工作了;换句话说,一个事件的发生是这样的过程[2]:
1)用户和应用产生交互;2)控制器的事件处理器被触发;3)控制器从模型中请求数据,并将其交给视图;4)视图将数据呈现给用户。
2.3 Spring框架的作用
Spring框架由Rod Johnson开发,经过长达7年的发展,Spring已经发展成Java EE开发中最重要的框架之一;Spring为企业应用的开发提供一个轻量级的解决方案,该解决方案包括:基于依赖注入的核心机制,基于AOP的声明式事务管理,与多种持久层技术的整合,以及优秀的Web MVC框架等;Spring致力于Java EE应用各层的解决方案,而不仅仅专注于某一层的方案[3]。
Spring框架在此系统中处于核心地位,其提供的IoC容器作为业务逻辑组件和DAO的工厂,负责生成和管理实例。使用Spring的依赖注入使各组件以松耦合的方式组合,采用面向接口的方式编程,提高可维护性和可修改性。
2.4 Hibernate的作用
Hibernate是一个用于开发Java应用的对象/关心映射框架;Hibernate通过在数据库中为开发人员存储应用对象,在数据库和应用之间提供一座桥梁,开发人员不必编写和维护大量的代码来存储和检索对象;Hibernate是一种持久化服务,只要求每个持久化对象有少量元数据,因此它是一种非入侵式服务,不要求字节码处理或持久化基类;Hibernate独立于应用架构,因此适用于各种不同的应用;它提供了完全的对象/关系映射,即支持关系数据库缺少的面向对象特性[4]。
在此系统中,Hibernate作为O/R Mapping框架来使用,简化了数据库的访问和在JDBC层上提供了更好的封装,以面向对象的方式来操作数据库,既优雅又灵活。
3 家庭财务管理系统需求分析
3.1 可行性分析
如何确定一个软件项目是否可行就是软件可行性研究的任务[5]。 从经济角度来看,睿思家庭财务管理系统开发使用的是个人的笔记本电脑,省去了购置硬件设施的费用。它所使用的软件工具,其免费版都可以实现所需功能。基于软件是自己的开发的,其后续维修更新非常低廉。另外,本系统作为毕业设计暂时使用的是自己的本地浏览器进行功能操作,只需要将其安装在自己的计算机上就可使用。另外,此系统运行时所占计算机的资源也很低,却不会因为开发成本便宜而影响系统的功能性.
伴随着科学技术的日趋快速的发展和电脑广泛的普及,实现睿思家庭财务管理系统的信息化和高效化,需要良好的硬件设备,和需要易于操作的开发软件。对于硬件方面来说,使用个人笔记本电脑即可。对于软件方面来说,我使用eclipse作为开发工具,My SQL为后台数据库,使用Dreamwaver美化网页,这些开发工具的下载安装已经环境配置都是简单快捷的,并不复杂。综上所述,开发一个家庭财务管理系统在技术上是完全可行的.
3.1.1 操作角度
该系统采用Windows平台开发,是家庭管理者和普通家庭成员与系统之间的操作,但是用户只需在统一的登录入口输入自己的账号,系统就可自动识别用户身份进入相应的功能页面。窗口和界面简单直观,人性化,易用操作和管理,业务逻辑清晰,各模块容易扩充。因此该家庭财务管理系统在操作上是十分可行的。
3.2 用户需求
睿思家庭财务管理系统主要包括:用户信息的管理模块、收入支出类型的管理模块、收入支出账簿信息的管理模块、支出申请批复的管理模块、统计报表的管理模块。具体内容如下所列:
用户信息的管理模块:主要用于记录用户的基本信息,判断该用户是家庭账户管理员还是普通家庭成员以及该普通用户由哪位管理员负责。
收入支出类型的管理模块:家庭财务管理主要有收入和支出两种类型,对收入和支出进行详细分类,对收入和支出的项目进行设置,修改,删除。
收入支出账簿信息的管理模块:管理用户的详细收支条款,对收支记录进行添加,修改,删除。收支信息主要包括收支时间,方式,发生于哪位用户等。
支出申请批复管理的模块:用户可向管理员提出支出需求,管理员根据家庭资产情况对申请进行批复。
统计报表的管理模块:根据收入支出账目统计得出家庭资产负债表,了解家庭财务状况。
3.3 功能需求
1)用户登录模块:用户分为普通用户和管理员两种角色登录,用户输入用户名和密码以及权限可登录系统;
2)记账管理模块:用户在收入记录中记录收入的时间、收入的项目分类、收入的方式、收入的金额、收入的家庭成员、备注信息等。在支出记录中记录支出的时间、支出的项目分类、支出的方式、支出的金额、支出的家庭成员、备注信息等。币种只支持人民币;
3)账簿管理模块:分别显示给用户一个收入账薄和一个支出账簿,账簿上显示的是用户记录的收入和支出明细记录。可以在账薄进行新增、修改、删除、查询明细等操作,可以根据日期查询;
4)收支类型管理模块:管理员可以对收入和支出的类型进行设置、修改或删除。收入和支出的类型以大类划分;
5)支出申请批复管理:用户可对即将所需的支出向家庭财务管理者提出支出申请,管理者根据家庭财务存款状况和未来支出预算决定是否同意此項支出,如若同意,则将申请结果设为同意;
6)家庭成员管理模块:家庭管理员可以对家庭成员进行设置,修改或删除等操作。家庭成员的信息应该包括“编号,姓名,登录名,登录密码,所属管理员”等。家庭成员使用登录名和登录密码登录睿思家庭财务管理系统进行记账,账目查看等操作;
7)资产负债报表管理模块:系统根据用户录入的收入记录和支出记录在每月末自动生成家庭资产负债一览表,用户可登录系统查看;
8)退出系统模块:用户完成操作后退出系统。
3.4 需求用例分析
此系统中定义的不同的角色都有不同的权限,根据角色的权限,他们的活动范围如下图。
4 家庭财务管理系统设计
4.1 软件架构设计
现在流行的轻量级Java EE应用的架构基本上都比较统一,大体的结构都保持相似,但是技术组合落到具体上来看也许会存在一些较小的变化。但我们在决定使用哪一种架构设计时,应该首先考虑的是这种架构能否将规范和实现成功分离,为系统提供更好的可扩展性和可修改性。本系统选用了贫血模型,贫血模型非常常用,开发简单,分层清晰,不宜混淆。对初学者来说是很好的选择。贫血模型的Domain Object不包含业务逻辑方法,只是简单的数据类,每个Domain Object类里面只有相关属性,和属性的setter方法和getter方法,而所有的业务逻辑都用业务逻辑组建来实现。而业务逻辑对象作为DAO组件的门面,封装了所有的业务逻辑方法。Web层无需访问底层的DAO对象,只用与业务逻辑组件交互即可,业务逻辑对象方法的事务性由Spring的声明式事务管理负责。
4.2 基于SSH的框架系统框架设计
SSH(Struts+Spring+Hibernate)框架是J2EE平台下Struts、Spring和Hibernate三个主流框架的统称。其作用分别为MVC框架,轻量级的IOC容器和AOP控制器持久化应用。此系统按照严格的Java EE应用结构,系统主要分层如下[7]:
1)表现层:表现层由JSP页面组成;
2)MVC层:MVC层采用MVC设计模式对用户请求进行处理;
3)业务逻辑层:业务逻辑层有Spring loC容器负责的业务逻辑组件构成;
4)DAO层:由DAO组件构成;
5)领域对象层:PO在Hibernate Session管理下,完成对数据库的访问;
6)数据库服务层:使用MySQL数据库存储持久化数据。
4.3 开发运行环境选择
1)开发环境:
开发语言:Java、HTML、JavaScript 、CSS;开发工具:eclipse、Dreamweaver;开发环境:JDK 1.7;数据库:MySQL 5.6。
2)运行环境
此系统是B/S三层结构,它的运行环境包括客户端、应用服务器端和数据库服务器端三个部分。
浏览器:IE6以上,其他常见浏览器如FireFox。
应用服务器:IIS 5.0或更新版本。
数据库系统:MySQL.
4.4 功能设计
该系统包含以下几个主要功能:登录、账簿管理、收入支出类型管理、申请批复管理、资产表管理、退出登录等。系统用户功能模块如图3所示。
此系统可以大致分为两大模块:管理者模块和普通用户模块。两大模块可以实现如下功能:登录管理收支记录管理、收支类型管理、申请批复管理、资产报表管理、退出管理。
图4是普通用户的功能模块图,注意的是管理员拥有普通用户的所有权限。
用户登录系统,普通用户进入普通用户页面,管理员进入管理员页面,普通用户登录系统后可进入管理收入支出记录支出,此系统中收入记录和支出记录是分开管理,用户可分别录入每天的收入和支出账簿,在当月内可对已输入的收入或支出的记录进行修改或删除。用户也可以输入限定条件来查询以往的记录。如果用户有某项支出预算需要得到家庭财务管理员的许可,可填写支出申请表,写明申请的原因,提交后等待管理员的批复。每月末系统将自动生成收支资产表,用户可点击查看,方便用户清晰明了的掌握资产状况。用户完成所有操作后,点击退出,则安全退出系统。
图5为管理员模块的功能模块图。
管理员以管理员的身份登录系统后,进入管理员页面。点击管理收入支出类型,管理员可在此页面设置收入或支出的类型,此处的收入类型和支出类型也是分开管理的。管理员设置的收入或支出管理类型将会在普通用户添加收入或支出记录时供用户选择分类,管理员对于不满意的类型可以进行修改和删除。但当月已经录入的分类不可修改。管理员还要及时对普通用户提交的支出申请进行批复,查看其申请理由,给出意见。对于存在问题的资产表管理员可对其进行删除操作,以便再次生成。
4.5 数据结构设计
数据库设计是指对于一个给定的应用环境、构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,以满足各种用户应用需求,包括信息管理要求和数据操作要求;数据库的目标是为用户和各种应用系统提供一个信息基础设施和高效率的运行环境;高效率的运行环境包括:数据库数据的存取效率、数据库存储空间的利用率数据库系统运行管理的效率等都是高的;数据库设计应该和应用系统设计相结合,这是数据库设计的特点之一[8]。
4.5.1 数据库表关系设计
根据上述对系统所做的功能分析,该系统涉及的数据信息包括用户信息,收入支出账簿信息、收入支出类型信息、申请信息、审批信息。我们都知道,在客观世界中的对象并不是孤立存在的,这些信息也不是独立存在的,他们之间都存在着关联。经过分析和研究之后,我为此系统设计了7个表,他们的关系说明如下图6所示。
4.6 系统安全设计
系统的安全性的重要性是不言而喻,用户在使用系统时可能会面临各种复杂的破坏和入侵。其中有些是意外,有些是故意的。不管是什么样的,系统的设计必须保证有足够的强度,防止和抵制在安全性方面。
软件安全性设计原则包括[9]:1)保护最薄弱原则;2)纵深防御原则;3)故障保护原则;4)最小特权原则;5)分隔原则。
参考文献:
[1] 張银鹤,刘治国,张豪. JSP动态网站开发实践教程[M].北京:清华大学出版社, 2007.
[2] MacCaw A. JavaScript Web Applications[M]. Springfield: O'Reilly, 2011.
[3] 李刚.轻量级Java EE企业实用实践:Struts 2+Spring 3+Hibernate整合开发[M].北京:电子工业出版社, 2011.
[4] PeakP, Heudecker N. Hibernate Quickly.State of Connecticut--CT : Manning Publications, 2012.
[5] 陈明.软件工程[M].北京:中国铁道出版社, 2007.
[6] 赵增敏. JSP动态网站开发实践教程[M].北京:北京邮电大学出版社, 2006.
[7] 邢宝艳,门飞,张少龙.基于框架技术的企业综合管理系统的设计与实现[J].信息与电脑:理论版,2012(1):69-69.
[8] 王珊.数据库系统概论[M].北京:高等教育出版社, 2006.
[9] 荆小庆,王光卫.软件系统安全性设计原则分析[J].中国测试技术,2005,31(1):79-80.
[10] 文晓阳,高能,夏鲁宁,荆继武.高效的验证码识别技术与验证码分类思想[J].计算机工程,2009,35(8):186-187.