java+jsp+Oracle+Tomcat 记账管理系统论文(完整版)

发布于:2024-05-08 ⋅ 阅读:(25) ⋅ 点赞:(0)

⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️

➡️点击免费下载全套资料:源码、数据库、部署教程、论文、答辩ppt一条龙服务

➡️有部署问题可私信联系

⬆️⬆️⬆️​​​​​​​⬆️​​​​​​​⬆️​​​​​​​⬆️​​​​​​​⬆️​​​​​​​⬆️​​​​​​​⬆️​​​​​​​⬆️​​​​​​​⬆️​​​​​​​⬆️​​​​​​​⬆️​​​​​​​⬆️​​​​​​​⬆️​​​​​​​⬆️​​​​​​​⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️

第一章 绪论

1.1研究背景和意义

对于一个刚出校门或是刚刚工作不久的我们来说,由于我们刚步入社会,最基本的事情就是首先保证自己生存下来,合理地安排自己的消费情况, 所以,我们平时对自己的消费和收支进行一个账单记录显得尤为关键。账单记录能让我们更清楚的了解我们收支的去向,让我们能更好的把握好身上的每一分钱,然后把钱用到关键的地方,如投资,理财等。从查询课外资料来看,国外有很多账单管理的软件,而且大部分外国人对生活中的记账有着严格的把控。就国内而言,放眼望去,大部分记账软件都是着重于办公财务软件,而对于个人和家庭的小型记账系统还是比较少的,因此需要开发一款这样的系统软件,从而达到引导我们理性消费,合理分配收支。
对于记账而言呢,若我们直接像古人那样用纸和笔记录的话,那样随着我们的记录越来越多,我们的记账薄也随之越来越厚,容易造成遗失,当我们要查找某个我们想要找的记录时,我们会消耗大量的时间,这就非常麻烦。这种记账方式就显得非常冗余、笨重,因此我们需要设计一款功能完善的记账软件,用它来代替传统的手工操作。

1.2研究目标

记账理财是一个很普遍而且很广泛的概念,从理财的角度来看,个人、公司和政府部门都少不了理财活动。所以本论文介绍的就是一个人记账为主。中国也是个比较重视个人和家庭观念较国家,一个人理财就非常普遍了。
所谓个人理财从概念上讲,就是合理、有效的安排和运用我们自己的资金,让我们的消费到达最大的效应,以到达最大地限度地满足日常生活需要的目的。简单的来说,个人理财就是利用企业理财和金融方法对我们个人经济进行有效的管理和计划,增强自身的经济实力,提高个人经济的抗打击能力,增大个人效应。从另一种角度来讲,个人理财就是利用开源节流的道理,增加收入,节约支出,用合理地办法来达到我们所希望到达的经济目的。这样的目标有很多,小的如增添家电设备,外出旅游,大的有买车、买房,为自己孩子储备教育基金等等。

1.3论文结构

本论文总共为七章:
第一章 绪论:介绍课题的研究背景和意义,然后分析系统的可行性,然后是本文的组织结构,最后是对本章的总结。
第二章 相关技术与方法介绍:关于本系统的一些相对重要的技术的一些简介和相关资料的介绍,以便阅读本论文的人更好的了解本系统的技术,以及细节。也可以帮助不了解本系统的人了解到该系统的基本功能和相应的相关知识。然后就是所操作的软硬件环境。
第三章 系统分析:简述下系统的可行性,例如基本的 经济可行性、操作可行性和技术可行性等,还介绍了该系统的需求分析,系统的总体需求和相对应的用例图,用例图能使读者更直观的看出该系统需求的总体关系和走向。
第四章 系统设计:系统类分析,让我们更直观的看出这系统所涉及到的一些实体类之间的关系;系统关键业务设计,能让阅读者很清楚该系统的各个功能之间的关系和总体设计是怎样的;数据库设计,让我们可以更加清晰的设计出符合我们需要的表,数据库逻辑结构设计图,让我们清楚的知道数据库每一个表的字段名,以及它们的类型等,让我们能迅速的设计出符合系统需要的数据库表。
第五章 系统实现:用户登录后,系统会展示出用户权限所拥有的功能;管理员登录之后,系统也会展示出管理员相对应的功能列表。
第六章 系统测试:介绍并使用了常见的测试方法,让我们在完成系统的开发后,通过测试,更加快速的发现系统的不足之处并将其进行完善。再进行测试,直到得到满意的测试结果。
第七章 总结:对全文进行一个总体的评价和这段时间所学到的东西进行一个沉淀。并且对于那些在论文期间给予本人帮助的人致谢!

第二章 相关技术与方法

本系统主要采用JAVA编程技术和Oracle数据库,在Windows 7操作系统环境下,采用Eclipse开发工具以及Javabeans编写进行设计与开发完成的基于B/S结构的电子商务网站的设计与实现。

2.1 MVC简介:

MVC 是Modell-View-Controll的英文缩写,它是一种设计典范,把业务逻辑,数据和页面显示抽离出来的方式组织代码。
• Model(模型)表示应用程序核心。
• View(视图)把后台数据接收过来之后,在页面上进行渲染。
• Controller(控制器)控制业务逻辑的处理。
MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
视图(View)是直接与用户交互的界面,对于Web应用来说,可以概括为HTML或者其他显示界面如XHTML、JSP、XML和Applet等。一个应用可能有很多不同的视图,涉及到多方面的显示技术,从而对于系统的维护也不单单只是对单方面技术的要求。业务流程事务的处理交予模型(Model)层处理。
模型(Model):就是业务/服务的跳转的处理以及业务规则的设定。业务流程处理对其它层(view层及control层)来说是黑箱操作,业务模型接受对应表单传递来的数据,处理之后吧就把那个结果返回回来。业务模型的设计是MVC里边最为关键的核心。最近比较常用的EJB(Enterprise java bean)模型就是一个非常经典的的应用例子,它通过从应用程序实现技术的角度出发来对软件层次做了进一步的细分,从而充分利用现有的技术资源,但它不能作为应用设计模型的框架标准。在实体对象与数据库的交互中还有一个重要的模型即数据模型。是与数据库进行直接交互的模块。我们可以将这个模块单独列出,与数据库的操作只限制在该模块中进行。
控制(Controller)的功能是接收来自客户端的请求, 将业务处理模型与视图进行相应的匹配,一起完成用户的请求。控制层对数据不做任何的处理。因此,一个模型可能对应有多个视图,一个视图可能也对应多个模型。

2.2 Mybatis简介:

