基于JSP和Oracle的记账管理系统设计与实现

基于JSP和Oracle的记账管理系统设计与实现 摘 要 近年来由于生活节奏的加快,好像每个人都被很多难以启齿的问题困惑,然而关于随意消费是大多数人头疼的问题

本文包含相关资料包-----> 点击直达获取<-------

基于JSP和Oracle的记账管理系统设计与实现

摘 要

近年来由于生活节奏的加快,好像每个人都被很多难以启齿的问题困惑,然而关于随意消费是大多数人头疼的问题,没有任何计划和筹备的情况下随意消费,导致现实生活中我们所称为的“月光族”。如果我们定期花一些时间去记录我们生活中那些主要的消费情况,了解自己的收入和支出情况,这样坚持几个月你将会发现一些规律,收入是否稳定,月底的时候是收入少了还是支出多了,投资是否符合预期;这些规律,就是你通过记账了解到的财务状况,财务状况没有单纯的好与坏之分,最理想的情况,当然是无论什么情况都不会入不敷出,但这个情况对于刚毕业的人和工作十年的人情况显然是不同的。

当你逐渐了解自己的财务状况,就可以学着做简单的收支规划。大部分月光族的根源其实是缺乏规划,想买什么的时候就买了。并不是说规划不能随意买东西,规划的价值在于让你使用资金的效率最高。无论你用金钱换取的必需品,满足感或者快乐,都可以通过规划获得比较高的效率。

本记账系统是一个基于国内外电子商务网站的发展现状,采用B2C(Business to Consumers)模式开发的电子商务平台,它的价值所在对于那些随意消费性的人群能起到一个很大的警示作用,而且系统扩张性很强,能根据客户的不同需求进行快速改进。该系统采用B/S三层结构,服务器是Tomcat同时运用JSp技术进行动态页面设计,后台数据库是Oracle。

关键词 :记账管理系统;B/S结构;Oracle数据库;JSP

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.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结构里面,浏览器和服务器端进行交互时,有以下几个过程:

  • 用户在浏览器上输入用户名和密码等信息,然后服务器端接收数据

  • 浏览器接收用户输入的信息之后,然后把信息传输到服务器上,等待服务端的响应

  • 服务器接收数据之后,然后进行数据后台处理,最后把处理的结果返回到JSP页面上来

2.5 开发工具

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

第三章 系统分析

3.1 系统初步调查

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

3.2 系统体系结构设计

整个系统分为 用户注册,用户登录,财务管理,财务统计,系统管理等功能模块,如3-1图所示。

3.2.1 首页

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

3.2.2 用户信息管理

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

3.2.3 用户财务管理

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

3.2.4 用户财务统计

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

3.2.5 系统管理

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

3.2.6 退出

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

3.3 用例图

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

不同的用户他们的登录界面不同,他们所拥有的权限和基本功能也是不一样的,他们的属性也有所区别。

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

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

3.4 用例说明

3.4.1 用户登录用例说明

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

3.4.2 财务管理用例说明

3.4.3 系统管理用例说明

第四章 系统设计

本章内容包括系统类分析、核心业务设计、数据库设计三个部分,其中系统类分析需要给出系统类图和类的说明,需要注意在给出类图的时候只需要给出核心业务类,对辅助类如界面类、数据库连接类这种类型的不需要给出,如果所涉及的类(包括类当中的内容)较多时,应首先给出类间关系图(图中的类只有名称没有属性和方法),之后在单个类说明中给出具体类的类图,类图同样需要用WORD进行绘制。

核心业务设计主要描述的是完成某项具体业务时,类之间的消息配合,用时序图进行表述,时序图可以用其他工具绘制,但不能够有其他的颜色出现。

数据库设计主要描述在系统中需要持久化的对象,需要给出ER图,如果系统所涉及的实体(或实体的属性)较多时同样采用分层绘制的方法,顶层图给出实体间关系,下层图针对每一个实体进行具体绘制。

4.1 系统类分析

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

4.1.1 User类

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

4.1.2 Admin类

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

4.1.3 Zhang类

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

4.1.4 Tong类

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

4.2 关键业务设计

4.2.1 财务管理

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

4.2.2 财务统计

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

4.3 数据库设计

4.3.1 概述

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

4.3.2 概念设计

普通用户E-R图

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

管理员E-R图

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

账单E-R图

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

统计E-R图

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

系统总体总体E-R图

4.3.3 数据库表

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

系统数据库表

编号 表名 描述
01 t_user 用户表
02 t_admin 管理员表
03 zhang 账单表
04 tong 统计表

数据库中的用户表用来存储各类用户的相关数据,每个用户都要在用户表中有相相应的记录。管理员表用来记录管理员各个信息。账单表记录每个用户的账单信息。统计表用于管理账单的统计。

