收藏 分销(赏)

ATM需求文档.doc

上传人:xrp****65 文档编号:6909188 上传时间:2024-12-23 格式:DOC 页数:9 大小:1,003KB 下载积分:10 金币
下载 相关 举报
ATM需求文档.doc_第1页
第1页 / 共9页
ATM需求文档.doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
ATM 需求文档 一家本地银行计划安装一台新的自动柜员机(ATM) , 使用户(即银行客户) 能完成一些基本的金融交易(图1). 每个用户在该银行中只能有一个账户。 ATM用户应当能查看自己的账户余额、取款或存款。 该ATM的用户界面包括如下几部分: 1. 一个屏幕, 用于向用户显示消息。 2. 一个键板,用于接受用户的数字输入 3. 一个出钱机,用于用户取款 4. 一个存款槽,用于接受用户的存款信封。 每天,出钱机中都会补足500张20美元的纸币【注:由于这个案例的范围所限,这里描述的ATM的某些元素,并不是对真正ATM的准确模拟。例如,现在的ATM通常都有一个能从ATM卡读取用户帐号的设备,而这个ATM要求用户从键板输入帐号。而且,真正的ATM通常会在会话结束时打印一张凭条,而这个ATM中的所有输出都显示在屏幕上】 图1 自动柜员机的用户界面 这家银行希望开发一个软件,使银行客户能通过ATM执行金融交易。以后,银行会将软件与ATM硬件集成起来。 软件应在组件中封装硬件设备(如出钱机和存款槽)的功能,但软件本身不必关心这些设备如何完成它们的功能。由于ATM硬件还没有被开发出来,因此我们不是编写在ATM上运行的软件,而是要开发一个在个人电脑上运行的第一个软件版本。这个版本利用计算机显示器来模拟ATM屏幕,用计算机的键盘来模拟ATM的键板。 ATM会话由验证用户和验证个人用户识别号(PIN)两部分构成,然后是创建并执行金融交易。验证用户即基于用户帐号证明用户的身份。为了验证用户身份和进行金融交易,ATM必须与银行的账户信息数据库(即存储在计算机上有组织的数据集)交互。对每个银行账户,数据库中都有一个帐号、一个PIN和一个表示该帐号中有多少钱的余额信息【注:假设银行只打算安装一台ATM,因此不需要考虑多台ATM同时访问这个数据库的情况。而起,还假设当用户使用ATM时,银行不会修改数据库中的任何信息。同样,任何类似ATM的商业系统都会面临相当复杂的安全问题, 但这个超出了学习内容。因此我们尽心简化,假设银行信任对ATM的访问,也信任对数据库中信息的操作,而不会采取更多的安全手段】 用户来到ATM前面(假设这是没有别人在使用),将依次发生如下事件(图1) 1. 屏幕显示一条欢迎消息,并提示用户输入帐号。 2. 用户通过键板输入一个5位数的帐号。 3. 屏幕提示用户输入PIN(个人识别号) 4. 用户通过键板输入一个5位数的PIN 5. 如果用户输入了有效的帐号和正确的PIN,则屏幕显示主菜单(图3).如果用户输入了无效的帐号或错误的PIN, 则屏幕显示适当的消息,然后,ATM回到步骤1,重新开始验证过程。 验证用户之后,ATM应显示主菜单(见图2),其中包含几个带编号的选项,用于三种类型的交易:余额查询(选项1)、取款(选项2)和存款(选项3).主菜单中还应包含一个选项(选项4), 以使用户能退出系统。这样,用户可以选择执行某个交易(输入1、2或3)也可以选择退出系统(输入4). 如果用户输入1进行余额查询,则屏幕将显示用户的账户余额。为此.ATM必须从银行的数据库中取的余额 当用户输入2选择取款时,会发生描述行为的如下步骤。 1. 屏幕显示一个菜单(图3), 包含标准的取款额:$20(选项1),$40(选项2),$60(选项3) , $100 (选项4) 和 $200 (选项5).菜单中还包含一个选项 (选项6),以使用户能取消交易。 2. 用户通过键板输入一个菜单选项。 3. 如果选择的取款额大于账户余额,则屏幕显示一条消息,告诉用户重新选择一个较小的金额。然后,ATM返回到步骤1。如果选择的取款额小于或等于账户余额(即为可接受的金额),则ATM前进到步骤4。如果用户选择取消交易(选项6),则ATM显示主菜单,等待用户输入。 4. 如果出钱机中有足够的现金满足请求,则ATM前进到步骤5 。否则,屏幕显示一条消息,说明原因,并告诉用户选择较小的取款额。然后,ATM返回到步骤1. 5. ATM将取款额划入数据库中用户账户的借方(即从账户余额中减去取款额)。 6. 出钱机向用户送出所取金额的钱。 7. 屏幕显示一条消息,提醒用户将钱拿走。、 当用户输入3选择存款时,会发生描述行为的如下步骤。 1. 屏幕提示用户输入存款额,或输入0以取消交易。 2. 用户通过键板输入存款额或0 [ 注:键板上没有小数点或美元符号,因此用户不能输入实数值(1.25),而是必须以分为单位输入存款额(如125).然后,ATM会将这个数字除以100,得到以美元为单位的数字(如,125 / 100 =1.25)] 3. 如果用户指定了存款额,则ATM将前进到步骤4.如果用户选择取消交易(输入0),则ATM显示主菜单,等待用户输入。 4. 屏幕显示一条消息,通知用户将存款信封插入存款槽中。 5. 如果存款槽在两分钟内接收到存款信封, 则ATM将它的存款额划入数据库中用户账户的贷方中(即将存款额加到用户的账户余额中),如果存款槽在两分钟内没有收到存款信封,则屏幕将显示一条消息,指出由于超时而取消了本次交易。然后,ATM显示主菜单,等待用户输入。 成功执行交易之后,系统应返回主菜单,以使用户能执行其他交易。如果用户选择退出系统,则屏幕将显示一条感谢消息,然后向下一位用户显示欢迎消息。 图2 ATM的主菜单 图3 ATM的取款菜单 第一周完成要求 1. 通过分析需求文档中出现的名词和名词短语,明确构建ATM 系统所需的类 用列表列出需求中的名词和名词短语 2. 以找出的名词为基础,确定系统中的类,并标注上英文名称。 3. 根据确定的类,画出相互之间的流程图。 参考答案 1. ATM 需求文档中的名词和名词短语 银行 现金 帐号 ATM 屏幕 PIN 用户 键板 银行数据库 客户 出钱机 余额查询 交易 20美元账单/现金 取款 账户 存款槽 存款 余额 存款信封 不可以做为类的名词例如 银行: 银行不是ATM系统的一部分 客户和用户: 代表的是外部实体,重要性体现在与ATM 系统的交互上 20美元账单/现金: 表示现实世界中的物理对象 帐号和PIN: 代表了ATM系统中最重要的信息段,是银行帐户的重要属性 2. 可以确定的类如下 1. ATM ---- ATM 2. 屏幕 ---- Screen 3. 键板 -- Keypad 4. 出钱机 CashDispenser 5. 存款槽 DepositSlot 6. 账户 Account 7. 银行数据库 BankDatabase 8. 余额查询 BalanceInquiry 9. 取款 Withdrawal 10. 存款 Deposit 3. 类关系图 第二周工作任务 1. 确定各个类的属性,方法 2. 根据确定的方法,完成ATM 系统中的协作关系。 格式如下 类的对象 发送消息 给类的对象 说明 ATM displayMessage Screen ATM 在空闲时显示一条欢迎信息。 ATM向Screen发送一个displayMessage 消息,调用Screen类的displayMessage操作。 3. 画出取款交易 和 存款交易的工作流程图 参考答案 1. 基本操作说明 序号 类名 1. ATM ATM 执行金融交易 2. 屏幕 Screen 向用户显示消息 3. 键板 Keypad 从用户接收数字输入 4. 出钱机 CashDispenser 吐出现金,表明是否包含足够的现金满足取款请求 5. 存款槽 DepositSlot 接收存款信封 6. 账户 Account 取得账户余额,向账户存款,从账户取款 7. 银行数据库 BankDatabase 验证用户,取得账户余额,向账户存款,从账户取款 8. 余额查询 BalanceInquiry 9. 取款 Withdrawal 10. 存款 Deposit 详细类及方法 序号 类名 1. ATM ATM userAuthenticated:Boolean = falseh 用户验证标志 currentAccountNumber:int 当前用户帐号 run() 启动ATM authenticateUser() 验证用户 displayMainMenu():int 显示菜单 2. 屏幕 Screen displayMessage(); 3. 键板 Keypad getInput():int 4. 出钱机 CashDispenser count:int = 500; dispenseCash() isSufficientCashAvailable() ; Boolean 5. 存款槽 DepositSlot isEnvelopeReceived(); Boolean; 6. 账户 Account accountNumber: int; pin:integer; availableBalance:Double totalBalance: Double -------------------------------------------------------------- credit() debit() 7. 银行数据库 BankDatabase authenticateUser(); Boolean getAvailableBalance();double getTotalBalance(); double credit() debit() 8. 余额查询 BalanceInquiry accountNumber: int execute(); 9. 取款 Withdrawal accountNumber: itn amount: double execute(); 10. 存款 Deposit accountNumber: int amount: double execute(); 类的对象 发送消息 给类的对象 说明 ATM displayMessage Screen ATM 在空闲时显示一条欢迎信息。 ATM向Screen发送一个displayMessage 消息,调用Screen类的displayMessage操作。 getInput Keypad authenticateUser BankDatabase execute BalanceInquiry execute WithDrawal execute Deposit BalanceInquiry getAvailableBalance BankDataBase getTotalBalance BankDataBase displayMessage Screen Withdrawal displayMessage Screen getInput Keypad getAvailableBalance BankDatebase isSufficientCashAvailable CashDispenser debit BankDatabase dispenseCash CashDispenser Deposit displayMessage Screen getInput Keypad isEnvelopeReceived DepositSlot credit BankDatabase BankDatabase validatePIN Account getAvailableBalance Account getTotalBalance Account debit Account credit Account 3:
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服