MyBatis它是一个代码开放式的框架,它比较好用,而且可以把Java对象持久化于数据库当中,它把很多JDBC的那些复杂性代码抽离出来,然后经过自身内部的封装和改造把原有的代码复杂性简单化了,还提供了一个让人很好使用而且很简单的API借口给我们调用,这样我们就很容易的与数据库方面交互。
MyBatis 是来自于iBATIS的,iBATIS于2002年由ClintonBegin创建。MyBatis3是iBATIS的全新设计的一种,支持注解和Mapper的一种框架。
MyBatis流行的主要原因在于它的简单性和易使用性。在Java应用程序中,数据持久化层涉及到的工作有:将从数据库查询到的数据生成所需要的Java对象;将Java对象中的数据通SQL持久化到数据库中。
MyBatis通过抽象底层的JDBC代码,自动化SQL结果集产生Java对象、Java对象的数据持久化数据库中的过程使得对SQL的使用变得容易。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)

2.3 Java简介:

Java开始被叫做Oak,开始是用于电器相关方面的一种语言,大部分是来处理电器相关的控制问题。但是那个时候这个只能家电的前景并不是十分的理想,因此Sun就摒弃的原来的那个策划。就当在这个策划快要报废的时机,互联网进步的非常快,发展前景非常的好,Sun公司预计到了它在互联网上的十分巨大的利润,因此很快的改造了Oak,也就是现在的Java语言。

2.4 JSp简介:

Java服务器页面技术,它不是一种静态的网页,刚好相反,它是动态的。它跟HTML关系非常紧密,相互嵌套,然后用远程服务器里面的JSp引擎来触发和启动,再将生成的整个页面反馈给页面端。

因此Sun公司的JSP就是一种非常优秀的技术,它写起来给人的感觉还是非常好的,有点简单,而且可以适应很多很多的基本平台,可以非常适应于B/S结构的动态网络页面。它由多种元素构成,例如,静态内容(HTML标签)、指令、表达式、小脚本、声明、标准动作、注释等元素构成。
在B/S结构里面,浏览器和服务器端进行交互时,有以下几个过程:
(1)用户在浏览器上输入用户名和密码等信息,然后服务器端接收数据。
(2)浏览器接收用户输入的信息之后,然后把信息传输到服务器上,等待服务端的响应。
(3)服务器接收数据之后,然后进行数据后台处理,最后把处理的结果返回到JSP页面上来。

2.5开发工具

该系统采用Elicpes作为基本开发工具,后台数据库的实现为Oracle,Web服务器为Tomcat。

第三章 系统分析

3.1 系统初步调查

该记账管理系统,主要有4个功能模块组成,分别是:用户登录,财务管理,财务统计和系统管理,不同用户登录该系统权限不同,若是普通用户登录,则可以进行一些基本操作,如自身的信息修改,账单查看,账单记录等功能,若是管理员登录,则可以对普通用户和其他管理员进行管理,如基本的删除等功能。这样能更好的管理整个系统,本来各个模块之间错综复杂的关系,一下子让用户看起来更简单化,人性化。

3.2 系统体系结构设计

整个系统分为 用户注册,用户登录,财务管理,财务统计,系统管理等功能模块,如3-1图所示。
在这里插入图片描述

图3-1 系统结构图

3.2.1 首页

登录之后进入首页,你将看到系统的整体界面和基本功能,在你面前展现出来的是该系统的基本信息,如版本号,版权所有,开发者以及开发者的一些基本信息容内等。

3.2.2用户信息管理

当你登录成功之后,点击用户信息管理,你将看到登录用户的基本信息,如电话,姓名,性别,密码等信息,然后可以直接在上面进行编辑修改自己的信息,修改完成之后,系统将会提示你信息已修改成功,请重新登录的提示,这样以保证用户信息的安全性。

3.2.3用户财务管理

当你登录成功之后,你才有权限看到该用户的财务信息,当你点击财务管理时,将会展现出两栏小菜单,一个财务信息一个财务记录,财务信息将展现该登录用户的所有账单信息,用户可以很清楚地看到自己以往的财务记录;财务记录是一个添加记账的功能,它能简单的记录该登录用户的财务记录,然后入库,将数据持久化到数据库。

3.2.4用户财务统计

财务统计是一个统计功能模块,当用户拥有多条财务记录的时候,他点击财务统计该功能,他将可以清楚的看到月收支统计和年收支统计两个菜单栏。月收支和年收支,显而易见,就是统计该用户财务中每个月所有财务记录的一个统计和每年所有财务记录的一个统计,让用户每个月或者每年对自己财务账单有一个清晰的记录。

3.2.5系统管理

该模块普通用户是看不到的,只有管理员登录才能看的到,管理员登陆之后,他将用户对所有用户的基本管理的功能,如删除用户,通过登录名查询用户等功能,当然还可以对用户添加其他操作功能,这个可以作为一个扩展;然后是管理员对管理员进行管理,也可以进行基本的删除、查看、修改的操作。

3.2.6退出

用户点击退出可以安全退出该系统,退出之后必须重新登陆。

3.3用例图

该系统可分为三大模块管理,一个是用户管理,用户分为普通用户和管理员,他们权限不同,所以所拥有的功能和所看到的页面不同;另一个是财务管理,里面包含用户所拥有的财务信息和财务记录等。还有一个就是系统管理,也就是不同用户所用权限不同。具体见下用例图。
财务管理:
用户管理:
系统管理:
在这里插入图片描述

图3-2 用户管理用例图

不同的用户他们的登录界面不同,他们所拥有的权限和基本功能也是不一样的,他们的属性也有所区别。
在这里插入图片描述

图3-3 财务管理用例图

财务管理是整个系统的核心模块,它的功能如上图描述,可以很好的为用户的财务收支做,有效的记录并且永久的保存到数据库,用户随时可以查看自己的财务记录。
在这里插入图片描述

3-4 系统管理用例图

不同的用户他们的权限也就不一样,管理员能让这个系统更完善,它可以更好的管理所有用户的行为和权限。

3.4用例说明

3.4.1用户登录用例说明

用户注册,登录功能的用例说明,列出一系列可能出现的错误,导致无法正常完成用户的注册,登录的功能。这些错误是我们事先就已经意料到的可能发生的错误,能在第一时间给以客户回应,使得系统的可操作性更加的真实,可靠,也让用户感觉到系统的人性化。这些也是我们程序员在编写代码时要考虑的基本事项,作为一个好的程序员应该在第一时间想到系统可能出现的情况,把系统错误发生的可能性降到最低。以下是关于用户登入和注册时可能发生的一些异常,如:注册时用户名已经存在,登入时用户名与密码不相匹配,用户不存在等。
在这里插入图片描述