用户表

系统用户表用于登录系统使用,用户表的具体字段如表4-3-3-1所示。

字段名 字段描述 类型/长度 约束
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所示。

字段名 字段描述 类型/长度 约束
Id 用户编号 Int PK
name 用户名称 Varchar2(20) NOT NULL
password 用户密码 Varchar2(20) NOT NULL

账单表

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

字段名 字段描述 类型/长度 约束
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所示。

字段名 字段描述 类型/长度 约束
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.1 功能描述

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

5.1.2 实现流程

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

部分代码如下

```java 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.1 功能描述

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

5.2.2 实现流程

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

部分代码如下

```java @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.3 首页

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

5.4 用户信息修改

5.4.1 功能描述

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

5.4.2 实现流程

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

部分代码如下

```java @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.1 功能描述

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

5.5.2 实现流程

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

部分代码如下

```java @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 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.6 用户财务信息

5.6.1 功能描述

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

5.6.2 实现流程

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

部分代码如下

```java @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 list = zhangservice.findZhangByUserName(name); session.setAttribute("zhang_list", list); resp.sendRedirect("zhang/zhang_list.jsp"); }

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

5.7 月收支查询

5.7.1 功能描述

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

5.7.2 实现流程

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

部分代码如下

```javascript

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=" "; 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=" "; req.setAttribute("data", info); req.getRequestDispatcher("zhang/zhang_ylist.jsp").forward(req, resp); ```

5.8 年收支查询

5.8.1 功能描述

当用户点击年收支的时候,页面将展现出该用户所选的年度的年收入和年支出的详细情况,如下图所示:

5.8.2 实现流程

通过插件FusionCharts把需要的数据从后台传入到前台脚本中,然后渲染到页面上。

部分代码如下

```java

@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { List li = new ArrayList (); User user = (User) req.getSession().getAttribute("currentUser"); List 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+" "; setchu=setchu+" "; setru=setru+" "; } } String xmls= " "+category+" " + " "+setchu+" " + " "+setru+" "; 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.9 管理员信息管理

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

5.10 用户信息管理

5.10.1 功能描述

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

5.10.2 实现流程

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

部分代码如下

```java @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 list = userService.findAllUser(); req.getSession().setAttribute("user_list", list); resp.sendRedirect("user/user_list.jsp"); }

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

第六章 系统测试

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

6.1 系统测试综述

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

6.2 系统用例说明

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

6.2.1 用户登录模块

6.2.2 账单统计模块

6.3 测试分析

该系统经多次测试,能在Windows7\WindowsXP\2000 server等操作系统,调试环境上正常运行。数据调用正常,基本上实现了预期的功能,目前试运行良好。

结果分析 :虽然系统基本正常,但由于一些自身技术和硬件设备环境所限,该系统仍存在一些不足之处,有待进一步改进和完善,具体说来有:

  • 未能进行连网测试

  • 未能实现对数据的自动生成图表进行分析的功能

  • 程序中错误处理和输入控制不够全面,可能导致输入无效引发错误,也可能使得页面出现乱码等现象

参考文献

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

参考文献

  • 基于B/S的电力企业财务管理信息系统的设计与实现(吉林大学·张丛怡)
  • 基于EPP的域名管理系统(山东大学·孟庆领)
  • 银企对账集中处理系统的设计与实现(山东大学·张文刚)
  • 基于J2EE的企业信息管理系统(电子科技大学·张成义)
  • 基于.NET的网上财务报销审批系统设计与开发(复旦大学·方旭峰)
  • 基于BP神经网络的财务管理系统的设计与实现(战略支援部队信息工程大学·李媛媛)
  • 天津大学院级单位财务管理系统的设计与实现(天津大学·田晓庆)
  • 基于Struts框架的职业院校财务管理系统设计与实现(兰州大学·崔玉萍)
  • WEB数据库——基于JSP技术实现电子商务网站的设计(吉林大学·孙明磊)
  • 基于B/S的电力企业财务管理信息系统的设计与实现(吉林大学·张丛怡)
  • 基于Struts框架的职业院校财务管理系统设计与实现(兰州大学·崔玉萍)
  • 中国某集团公司财务会计报账系统的设计与实现(北京工业大学·张燕)
  • 基于Struts框架的职业院校财务管理系统设计与实现(兰州大学·崔玉萍)
  • 天津大学院级单位财务管理系统的设计与实现(天津大学·田晓庆)
  • WEB数据库——基于JSP技术实现电子商务网站的设计(吉林大学·孙明磊)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设小屋 ,原文地址:https://m.bishedaima.com/yuanma/35228.html

相关推荐

发表回复

登录后才能评论