目录
1 需求陈述
某银行拟开发一个自动取款机系统,它是一个由自动取款机、中央计算机、分行计算机及柜员终端组成的网络系统。ATM和中央计算机由总行投资购买。总行拥有多台ATM,分别设在全市各主要街道上。分行负责提供分行计算机和柜员终端。柜员终端设在分行营业厅及分行下属的各个储蓄所内。该系统的软件开发成本由各个分行分摊。
银行柜员使用柜员终端处理储户提交的储蓄事务。储户可以用现金或支票向自己拥有的某个账户内存款或开新账户。储户也可用从自己的账户中取款。通常一个储户可以拥有多个账户。柜员负责把储户提交的存款或取款事务输进柜员终端,接收储户交来的现金或者支票,或付给储户现金。柜员终端与相应的分行计算机通信,分行计算机具体处理针对某个账户的事务并且维护账户。
所谓现金兑换卡就是一张特制的磁卡,上面有分行代码和卡号。分行代码唯一标识总行下属的一个分行,卡号确定了这张卡可以访问哪些账户。通常,一张卡可访问储户的若干账户,但是不一定能够访问这个储户的全部账户。每张现金兑换卡仅属于一个储户所有,但是,同一张卡可能有多个副本,因此,必须考虑同时在若干台ATM上使用同样的现金兑换卡的可能性。也就是说,系统应该能够处理并发的访问。
当用户把现金兑换卡插入ATM之后,ATM就与用户交互,以获取有关这次事务的信息,并与中央计算机交互关于事务的信息。首先,ATM要求用户输入密码,接下来ATM把这张卡上读到的信息以及用户输入的密码传给中央计算机,请求中央计算机处理这些信息并处理这次事务。中央计算机根据卡上的分行代码确定这次事务与分行的对应关系,并且委托相应的分行计算机验证用户密码。如果用户输入的密码是正确的,ATM就要求用户选择事务类型(取款,查询等)。当用户选择取款时,ATM请求用户输入取款额。最后,ATM从现金出口吐出现金,并且打印账单交给用户。
2 ATM系统需求说明书
2.1 获取用户需求
通过正式的和非正式的访谈的方式,获取用户的需求。正式访谈时,将提出事先准备好的具体问题。例如,雇佣的银行工作人员以及信息反馈时间应该多快等。在非正式访谈中,将提出一些用户可以自由回复的开放性问题。
2.1.1 业务需求
银行业务复杂,包括对实现开户,登陆账单,查询账户,存款、取款、转帐,修改账户密码,注销账户,打印账单等业务,容易造成数据不一致和数据遗漏,ATM系统可以快速、准确响应用户余额变化和各数据进行存档,促进管理规范化、信息化、正规化。
2.1.2 用户需求
ATM系统涉及的角色有:储户、柜员、银行维修人员、银行回收人员
- 储户的主要操作有:取款、存款、转账、现金兑换、新建账户、修改密码、余额查询、打印账单、修改账户密码、注销账户等工作。
- 银行维修人员主要操作有:对总行报修的ATM机进行维修处理。
- 银行回收人员主要操作有:对总行维修无效报废的ATM机进行回收处理。
- 柜员主要操作有:负责把存款事务输进终端,接受储户的现金和支票以及付给储户现金和支票。
2.1.3 功能需求
(1)验证账户密码
在储户选择事务类型之前对账户进行验证,通过判断账户密码是否正确来验证储户的账户身份,校验当前密码与存储密码是否一致,不一致则提示密码错误,提醒用户重新输入密码或者进行重新插卡操作。
(2)ATM存款
主要是检验储户所要存的现金金额。主要操作有提示储户放入纸币、检验储户存款金额、提示储户确认存款金额、更新账户余额、返回交易结果、显示最新账户余额、显示“继续服务”选项等等操作。
1)检验储户存款金额:对储户所要存的现金金额进行检验,将所计现金金额显示到ATM界面给储户,待储户确认所存的金额。
2)更新账户余额:如果经账户储户确认存款金额,则增加账户取款金额,对账户余额进行更新。
操作人:当前登录的储户账户名称-
卡号;即本账户的卡号,ATM机验证储户的身份,待储户确认存款金额后,对该卡号账户增加相应存款金额,更新账户余额。
存款金额;ATM机清点储户放入机内的纸币,提示储户输入并对存款金额进行确认,储户确认后ATM机即更新该账户的账户余额,提示储户已存入相应数目的金额。
分行代码:总行对账户的分行代码进行读取,获取账户信息。
(3)ATM取款
主要是对储户所存金额的检验以及对账户余额的更新、检验取款数额是否超过当日取款最大限额。主要操作有提示储户确认取款金额、检验账户余额是否充足、更新账户余额、返回交易结果、显示最新账户余额、吐出相应金额现金、提示储户拿走现金、显示“继续服务”选项等等操作。
1)检验账户余额是否充足;检验账户余额是否充足:对本账户余额进行检验,检验账户余额是否充足,如果账户余额充足,则符合取款条件。
2)检验取款数额是否超过当日取款最大限额:对本账户取款数额进行检验,检验账户取款数额是否超过当日取款最大限额,如果账户取款数额超过当日取款最大限额,则在ATM界面提示储户“超过当日取款最大额度”,提醒储户重新输入取款金额或放弃取款。
3)更新账户余额:如果经账户余额检验后,账户符合取款条件,则扣去账户取款金额,对账户余额进行更新。
4)吐出相应金额现金:在ATM吐出现金之后,更新ATM现存金额,扣去因现金兑换吐出的金额。
5)提示储户拿走现金:在ATM吐出相应金额现金之后,提醒储户将兑换所得的现金如数拿走。
操作人:当前登录的储户账户名称-
卡号;即本账户的卡号,ATM机验证储户的身份,待储户确认取款金额后,对该卡号账户的余额扣去相应取款金额。
取款金额;ATM机提示储户输入并对取款金额进行确认, ATM机确认后吐出相应金额的现金,提示储户拿走现金。
分行代码:总行对账户的分行代码进行读取,获取账户信息。
(4)ATM转账
主要是对转账金额及账户的验证。主要操作有提示用户输入转账金额以及账户、检验账户余额是否充足、扣去本账户转账金额、增加转账对象账户余额、更新账户余额等操作。
1)提示用户输入转账金额以及账户;账户身份验证完毕且选择转账事务类型之后,提醒用户输入转账金额及账户卡号。
2)检验账户余额是否充足:如果账户余额充足,则符合转账条件。
3)扣去转账金额:检验账户是否符合转账条件,账户余额是否充足,若充足,扣去该账户相应转账金额。
4)更新账户余额:更新转账账户与转账对象的账户余额,为转账对象的账户余额增加相应转账金额。
操作人:当前登录的储户账户名称-
转账对象卡号;即本账户所输入的指定转账对象,ATM机验证储户所放入本机的转账金额,待储户确认完毕即更新本账户余额以及转账对象的账户余额。
转账金额;ATM机对储户放入机内的纸币进行金额的计算,统计总共存入了多少金额。
分行代码:总行对账户的分行代码进行读取,获取账户信息。
(5)交易成功,打印凭条
主要是对交易记录进行打印。主要操作有请求打印凭条、查询交易记录、打印凭条、吐出凭条。
1)查询交易记录;可以指定某一单交易记录进行査询,ATM界面给储户显示该单交易记录。
2)打印凭条:将储户所指定的本单交易记录进行打印。
3)吐出凭条:ATM机内打印完毕后,将已打印好的凭条吐出,提醒储户凭条已打印完毕。
储户:当前登录的储户账户名称。
凭条日期:当前系统时间。
凭条摘要:交易记录的摘要信息。
附加说明,由ATM机对单据添加附加说明。
凭条编号:即对打印的交易凭条进行编号,方便系统对凭条进行管理。
(6)账户管理
主要是对账户信息进行统一管理。主要操作有査询账户个人信息、新建账户、查询交易记录、修改账户信息等等。
1)査询账户信息,储户可以查询本账户所有的账户信息,包括卡号。
2)修改账户信息,修改选中的账户信息。
3)新建账户信息,为新建的账户添加账户个人信息。
4)查询交易记录,查询本账户所有的交易记录,包括取款记录、转账记录、存款记录等等。
操作人:当前登录的储户账户名称。
账户姓名:即该账户的姓名,方便系统对账户的统一管理。
账户地址:即账户的家庭住址,方便银行邮寄。
(7)柜员人事管理
主要是对柜员信息进行统一管理。主要操作有査询柜员、新增柜员、删除柜员、修改柜员。
1)査询柜员信息;可以指定柜员个别信息等条件进行筛选査询,如是否有缺勤记录、工作状态(上班或者假期)等等,显示所有符合条件的柜员列表。
2)修改柜员信息:修改选中的柜员,修改雇员号、柜员姓名等等。
3)删除柜员信息:删除选中的柜员信息。
4)增加柜员信息:增添新入职的柜员员工信息,如柜员编号、柜员姓名等。
操作人:当前登录的银行人事管理经理。
柜员姓名:即分行所雇柜员的姓名。
柜员编号:即分行所雇柜员的工作编号,方便分行对所雇柜员进行统一管理。
(8)ATM管理
主要是对ATM自动取款机进行统一管理。主要操作有査询ATM、新增ATM、删除ATM、修改ATM。
1)査询ATM;可以指定账户等条件进行査询,如是否损坏、是否存有现金等等,显示所有符合条件的ATM列表。
2)修改ATM:修改选中的ATM信息,修改ATM机编号、修改ATM机维护记录、修改ATM机修理记录、修改所属分行、修改ATM机付出金额等等。
3)删除ATM:删除选中的ATM机信息。
4)增加ATM:增加新产出的ATM、增加ATM机维护记录、增加ATM机修理记录。
现有金额:该承担事务办理的ATM机所存储的现金金额-
付出金额;该承担事务办理的ATM机已吐出给用户的现金金额。
ATM机编号;即总行所编的ATM机编号,方便总行管理ATM机,对ATM机进行查询、删除损坏ATM机、增加新产出ATM机和修改ATM机现有金额、等等操作。
所属分行;读取销售单的产品淸单,点击查看图片按钮,可以査看指定产品的图片信息。图片信息在采购单录入时己上传至系统。
维护记录;读取销售单的产品淸单,点击查看图片按钮,可以査看指定产品的图片信 息。图片信息在采购单录入时己上传至系统。
修理记录;读取销售单的产品淸单,点击查看图片按钮,可以査看指定产品的图片信息。图片信息在采购单录入时己上传至系统。
ATM工作状态:ATM机目前的运行状态,分为:正在维修,正在运行,已报废,损坏未维修,现金存储不足三种状态。正在维修,即银行维修人员对已损坏并报修的ATM机进行维修,此时ATM机处于正在维修状态。正在运行,即ATM机无损坏、ATM机内现金存储充足,处于正常工作状态,此时ATM机处于正在运行状态。损坏未维修,即ATM机出现损坏并还未进行维修,需等待经银行维修人员进行维修,ATM机无法正常工作,此时ATM机处于损坏未维修状态。现金存储不足,即ATM机付出金额达到最大限度,现有金额不足,ATM机无法对储户提供取款、现金兑换服务,此时ATM机处于无法工作状态,等待银行工作人员对该ATM机进行现金存储。已报废,即ATM机损坏并报修之后,经银行维修人员维修无效,ATM机无法正常工作,此时ATM机处于报废状态,等待银行工作人员对该ATM机进行回收。
银行工作人员:对该ATM机进行现金存储,对该ATM机进行回收。
银行维修人员:对已损坏并报修的ATM机进行维修。
(9)现金兑换
主要是对储户所插的现金兑换卡的卡权限等等进行一系列检验。主要操作有请求分行验证现金兑换卡卡权限、验证ATM是否存有足够金额现金、验证现金兑换卡卡权限、更新ATM现存现金数额、更新现金兑换卡卡权限、吐出相应金额现金、提示储户拿走现金、显示“打印凭条”等选项。
1)验证现金兑换卡卡权限;对储户所持现金兑换卡的卡权限进行检验,如是否损坏、是否存有现金等等,显示所有符合条件的ATM列表。
2)吐出相应金额现金:现金兑换卡卡权限验证通过之后,ATM吐出相应金额现金给储户。
3)提示储户拿走现金:在ATM吐出相应金额现金之后,提醒储户将兑换所得的现金如数拿走。
4)更新ATM现存现金数额:在ATM吐出现金之后,更新ATM现存金额,扣去因现金兑换吐出的金额。
密码:即现金兑换卡的密码,使用时将储户输入的密码和系统存储的密码对比以完成身份检验。
分行代码:即现金兑换卡的分行代码,读卡机读卡时总行读取本卡的分行代码。
卡号:即现金兑换卡的卡号,由系统自动生成。
限额:卡权限的限额,即卡权限标识现金兑换卡的最大金额限度。
2.1.4 性能需求
(1)并发能力: 系统在大用户量使用下不能出现故障,具有并发响应能力。
(2)处理时间:处理状态下系统应为用户每天提供 24 小时服务。
(3)响应速度:要求能够响应快速,不超过 1 秒,并给予提示。
(4)级联速度:输入、查询数据尽量能够从数据库中读取,以列表形式显示,供用户选择。级联速度要在用户可以接受的范围。
(5)可操作能力:系统的操作要简单便捷,并提供语音提示。
(6) 交易数据的转换和传送时间;要求处理时间为5秒,速度要在用户可以接受的范围。
(7) 更新时间;要求处理时间为3秒,速度要在用户可以接受的范围。
(8) 出纸钞时间;要求出钞时间为20秒,速度要在用户可以接受的范围。
(9) 取凭条时间;要求取凭条时间为10秒,读取交易记录并打印凭条的速度要在用户可以接受的范围。
2.1.5 其它需求
(1)界面友好:银行存取款自助系统为便于大众使用而开发,应易于理解、简洁明了、使用方便,适用于绝大部分人民群众,为他们存取钱带来便利。
(2) 节约人力资源:开发存取钱的自助系统,使得人们可以在机器上自行操作,有效地减少银行柜台和工作人员的数量,可以将节约出来的人力物力用来提高银行总体的服务水平。
(3) 稳定可靠:要保证其投入使用后较为稳定可靠,即保证其质量,使软件能够稳定运行,不能中途出错或故障,即逻辑上要严谨,多方面考虑周全,不能出现混乱。
(4) 高效率:对于大众来说,知识层次和理解能力不一,因此本银行存取钱自助系统应确保各年龄层和各知识阶层的人均能顺利使用,提高操作效率,有效节约用户时间。
(5) 开放性:具有良好的可扩充性和可移植性。系统遵循主流的标准和协议,提供与银行现正在使用平台统一的接口。
(6)正确性: 系统执行流程符合银行工作流程,数据计算不允许出现任何错误。数据备份与恢复:系统中的重要数据按其重要程度,一天、一周或一月进行备份。系统万一崩溃,必须能将数据恢复到崩溃前正确的数据。
(7)可用性:本ATM系统应具备正常运行的能力,可正常运行时间应达到99%。
2.2 建立对象模型
对象模型表示静态的、结构化的数据性质,是客观世界实体的对象及对象间的关系的映射。建立对象模型是从客观世界提炼出对具体应用有价值的概念,需要一组符号和组织这些符号的规则组成,在面向对象方法中,可以用类图来表示对象模型。
2.2.1 确定类
在ATM系统中,经过筛选,确定类为:ATM、中央计算机、分行计算机、柜员终端、总行、分行、柜员、储户、账户、事务、现金兑换卡。
2.2.2 确定类之间的关系
经过分析确定出以下关系:
(1)总行拥有多台ATM。
(2)分行拥有提供柜员终端。
(3)储户拥有账户。
(4)总行由各个分行组成。
(5)分行保管账户。
(6)输入站输入事务。
(7)更新组成事务。
(8)柜员事务和远程事务继承事务。
(9)柜员输入柜员事务。
(10)分行发放卡权限。
(11)分行雇佣柜员。
(12)卡权限启动远程事务。
(13)卡权限标识现金兑换卡。
(14)卡权限访问账户。
(15)储户拥有卡权限。
(16)储户拥有账户。
(17)更新修改账户。
(18)分行保管账户。
(19)ATM和柜员终端继承输入站
经过分析后得出的ATM系统的原始类图:
划分主题后的实体类图:
2.2.3 确定类的属性和方法
(1)ATM类
- 属性:
-
-
-
- 现有金额
- 付出金额
- ATM机编号
- 维护记录
- 维护记录
- 修理记录
- 所属分行
-
-
2.方法:
-
-
-
- 显示“打印凭条”选项()
- 显示“继续服务”选项()
- 提示储户确认存款金额()
- 提示储户确认取款金额()
- 吐出相应金额现金()
- 提示储户拿走现金()
- 提示储户输入转账金额以及转账对象卡号()
- 显示余额不足()
- 提示放入纸币()
- 显示最新账户余额()
-
-
(2)总行类
- 属性:
-
-
-
- 总行名
- 分行代码
- 分行编号
- 总行地址
-
-
2.方法:
-
-
-
- 增加ATM机信息()
- 修改ATM机信息()
- 删除ATM机信息()
- 查找ATM机信息()
- 更新ATM现存金额()
- 请求分行验证ATM机是否存有充足现金()
- 请求分行验证账户密码()
-
-
(3)分行类
- 属性:
-
-
-
- 分行名
- 类型雇员号
- 卡号
-
-
2.方法:
-
-
-
- 管理柜员信息()
- 管理账户信息()
- 柜员事务处理()
- 返回事务处理结果给ATM机()
-
-
(4)柜员终端
- 属性:
-
-
-
- 成员名
- 限额
-
-
2.方法:
(5)柜员类
- 属性:
-
-
-
- 名字
- 编号
-
-
(6)事务
- 属性:
-
-
-
- 类型
- 金额
- 日期
-
-
2.方法:
-
-
-
- 返回交易结果()
- 验证账户密码()
- 查询交易记录()
- 更新账户余额()
- 验证账户交易金额()
- 提示储户选择事务类型()
-
-
(7)柜员事务类
- 属性:
2. 方法:
-
-
-
- 吐出相应金额现金()
- 请求处理事务()
- 提示放入纸币()
- 提示储户拿走现金()
- 显示“打印凭条”选项()
- 显示“继续服务”选项()
- 提示储户确认存款金额()
- 吐出相应金额现金()
- 显示最新账户余额()
- 提示储户输入转账金额以及转账对象卡号()
- 显示余额不足()
-
-
(8)远程事务
- 属性:
2. 方法:
-
-
-
- 请求处理事务()
- 接收分行返回交易结果()
- 接收验证账户密码结果()
- 接收查询交易记录结果()
- 接收更新账户余额结果()
- 接收验证账户取款金额结果()
-
-
(9)更新
- 属性:
-
-
-
- 类型
- 金额
-
-
(10)现金兑换卡
- 属性:
-
-
-
- 密码
- 分行代码
- 卡号
-
-
(11)卡权限
- 属性:
-
-
-
- 密码
- 限额
-
-
(12)账户
- 属性:
-
-
-
- 金额
- 限额
- 储户姓名
- 卡号
- 密码
-
-
(13)储户
- 属性:
-
-
-
- 姓名
- 账户卡号
-
-
2.方法:
-
-
-
- 取款()
- 存款()
- 转账()
- 查询账户密码()
- 查询账户信息()
-
-
2.2.4 建立对象模型(绘制类图)
2.3 建立功能模型
【软件工程】2.3 建立功能模型_早睡第一人的博客-CSDN博客
2.4 建立动态模型
【软件工程】2.4 建立动态模型_早睡第一人的博客-CSDN博客
3 ATM 系统的设计
【软件工程】3 ATM系统的设计_早睡第一人的博客-CSDN博客
4 ATM系统实现
【软件工程】4 ATM系统实现_早睡第一人的博客-CSDN博客