表3-1 用户登录用例说明

3.4.2财务管理用例说明

表3-2 财务管理用例说明
在这里插入图片描述

3.4.3系统管理用例说明

表3-3 系统管理用例说明
在这里插入图片描述

第四章 系统设计

本章内容包括系统类分析、核心业务设计、数据库设计三个部分,其中系统类分析需要给出系统类图和类的说明,需要注意在给出类图的时候只需要给出核心业务类,对辅助类如界面类、数据库连接类这种类型的不需要给出,如果所涉及的类(包括类当中的内容)较多时,应首先给出类间关系图(图中的类只有名称没有属性和方法),之后在单个类说明中给出具体类的类图,类图同样需要用WORD进行绘制。
核心业务设计主要描述的是完成某项具体业务时,类之间的消息配合,用时序图进行表述,时序图可以用其他工具绘制,但不能够有其他的颜色出现。
数据库设计主要描述在系统中需要持久化的对象,需要给出ER图,如果系统所涉及的实体(或实体的属性)较多时同样采用分层绘制的方法,顶层图给出实体间关系,下层图针对每一个实体进行具体绘制。

4.1系统类分析

经分析,该系统核心业务类见下图:

图4-1 系统核心类
在这里插入图片描述

4.1.1 User类

USER类用于记录系统的用户信息,并完成登陆和注销的操作。

表4-1 USER类功能表
类功能描述 处理和用户相关的业务操作
所在包名称 com.graduation.bean.User
继承对象 无
实现对象
类属性
保护属性 类型 名称 描述 备注
Public String ID 用户ID 系统中用户的唯一标示,由系统自动生成
Public String Name 登录号 长度限制20位
Public String Password 密码 长度限制20位
Public String sex 性别 长度限制20位
Public String age 年龄 长度限制20位
Public String tel 手机号码 长度限制200位
Public String rname 姓名 长度限制20位
Public Date adddate 注册时间 长度限制20位
主要实现方法
保护属性 方法名 输入参数 输出参数 方法功能描述
Public loginUser string id,string pwd String" 登陆系统,用户输入ID和PASSWORD后进行验证,验证通过返回用户名,并登记日志,验证失败返回空串。
public logout string id Void 注销系统,注销成功清理用户的相关信息并登记日志。

4.1.2 Admin类

Admin类用于管理员信息记录,并且让管理员进行登录等操作。

表4-2 Admin类功能表
类功能描述 处理和管理员相关的业务操作
所在包名称 com.graduaion.bean.Admin
继承对象 无
实现对象
类属性
保护属性 类型 名称 描述 备注
Public String ID 用户ID 系统中用户的唯一标示,由系统自动生成
Public String Name 登录号 长度限制20位
public String Password 密码 长度限制20位
主要实现方法
保护属性 方法名 输入参数 输出参数 方法功能描述
Public loginUser string id,string pwd String 登陆系统,管理员输入ID和PASSWORD后进行验证,验证通过返回用户名,并登记日志,验证失败返回提示框。
public logout string id Void 注销系统,注销成功清理用户的相关信息并登记日志,安全退出。

4.1.3 Zhang类

Zhang类用于用户进行账单记录的时候要用的,对账单进行记录,然后导入数据库中。

表4-3 Zhang类功能表
类功能描述 处理和用户记账记录相关的业务操作
所在包名称 com.graduaion.bean.Zhang
继承对象 无
实现对象
类属性
保护属性 类型 名称 描述 备注
Public String ID 用户ID 系统中用户的唯一标示,由系统自动生成
Public String Name 登录号 长度限制20位
public String Password 密码 长度限制20位
Public String username 用户登录名 长度限制20位
Public String rname 用户姓名 长度限制20位
Public String type 类型 长度限制50位
Public String kind 种类 长度限制50位
Public Date time 时间
Public Double count 金额
Public String yong 用处 长度限制100位
Public String Info 说明 长度限制200位
主要实现方法
保护属性 方法名 输入参数 输出参数 方法功能描述
Public addZhang Zhang zhang void 用户登陆系统之后,对于今天进行的消费或者其他进行记账,分别输入名称,类型,种类,金额等,然后通过系统进行保存。
public findZhangByName string name Zhang 通过输入账单名称,从数据库中查找所需要查看的记账记录。

4.1.4 Tong类

Tong类用于对zhang类进行统计,从而给用户看到某个时间段的总计。

表4-4 Tong类功能表
类功能描述 处理和用户记账记录统计相关的业务操作
所在包名称 com.graduaion.bean.Tong
继承对象 无
实现对象
类属性
保护属性 类型 名称 描述 备注
Public String ID 用户ID 系统中用户的唯一标示,由系统自动生成
Public String Name 登录号 长度限制20位
public String Password 密码 长度限制20位
Public String username 用户登录名 长度限制20位
Public String rname 用户姓名 长度限制20位
Public String type 类型 长度限制50位
Public String kind 种类 长度限制50位
Public Date time 时间
Public Double count 金额
Public String yong 用处 长度限制100位
Public String Info 说明 长度限制200位
主要实现方法
保护属性 方法名 输入参数 输出参数 方法功能描述
Public addZhang Zhang zhang void 用户登陆系统之后,对于今天进行的消费或者其他进行记账,分别输入名称,类型,种类,金额等,然后通过系统进行保存。
public findZhangByName string name Zhang 通过输入账单名称,从数据库中查找所需要查看的记账记录。

4.2关键业务设计

4.2.1 财务管理

用户通过记录账单,然后添加账单到该系统,在点击财务信息时将可以显示该用户的所有账单记录。

在这里插入图片描述

图4-2 财务管理时序图

4.2.2 财务统计

记录这该用户的年统计和月统计的总体数据,能更直观的展示出用户等收支情况。

在这里插入图片描述

图4-3 财务统计时序图

4.3数据库设计

4.3.1概述

本系统总共有四个实体类,分别是Admin,User,Zhang,Tong。他们分别对应着四张数据库表admin,t_user,zhang,tong表。

4.3.2概念设计

1.普通用户E-R图

用户实体图主要包含:用户性别,年龄,姓名,登录名,电话等信息,下图展现的很清晰,让人很容易看出其中关系,所以可以很容易设计数据表出来。
在这里插入图片描述

图4-4 用户E-R图

2.管理员E-R图

