软件工程课程设计ATM取款服务系统.docx
《软件工程课程设计ATM取款服务系统.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计ATM取款服务系统.docx(39页珍藏版)》请在冰豆网上搜索。
![软件工程课程设计ATM取款服务系统.docx](https://file1.bdocx.com/fileroot1/2023-2/23/0345f893-2a4a-459a-9cd3-825d8b0022f6/0345f893-2a4a-459a-9cd3-825d8b0022f61.gif)
软件工程课程设计ATM取款服务系统
软件工程课程设计-ATM取款服务系统(总27页)
软件工程课程设计
--------ATM机取款服务系统
学校:
苏州大学
院系:
计算机科学与技术学院
专业:
计算机科学与技术
组员:
戴飞03
张超01
丁杰荣02
苏栋梁04
1.引言
编写目的
本次软件设计的目的是建设一个通过软件实现ATM机各项功能的模拟系统,能够更加方便的为客户提供取款,转账和余额查询等功能,并且按模块划分功能,最大程度的来提神系统的健壮性和可扩展性。
根据迭代式开发原理,逐步完善,直至完全满足客户的需求。
适用范围
ATM的功能要求支持在本公司注册过的所有银行,为其提供服务。
背景
ATM自动取款机是由计算机控制的持卡人自我服务型的金融专用设备。
ATM是英文AutomaticTellerMachine的缩写。
ATM是最普遍的自助银行设备,可以提供最基本的银行服务之一,即出钞交易,有些全功能的产品还可以提供信封存款业务。
在ATM自动取款机上也可以进行账户查询、修改密码和转账的业务。
作为自助式金融服务终端,除了提供金融业务功能之外,ATM自动取款机还具有维护、测试、事件报告、监控和管理等多种功能。
ATM自动取款机系统,是一个有终端机,ATM系统,数据库组成的应用系统。
系统功能有用户在ATM上提取现金、查询账户余额、修改密码及转账功能。
ATM自动取款机系统向用户提供一个方便、简单、及时、随时随地可以随心所欲存取款的互联的现代计算机化的网络系统。
可以大大减少工作人员,节约人力资源的开销,同时由于手续程序减少也可以减轻业务员的工作负担,有效地提高了整体的工作效率和精确度。
减少了用户办理业务的等待时间;用户可以随时随地可以随心所欲存取款,并且操作简单易懂;用户还可以选择在柜台办理业务或自己在自动提款机和自动取款机办理业务。
文档概述
ATM自动柜员机系统是由计算机控制的银行自动出纳系统,主要服务于活期储蓄,实现客户自助服务的电子化设备。
统一建模语言UML(UnifiedModelingLanguage)是面向对象技术的一个重要应用,也是软件工程环境中对象分析和设计的重要工具。
通过UML对ATM自动取款机建模,实现查询余额,取款,转账,更改密码等业务,对各功能进行具体的分析和建模。
参考资料
《软件工程导论(第5版)》清华大学出版社张海藩编著
《UML面向对象建模与设计》人民邮电出版社MichaelBlaha,JamesRumbaugh编著
2.任务概述
.目标
本系统可以帮助用户更为轻松的进行取款,转账和查询余额等业务。
从用户角度出发,更为理性的设计银行卡卡号,来保证更高的安全性和更快捷的银行业务操作,来吸引更多的客户使用。
.用户特点
1.客户:
通过输入自身信息进入系统,主要完成取款、转账和余额查询操作。
3.核心技术
1.在代码的编制方面,我们使用的是java的GUI设计;
2.在数据库方面我们使用的是oracle数据库,版本号为.0release1。
(oracle11g对应JDBC驱动在附件中已经打包)
3.在做界面的美观设计时,我们将设计代码封装在了文件中,如果之后的设计需要对界面的外观进行相应的修改,直接更改该文件即可。
4.数据库方面的各类脚本,包括表的建立、删除、修改,以及表中数据的插入、更新和删除操作都已经保存在对应的txt文档中(在附件中已经打包)。
4.项目需求分析
系统功能概述
ATM自动取款机系统相关的主要对象
(1)用户:
使用ATM自动取款机进行现金交易。
进行取款、查询余额、设置密码、转账等操作。
(2)数据库:
对用户的所有信息进行存储更新。
ATM自动取款机系统相关的主要功能
(1)取款功能:
用户按照系统输入要求输入取款金额即可取出相应金额的现金。
(2)查询余额功能:
用户可以查看账户所剩现金余额。
(3)修改密码功能:
如果用户想要修改当前密码,通过系统可以设置新密码。
(4)转账功能:
用户可以通过该功能将自己账户上的金额转到其他账户。
首先,ATM要求用户输入密码,接下来ATM把从银行卡上读到的信息以及用户输入的密码传给ATM自动取款机系统,系统通过于数据库中的信息进行核对,如果密码正确ATM就要求用户选择事务类型(取款、查询等),直至用户选择退出应用服务,询问用户是否退出银行卡结束服务,如果用户选择结束,则退出银行卡,系统重回登陆界面。
ATM自动取款机系统相关的界面
(1)登录界面:
在整个的系统中,首先用户要输入正确用户登录密码以后才可以进入主界面进行相关的操作。
(2)主界面:
当用户输入正确的用户密码以后,出现主界面,包括以下的一些功能:
a)主界面有“查询余额”“取款”“转账”“修改密码”等功能选项。
b)主界面中还有“退卡”功能选项,点击即退出系统服务。
(3)取款界面:
当用户在菜单栏点击取款功能选项,可以进入取款界面:
a)首先你可以输入取款的金额,输入的必须为50倍数的数字,否则系统会提示输入的金额错误,请重新输入。
如果屏幕上有便捷提示,比如:
1000元、800元、500元等。
如果上边有你想要取款的金额,你可以按相对应的按键就可以了,如果没有,你再找一个“其他金额”按下之后,就可以自由输入自己想取的金额了,输入金额之后,按“确认”,即完成取款功能。
b)正确输入取款的金额后,直接点击取款,会再次确认你取款的金额,点击“是”即可以取出取款机吐出的现金,并且数据更新到相关的数据库文件中,以便以后查询。
(4)余额查询界面:
在主界面中点击余额查询功能选项,就会弹出余额的窗口。
(5)修改密码界面:
在主界面中点击修改密码功能选项,进入修改密码功能界面,系统要求首先输入旧密码,再输入写密码,并对新密码进行第二次确认,全部输入正确修改功能完成。
(6)转账界面:
当点击转账功能选项,会出现转账的界面,这时就可以进行转账;分别输入转入的账户和转入的金额,直接点击转入。
若转入过程中出错会有相关的提示的操作。
系统Use-Case模型
系统用例描述
ATM机取款的用例规约
用例名称:
ATM取款
简述:
客户持银行卡(本行或其他行)从ATM提取现金
actors:
客户和银行主机
基本流:
1. 客户插入银行卡。
2. ATM从银行卡读入卡号(含银行标识和账号),验证卡的有效性。
3. 客户输入密码。
4. ATM验证帐号和密码。
5. ATM显示包括取款在内的服务功能,客户选择“取款”。
6. 输入取款额:
客户输入数量为50元的倍数的取款额。
7. ATM向银行主机通知卡号、密码、账号和取款额,获得含有最新余额的取款成功确认信息。
8. ATM打印并吐出凭条。
9. ATM清点并吐出现金,记录取款成功。
10. ATM询问客户是否继续服务。
11. 客户选择否,ATM吐出银行卡,结束用例,否则回到步骤5。
[用例结束]
备选流:
1.客户取消服务:
ATM记录服务取消,打印凭条,吐出凭条和银行卡,[用例失败]
2.客户未及时输入超过30秒:
ATM吞卡,[用例失败]
3.卡无效:
ATM吞卡,[用例失败]
4.读卡器或卡被损坏:
ATM吞卡,[用例失败]
5.密码错:
客户重新输入密码
累计3次密码错误:
ATM吞卡,[用例失败]
6.无此帐号:
ATM吞卡,[用例失败]
7.ATM无现金:
ATM不显示“取款”功能,客户可选择其他服务,[用例失败]
8.取款额超过ATM现金余额:
ATM要求客户重新输入取款额。
9.帐户余额不足:
ATM要求客户重新输入取款额。
10.取款额超过当日最高限额:
ATM要求客户重新输入取款额。
11.网络或银行主机失效、通讯超时:
ATM记录服务取消,打印凭条,吐出凭条和银行卡,[用例失败]
12.凭条打印失败,纸用完或卡纸:
ATM通知银行主机取消取款
ATM记录服务取消,吐出银行卡,[用例失败]
13.吐现金失败:
ATM通知银行主机取消取款
ATM记录服务取消,吐出银行卡,[用例失败]
14.客户未及时取走卡:
ATM吞卡,[用例失败]
业务规则
1.单笔取款金额上限为5000元
2.每月前3笔取款不收手续费
3.超过前3笔之后,在本行本地的ATM机取款2元每次
4.超过前3笔之后,在本行异地的ATM机取款4元每次
5.超过前3笔之后,在异行本地的ATM机取款3元每次
6.超过前3笔之后,在异行异地的ATM机取款5元每次
ATM机转账的用例规约
用例名称:
ATM转账
简述:
客户持银行卡(本行)从ATM可以将卡内金额转至其他有效银行卡账户中
actors:
客户和银行主机
基本流:
1. 客户插入银行卡。
2. ATM从银行卡读入卡号(含银行标识和账号),验证卡的有效性。
3. 客户输入密码。
4. ATM验证帐号和密码。
5. ATM显示包括取款在内的服务功能,客户选择“转账”。
6. 输入转账金额。
7. ATM向银行主机通知卡号、密码、账号和取款额,获得含有最新余额的转账成功确认信息。
8. ATM打印并吐出凭条。
9. 记录转账成功。
10. ATM询问客户是否继续服务。
11. 客户选择否,ATM吐出银行卡,结束用例,否则回到步骤5。
[用例结束]
备选流:
1.客户取消服务:
ATM记录服务取消,打印凭条,吐出凭条和银行卡,[用例失败]
1.客户未及时输入超过30秒:
ATM吞卡,[用例失败]
2.卡无效:
ATM吞卡,[用例失败]
3.读卡器或卡被损坏:
ATM吞卡,[用例失败]
4.密码错:
客户重新输入密码
累计3次密码错误:
ATM吞卡,[用例失败]
5.无此帐号:
ATM吞卡,[用例失败]
7.帐户余额不足:
ATM要求客户重新输入转账金额。
8.转账额超过当日最高限额:
ATM要求客户重新输入转账金额。
9.网络或银行主机失效、通讯超时:
ATM记录服务取消,打印凭条,吐出凭条和银行卡,[用例失败]
10.凭条打印失败,纸用完或卡纸:
ATM通知银行主机取消取款
ATM记录服务取消,吐出银行卡,[用例失败]
11.客户未及时取走卡:
ATM吞卡,[用例失败]
业务规则:
1.单日转账不得超过50000元
2.本地本行转账免费
3.本地异行转账+5元每笔
4.异地本行转账加+4元每笔
5.异地异行装张+9元每笔
ATM机修改密码的用例规约
用例名称:
ATM修改密码
简述:
客户持银行卡(本行或其他行)在ATM机上完成对银行卡账户密码的修改
actors:
客户和银行主机
基本流:
1. 客户插入银行卡。
2. ATM从银行卡读入卡号(含银行标识和账号),验证卡的有效性。
3. 客户输入密码。
4. ATM验证帐号和密码。
5. ATM显示包括取款在内的服务功能,客户选择“修改密码”。
6. 系统提示客户输入旧密码
7. 系统提示客户输入新密码,并再次确认新密码
8. ATM提示修改密码成功。
9. ATM询问客户是否继续服务。
10. 客户选择否,ATM吐出银行卡,结束用例,否则回到步骤5。
[用例结束]
备选流:
1.客户取消服务:
ATM记录服务取消,打印凭条,吐出凭条和银行卡,[用例失败]
2.客户未及时输入超过30秒:
ATM吞卡,[用例失败]
3.卡无效:
ATM吞卡,[用例失败]
4.读卡器或卡被损坏:
ATM吞卡,[用例失败]
5.密码错:
客户重新输入密码
累计3次密码错误:
ATM吞卡,[用例失败]
6.无此帐号:
ATM吞卡,[用例失败]
7.网络或银行主机失效、通讯超时:
ATM记录服务取消,打印凭条,吐出凭条和银行卡,[用例失败]
8.客户未及时取走卡:
ATM吞卡,[用例失败]
业务规则:
系统动态模型—活动图
系统总体活动图
系统登陆模块的活动图
修改密码模块的活动图
系统取款模块的活动图
系统转账模块的活动图
5.系统分析设计
系统设计模式的选择
经过小组成员的讨论,我们选的设计模式为:
代理模式,单例模式和责任链模式。
代理模式的介绍:
代理模式的体现:
代理模式提供一个中介以控制对某个对象的访问。
在本系统中,当用户通过ATM机提出各种请求时,ATM要访问银行服务器上的数据库,因此存在跨越数据库访问障碍,同时还有网络障碍。
在应用代理模式时,由于Proxy与Withdrawal,Transfer,CheckAccount,SaveAccount,ChangePassword类继承同一接口,所以User验证完卡类型后调用Withdrawal等类时就可以转换为User调用Proxy再调用Withdrawal等类,类Proxy就是这个中间代理。
例如:
Withdrawal等类部署在银行服务器上,也就是说Withdrawal等类和ATM的客户程序根本不在一个地址空间之内,如此就存在一个网络障碍。
这时调用Withdrawal等类的方法就比较复杂了。
因为我们还要考虑网络的问题,对收到的结果解包等一些操作。
而在应用了代理模式后,现在已经实现了对Math类的代理。
存在一问题是在Proxy类中调用了原实现类Withdrawal等的方法。
但Withdrawal等类并不一定实现所有的方法。
为了强迫它实现所有的方法。
另一方面,为了我们更加透明地去操作对象,我们在Withdrawal等类和Proxy类的基础上加一层抽象,即它们都实现IWithdrawal接口:
如此,由Proxy类在客户端实现Withdrawal等类的所有功能,对客户端隐藏了服务端的行为,有助于屏蔽网络可能带来的问题。
责任链模式的介绍
责任链模式的体现:
此模式的想法是给多个对象一个处理请求的机会,从而解耦发送者和接收者,请求沿对象链传递知道被处理。
在此系统中,主要体现在手续费的收取问题上:
首先由Withdrawal类或Transfer类提出请求WithdrawalRequest或TransferRequest,请求被发送到Judger类,Judger类根据预先设定好的顺序传递给第一个类进行处理,若第一个类不能处理或处理完它能处理的请求的相关部分之后,将请求发送给其后继,依次类推,知道请求被最后一个类处理完成。
同样的方法还体现在JudgeAmount中,根据所操作金额的范围不同,对金额所产生的费用作不同的处理。
用例功能的类图设计
系统交互模型—顺序图
系统取款模块的顺序图
系统转账模块的顺序图
系统设计类图
Cardinformation包内类之间关系图:
Account包内类之间关系图
Service包内类之间关系图:
6.用户使用说明
1.将卡插入ATM机。
2.界面提示输入帐号,此时应输入帐号,输入帐号后,点击“继续”。
3.界面提示输入密码,此时应输入密码。
若想重新输入帐号点击“返回”,若想重新输入密码,点击“取消”。
4.输入密码后点击“确定”,若帐号密码正确,进入业务选择界面,若帐号密码错误,界面提示错误信息,并回到输入帐号界面。
(若帐号密码错误次数累计为3次以上,则所定账户)
5.进入业务选择界面,选择相应业务
(1)点击“取款”,进入取款界面,可选择界面显示的数额,也可输入取款金额,取款金额应为100倍数并小于帐户余额,否则无效,并重新提示输入取款金额,同时取款金额应小于5000,否则提示取款失败。
(2)点击“转帐”,系统提示输入对方帐号和转账金额,如需重新输入,点击“重置”,输入后点击“确定”,若对方帐号不存在,重新提示输入对方帐号取款金额,若转账金额大于帐户余额或5000,提示转账失败,并回到业务选择界面。
(3)点击“修改密码”,系统提示输入新旧密码,并再次对输入新密码,点击“确定”,若旧密码不正确或新密码不一致或新密码不是6位数字串,系统提示重新输入,并回到修改密码界面,若修改成功,密码提示成功信息,并回到业务选择页面。
(4)点击“余额查询”,系统显示当前用户余额。
(5)点击“退卡”,系统退卡。
7.系统测试
(一)白盒测试
我们是由各个模块的代码编制者自己完成的,检查有无异常以及代码自身的逻辑错误等等。
(二)黑盒测试
黑盒测试中我们使用的是边界值测试,测试用例如下:
取款测试用例
时间
账号
密码
取款金额
预期结果
实际结果
1
1天
00
123456
-100
返回取款界面
V
2
1天
00
123456
0
返回取款界面
V
3
1天
00
123456
100
取款成功withdrawtimes+1
卡上余额-100
V
4
1天
00
123456
2400
取款成功withdrawtimes+1
卡上余额-2400
V
5
1天
00
123456
2500
取款成功withdrawtimes+1
卡上余额-2500
V
6
1天
00
123456
2600
取款成功withdrawtimes+1
卡上余额-2600
V
7
1天
00
123456
4800
取款成功withdrawtimes+1
卡上余额-4800
V
8
1天
00
123456
4900
取款成功withdrawtimes+1
卡上余额-4900
V
9
1天
00
123456
5000
取款失败
V
10
1天
00
123456
2590
返回取款界面
V
11
1天
00
123456
4900
取款成功withdrawtimes+1
卡上余额-4900
V
4900
取款成功withdrawtimes+1
卡上余额-4900
V
200
取款成功withdrawtimes+1
卡上余额-200
V
1天
00
123456
-100
返回取款界面
V
0
返回取款界面
V
100
取款失败
V
12
1天
00
123456
1000
取款成功withdrawtimes+1
卡上余额-1000
V
3000
取款成功withdrawtimes+1
卡上余额-3000
V
1000
取款成功withdrawtimes+1
卡上余额-1000
V
1天
00
123456
4000
取款成功withdrawtimes+1
卡上余额-4002
V
13
1天
00
123456
1000
取款成功withdrawtimes+1
卡上余额-1000
V
1000
取款成功withdrawtimes+1
卡上余额-1000
V
1000
取款成功withdrawtimes+1
卡上余额-1000
V
1000
取款成功withdrawtimes+1
卡上余额-1004
V
14
1天
00
123456
1000
取款成功withdrawtimes+1
卡上余额-1000
V
1000
取款成功withdrawtimes+1
卡上余额-1000
V
1000
取款成功withdrawtimes+1
卡上余额-1000
V
1000
取款成功withdrawtimes+1
卡上余额-1003
V
15
1天
00
123456
1000
取款成功withdrawtimes+1
卡上余额-1000
V
1000
取款成功withdrawtimes+1
卡上余额-1000
V
1000
取款成功withdrawtimes+1
卡上余额-1000
V
1000
取款成功withdrawtimes+1
卡上余额-1005
V
16
1天
00
123456
1000
取款成功withdrawtimes+1
卡上余额-1000
V
3000
取款成功withdrawtimes+1
卡上余额-3000
V
1000
取款成功withdrawtimes+1
卡上余额-1000
V
1天
00
123456
5000
取款失败
V
转账测试用例
时间
账号
密码
转账金额
预期结果
实际结果
1
1天
00
123456
-100
返回转账界面
V
2
1天
00
123456
0
返回转账界面
V
3
1天
00
123456
100
转账成功withdrawtimes+1
卡上余额-100,对方余额+100
V
4
1天
00
123456
2400
转账成功withdrawtimes+1
卡上余额-2400,对方余额+2400
V
5
1天
00
123456
2500
转账成功withdrawtimes+1
卡上余额-2500,对方余额+2500
V
6
1天
00
123456
2600
转账成功withdrawtimes+1
卡上余额-2600,对方余额+2600
V
7
1天
00
123456
4800
转账成功withdrawtimes+1
卡上余额-4900,对方余额+4900
V
8
1天
00
123456
4900
转账成功withdrawtimes+1
卡上余额-4900,对方余额+4900
V
9
1天
00
123456
5000
返回转账界面
V
10
1天
00
123456
2590
返回转账界面
V
11
1天
00
123456
4900
转账成功withdrawtimes+1
卡上余额-4900,对方余额+4900
V
4900
转账成功withdrawtimes+1
卡上余额-4900,对方余额+4900
V
200
转账成功withdrawtimes+1
卡上余额-200,对方余额+200
V
1天
00
123456
-100
返回转账界面
V
0
返回转账界面
V
100
返回转账界面
V
12
1天
00
123456
1000
转账成功withdrawtimes+1
卡上余额-1000,对方余额+1000
V
13
1