记账系统毕业设计.docx
《记账系统毕业设计.docx》由会员分享,可在线阅读,更多相关《记账系统毕业设计.docx(40页珍藏版)》请在冰点文库上搜索。
记账系统毕业设计
(此文档为word格式,下载后您可任意编辑修改!
)
1软件设计目的
我们生活在这智能化的社会,生活水平在飞速的提高,同时人们的收入和消费水平便也有了质的飞跃,每个不断追求的我们,都向往着高端消费,高端享受,尤其作为90后的年轻人都向往着小资的生活,但在此追求的同时,如此快速发展的消费水平也给我们带来了好多烦心事,例如,在我们每次疯狂的消费以后,导致我们无形中就光荣的成为了“月光族”。
有消费就会有钱财的流动,那么如何管理好自己的钱财,做到花有头,存有绪,个人理财也就成为了人们愈发急需的个人能力之一。
有句话说得好,“你不理财,财不理你”。
如果你希望自身的财务状况能够良好、健康可持续的发展,学会理财是十分必要的。
为了让我们能更好的理财,改变现状,所以不同功能的个人理财系统便由此产生了,不论是PC版还是手持设备版都有。
在android系统应用如此火热的情况下,开发一款基于android系统的个人记账系统,不仅能很好的应用android系统的优势,可以在不同的小型手持设备上安装该软件。
同时,手持设备的便于携带性也大大提高了软件的使用价值,不仅可以随时随地记账,还能从另一方面解决人们不善于管理个人财务的习惯,帮助大家实现自主理财,设计这样一款个人记账系统是非常有意义和有利用价值的。
此外,由于在我国个人理财刚刚起步不久,因此,目前国内个人理财机构提供的品种与国外相比也显得过于单一。
此外,由于国内对金融安全的考虑,因此,在一定程度上也限制了国内个人理财中投资的范围,目前国内开展的个人理财服务基本上只能选择国内的投资项目,因此,这也是国内个人理财与国外个人理财的最大不同。
理财专家说,国内居民理财观念有偏颇、个人理财投资范围有限,以及理财产品的单一,也是约束理财市场的几大障碍。
现在国外的公司大举进军中国也加大了个人理财的国内居民对个人理财的重视,这也必将加速国内理财市场的发展。
2软件设计概述
2.1系统分析
(1)通过对实际需求的调研,确定本系统由两个功能模块组成,即账单明细,添加账单。
系统功能模块图如图所示。
1.4ECLIPSE概述
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。
虽然大多数用户很乐于将Eclipse当作JavaIDE来使用,但Eclipse的目标不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于Java开发工具。
尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如CC++、COBOL和Eiffel等编程语言的插件已经可用,或预计会推出。
Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
基于Eclipse的应用程序的突出例子是IBM的WebSphereStudioWorkbench,它构成了IBMJava开发工具系列的基础。
例如,WebSphereStudioApplicationDeveloper添加了对JSP、servlet、EJB、XML、Web服务和数据库访问的支持。
1.5SQLSERVER数据库简介
目前市场上数据库的主流厂商及产品有IBMDB2、MicrosoftSQLSERVER2000、ORACLE9i、Sybase。
本系统采用SQLServer2000数据库进行数据管理。
SQLServer作为微软在Windows系列平台上开发的数据库,一经推出就以其易用性得到了很多用户的青睐。
MicrosoftWindowsServer2000是最新的、功能强大的、面向商业用户的操作系统,它的特点是易于使用,具有灵活性、可靠性的优点。
它具有学习操作简单,兼容性良好,适用于电子商务建设,增加了数据仓库的特性,增强了建设在线商务方面的功能等优点。
区别于FoxPro、Access小型数据库,SQLServer是一个功能完备的数据库管理系统。
SQLServer的事务处理量大,响应速度快,并能为数百或更多用户维持这种高性能。
SQLServer2000也是当今网络编程中使用的比较多的一个数据库系统,java是目前最流行的编程语言,在编程中涉及的比较多也比较重要的就是数据库问题,java自身提供了对各类主流数据库系统的支持,通过java.sql库,提供了统一的接口,使得可以在java环境下不必对程序作大规模的修改,只要更改相应的驱动程序,即可实现对各类数据库的操作,从而提高软件的生存周期和降低软件的开发成本和维护费用。
所以本系统采用SQLServer2000数据库进行开发。
1.6JAVA编程语言简介
Java是一种语法简洁、清晰的语言,它的程序运行需要一个解释器,也就是所谓的“虚拟机”。
虚拟机以某种高速算法解释执行Java的面向对象语言代码。
Java是基于WWW开发的,主要分为客户端和服务器端两大类型。
Java客户端软件包括Applet应用小程序,传统的客户端图形界面程序、各类加点设备的客户端应用程序。
服务器端软件则包括利用Socket套接字或使用封装了Socket功能函数的Java高级网络流类编写的Server并发程序、Servlet程序、JSP网页程序和服务器端的EJB组件等。
根据Sun的Java语言白皮书中的归纳和总结,简单地说,Java语言有如下特点:
1.简单(Simple)。
程序较小,编写容易,能够在小型机器上执行,基本的解释器约为40KB,若加上基本的程序库,约为215KB。
2.面向对象(Object-Oriented)。
一个对象的状态只由对象自己可知的变量定义。
Java把这些变量称为数据域或者成员变量。
数据域对对象来说是私有的,除非显示地使用关键字来定义它们的作用域,使它们对其他类可见。
一个对象的行为是由它上面的操作定义的。
在Java中,这些操作被叫做方法。
方法可以改变一个对象的状态,创建新对象,实现实用的功能等。
3.分布式(Distributed)。
Java有一个庞大的程序库,且容易地与HTTP和FTP等TCPIP通信协议相配合。
4.健壮性(Robust)。
有Java所编写的程序,在多数情况下执行稳定。
Java与CC++最大不同是Java通过一个指针模型来排除内存被覆盖和毁损数据的可能性。
5.安全性(Secure)。
Java是被设计用于网络及分布式的环境中,Java拥有数个阶层的互锁保护措施,能有效地防止病毒的侵入和破坏行为的发生。
6.结构中立(ArchitectureNeutral)。
Java的编译器产生一种结构中立的目标文件格式,这使得编译码得以在很多种处理器中执行。
7.解释执行(Interpreted)。
Java解释器能直接在任何机器上执行Java位元码,这对于缩短程序的开发过程,有很大的帮助。
8.高性能(HighPerformance)。
Java位元码可迅速地能被转换成机器码,从位元码转换到机器码的性能与C和C++几乎没有分别。
9.多线程的(Multithreaded)。
Java语言具有多线程的功能,这对于交互回应能力及即时执行行为是有帮助的。
10.动态性(Dynamic)。
Java比C或C++语言更具有动态性,更能适应时刻在变的环境,Java不会因程序库的更新而必须重新编译程序。
2需求分析
2.1需求分析
我们生活在这智能化的社会,生活水平在飞速的提高,同时人们的收入和消费水平便也有了质的飞跃,每个不断追求的我们,都向往着高端消费,高端享受,尤其作为90后的年轻人都向往着小资的生活,但在此追求的同时,如此快速发展的消费水平也给我们带来了好多烦心事,例如,在我们每次疯狂的消费以后,导致我们无形中就光荣的成为了“月光族”。
有消费就会有钱财的流动,那么如何管理好自己的钱财,做到花有头,存有绪,个人理财也就成为了人们愈发急需的个人能力之一。
有句话说得好,“你不理财,财不理你”。
如果你希望自身的财务状况能够良好、健康可持续的发展,学会理财是十分必要的。
为了让我们能更好的理财,改变现状,所以不同功能的个人理财系统便由此产生了,不论是PC版还是手持设备版都有。
在android系统应用如此火热的情况下,开发一款基于android系统的个人记账系统,不仅能很好的应用android系统的优势,可以在不同的小型手持设备上安装该软件。
同时,手持设备的便于携带性也大大提高了软件的使用价值,不仅可以随时随地记账,还能从另一方面解决人们不善于管理个人财务的习惯,帮助大家实现自主理财,设计这样一款个人记账系统是非常有意义和有利用价值的。
2.2功能需求
通过对实际需求的调研,确定本系统由两个功能模块组成,即账单明细,添加账单。
系统功能模块图如图所示
2.4运行环境
2.4.1硬件环境
(1)服务器端
服务器端的最低配置是由建立站点所需的软件来决定的,在最低配置的情况下,服务的性能往往不尽如人意,现在的硬件性能已经相当出色,而且价格也很便宜,因此通常应给服务器端配置高性能硬件。
本网络系统服务器端的配置如下:
●处理器:
InterPentium41.86GHz或更高
●内存:
1GB
●硬盘空间:
80GB
●光驱:
CD-ROM48X
●显卡:
SVGA显示适配器
(2)用户端
因为用户端主要用于浏览和操作数据,所以对客户端的硬件要求不高,不过现在的电脑有很高的性价比,因此需要的配置应该高于下面的配置。
●处理器:
InterPentium166MX或更高
●内存:
32MB
●硬盘空间:
1GB
●光驱:
CD-ROM48X
●显卡:
SVGA显示适配器
2.4.2软件环境
(1)服务器端
●操作系统:
Windowsxp
●网络协议:
TCPIP
●Web服务器:
Tomcat5.0
●数据库:
SQLSERVER2000
●浏览器:
InternetExplore5.0以上
(2)用户端
●操作系统:
Windows98ME2000XPVista
●网络协议:
TCPIP
●数据库:
SQLSERVER2000
●浏览器:
InternetExplore5.0以上建议分辨率为1024×768像素
第三章总体设计
3.1记账系统的模型结构
该系统的模型结构如图3-1所示:
图3-1记账系统机构图图示
该系统结构分为三个逻辑层:
三层架构:
模型层主要是为了联接显示层和业务层,本系统遵循MVC三层架构,模型层起到一个传递数据和存储数据的作用,而客户端浏览器相当于显示层,主要是为了给用户展现数据,而业务层是对用户的需求的一种动作执行。
3.2记账系统的功能模块简介
图3-2列出系统的功能模块:
图3-2系统模块
工作流程为:
打开该系统,用户注册个人帐号,根据个人帐号登录系统,每个人登录系统后只可以对个人理财信息进行操作,本系统为单机版记账系统,即用户注册即为系统管理员,用户可以任意对自己的理财信息进行增加,修改和删除。
并且可以对个人密码进行修改。
收支分析模块主要是对用
户收支情况的分析,用户可以录入自己的收支信息,并且可以对自己的信息进行修改和删除操作,用户收支情况是系统自动计算得出的,用户,如果用户的支出大于收入,则点击收支分析则会出现系统警报;债券管理主要是用户对个人债券信息的录入,如果需要变动则可以对债券信息进行修改,并且只要填写用户债券数和盈利率就可以得出债券的盈利金额。
资产管理模块:
资产管理模块主要是对个人买入和卖出个人资产的一种管理。
总体上来说就是对现金的支出和收入进行管理,让用户对自己的资产能够一目了然,也能够更好的计划个人的开支;股票管理模块:
股票管理模块主要是为了能够帮助个人更好的管理股票信息的模块,并且可以计算出股票的盈利情况;保险投入模块:
保险投入模块主要是记录个人投保信息。
整个记账系统开发的总目标是让用户可以轻易的对个人收入与支出进行管理。
可以对自己的金钱进行大胆的规划,对自己应该做出怎样的投资也不用在头疼,通过该软件,用户可以在进行参考后较为轻易的做出决定。
该系统运用简单,操作方便,可以使用户节约记账的时间,克服纸张不容易保存的缺点。
可以通过资产管理模块,实现用户对个人资产的记录、统计、规划。
可以建立各种账户类型,以便管理各种账户的财务状况。
对资产,股票,保险的基本信息存入数据库,可以进行检索。
有方便的查询方法,如:
日期,状态等信息进行检索。
提供较为完善的差错控制与友好的用户界面,尽量避免误操作。
3.3数据库设计
数据库的设计是MIS系统的核心部分,设计数据库,首先要进行需求分析,然后进行数据库的概念结构设计、逻辑结构设计、数据库结构实现等步骤。
本套记账系统采用的MicrosoftSQLServer2000作为访问数据库的服务器,用它来对数据进行存储,在数据库应用系统的开发过程中,数据库的结构设计是一个非常重要的问题。
我们在这里所说的数据库结构设计是指数据库中各个表结构的设计,包括信息保存在哪个表格中,各个表的结构如何以及各个表之间的关系。
数据库结构的好坏将直接对应用系统的效率以及实现的效果产生影响,好的数据库结构设计会减少数据库的存储量,数据的完整性和一致性比较高,系统具有较快的响应速度,简化基于此数据库的应用程序的实现等等。
3.3.1数据库设计
数据库逻辑设计分为三个阶段,分别是:
收集和分析用户要求、建立E-R模型和数据库模式设计。
数据库逻辑设计中的第一阶段收集和分析用户需求是按以下四步进行的:
分析用户活动,确定系统范围,分析用户活动所涉及的数据和分析系统数据。
逻辑设计第二阶段建立E-R模型分两步,首先应进行局部E-R模型设计,然后进行总体E-R模型的设计。
nn
1
1
11
nn
图3-3.1总体ER图
逻辑设计第三阶段在数据库模式设计阶段分两步进行,第一步初步设计:
把E-R图转换为关系模型,第二步优化设计:
对模式进行调整和改善。
我们所要进行研究的是逻辑设计的第三步即将E-R图像关系模型转化。
实体转换出的关系模式:
账户表{账户号,账户名称,电话,邮箱,地址,密码}
债券记录表{投资人,债券名称,债券代码,买入金额,收益率,赢利金额}
股票记录表{投资人,股票名称,股票代码,买入价格,股数,卖出价格,赢利金额}
社会保险记录表{社会保险单号,投保人,日期,保险类型,金额,备注}
商业保险记录表{社会保险单号,投保人,日期,保险类型,金额,备注}
保险类型记录表{保险类型编号,保险类型名称}
1:
n联系转换出的关系模式:
不转换为表,而将1端实体的主键放到n端的实体作为n端实体的外键。
3.3.2数据库结构设计
数据库物理设计包括:
选择存储结构、确定存取方法、选择存取路径、确定数据的存放位置。
主要解决选择文件存储结构和确定文件存取方法的问题。
在数据库中访问数据的路径主要表现为如何建立索引。
如要直接定位到所要查找的记录,应采用索引方法存取方法(索引表)。
顺序表只能从起点进去向后一个个访问记录。
数据库的物理实现取决于特定的DBMS,在规划存储结构时主要应考虑存取时间和存储空间,这两者通常是互相矛盾的,要根据实际情况决定。
索引并不是越多越好。
虽然索引能提高查询效率,但由于是对数据表的映射,所以进行DML操作(增、删、改)时效率就会降低。
经常查询的字段应该建索引,数据量庞大,查询的结果记录很少也需要建索引。
在上面的实体以及实体之间关系模式的基础上,形成数据库中的表以及各表之间的关系。
通过合理规划,需要设计7个数据库表来保存需要更新的数据:
账户表(表3-1)、债券记录表(表3-2)、股票记录表(表3-3)、社会保险表(表3-5)、商业保险表(表3-6)。
其结构如下:
表3-1:
账户表(Account)
字段名
说明
类型
长度
可否为空
主键
user_id
账户号
int
4
否
是
user_name
账户名称
varchar
30
是
Password
密码
varchar
30
是
real_name
真实姓名
varchar
30
是
Email
邮件
varchar
30
是
Address
地址
varchar
60
是
Phone
电话
varchar
30
是
表3-2:
债券记录表(Bond_buy)
字段名
说明
类型
长度
可否为空
主键
bond_id
债券编号
int
4
否
是
user_id
投资人
int
4
否
是
Code
债券代码
varchar
20
否
是
Name
债券名称
varchar
9,2
是
Money
买入金额
float
4
是
interest_rate
收益率
float
8
是
create_date
购买日期
datetime
8
是
表3-3:
股票记录表(Stock_buy)
字段名
说明
类型
长度
可否为空
主键
user_id
投资人
int
4
否
是
stock_id
股票编号
int
4
否
是
Code
股票代码
char
10
否
是
Name
股票名称
char
10
是
first_price
买入价格
float
8
是
last_price
卖出价格
float
8
是
stock_num
股数
int
4
是
Remark
备注
varchar
2000
是
create_date
创建日期
datetime
8
是
表3-5:
社会保险表(Insurance_social)
字段名
说明
类型
长度
可否为空
主键
ins_id
社会保险单号
int
4
否
是
user_id
投保人
int
4
否
Name
保险名称
varchar
4
否
insurance_id
保险类型编号
int
4
是
Money
金额
float
8
是
Remark
备注
varchar
20
是
create_date
创建时间
datetime
9,2
是
表3-6:
商业保险表(Insurance_social)
字段名
说明
类型
长度
可否为空
主键
ins_id
商业保险单号
int
4
否
是
user_id
投保人
int
4
否
Name
保险名称
varchar
4
否
insurance_id
保险类型编号
int
4
是
Money
金额
float
8
是
Remark
备注
varchar
20
是
create_date
创建时间
datetime
9,2
是
第四章系统详细设计及实现
4.1系统登录
登录页面:
主要功能是用户利用用户名和密码登录,并且可以注册新用户。
已存在用户可直接登录。
新用户需点击“注册”进行注册账号。
点击注册后,页面跳转到
“webenterAddUserAction.do”。
如图4-1所示:
关键代码:
publicclassLogoutActionextendsBaseAction{
publicActionForwardexecute(ActionMappingactionMapping,
ActionFormactionForm,HttpServletRequestrequest,
HttpServletResponseresponse){
HttpSessionsession=request.getSession();
session.invalidate();
returnactionMapping.findForward("success");
图4-1登录页面截图
4.1.1注册新用户
提交用户名密码(英文数字支持),填写真实姓名,邮箱,地址,电话(可以为空值)。
点击提交,可以注册新账户。
点击后退可以返回登录界面。
如图4-1.1所示:
图4-1.1新用户注册截图
系统登录成功页面:
系统登录成功后可以看到系统的所有功能菜单以及欢迎语句,在此页面可使用系统功能:
个人管理、收支分析、资产管理债券投资、股票投资、保险投入。
点击功能“button"即可触发功能,跳转到功能页面如图4-2所示:
关键代码:
publicclassEnterLoginActionextendsBaseAction{
publicActionForwardexecute(ActionMappingactionMapping,
ActionFormactionForm,HttpServletRequestrequest,
HttpServletResponseresponse){
UserFormuserForm=(UserForm)actionForm;
returnactionMapping.findForward("success");
图4-2登录成功页面截图
4.2用户管理模块
用户登录后可以修改个人信息、用户名、邮箱、地址、电话。
填写新的信息后,点击修改,即可完成修改个人信息的操作。
点击“后退”取消修改。
如图4-2.1所示:
关键代码:
publicclassEnterSysAdminActionextendsBaseAction{
publicActionForwardexecute(ActionMappingactionMapping,
ActionFormactionForm,HttpServletRequestrequest,
HttpServletResponseresponse){
UserFormuserForm=(UserForm)actionForm;
IdentityBeanbean=this.getIdBean(request);
UserFormform=DBController.getMemberById(Integer.parseInt(bean
.getUserId()));
try{
BeanUtils.copyProperties(userForm,form);
}catch(IllegalA