管理员实体图主要包含:只有管理员密码和登录名两个字段,下图展现的很清晰,让人很容易看出其中关系,所以可以很容易设计数据表出来。

在这里插入图片描述

图4-5 管理员E-R图

3.账单E-R图

账单实体图主要包含:账单名,类型,种类,金额等属性,下图展现的很清晰,让人很容易看出其中关系,所以可以很容易设计数据表出来。

在这里插入图片描述

图4-6 账单E-R图

4.统计E-R图

统计实体图主要包含:年份,月份,收入,支出等属性,下图展现的很清晰,让人很容易看出其中关系,所以可以很容易设计数据表出来。
在这里插入图片描述

图4-7统计E-R图

系统总体总体E-R图:
在这里插入图片描述

图4-8系统总体总体E-R图

4.3.3数据库表

系统中使用到数据库基本如表4-3-3所示。

表4-5系统数据库表
编号 表名 描述
01 t_user 用户表
02 t_admin 管理员表
03 zhang 账单表
04 tong 统计表

数据库中的用户表用来存储各类用户的相关数据,每个用户都要在用户表中有相相应的记录。管理员表用来记录管理员各个信息。账单表记录每个用户的账单信息。统计表用于管理账单的统计。
 用户表
系统用户表用于登录系统使用,用户表的具体字段如表4-3-3-1所示。

表4-6 用户表
字段名 字段描述 类型/长度 约束 备注
Id 用户编号 Int PK
name 用户名称 Varchar2(20) NOT NULL
password 用户密码 Varchar2(20) NOT NULL
sex 性别 Varchar2(20)
age 年龄 Varchar2(20)
tel 电话 Varchar2(20)
rname 姓名 Varchar2(20)
adddate 注册时间 Date

字段用户编号为本表的主键用来标识一个用户,用户帐号和密码是两个非空字段,用户使用用户名和密码作为登录系统的凭证。

 管理员表
系统管理员表用于登录管理员系统使用,用户表的具体字段如表4-3-3-2所示。
表4-7 管理员表
字段名 字段描述 类型/长度 约束 备注
Id 用户编号 Int PK
name 用户名称 Varchar2(20) NOT NULL
password 用户密码 Varchar2(20) NOT NULL

 账单表
登录用户用于账单记录的表,账单表的具体字段如表4-3-3-3所示。

表4-8 账单表
字段名 字段描述 类型/长度 约束 备注
Id 用户编号 Int PK
name 账单名称 Varchar2(20) NOT NULL
username 用户登录名 Varchar2(20) NOT NULL
rname 姓名 Varchar2(20)
type 类型 Varchar2(20)
kind 种类 Varchar2(20)
time 时间 Varchar2(20)

count 金额 double
yong 用处 Varchar2(20)
info 备注 Varchar2(20)

 统计表
登录用户用于统计账单记录的表,统计表的具体字段如表4-3-3-4所示。

表4-9 统计表
字段名 字段描述 类型/长度 约束 备注
Id 用户编号 Int PK
username 用户登录名 Varchar2(20) NOT NULL
type 类型 Varchar2(20)
kind 种类 Varchar2(20)
time 时间 Varchar2(20)
year 金额 Double
month 用处 Varchar2(20)
shou 收入 Double
zhi 支出 Double

第五章 系统实现

本章内容重点是阐述所完成项目的关键界面和关键代码,不需要把所完成项目的所有界面和所有代码都在这里体现,尤其是界面设计代码,对关键代码的描述可以采用流程图或代码的形式,在复制代码时应注意英文的格式,此外因为代码的缩进和论文有所不同,应该按论文的格式要求来处理。最后原则上这部分所出现的模块应该和关键业务分析一致。

5.1用户登录

功能描述
登录是对用户使用系统功能进行身份验证的过程,登录界面要求简明易懂。每一用户都有自己的单独的账号和密码,用户在系统的每一个操作都有日志进行记载,可以有效保证数据可追溯性,做到责任到人,界面如下图。

在这里插入图片描述

图5-1 用户登录

实现流程
用户通过用户名和密码进行页面登录时,如果用户名或者密码或是验证码为空的时候,前台页面通过调用login JS方法进行判断,并且给出不能为空的提示;当用户填写了正确的用户名和密码、验证码时后台通过调用loginUser()方法通过数据库查询是否有该用户,如果该用户存在,则登录成功,跳转到首页,如果该用户不存或者密码错误、验证码不正确等情况,则产生一个提示框,提示该用户重新输入。

部分代码如下:

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		String type = req.getParameter("type");
		HttpSession session = req.getSession();
		try {
			if(type.equals("用户")){

				if(str.equals(randomCode)){
				User user = userService.loginUser(username, password);
				session.setAttribute("currentUser", user);
				session.setAttribute("currentType", "用户");
				req.getRequestDispatcher("index.jsp").forward(req, resp);
				}
				else{
					req.setAttribute("messageInfo", "验证码错误!请重新输入");
					req.getRequestDispatcher("login.jsp").forward(req, resp);
				}		} catch (Exception e) {
			req.setAttribute("messageInfo", e.getMessage());
			e.printStackTrace();
			req.getRequestDispatcher("login.jsp").forward(req, resp);
		}
		
	}



@Override
	public User loginUser(String username, String password) throws UserException {
		User user2 = userDao.findUserByName(username);
		if(user2==null){
			
				throw new UserException("用户名不存在,请重新输入!");
		}if(!password.equals(user2.getPassword())){
			
				throw new UserException("登录密码错误,请重新输入!");
		}
		return user2;
	}

在这里插入图片描述

图5-2 用户登录

5.2 用户注册

功能描述

当你还没有注册时是不能登录该系统的,所有当你在登录页面点击注册时系统将跳转到注册页面。

在这里插入图片描述

图5-3 用户注册

实现流程
新用户通过注册功能在前台页面填写基本信息,然后在前台Jsp页面中接入,然后后台通过req.getParameter方法分别得到前台所传过来的数据,再通过业务逻辑Service层中的addUesr()方法进行接收该对象user,最后Dao层把数据导入到数据库中保存。

部分代码如下:

@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
			
		String name = req.getParameter("user.name");
		String password = req.getParameter("user.pass");
		String rname = req.getParameter("user.rname");
		String sex = req.getParameter("user.sex");
		String age = req.getParameter("user.age");
		String tel = req.getParameter("user.tel");
		user = new User(name,sex,age,password,tel,rname,new Date());
		HttpSession session = req.getSession();
		session.setAttribute("user", user);
		try{
			userService.registerUser(user);
			req.getRequestDispatcher("zhuceSuccess.jsp").forward(req, resp);
		}

