基于jsp的记账管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+部署视频)
项目报告
基于Jsp的记账管理系统
近年来由于生活节奏的加快,好像每个人都被很多难以启齿的问题困惑,然而关于随意消费是大多数人头疼的问题,没有任何计划和筹备的情况下随意消费,导致现实生活中我们所称为的“月光族”。如果我们定期花一些时间去记录我们生活中那些主要的消费情况,了解自己的收入和支出情况,这样坚持几个月你将会发现一些规律,收入是否稳定,月底的时候是收入少了还是支出多了,投资是否符合预期;这些规律,就是你通过记账了解到的财务状况,财务状况没有单纯的好与坏之分,最理想的情况,当然是无论什么情况都不会入不敷出,但这个情况对于刚毕业的人和工作十年的人情况显然是不同的。
当你逐渐了解自己的财务状况,就可以学着做简单的收支规划。大部分月光族的根源其实是缺乏规划,想买什么的时候就买了。并不是说规划不能随意买东西,规划的价值在于让你使用资金的效率最高。无论你用金钱换取的必需品,满足感或者快乐,都可以通过规划获得比较高的效率。
本记账系统是一个基于国内外电子商务网站的发展现状,采用B2C(Business to Consumers)模式开发的电子商务平台,它的价值所在对于那些随意消费性的人群能起到一个很大的警示作用,而且系统扩张性很强,能根据客户的不同需求进行快速改进。该系统采用B/S三层结构,服务器是Tomcat同时运用JSp技术进行动态页面设计,后台数据库是Oracle。
记账管理系统;B/S结构;Oracle数据库;JSP;
目 录
第一章 绪论............................................................................... 14
1.1研究背景和意义.................................................................... 14
1.2研究目标................................................................................ 14
1.3论文结构................................................................................ 14
第二章 相关技术与方法........................................................... 16
2.1 MVC简介:............................................................................ 16
2.2 Mybatis简介:.................................................................... 16
2.3 Java简介:.......................................................................... 17
2.4 JSp简介:............................................................................ 18
2.5开发工具................................................................................ 20
第三章 系统分析....................................................................... 21
3.1系统初步调查........................................................................ 21
3.2系统体系结构设计................................................................ 21
3.2.1 首页............................................................................. 21
3.2.2用户信息管理.............................................................. 22
3.2.3用户财务管理.............................................................. 22
3.2.4用户财务统计.............................................................. 22
3.2.5系统管理...................................................................... 22
3.2.6退出.............................................................................. 22
3.3用例图.................................................................................. 22
3.4用例说明.............................................................................. 24
3.4.1用户登录用例说明...................................................... 24
3.4.2财务管理用例说明...................................................... 25
3.4.3系统管理用例说明...................................................... 26
第四章 系统设计....................................................................... 27
4.1系统类分析............................................................................ 27
4.1.1 User类........................................................................ 28
4.1.2 Admin类...................................................................... 28
4.1.3 Zhang类...................................................................... 29
4.1.4 Tong类........................................................................ 30
4.2关键业务设计........................................................................ 31
4.2.1 财务管理..................................................................... 31
4.2.2 财务统计..................................................................... 32
4.3数据库设计............................................................................ 33
4.3.1概述.............................................................................. 33
4.3.2概念设计...................................................................... 33
4.3.3数据库表...................................................................... 36
第五章 系统实现......................................................................... 39
5.1用户登录................................................................................ 39
5.2 用户注册............................................................................... 41
5.3 首页...................................................................................... 44
5.4 用户信息修改..................................................................... 45
5.5 用户财务记录..................................................................... 46
5.6 用户财务信息..................................................................... 49
5.7 月收支查询......................................................................... 50
5.8 年收支查询......................................................................... 53
5.9 管理员信息管理................................................................. 56
5.10 用户信息管理..................................................................... 56
第六章 系统测试....................................................................... 59
6.1系统测试综述........................................................................ 59
6.2系统用例说明........................................................................ 59
6.2.1用户登录模块.............................................................. 59
6.2.2账单统计模块.............................................................. 60
6.3测试分析................................................................................ 60
第七章 总结............................................................................... 61
参考文献........................................................................................ 62
致 谢............................................................................................ 63
第一章 绪论
1.1研究背景和意义
对于一个刚出校门或是刚刚工作不久的我们来说,由于我们刚步入社会,最基本的事情就是首先保证自己生存下来,合理地安排自己的消费情况, 所以,我们平时对自己的消费和收支进行一个账单记录显得尤为关键。账单记录能让我们更清楚的了解我们收支的去向,让我们能更好的把握好身上的每一分钱,然后把钱用到关键的地方,如投资,理财等。从查询课外资料来看,国外有很多账单管理的软件,而且大部分外国人对生活中的记账有着严格的把控。就国内而言,放眼望去,大部分记账软件都是着重于办公财务软件,而对于个人和家庭的小型记账系统还是比较少的,因此需要开发一款这样的系统软件,从而达到引导我们理性消费,合理分配收支。
对于记账而言呢,若我们直接像古人那样用纸和笔记录的话,那样随着我们的记录越来越多,我们的记账薄也随之越来越厚,容易造成遗失,当我们要查找某个我们想要找的记录时,我们会消耗大量的时间,这就非常麻烦。这种记账方式就显得非常冗余、笨重,因此我们需要设计一款功能完善的记账软件,用它来代替传统的手工操作。
1.2研究目标
记账理财是一个很普遍而且很广泛的概念,从理财的角度来看,个人、公司和政府部门都少不了理财活动。所以本论文介绍的就是一个人记账为主。中国也是个比较重视个人和家庭观念较国家,一个人理财就非常普遍了。
所谓个人理财从概念上讲,就是合理、有效的安排和运用我们自己的资金,让我们的消费到达最大的效应,以到达最大地限度地满足日常生活需要的目的。简单的来说,个人理财就是利用企业理财和金融方法对我们个人经济进行有效的管理和计划,增强自身的经济实力,提高个人经济的抗打击能力,增大个人效应。从另一种角度来讲,个人理财就是利用开源节流的道理,增加收入,节约支出,用合理地办法来达到我们所希望到达的经济目的。这样的目标有很多,小的如增添家电设备,外出旅游,大的有买车、买房,为自己孩子储备教育基金等等。
1.3论文结构
本论文总共为七章:
- 绪论:介绍课题的研究背景和意义,然后分析系统的可行性,然后是本文的组织结构,最后是对本章的总结。
- 相关技术与方法介绍:关于本系统的一些相对重要的技术的一些简介和相关资料的介绍,以便阅读本论文的人更好的了解本系统的技术,以及细节。也可以帮助不了解本系统的人了解到该系统的基本功能和相应的相关知识。然后就是所操作的软硬件环境。
- 系统分析:简述下系统的可行性,例如基本的 经济可行性、操作可行性和技术可行性等,还介绍了该系统的需求分析,系统的总体需求和相对应的用例图,用例图能使读者更直观的看出该系统需求的总体关系和走向。
- 系统设计:系统类分析,让我们更直观的看出这系统所涉及到的一些实体类之间的关系;系统关键业务设计,能让阅读者很清楚该系统的各个功能之间的关系和总体设计是怎样的;数据库设计,让我们可以更加清晰的设计出符合我们需要的表,数据库逻辑结构设计图,让我们清楚的知道数据库每一个表的字段名,以及它们的类型等,让我们能迅速的设计出符合系统需要的数据库表。
- 系统实现:用户登录后,系统会展示出用户权限所拥有的功能;管理员登录之后,系统也会展示出管理员相对应的功能列表。
- 系统测试:介绍并使用了常见的测试方法,让我们在完成系统的开发后,通过测试,更加快速的发现系统的不足之处并将其进行完善。再进行测试,直到得到满意的测试结果。
- 总结:对全文进行一个总体的评价和这段时间所学到的东西进行一个沉淀。并且对于那些在论文期间给予本人帮助的人致谢!
第二章 相关技术与方法
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 用户登录用例说明
用例编号 |
UC01 |
|
用例名称 |
用户管理用例图 |
|
用例概述 |
用户注册 |
|
主参与者 |
用户 |
|
前置条件 |
进入记账管理系统 |
|
基本事件流 |
步骤 |
活动 |
A1 |
用户向系统发出注册请求 |
|
A2 |
用户注册新用户名并且设置密码,将基本数据保存到数据库 |
|
扩展事件流 |
1a |
用户名已经存在数据库中,返回提示信息 |
1b |
用户没有填写必填信息,返回首页 |
|
2a |
验证输了用户名密码格式错误,返回提示 |
|
基本事件流 |
步骤 |
活动 |
B1 |
用户向系统发出登入请求 |
|
B2 |
用户输入用户名,密码;与数据库中的数据进行对比 |
|
扩展事件流 |
1a |
用户不存在,返回提示信息 |
1b |
用户没有填写某些必要的信息,返回提示信息 |
|
1c |
验证用户名密码在数据库中没有信息,返回提示信息 |
3.4.2财务管理用例说明
表3-2 财务管理用例说明
用例编号 |
UC02 |
|
用例名称 |
财务管理用例 |
|
用例概述 |
添加财务记录,通过条件查询某个财务记录 |
|
主参与者 |
用户 |
|
前置条件 |
用户已经登录 |
|
基本事件流 |
步骤 |
活动 |
A1 |
用户将财务记录添加到数据库,展示在财务信息处 |
|
扩展事件流 |
1a |
可以通过某些条件进行查询财务记录,例如 名称,类型或者是否公费等 |
1b |
可以删除,查看具体财务记录,让用户更清楚的看到那条记录 |
3.4.3系统管理用例说明
表3-3 系统管理用例说明
用例编号 |
UC03 |
|
用例名称 |
系统管理用例 |
|
用例概述 |
系统管理的相关信息 |
|
主参与者 |
管理员 |
|
前置条件 |
管理员已经登入了该系统 |
|
基本事件流 |
步骤 |
活动 |
A1 |
管理员可对于该系统所有用户进行管理,如删除,查找等操作 |
|
A2 |
管理员也可以对该系统的其他管理员进行管理,如删除或者再去添加一个新的管理员 |
第四章 系统设计
本章内容包括系统类分析、核心业务设计、数据库设计三个部分,其中系统类分析需要给出系统类图和类的说明,需要注意在给出类图的时候只需要给出核心业务类,对辅助类如界面类、数据库连接类这种类型的不需要给出,如果所涉及的类(包括类当中的内容)较多时,应首先给出类间关系图(图中的类只有名称没有属性和方法),之后在单个类说明中给出具体类的类图,类图同样需要用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用户登录
功能测试 |
||||||
概述 |
||||||
测试编号 |
GN001 |
|||||
功能描述 |
用户登录 |
|||||
功能URL |
||||||
用例目的 |
测试用户是否能登录成功 |
|||||
前提条件 |
进入用户登录界面 |
|||||
测试操作 |
||||||
编号 |
输入/动作 |
期望的输出响应 |
实际情况 |
是否正确 |
错误编号 |
|
1 |
输入不存在的用户名,不填写密码 |
系统提示密码不能为空 |
系统提示密码不能为空 |
正确 |
||
2 |
输入正确的用户名输入错误的密码 |
系统提示密码错误 |
系统提示密码错误 |
正确 |
||
3 |
输入错误的用户名输入正确的密码 |
系统提示用户名不存在 |
系统提示登录名或密码错误 |
正确 |
||
4 |
不填写用户名及密码 |
系统提示用户名或密码错误 |
系统提示用户名或密码错误 |
正确 |
||
6.2.2账单统计模块
表6-2账单统计
功能测试 |
||||||
概述 |
||||||
测试编号 |
GN001 |
|||||
功能描述 |
账单统计 |
|||||
功能URL |
||||||
用例目的 |
测试账单统计是否存在 |
|||||
前提条件 |
进入用户登录界面 |
|||||
测试操作 |
||||||
编号 |
输入/动作 |
期望的输出响应 |
实际情况 |
是否正确 |
错误编号 |
|
1 |
输入查询月份 |
展示具体数据 |
展示具体数据 |
正确 |
||
2 |
输入不存在的月份 |
系统提示密码错误 |
系统提示该月份没有数据 |
正确 |
||
3 |
输入查询年份 |
展示具体数据 |
展示具体数据 |
正确 |
||
4 |
输入不存在的年份 |
系统提示密码错误 |
系统提示该年份没有数据 |
正确 |
||
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.
记账管理系统
摘要:近年来由于生活节奏的加快,好像每个人都被很多难以启齿的问题困惑,然而关于随意消费是大多数人头疼的问题,没有任何计划和筹备的情况下随意消费,导致现实生活中我们所称为的“月光族”。如果我们定期花一些时间去记录我们生活中那些主要的消费情况,了解自己的收入和支出情况,这样坚持几个月你将会发现一些规律,收入是否稳定,月底的时候是收入少了还是支出多了,投资是否符合预期;这些规律,就是你通过记账了解到的财务状况,财务状况没有单纯的好与坏之分,最理想的情况,当然是无论什么情况都不会入不敷出,但这个情况对于刚毕业的人和工作十年的人情况显然是不同的。
当你逐渐了解自己的财务状况,就可以学着做简单的收支规划。大部分月光族的根源其实是缺乏规划,想买什么的时候就买了。并不是说规划不能随意买东西,规划的价值在于让你使用资金的效率最高。无论你用金钱换取的必需品,满足感或者快乐,都可以通过规划获得比较高的效率。
本记账系统是一个基于国内外电子商务网站的发展现状,采用B2C(Business to Consumers)模式开发的电子商务平台,它的价值所在对于那些随意消费性的人群能起到一个很大的警示作用,而且系统扩张性很强,能根据客户的不同需求进行快速改进。该系统采用B/S三层结构,服务器是Tomcat同时运用JSp技术进行动态页面设计,后台数据库是Oracle。
关键字:电子商务;信息化;网络
中图分类号:G642 文献标志码:A
引言
对于一个刚出校门或是刚刚工作不久的我们来说,由于我们刚步入社会,最基本的事情就是首先保证自己生存下来,合理地安排自己的消费情况, 所以,我们平时对自己的消费和收支进行一个账单记录显得尤为关键。账单记录能让我们更清楚的了解我们收支的去向,让我们能更好的把握好身上的每一分钱,然后把钱用到关键的地方,如投资,理财等。从查询课外资料来看,国外有很多账单管理的软件,而且大部分外国人对生活中的记账有着严格的把控。就国内而言,放眼望去,大部分记账软件都是着重于办公财务软件,而对于个人和家庭的小型记账系统还是比较少的,因此需要开发一款这样的系统软件,从而达到引导我们理性消费,合理分配收支。
对于记账而言呢,若我们直接像古人那样用纸和笔记录的话,那样随着我们的记录越来越多,我们的记账薄也随之越来越厚,容易造成遗失,当我们要查找某个我们想要找的记录时,我们会消耗大量的时间,这就非常麻烦。这种记账方式就显得非常冗余、笨重,因此我们需要设计一款功能完善的记账软件,用它来代替传统的手工操作。
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
参考文献
[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.
参考资料:
基于jsp的记账管理系统毕业设计(项目报告+答辩PPT+源代码+数据库+部署视频)https://download.csdn.net/download/dwf1354046363/87813554Java毕业设计174例,包含部署视频_易小侠的博客-CSDN博客https://cv2022.blog.csdn.net/article/details/124463185?spm=1001.2014.3001.5502
基于jsp的记账管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+部署视频)相关推荐
- 基于java的土地档案管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+部署视频)
项目报告 土地档案管理关系 研究土地档案管理关系即为实现一个土地档案管理系统.土地档案管理系统是将现有的历史纸质档案资料进行数字化加工处理,建成标准化的网络基础资料数据库,同时建成一套基于计算机网络应 ...
- 基于jsp的项目管理平台系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
项目报告 基于Java EE平台项目管理系统的设计与实现 随着社会信息化的发展,很多的社会管理问题也一并出现了根本性变化,项目公司的报表及文件管理也发生了变化,以前的管理是一个分布式的信息,然后围绕中 ...
- 基于jsp的农产品销售管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
项目报告 基于WEB的农产品销售管理系统 本文论述了基于JAVA.Web的农产品销售管理系统开发的目的及意义,目的是为了农产品资源的合理利用和物资的充分交流,有些地方富余而卖不出去,有些地方却吃不上. ...
- 基于java的宠物管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
基于JAVA的宠物网站的设计与实现 本系统是采用Java技术来构建的一个基于Web技术的B/S结构的宠物网站,该网站建立在Spring和Struts2框架之上,前台使用JSP作为开发语言,后台使用My ...
- 基于jsp的网上招标系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
说明书报告 从本世纪初,互联网开始加速发展,各种创新型应用和互联网新概念不断出现,例如搜索引擎.电子商务.博客.维基百科.RSS.3G.web2.0.长尾理论等.这些应用和概念与知识管理都有着或多或少 ...
- 基于jsp的影视创作论坛系统毕业设计(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
摘要: 本文基于JSP技术,设计并实现了一个基于JSP的影视创作论坛系统.该系统旨在提供一个在线平台,供影视创作者交流.展示作品和分享经验.系统具备用户注册.登录.发表文章.评论.上传作品等功能,以满 ...
- 基于java的连连看游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
项目说明报告 基于Java的连连看游戏设计与实现 连连看是一种消除类益智游戏,核心要求是在规定的时间内,消除游戏界面中选中的两张相同的图案,直至完全消除所有图案.这款游戏操作简单(只需单击鼠标左键操作 ...
- 基于java的出租车计价器系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
项目报告 出租车计价器设计与实现 在我国,出租车行业是八十年代初兴起的一项新兴行业,随着出租车的产生,计价器也就应运而生.但当时在全国没有一家企业能够生产,因而那个时期的计价器是由台湾引进.台湾是计价 ...
- 基于java的新闻发布及管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
项目说明报告 题 目:新闻发布及管理系统的设计与实现 本课题来源及研究现状: 课题来源 21世纪是信息的时代,是网络的时代,进入信息社会高速发展的时代,数字化革命给所有领域带来新的改变.信息技术的 ...
最新文章
- ssh mysql环境搭建_搭建一个MySQL高可用架构集群环境
- html5 Canvas画图4:填充和渐变
- windows terminal 笔记
- Spring – ${} is not working in @Value--转载
- 学习《送东阳马生序》
- 策略模式和工厂模式的区别_java设计模式之状态模式,策略模式孪生兄弟
- pragma pack(1) and #pragma pack(push,1)
- java 读取properties文件
- C# using 使用方法
- 【React Native 实战】微信登录
- js判断浏览器是否安装或启用了flash的方法总结
- GBin1专题之Web热点#10
- json字符串和字典的区别
- 材料科学需要用计算机吗,计算机在材料科学中的运用分析
- C语言程序设计学习笔记:P3-判断
- python 爬取12306数据
- 年轻人的第一个APM-Skywalking
- Java缓存知识汇总
- [plugin:vite:import-analysis]Failed to resolve import “@/“ from ““.Does the file exist
- Scrapy爬取顶点小说网