银行账户结算管理系统毕业设计柜台操作和ATM服务论文.docx
《银行账户结算管理系统毕业设计柜台操作和ATM服务论文.docx》由会员分享,可在线阅读,更多相关《银行账户结算管理系统毕业设计柜台操作和ATM服务论文.docx(36页珍藏版)》请在冰豆网上搜索。
银行账户结算管理系统毕业设计柜台操作和ATM服务论文
第一章引言
1.1课题的背景及意义
自1580年第一家银行在意大利威尼斯诞生至今,随着商品交换、货币流通的迅速扩大,以及国际贸易的迅速发展,银行业获得了空前飞速的发展,其地位、作用日益加强,银行的工作效率和货币流通能力更是成为整个经济发展速度的决定性因素之一。
而随着电子信息技术的崛起,银行的业务处理能力与日俱增,作为银行支付结算工作的前提和基础,银行结算账户的管理成为了银行管理流程中的至关重要的部分。
银行结算账户是指存款人在经办银行开立的办理资金收付结算的人民币活期存款账户,是集中反映整个社会经济活动中资金流动的基础。
银行结算账户管理需经过国务院行政许可授权,是各大银行支付结算管理工作中的一向重要内容,有效的银行结算账户管理可以为经济、金融秩序运行提供强有力的基础支持,营造公平竞争、合规有序的良好氛围,对于促进我国金融业健康、平稳发展有着重要意义。
银行账户管理制度的确立,账户管理系统的设计直接影响着银行在结算管理中的效率,有效的账户管理工作就相当与一面“防火墙”,可以从源头上控制非法金融活动,稳定金融秩序,同时在反洗钱,反贪污中也能发挥关键性作用。
以法律形式明确规定存款人在账户开立、使用中应承担的责任、义务,赋予人民银行和商业银行相应的限制权利和措施,提高行政执法效率,进一步规范结算账户的开立和使用,对于完善我国的账户管理制度,提高对账户的管理效率,促进人民银行履行职能具有重要的意义。
由于受到计算机技术的限制,我国银行电子化起步较晚,各方面技术也不太完善。
以中国人民银行为例,其银行账户管理系统先后经历了单机版、集中式处理、双层的C/S模式,最终发展到多层的B/S模式。
B/S模式也是现今主流的管理系统开发模式。
2004年6月至2005年2月,中国人民银行首次采用面向对象的方法组织开发了全国统一人民币结算账户管理系统(简称:
结算账户管理系统)软件,2005年6月此系统推广到全国,实现了结算账户的全国统一管理。
系统投入使用后,能够在全国范围内严格控制核准类账户的开立,监控存款人在全国开立的所有结算账户。
结算账户管理系统成为人民银行实施结算账户管理、金融监控业务的一个重要支撑系统,同时也为发现金融犯罪提供了决策依据。
相比中国,美国的银行电子化比中国早了十几年,而同在亚洲的日本银行的电子化管理也早于中国。
当今世界,银行账户系统的网络化成了一个流行趋势,所有的信息处理都要求极高的效率,同时还要有极高的安全性,B/S模式在系统开发中越来越重要,而如何实时高效地处理成千上万的数据对系统设计的要求也愈来愈高。
1.2完成的内容与设计结果
1.2.1设计目标
本次设计的主要目标是透过银行账户结算管理系统的设计,重点分析银行账户的结算和管理两个过程,对各个业务流程有更好的了解,如:
1、模拟开户时用户提交信息与后台模块的信息数据库中的信息进行比对,来确定是否授予开户准许,通过这一过程来分析了解银行账户开户的审核过程。
2、了解银行计息方式,账户分类,账户的业务状态等来模拟银行账户管理中的不同的业务流程。
如银行常用的账户状态处于激活,挂失,销户等不同状态下所对应的操作;不同的存款方式可使用不同的计息方式等。
3、模拟账户管理中操作权限的管理,从而分析银行在账户数据操作中的安全保障措施。
1.2.2设计内容
该系统主要完成ATM服务模块和柜台操作模块的功能。
1、ATM服务模块功能有:
(1)存款
(2)取款
(3)查询余额
(4)转账(本地/异地/本行/跨行)
(5)修改密码
2、柜台操作模块功能有:
(1)开户
(2)存款
(3)取款
(4)转账(本地/异地/本行/跨行)
(5)挂失
(6)销户
(7)用户信息查询
(8)修改账户信息
1.3实施步骤
银行账户结算管理系统,先后经历系统调研、需求分析、系统设计、编码、系统调试、系统再修改等阶段。
1、查阅文献资料,进行系统调研
完成前期需求分析工作,初步确定系统详细开发周期。
2、系统设计
针对前期确定的需求分析得出一个可行的设计方案。
概要系统所需的界面和数据表,大致确定系统框架结构与各功能模块的分工。
3、编码
根据系统设计确定的方案编码,具体实现系统。
主要是实现系统的框架结构设计、界面布局设计、功能模块设计。
4、对系统的设计进行更完善的修改,并对系统进行分析和可行性实验,在短时间内建立系统应用原型。
主要是大致完成柜台操作模块和ATM服务模块两大功能模块的具体功能。
5、系统调试。
调试系统各模块的功能与健壮性。
6、系统再修改。
根据系统调试出现的问题修改系统,改进相关编码和设计。
第二章相关技术介绍
2.1开发模式:
B/S模式
B/S模式管理信息系统基本上克服了C/S模式管理信息系统的不足,其主要表现在:
系统开发、维护和升级的经济性,对于大型的管理信息系统,软件开发、维护与升级的费用是非常高的,B/S模式所具有的框架结构可以大大节省这些费用,同时,B/S模式对前台客户机的要求并不高,可以避免盲目进行硬件升级造成的巨大浪费。
B/S模式提供了一致的用户界面,B/S模式的应用软件都是基于Web浏览器的,这些浏览器的界面都很相似。
对于无用户交互功能的页面,用户接触的界面都是一致的,从而可以降低软件的培训费用。
B/S模式具有很强的开放性,在B/S模式下,外部的用户亦可通过通用的浏览器进行访问。
B/S模式的结构易于扩展,由于Web的平台无关性,BS模式结构可以任意扩展,可以从一台服务器、几个用户的工作组级扩展成为拥有成千上万用户的大型系统。
B/S模式具有更强的信息系统集成性,在B/S模式下,集成了解决企事业单位各种问题的服务,而非零散的单一功能的多系统模式,因而它能提供更高的工作效率。
B/S模式提供灵活的信息交流和信息发布服务。
B/S模式借助Internet强大的信息发布与信息传送能力可以有效地解决企业内部的大量不规则的信息交流。
2.2SpringMVC
SpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。
Spring框架提供了构建Web应用程序的全功能MVC模块。
使用Spring可插入的MVC架构,可以选择是使用内置的SpringWeb框架还可以是Struts这样的Web框架。
通过策略接口,Spring框架是高度可配置的,而且包含多种视图技术,例如JavaServerPages(JSP)技术、Velocity、Tiles、iText和POI。
SpringMVC框架并不知道使用的视图,所以不会强迫您只使用JSP技术。
SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
MVC作为WEB项目开发的核心环节,正如三个单词的分解那样,C(控制器)将V(视图、用户客户端)与M(模块,业务)分开构成了MVC,这边不去讨论项目中是否应用MVC,也不针对MVC的实现原理进行讲解,而是探讨实践中如何从应用SSH,到SpringMVC+Spring+Hibernate的演化过程。
2.3Bootstrap
Bootstrap是Twitter推出的一个开源的用于前端开发的工具包。
它由Twitter的设计师MarkOtto和JacobThornton合作开发,是一个CSS/HTML框架。
Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。
Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的BreakingNews都使用了该项目。
Bootstrap是基于jQuery框架开发的,它在jQuery框架的基础上进行了更为个性化和人性化的完善,形成一套自己独有的网站风格,并兼容大部分jQuery插件。
Bootstrap中包含了丰富的Web组件,根据这些组件,可以快速的搭建一个漂亮、功能完备的网站。
其中包括以下组件:
下拉菜单、按钮组、按钮下拉菜单、导航、导航条、面包屑、分页、排版、缩略图、警告对话框、进度条、媒体对象等。
2.4Jquery
Jquery是继prototype之后又一个优秀的Javascript框架。
它是轻量级的js库,它兼容CSS3,还兼容各种浏览器。
jQuery使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。
jQueryEasyUI是一组基于jQuery的UI插件集合,而jQueryEasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。
开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签。
Uploadify是一款优秀jQuery插件,主要功能是批量上传文件,此插件在项目中已被广泛使用。
第三章概要设计
3.1系统结构
银行账户结算管理系统的分为ATM服务模块,柜台操作模块和后台管理模块。
我主要完成的是ATM服务模块和柜台操作模块功能的实现。
系统结构如图3.1所示
图3.1系统结构图
Fig3.1SystemStructure
3.2系统主要功能
银行账户结算管理系统的分为ATM服务模块和柜台操作模块。
其中,有三个角色,分别是:
用户、操作员、管理员。
具体功能设计如下:
1、柜台操作模块主要功能要求
(1)开户:
用户可以向操作员申请开户,申请成功后经管理员批准则开户成功。
(2)存款:
用户登录成功后可以选择已绑定的某张银行卡进行存款。
(3)取款:
用户登录成功后可以选择已绑定的某张银行卡进行取款。
(4)转账(本地/异地/本行/跨行):
用户登录成功后可以选择已绑定的某张银行卡进行转账,支持多种方式。
(5)挂失:
用户登录成功后可以选择已绑定的某张银行卡进行挂失。
(6)销户:
操作员可以对用户进行注销。
(7)用户信息查询:
用户登录成功后可以查看自己的用户信息,操作员和管理员可以查看所有用户的用户信息。
(8)修改账户信息:
用于对已有信息进行更改,对于一些错误的数据可以进行及时的修改。
用户登录成功后可以修改自己的账户信息,操作员和管理员可以修改所有用户的账户信息。
2、ATM服务模块主要功能要求
(1)存款:
用户登录成功后选择“ATM服务”可以选择已绑定的某张银行卡进行存款。
(2)取款:
用户登录成功后选择“ATM服务”可以选择已绑定的某张银行卡进行取款。
(3)查询余额:
用户登录成功后选择“ATM服务”可以选择已绑定的某张银行卡进行余额的查询。
(4)转账(本地/异地/本行/跨行):
用户登录成功后选择“ATM服务”可以选择已绑定的某张银行卡进行转账,支持多种方式。
(5)修改密码:
用户登录成功后可以修改自己的密码。
第四章数据库设计
4.1系统类图
系统类图如图4.1所示:
图4.1系统类图
Fig4.1SystemClassDiagram
用户表、权限表、用户权限表是相互关联的关系,用户表和用户权限表是一对多,权限表和用户权限表是一对多;一个用户表可以有多个账户表。
4.2系统E-R图
系统E-R图如图4.2所示:
图4.2系统E-R图
Fig4.2SystemE-RDiagram
4.3系统数据库设计
系统数据库利用MySQL创建,数据库是一个信息系统的重要组成部分。
所以在做系统需求分析时就必须设计好数据库。
本系统涉及的数据表主要有:
1、用户表t_user:
(附表.1)
存储用户信息,包括有用户名和密码等具体信息。
2、账户表t_account:
(附表.2)
存储每个用户的账户信息,每个用户可以有多个账户信息。
3、权限表t_app:
(附表.3)
存储权限信息。
4、用户权限表t_user_app:
(附表.4)
对不同用户不同的权限分配进行管理。
第五章详细设计
5.1系统用例图
图5.1系统用例图
Fig5.1SystemUseCaseDiagram
5.2柜台操作模块
5.2.1柜台操作模块功能介绍
用户可以向操作员申请开户,申请成功后经管理员批准则开户成功;用户登录成功后可以选择已绑定的某张银行卡进行存款、取款、转账和挂失;操作员可以对用户进行注销;用户登录成功后可以查看或修改自己的用户信息,操作员和管理员可以查看或修改所有用户的用户信息。
5.2.2柜台操作模块用例图
图5.2.2柜台操作模块用例图
Fig5.2.2CounterOperationModuleUseCaseDiagram
5.2.3柜台操作模块时序图
5.2.3.1开户
图5.2.3.1开户时序图
Fig5.2.3.1OpeningSequenceDiagram
5.2.3.2存款
图5.2.3.2存款时序图
Fig5.2.3.2DepositSequenceDiagram
5.2.3.3取款
图5.2.3.3取款时序图
Fig5.2.3.3WithdrawalsSequenceDiagram
5.2.3.4转账
图5.2.3.4转账时序图
Fig5.2.3.4TransferSequenceDiagram
5.2.3.5挂失
图5.2.3.5挂失时序图
Fig5.2.3.5LossReportSequenceDiagram
5.2.3.6销户
图5.2.3.6销户时序图
Fig5.2.3.6CanceltheAccountSequenceDiagram
5.2.3.7用户信息查询
图5.2.3.7用户信息查询时序图
Fig5.2.3.7QueryUserInformationSequenceDiagram
5.2.3.8修改用户信息
图5.2.3.8修改用户信息时序图
Fig5.2.3.8ModifyUserInformationSequenceDiagram
5.3ATM服务模块
5.3.1ATM服务模块功能介绍
用户登录成功后选择“ATM服务”可以选择已绑定的某张银行卡进行存款、取款、转账以及余额的查询;用户登录成功后可以修改自己的密码。
5.3.2ATM服务模块用例图
图5.3.2ATM服务模块用例图
Fig5.3.2ATMServicesModuleUseCaseDiagram
5.3.3ATM服务模块时序图
5.3.3.1存款
图5.3.3.1存款时序图
Fig5.3.3.1DepositSequenceDiagram
5.3.3.2取款
图5.3.3.2取款时序图
Fig5.3.3.2WithdrawalsSequenceDiagram
5.3.3.3转账
图5.3.3.3转账时序图
Fig5.3.3.3TransferSequenceDiagram
5.3.3.4查询余额
图5.3.3.4查询余额时序图
Fig5.3.3.4QueryBalanceSequenceDiagram
5.3.3.5修改密码
图5.3.3.5修改密码时序图
Fig5.3.3.5ChangePasswordSequenceDiagram
第六章程序实现
6.1柜台操作模块截图
登陆界面:
用户打开浏览器在地址栏输入
http:
//localhost:
8080/
进入到登陆界面输入用户名密码,登录成功后,如图6.1.1所示
输入用户名和密码后,跳转到如图6.1.2的页面中
点击新建账户,即开户操作,跳转到如图6.1.3的页面中,输入信息后,“保存”则开户成功。
点击存款,跳转到如图6.1.4的页面中,可以输入存款金额进行存款。
点击取款,跳转到如图6.1.5的页面中,可以输入取款金额进行取款。
点击转账,跳转到如图6.1.6的页面中,可以输入转账卡号和转账金额进行转账。
点击修改信息,跳转到如图6.1.7的页面中,可以修改用户信息。
用户也可以注销自己。
点击用户信息查询,跳转到如图6.1.8的页面中,可以查看账户信息。
6.2ATM服务模块截图
用户登录成功,跳转到如图6.2.1的页面中,显示ATM服务的账户信息。
点击显示余额,跳转到如图6.2.2的页面中,可以显示账户的余额。
点击修改密码,跳转到如图6.2.3的页面中,可以输入原密码和新密码。
6.3重点代码
@Controller
@RequestMapping("/admin/account")
publicclassAccountControllerextendsBaseController{
@Autowired
privateAccountServiceaccountService;
@RequestMapping("/list.do")
publicStringlist(HttpServletRequestrequest){
StringsearchTruename=request.getParameter("searchTruename");
Stringtype=request.getParameter("type");
request.setAttribute("List",accountService.findAll(searchTruename,this.getLoginUser().getUsername()));
request.setAttribute("searchTruename",searchTruename);
Stringa="admin/biz/account/list";
if(type.equals("1")){
a="admin/biz/account/list1";
}
if(type.equals("2")){
a="admin/biz/account/list";
}
if(type.equals("3")){
a="admin/biz/account/list2";
}
returna;
}
@RequestMapping("/show.do")
publicStringshow(HttpServletRequestrequest){
Stringid=request.getParameter("id");
if(StringUtils.isNotEmpty(id))
request.setAttribute("entity",accountService.findByID(Integer.valueOf(id)));
return"admin/biz/account/show";
}
@RequestMapping("/setstate.do")
publicStringsetState(@RequestParam("id")intid,@RequestParam("state")Stringstate,HttpServletRequestrequest){
accountService.setState(id,state);
return"redirect:
/admin/account/list.do";
}
@RequestMapping("/edit.do")
publicStringedit(HttpServletRequestrequest){
Stringid=request.getParameter("id");
if(StringUtils.isNotEmpty(id))
request.setAttribute("entity",accountService.findByID(Integer.valueOf(id)));
return"admin/biz/account/edit";
}
@RequestMapping("/toZhuanzhang.do")
publicStringtoZhuanzhang(HttpServletRequestrequest){
Stringid=request.getParameter("id");
if(StringUtils.isNotEmpty(id)){
request.setAttribute("entity",accountService.findByID(Integer.valueOf(id)));
request.setAttribute("accountEntity",accountService.findOthers(id));
}
request.setAttribute("type",request.getParameter("type"));
return"admin/biz/account/zhuanzhang";
}
@RequestMapping("/changeMoney.do")
publicStringchangeMoney(HttpServletRequestrequest){
Stringid=request.getParameter("id");
if(StringUtils.isNotEmpty(id))
request.setAttribute("entity",accountService.findByID(Integer.valueOf(id)));
request.setAttribute("moneyState",request.getParameter("moneyState"));
request.setAttribute("type",request.getParameter("type"));
return"admin/biz/account/changeMoney";
}
/**
*存取款
*@paramrequest
*@return
*/
@RequestMapping("/updateMoney.do")
publicStringupdateMoney(HttpServletRequestrequest){
Stringid=request.getParameter("id");
StringmoneyState=request.getParameter("moneyState");
StringchangeMoney=request.getParameter("changeMoney");
Stringtype=request.getParameter("type");
//1代表存款
//2代