@Override
	public void registerUser(User user) throws UserException {
		User user2 = userDao.findUserByName(user.getName());
		if(user2!=null){
			
				throw new UserException("用户已存在,请重新输入!");
		}else{
			userDao.saveUser(user);
		}
	}

在这里插入图片描述

图5-2 用户注册

5.3 首页

用户登录成功之后,将进入该系统首页面,在这里可以看到系统的基本信息,如下图所示;

在这里插入图片描述

图5-3 首页图

5.4 用户信息修改

功能描述
当用户登录进入系统的时候,要想修改密码的基本信息可以点击用户信息修改这栏,那样可以修改用户自己的信息,如下图所示:

在这里插入图片描述

图5-4 用户修改

实现流程
用户进行信息修改之后,新数据通过前台Jsp页面传到后台,业务逻辑Service层调用editUser()方法把数据传到Dao层,然后数据持久化。

部分代码如下:

@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String str = req.getParameter("user.id");
		long id = Long.parseLong(str);
		String name = req.getParameter("user.name");
		String password = req.getParameter("user.pass");
		String rname = req.getParameter("user.rname");
		String sex = req.getParameter("user.sex");
		String age = req.getParameter("user.age");
		String tel = req.getParameter("user.tel");
		HttpSession session = req.getSession();
		user = new User(id,name,sex,age,password,tel,rname,new Date());
		try{
			userService.editUser(user);
			
			resp.sendRedirect("editUserSuccess.jsp");
		}

@Override
	public void editUser(User user) {
		userDao.updateUser(user);
	}

在这里插入图片描述

图5-5 用户修改流程图

5.5 用户财务记录

功能描述
该系统的核心内容就是财务这一块,用户可以点击财务记录,然后进行生活或者工作中的一些基本账单记录,如下图所示:
在这里插入图片描述

图5-6 用户注册

实现流程
前台接收用户传过来的数据,然后传到后台用servlet接收,在调用业务逻辑Service层addZhang方法进行数据接入,最后通过Dao层进行数据持久化。

部分代码如下:

@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		try {
			String name = req.getParameter("zhang.name");
			String type = req.getParameter("zhang.type");
			String kind = req.getParameter("zhang.kind");
			String date = req.getParameter("zhang.date");
			SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
			Date time = simpleDateFormat.parse(date);
			String string = req.getParameter("zhang.count");
			double count =Double.parseDouble(string);
			String yong = req.getParameter("zhang.yong");
			String info = req.getParameter("zhang.info");
			HttpSession session = req.getSession();
			User user = (User) session.getAttribute("currentUser");
			String rname = user.getRname();
			String username = user.getName();
			Zhang zhang = new Zhang(name,username,rname,type,kind,time,count,yong,info);
			zhangService.addZhang(zhang);
			List<Zhang> list = zhangService.findZhangByUserName(username);
			System.out.println(list);
			req.getSession().setAttribute("zhang_list", list);
			resp.sendRedirect("zhang/zhang_list.jsp");	
			
@Override
	public void addZhang(Zhang zhang) throws ZhangException {
		try{
		zhangdao.addZhang(zhang);
		}catch(Exception e){
			throw new ZhangException("添加失败,请重新添加");
		}
		
	}

在这里插入图片描述

图5-7 用户财务记录流程图

5.6 用户财务信息

功能描述
用户财务信息是该用户的一些财务记录信息,它能很清楚的展现出该用户所有账单记录,而且还能通过某些条件查询各种记录。如下图所示:
在这里插入图片描述

图5-8 用户财务记录信息

实现流程
该功能的实现是先从数据库账单表中拿到该用户的所有账单记录,然后通过后台把数据传到前台Jsp页面进行渲染之后,呈现给用户查看。

部分代码如下:

@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		HttpSession session = req.getSession();
		User user = (User) session.getAttribute("currentUser");
		String name = user.getName();
		List<Zhang> list = zhangservice.findZhangByUserName(name);
		session.setAttribute("zhang_list", list);
		resp.sendRedirect("zhang/zhang_list.jsp");
	}

@Override
	public List<Zhang> findZhangByUserName(String username) {
		return zhangdao.findZhangByUsername(username);
		 
	}

在这里插入图片描述

图5-9 用户财务记录流程图

5.7 月收支查询

功能描述
用户记录的每笔账单存入数据库之后,每个月都可以做个汇总,也就是月收入和月支出的一个总结,这样能让用户对自己的收支心里有个底。如下图所示:

在这里插入图片描述

图5-10 用户财务月统计图

实现流程
这个功能我借用了一个插件FusionCharts,它是一个强大的展现图案的一个插件,能把一些数据更直观的通过图形展现出来,然而我只需要通过后台把它所需要的数据传入到他的模型之中。

部分代码如下:

<script type="text/javascript">
var myChart = new FusionCharts("<%=path%>/FusionCharts/Charts/Pie3D.swf", "myChartId",
		"600", "400");
var strXML = "<chart caption='收入一览'>${data}</chart>";
myChart.setDataXML(strXML);

myChart.render("chartdiv1");

$(document).ready(function(){
	 var $messageInfo = $("#messageInfo").val();
	 if($messageInfo != null && $messageInfo != ""){
		 $.messager.show({
			title:'提示',
			msg:$messageInfo,
			timeout:2000,
			showType:'slide'
		 });
		 $("#messageInfo").val("");
	 }
  });
  
</script>
         
Tong tong1 = tongService.findTongByMonth(month,username);
				
				if(tong1==null){
					Tong tong = new Tong(username,"入账","公费",new Date(),year,month,num1,num2);
					tongService.saveTong(tong);
					String info="<set name='出账' value='"+tong.getZhi()+"' /><set name='入账' value='"+tong.getShou()+"' />";
					req.setAttribute("data", info);
					req.getRequestDispatcher("zhang/zhang_ylist.jsp").forward(req, resp);
				}else{
					long id =tong1.getId();
					Tong tong = new Tong(id,username,"入账","公费",new Date(),year,month,num1,num2);
					tongService.updateTong(tong);
					String info="<set name='出账' value='"+tong.getZhi()+"' /><set name='入账' value='"+tong.getShou()+"' />";
					req.setAttribute("data", info);
					req.getRequestDispatcher("zhang/zhang_ylist.jsp").forward(req, resp);

在这里插入图片描述

图5-11 用户财务记录流程图

5.8 年收支查询

功能描述
当用户点击年收支的时候,页面将展现出该用户所选的年度的年收入和年支出的详细情况,如下图所示:
在这里插入图片描述

图5-12 用户年收支
实现流程
通过插件FusionCharts把需要的数据从后台传入到前台脚本中,然后渲染到页面上。

部分代码如下:

<script type="text/javascript">
var myChart = new FusionCharts("<%=path%>/FusionCharts/Charts/MSColumn3D.swf",
		"MSColumn3D", "600", "400");

var chartXMLData = "<chart caption=\"年收支情况\" XAxisName=\"\" palette=\"2\" animation=\"1\" formatNumberScale=\"0\" numberPrefix=\"\" showValues=\"0\" numDivLines=\"4\" legendPosition=\"BOTTOM\">${data}\"<styles><definition><style type=\"font\" name=\"CaptionFont\" color=\"666666\" size=\"15\" /><style type=\"font\" name=\"SubCaptionFont\" bold=\"0\" /></definition><application><apply toObject=\"caption\" styles=\"CaptionFont\" /><apply toObject=\"SubCaption\" styles=\"SubCaptionFont\" /></application></styles></chart>";

myChart.setDataXML(chartXMLData);

myChart.render("chartdiv1");

$(document).ready(function() {
	var $messageInfo = $("#messageInfo").val();
	if ($messageInfo != null && $messageInfo != "") {
		$.messager.show( {
			title : '提示',
			msg : $messageInfo,
			timeout : 2000,
			showType : 'slide'
		});
		$("#messageInfo").val("");
	}
});
</script>

@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		List<Tong> li = new ArrayList<Tong>();
		User user = (User) req.getSession().getAttribute("currentUser");
		List<Tong> list = tongService.findTong(user.getName());
		String year = req.getParameter("qyear");
		if(list!=null&&list.size()>0){
					String category="";
					String setchu="";
					String setru="";
						for(Tong t:list){
							String year1 = t.getYear();
							if(year1.equals(year)){
								category=category+"<category label='"+t.getMonth()+"月' />";
								setchu=setchu+"<set value='"+t.getZhi()+"' />";
								setru=setru+"<set value='"+t.getShou()+"' />";
							}
						}
						String xmls= "<categories>"+category+"</categories>"
							+ "<dataset seriesName='出账'>"+setchu+"</dataset>"
							+ "<dataset seriesName='入账'>"+setru+"</dataset>";
						req.setAttribute("data", xmls);
						req.getRequestDispatcher("zhang/zhang_nlist.jsp").forward(req, resp);
		}
				else{
					req.setAttribute("messageInfo", year+"年没有数据!");
					req.setAttribute("data", "");
					req.getRequestDispatcher("zhang/zhang_nlist.jsp").forward(req, resp);
				}
			
		}

在这里插入图片描述

图5-13用户年统计流程图

5.9 管理员信息管理

功能描述
登录的管理员能管理其他管理员的信息,如删除、查看、修改等基本功能。如下图所示:

在这里插入图片描述

图5-14 管理员信息管理

5.10 用户信息管理

功能描述
登录的管理员能管理其他用户的信息,如删除、查看等基本功能。如下图所示:
在这里插入图片描述

图5-15 用户信息管理

实现流程
管理员通过后台管理该系统的各个用户,可以对用户进行删除,
它是通过用户的一个主键id删除该用户的,由于id唯一性,所以它是不可重复的。

部分代码如下:

@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String str = req.getParameter("id");
		long id = Long.parseLong(str);
		User user = userService.findUserById(id);
		userService.deleteUser(id);
		String username = user.getName();
		zhangService.deleteZhangByUsername(username);
		List<User> list = userService.findAllUser();
		req.getSession().setAttribute("user_list", list);
		resp.sendRedirect("user/user_list.jsp");
	}

@Override
	public void deleteUser(long id) {
		userDao.delUser(id);
	}

在这里插入图片描述

图5-16系统管理流程图

第六章 系统测试

本章重点说明测试目标和测试计划,对测试目标给出测试用例,并分析测试结果是否达到系统预期,如未达到提出改进的措施。测试目标根据测试范围的不同有整体目标和分项目标,整体目标主要是测试系统是否达到预期的功能以及相关的性能指标,如吞吐率等等,分项目标则针对于具体模块,指标包括功能是否实现,边界条件是否实现等等,测试用例应根据测试目标来进行设计,原则上关键业务模块必须包含。

6.1系统测试综述

测试方案是测试阶段的关键技术问题。为了提高测试效率降低测试成本。

6.2系统用例说明

主要测试的是用户的各种操作是否能够正常的进行,让我们找出系统的不足之处,以尽快的改进这些不足,让系统变得更加的完善

6.2.1用户登录模块

在这里插入图片描述

表6-1用户登录

6.2.2账单统计模块

表6-2账单统计
在这里插入图片描述

6.3测试分析

该系统经多次测试,能在Windows7\WindowsXP\2000 server等操作系统,调试环境上正常运行。数据调用正常,基本上实现了预期的功能,目前试运行良好。
结果分析:虽然系统基本正常,但由于一些自身技术和硬件设备环境所限,该系统仍存在一些不足之处,有待进一步改进和完善,具体说来有:
① 未能进行连网测试。
② 未能实现对数据的自动生成图表进行分析的功能。
③ 程序中错误处理和输入控制不够全面,可能导致输入无效引发错误,也可能使得页面出现乱码等现象。

第七章 总结

在经过四个多月的努力,在谭娟导师指导下,我对基于WEB的电子商务系统的系统设计与开发有了相对深刻具体的认识,同时也有了一定的对于开发的实际运用经验,然后本系统运用了当前比较成熟的web开发框架设计和基于B/S结构实现了一个比较实用的诸如用户登入,注册,实现账单统计等功能系统的设计与开发。本系统作为一个电子商务网站系统的子功能,具有相当的实用性。
在本次毕业设计中,不仅在理论上和实践中有所认识,而且在专业水平和实践能力上有了巨大的提高。也让我有了开发项目的经验,当毕业设计结束的时候我收获的不但是关于学习软件系统的设计与开发,也让我学习到一些其他方面的东西,当你有目标的时候你得先思考,然后仔细考虑猜想各个细节因素,或许或遇到技术困难,如果这算是阻止我们的高墙,那么教师和同学一定是你翻越高墙的梯子,因为有了你们才让我成功的翻过了一面面的高墙,最终走出了新世界,走出了自己内心的那座高墙。
虽然这个系统一定会有许多许多不尽如人意的地方,但在我会以此为基点积累一点又一点的知识和解决问题的方法经验。让以后的作品一个比一个更好希望以后的工作中能一步步完善和超越现在的自己,最后再次感谢帮助我完成这个系统的热心人们,是因为你们才让我的毕业设计成功完成,让我从中得到了意想不到的收获!

参考文献
[1] 陈广宇.管理信息系统[M].北京:清华大学出版社,2010:95-100
[2] 张墨华,张永强.Java程序设计[M].北京:清华大学出版社, 2010:123-124
[3] 张 阳.基于ASP.NET的酒店管理系统的设计与实现[D].吉林:吉林大学,2014:233-2
[4]孙卫琴,李洪成.《Tomcat 与 JSP Web 开发技术详解》.电子工业出版社,2003年6月:1~205.
[5]计磊,李里,周伟.J2EE整合应用案例[M].北京:人民邮电出版社,2007.
[6]王珊,陈红.数据库系统原理教程[M].北京:清华大学出版社,2004-6.
[7]武延军,黄飞跃.精通JSP编程技术[J] .北京:人民邮电出版.
[8]王琳.Java多线程机制及其应用[J]. 武汉理工大学学报(信息与管理工程).
[9] 柳永坡,刘雪梅,赵长海.JSP应用开发技术[M].北京:人民邮电出版, 2005.
[10]贺松平.基于MVC模式的B/S架构的研究及应用[D].武汉:华中科技大学.
[11]张海藩.软件工程导论.北京:清华大学出版社.2008,02.
[12]田淑梅.软件工程——理论与实践 清华大学出版社.
[13]耿祥义.《Java2实用教程(第三版)》.清华大学出版社,2006(8).
[14]王永红.使用JavaScript增强网页的功能[J] .安徽建筑,2001,(2):27-34.
[15] 舒红平.Web 数据库编程-Java[M].西安电子科技大学出版社,2005:97-143.

致 谢
至此,经过对已有工作的总结,整理分析后,完成了这篇论文。我在大学的学习生活也即将结束。
首先,在此感谢我的导师xx教师。xx教师的渊博知识严谨的治学态度和孜孜不倦诲人不厌的高尚师德师风,以及待人接物和蔼可亲的处事风格让我们在轻松愉悦的环境下完成了自己的毕业设计,她在这四个月里不仅给我提供了大量的资料,而且在技术上也给了我很大的帮助,不仅让我掌握了一些基本的研究方式方法还让我明白了许多待人接物的处世之道,论文从选题到完成每一步都是教师指导下完成的,倾注了导师大量心血在此对她表示诚挚的感谢。
其次,还要感谢的是我的母校在这四年里的培养,使我变的坚强、成熟起来。
衷心感谢在百忙之中评阅论文和参加答辩的各位教师!

记账管理系统

摘要:近年来由于生活节奏的加快,好像每个人都被很多难以启齿的问题困惑,然而关于随意消费是大多数人头疼的问题,没有任何计划和筹备的情况下随意消费,导致现实生活中我们所称为的“月光族”。如果我们定期花一些时间去记录我们生活中那些主要的消费情况,了解自己的收入和支出情况,这样坚持几个月你将会发现一些规律,收入是否稳定,月底的时候是收入少了还是支出多了,投资是否符合预期;这些规律,就是你通过记账了解到的财务状况,财务状况没有单纯的好与坏之分,最理想的情况,当然是无论什么情况都不会入不敷出,但这个情况对于刚毕业的人和工作十年的人情况显然是不同的。
当你逐渐了解自己的财务状况,就可以学着做简单的收支规划。大部分月光族的根源其实是缺乏规划,想买什么的时候就买了。并不是说规划不能随意买东西,规划的价值在于让你使用资金的效率最高。无论你用金钱换取的必需品,满足感或者快乐,都可以通过规划获得比较高的效率。
本记账系统是一个基于国内外电子商务网站的发展现状,采用B2C(Business to Consumers)模式开发的电子商务平台,它的价值所在对于那些随意消费性的人群能起到一个很大的警示作用,而且系统扩张性很强,能根据客户的不同需求进行快速改进。该系统采用B/S三层结构,服务器是Tomcat同时运用JSp技术进行动态页面设计,后台数据库是Oracle。
关键字:电子商务;信息化;网络
中图分类号:G642 文献标志码:A

Abstract:In recent years, with the quickening pace of life, everyone seems to be a lot of difficult questions about casual consumer confusion, however most people headaches, no plans and preparations for the case of random consumption, resulting in the moonlight clan of what we call “real life”. If we regularly take some time to record our life in the main consumption situation, understand the income and expenditure of their own, doing a few months you will find some rules, income stability, when the end of the month is less income or spending more, the investment is in line with expectations; these rules, you are through accounting to understand the financial situation, the financial situation is not only the good and bad points, the ideal situation is of course, no matter what the situation will not make ends meet, but this situation for graduate work and ten years of people the situation is obviously different.
When you get to know your financial situation, you can learn to make a simple plan. Most of the root causes of the family is the lack of planning, what to buy when the. Planning is not to say that you can not buy things, the value of planning is to make the most efficient use of funds. Whether you use the money in exchange for necessities, satisfaction or happiness, can be achieved through the planning of high efficiency.
The accounting system is a development based on the domestic and foreign electronic commerce website, using B2C (Business to Consumers) e-commerce platform development model, its value for those casual consumer groups can play a very strong warning function, and system expansion, can be rapidly improved according to the different needs of customers. The system uses B/S three layer structure, the server is Tomcat while using JSp technology for dynamic page design, the background database is Oracle.

Key word:Accounting management system; B/S structure; Oracle database; JSP;

引言
对于一个刚出校门或是刚刚工作不久的我们来说,由于我们刚步入社会,最基本的事情就是首先保证自己生存下来,合理地安排自己的消费情况, 所以,我们平时对自己的消费和收支进行一个账单记录显得尤为关键。账单记录能让我们更清楚的了解我们收支的去向,让我们能更好的把握好身上的每一分钱,然后把钱用到关键的地方,如投资,理财等。从查询课外资料来看,国外有很多账单管理的软件,而且大部分外国人对生活中的记账有着严格的把控。就国内而言,放眼望去,大部分记账软件都是着重于办公财务软件,而对于个人和家庭的小型记账系统还是比较少的,因此需要开发一款这样的系统软件,从而达到引导我们理性消费,合理分配收支。
对于记账而言呢,若我们直接像古人那样用纸和笔记录的话,那样随着我们的记录越来越多,我们的记账薄也随之越来越厚,容易造成遗失,当我们要查找某个我们想要找的记录时,我们会消耗大量的时间,这就非常麻烦。这种记账方式就显得非常冗余、笨重,因此我们需要设计一款功能完善的记账软件,用它来代替传统的手工操作。

1.记账系统系统的发展
随着我国经济建设的高速发展,企业的财务活动发生了深刻变化,国内财务软件从无到有,经过20年的发展,已逐步走向成熟。字1979年我国将电子计算机应用于财务领域以来,随着企业新时代的来领,企业的经营和管理模式都发生了重大变化,传统的财务软件已无法适应企业在市场竞争日益激烈,信息高速公路四通八达,国外软件纷至沓来的今天,如何适应时代发展的需求,如何开发新一代的财务软件将成为大家共同关心的问题。
十几年来,我国财务软件产业,在各方人士的不懈努力之下,取得了重大的成果,纵观我国的国内软件市场,财务软件的发展局势也是群雄并起,百家争鸣,财务软件已成为国内软件界中最活跃,最辉煌的一个领域。尽管我国财务软件的发展形势较好,但是随着中国加入WTO,面对世界经济的挑战,面对国际财务软件的高标准要求,在使用过程中也暴露出许多问题。我国财务软件的发展应如何抓住有利机遇,迎接新时代的挑战,将是全体财务软件工作者光荣的历史使命。
2.记账管理系统的意义
对于记账而言呢,若我们直接像古人那样用纸和笔记录的话,那样随着我们的记录越来越多,我们的记账薄也随之越来越厚,容易造成遗失,当我们要查找某个我们想要找的记录时,我们会消耗大量的时间,这就非常麻烦。这种记账方式就显得非常冗余、笨重,因此我们需要设计一款功能完善的记账软件,用它来代替传统的手工操作。

3.记账管理系统数据库的设计
3.1系统总体设计
整个系统分为 用户注册,用户登录,财务管理,财务统计,系统管理等功能模块,如3-1图所示。

在这里插入图片描述

图1 系统结构图

3.2系统架构设计
本设计的开发是基于B/S结构,采用JSP程序设计语言及Oracle数据库进行开发;论文首先阐述了基于B/S模式的记账管理系统设计与开发系统的开发,并对该系统进行了较详细的需求分析;然后探讨了该系统需要实现的设计方案,整个系统主要分为:登录,信息管理,财务管理财务统计和安全退出等功能模块。最后,在测试与分析过程中,该系统表现出了运行稳定、可靠和实用等特性,具有一定的实用价值
4.数据库系统设计
4.1数据库
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
4.2概念结构设计
概念结构设计是将分析得到的用户需求抽象为概念模型的过程。即在需求分析的基础上,设计出能够满足用户需求的各种实体以及它们之间的相互关系概念结构设计模型。这样才能更好地、更准确地用某一DBMS实现这些需求。它是整个数据库设计的关键。
概念结构的主要特点是能真实、充分地反映现实世界;易于理解;易于更改;易于向关系、网状、层次等各种数据模型转换。描述概念模型的有力工具是E-R模型。
5.系统实现
程序的实现
本系统为用户提供实现了以下功能:
(1)用户注册:
用户如果还不是本系统的会员,则可以通过用户注册页面来进行用户注册,只有用户注册成功才可以通过登入系统进行登入。
(2)用户登录:
用户通过登入系统,输入用户名密码和验证码进入本系统。
(3)用户信息修改:
用户能自由查看并修改自己的个人信息。
(4)财务记录:
用户可以将自己的财务账单记录到本系统中,然后统计系统永久的保存至数据中。
(5)财务统计:
通过用户每个月或者每年的账单记录进行统计,其中包括月统计和年统计。
(6)安全退出系统:
安全离开本系统,返回主页面。
购书系统主页面如图2所示:
在这里插入图片描述

图2 记账管理系统主界面
小结
经过几个月来的不断努力记账管理系统终于完成了。本项目是一个典型的基于web开发的项目,各个模块通过mvc设计模式都有明确的分工合作,使得系统代码明确。
以下是我对系统做的总结:
1、需求分析阶段:该阶段主要明晰用户需求,对于本次实训,需求分析一边从任务书上分析而来,再进一步亲自在电子商务系统,将想法用UML图表达出来,从而更加清楚哪些是系统要做的。
2、数据库设计阶段:经过需求分析阶段之后,对于有哪些参与者,哪些实体,以及实体之间的联系,以及实体有哪些字段都基本明确了。
3、架构设计阶段:由于项目较小,采用MVC模式就能够非常清晰地看到数据传递,JSP<—>Controller<—>Dao<—>Oracle
4、详细设计阶段:根据业务,在处理层设计出相应的函数。
总的来说,本系统最终实现了预期的主要功能。由于本人水平有限,对于设计和编程的经验不足,系统还存在着或多或少的缺陷。

参考文献

[1]田淑梅.软件工程——理论与实践 清华大学出版社.
[2]耿祥义.《Java2实用教程(第三版)》.清华大学出版社,2006(8).
[3]王永红.使用JavaScript增强网页的功能[J] .安徽建筑,2001,(2):27-34.
[4]孙卫琴,李洪成.《Tomcat 与 JSP Web 开发技术详解》.电子工业出版社,2003年6月:1~205.
[5]计磊,李里,周伟.J2EE整合应用案例[M].北京:人民邮电出版社,2007.
[6]王珊,陈红.数据库系统原理教程[M].北京:清华大学出版社,2004-6.
[7]武延军,黄飞跃.精通JSP编程技术[J] .北京:人民邮电出版.
[8]王琳.Java多线程机制及其应用[J]. 武汉理工大学学报(信息与管理工程).
[9] 柳永坡,刘雪梅,赵长海.JSP应用开发技术[M].北京:人民邮电出版, 2005.
[10]贺松平.基于MVC模式的B/S架构的研究及应用[D].武汉:华中科技大学.
[11]张海藩.软件工程导论.北京:清华大学出版社.2008,02.
[12]蒲子明,许勇,王黎等.Struts2+Hibernate+Spring整合开发技术详解.北京:清华 大学出版社,2010,10.
[13]李磊,王养廷.面向对象技术及UML教程.北京:人民邮电出版社.2010.05.
[14]陶宏才.数据库原理与应用设计.四川:西南交通大学出版社.2011.07.
[15]Andrew S. Tanenbaum等.计算机网络.北京:清华大学出版社.2004.11.