资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,自动取款机系统(,ATM,),结构化分析及设计,面向对象分析及设计,1,分析,ATM,需求分析,DFD,图,加工说明,数据字典,设计,SC,图,结构化分析及设计,2,背景,信息时代载着我们悄然驶进生活的快车道。面对着每天高度紧张的生活节奏,如果再花上几十分钟甚致几个小时去银行排队等候办理业务,那将是任何人都不愿意做的事情。为了解决上述问题建设一个可以,24,小时服务的自动取款系统无疑是最佳的。,面向用户,:,ATM,机面向一般合法公民,要求用户,持有有效的银行卡并可以识别操作说明。,注:有效的银行卡指属于银联并未挂失的银行卡。,ATM,需求分析,3,系统总体需求,ATM,机要可以判断磁卡的类别,如果不是有效的磁卡则退卡;,可以在较快的时间内响应用户的请求,并针对相应的请求执行正确的操作;,查询自己的账户时应显示余额和可用余额,并显示,ATM,机里所拥有的现金面值,让用户可以做出正确的选择;,提取现金时提示用户输入取款金额并判断输入是否确,如果错误提醒用户并要求重新操作,正确则提醒用户收取现金;,转账汇款时让用户选择转账类型,要求用户输入转账账号并要求用户输入两次,以确保没有输入错误,在两次输入都正确的情况下,让用户输入转账金额,并作最后的认;,进入修改密码界面后提醒用户输入新密码,并要求再次输入以确保密码统一无误,在确认后完成修改操作,并提醒用户新密码生效;,对于错误的操作或者操作延时做出有效的处理。,4,系统要求,系统操作要求,:,要求用户一次取款数额不得大于,1000,元;,要求用户一天取款数额不得超过,5000,元;,要求用户连续输入错误密码次数不得超过,10,次。,系统性能要求,:,要求反应时间不得大于,10,秒钟;,系统设计目标,ATM,自动取款机可以提供,24,小时不间断服务,操作简单,可以很方便为用户提供取款、转账,/,汇款、查询账户信息等服务。,5,交易凭条,用,户,ATM,系统,用,户,银行卡,银行卡,交易凭条,用,户,ATM,系统,用,户,银行卡,银行卡,顶层,DFD,图,DFD,图,6,有无操作,操作类型,操作类型,操作超时,银,行,卡,退出类型,银行卡,交易凭条,账户信息,用,户,2,选择操作,5,退出,3,执行操作,用,户,1,密码,确认,4,判断超时,0,层,DFD,图,7,未超时信息,5.1,打印单据,出,超时信息,银,行,卡,交易凭条,银,行,卡,选择信息,取款操作,更改密码操作,查询操作,转账操作,用,户,用,户,3.1,取款,3.2,查询,3.3,转账,2,选择交易,3.4,更改密,码,退出类型,1,密码,确认,5.2,退出,4,操作是否超,过,10,秒,1,层,DFD,图,8,现金,选择信息,取,款,金,额,选择信息,取款操作,选择,交易,3.1.2,选择货,币种类,F1,客户存储信息单,3.1.1,调用取款,系统,3.1.3,提取现,金,1,层,DFD,图 取款子系统,用,户,9,选择信息,查询操作,3.2.1,调用查询,系统,选择,交易,3.2.2,选择货,币种类,F1,客户存储信息单,3.2.3,查询账,户,选择信息,1,层,DFD,图 查询子系统,查,询,信,息,10,转账金额,转入卡号信息,选择信息,选择信息,查询操作,3.3.1,调用转账系统,选择,交易,3.3.2,卡内转账,F1,客户存储信息单,转入卡,号,信,息,3.3.4,记录,选择信息,1,层,DFD,图 转账子系统,3.3.3,卡卡转账,3.3.5,确认,3.3.5,转账,11,选择,交易,新密码,更改密码信息,3.4.1,调用更改密,码系统,F1,客户个人信息单,新密码,3.4.2,记录,选择信息,1,层,DFD,图 更改密码子系统,3.4.5,确认,12,插卡并输入密码,如果,密码正确,则,进入操作界面(共有四种基本操作),1,、查询帐户,2,、提取现金,3,、转账汇款,4,、修改密码,如果,需要进行以上某个操作 请选择,选择需要的操作,否则,超过,10,秒钟没有操作 或 选择退出,退卡,否则,再次输入密码(如果密码输入的错误次数超过,10,次,则吞卡),加工说明,13,如果,选择第,1,个操作:,1,、查询帐户,则,进入查询帐户的操作界面(按币种分类共有四种查询操作),1,、人民币帐户,2,、港币帐户,3,、美元帐户,4,、其他帐户,选择你需要的操作就可以查询并显示你的帐户信息,如果,还需要其他操作,按,“,返回,”,键,否则,(超过,10,秒钟没有操作 或 选择退出),退卡,否则 如果,选择其他三个任意一个操作,进入各自的界面进行各自的操作,否则,退卡,14,如果,选择第,2,个操作:,2,、提取现金,则,进入提取现金的操作界面(按币种分类共有四种币种可以取得),1,、人民币帐户,2,、港币帐户,3,、美元帐户,4,、其他帐户,选择你需要的操作并输入你要取出的金额 等待出钞,如果,还需要其他操作,按,“,返回,”,键,否则,超过,10,秒钟没有操作 或 选择退出,退卡,否则 如果,选择其他三个任意一个操作,进入各自的界面进行各自的操作,否则,退卡,15,如果,选择第,3,个操作:,3,、转账,/,汇款,则,进入转账,/,汇款的操作界面(共有两种转账汇款方式),1,、卡内转账,2,、卡卡转账,选择你需要的操作,界面提醒你输入两次你要转入的卡号,卡号输入完毕,提醒你输入金额,按,“,确定,”,键,转账完毕,如果,还需要其他操作,按,“,返回,”,键,否则,超过,10,秒钟没有操作 或 选择退出,退卡,否则 如果,选择其他三个任意一个操作,进入各自的界面进行各自的操作,否则,退卡,16,文件名:银行卡,别名:,组成:,卡号,+,持卡人姓名,组织:按卡号从小到大顺序,备注:,数据字典,17,文件名:账户信息,别名:,组成:,账户,+,户名,+,账户余额,+,身份证号码,+,开户日期,+,开户网点,组织:按账号从小到大的顺序,备注:,18,文件名:交易凭条,别名:,组成:,卡号,+,户名,+,取款日期,+,取款金额,+,币种,组织:,备注:,19,ATM,机系统,SC,图:,ATM,机系统,读取银行卡信息,取款,银行卡 信息,查询帐户,转账,修改密码,取款命 令,查询命 令,转账命 令,修改密码命令,20,取款子系统,SC,图,取款,人民币帐户,其它帐户,美元帐户,港元帐户,人民币取款命令,美元帐户取款命令,其它帐户取款命令,港元帐户取款命令,港元取款,出钞机,取款金额,取款金额,修改账户信息,取款金额,21,查询帐户子系统,SC,图,查询帐户,人民币帐户,其它帐户,美元帐户,港元帐户,人民币查询命令,美元帐户查询命令,其它帐户查询命令,港元帐户查询命令,22,转账系统,SC,图,转账,卡卡转账,卡内转账,卡卡转账命令,卡内转账命令,读取卡号,/,账号,卡号,/,账号,读取转账金额,转账金额,修改帐户信息,转账金额,23,修改密码子系统,SC,图,修改密码,读入新密码,新密码,再次读入新密码,新密码,修改帐户信息,新密码,24,分析,定义用例,建立类,-,对象模型,建立对象,-,关系模型,建立对象,-,行为模型,设计,系统设计,对象设计,面向对象分析及设计,25,定义用例,26,建立类,-,对象模型,27,28,一般,-,特殊结构,29,整体,部分结构,30,主题引用,31,建立对象,-,关系模型,32,查询,建立对象,-,行为模型,33,提款,34,转账,35,更改密码,36,系统设计,一、子系统设计,1,、划分子系统,人机交互界面子系统,选择操作子系统,信息验证子系统,取款子系统,查询子系统,转账子系统,更改密码子系统,信息读取子系统,37,2,、处理并发操作:,本系统不存在并发问题,故不需考虑有关并发操作的处理。,3,、描述子系统间通信,调用请求,读取信息错误重新输入请求,信息验证请求,信息验证子系统,信息读取子系统,选择操作子系统,查询子系统,取款子系统,转账子系统,更改密码子系统,38,二、人机交互设计:,1,、本系统的界面面向所有认得汉字及英文的用,户,交互界面如下:,取款(,Withdraw,),查询(,Query,),(,ChangePassword,)更改密码,(,Transter,)转 账,返回(,Back,),(,Quit,)退 卡,39,输入,取消,9,8,7,6,5,4,3,2,1,0,00,40,取款子系统界面:,返回(,Back,),(,Quit,)退 卡,请输入你要提取的金额,(,本机只提供,100,元、,50,元的面额,),(,Confirm,)确 定,41,查询子系统界面:,返回(,Back,),(,Quit,)退 卡,您的账户余额为:,(,Confirm,)确 定,可用余额为:,42,转账子系统界面:,返回(,Back,),(,Quit,)退 卡,请选择转入卡账户类型,(,Confirm,)确 定,银行卡(,CreditCard,),存折(,BankBook,),43,返回(,Back,),(,Quit,)退 卡,请输入转入卡卡号:,(,Confirm,)确 定,44,更改密码子系统界面:,返回(,Back,),(,Quit,)退 卡,请输入新密码:,(,Confirm,)确 定,45,三、任务管理设计:,1,、识别由事件驱动和时间驱动的任务:,取款、查询、转账、更改密码及返回都是事件驱动的任务,只有在用户发出相应的请求是才处理;退卡即是事件驱动也是时间驱动,用户发出请求时及等待时间超过,10,秒钟时系统都会执行此操作。,2,、识别关键性任务、任务优先级以及任务管理类:,退卡的优先级最高,其次是返回,再次是取款、,查询、转账、更改密码等操作。,3,、定义任务:,取款任务:在用户发出取款请求时,根据,用户输入的取款金额吐出相应数额的钱币。,查询任务:在用户发出查询请求时,,在,ATM,显示屏上显示用户账户上的剩余金额。,46,转账任务:在用户发出转账请求时,将用户账户上用户要求的数量的金额转到用户指定的卡上。,更改密码:在用户发出更改密码请求时,提供给用户可以更改当前密码的功能。,返回任务:在用户发出返回请求时,系统可以及时回到选择操作界面,方便用户再次选择。,退卡任务:在用户发出退卡任务时,将用户插入,ATM,机的银行卡退出。,不管用户正在进行何种操作,只要用户发出,退卡请求,系统及时执行退卡操作。,47,一、协议描述:,MESSAGE,(,ATM,Withdraw,),按下此按钮就进入取款的界面,并提示客户输入取款数额。,MESSAGE,(,ATM_ Query,),进入帐户查询界面,提示选择币种帐户类型。,当你选择其中一个帐户类型时就显示帐户信息。,如果该帐户不存在,提示出错并返回,上一层界面。,MESSAGE,(,ATM_Transfer,),进入转帐界面,提示用户选择转帐类型然后,要求两次输入目标帐户的帐号,之后再输入转帐金额。,对象设计,48,MESSAGE,(,ATM _ ChangePassword,),进入更改密码子系统界面提示用户输入原密码,然后两次输入新密码。,MESSAGE,(,ATM_Back,),返回上一层界面。,MESSAGE(ATM_Quit),推出,ATM,机系统。,二、实现描述:,对象名:,bankCard,类名:,BankCard,私有数据结构:,Integer,:,amount;,printf(“input the amount of money you want!”);,49,三、算法设计、,1,、取款操作算法描述(,withdrawing(),),一级抽象描述,Withdarw the money you want,。,二级抽象描述,Input the amount of money you want,Compare it with your balance,IF you balance is enough,THEN DO withdraw money,ELSE show message for no,enough balance to withdraw,三级抽象描述,50,Scanf(“%d”,If(amount 10),return;,54,Else If(transferNum1=transferNum2),Printf(“Input the amount of money,:”,);,Scanf(“%d”,If(transferAmount balance),balance=balance transferAmount;,Show message(“transferring successfully”);,Else Show error message;,4,、修改密码算法描述(,changeAccountCode(),),一级抽象描述,Change your AccountCode,。,二级抽象描述,55,Input you initial code;,Input the code you want to change,Input change code again,If(your input is correct an),Show message(“changing successfully!”),Else,Show error hint;,三级抽象描述,Integer,:,initialcode1;,Integer,:,changecode1;,Integer,:,changecode2;,Integer,:,time=0;,Printf(“Input you initial code,:”,),Scanf(“%d”,time+;,Printf(“Input the code you want to change,:”,),56,Scanf(“%d”,Printf(“Input change code again,:”,),Scanf(“%d”,While(initialcode1!=accountCode|changecode1!=changecode2),If(initialcode1!=accountCode|changecode1!=changecode2),If(time 10),Printf(“Input you initial code,:”,),Scanf(“%d”,time+;,Printf(“Changing Code Successfully!,:”,),57,Printf(“Input the code you want to change,:”,),Scanf(“%d”,Printf(“Input change code again,:”,),Scanf(“%d”,else,error!,Else if(initialcode1=accountCode,|changecode1=changecode2),Printf(“Changing Code Successfully!,:”,),58,通过调整需求,筛选可以复用的组件,我们引入帐户类作为父类,并由其派生出人民币帐户类,美元帐户类,港元帐户类和其它帐户类。虽然人民币帐户,港元和美元帐户都具有利率等属性,但是考虑到模块独立性和以后系统调整维护的方便等问题,我们把它们都单独拿出来作为帐户的子类。另外由于我们设计的,ATM,机面向的是祖国大陆,所以在港元和人民币以及美元和人民币之间存在转换问题,所,以在港元帐户上面添加了港元对人民币的汇,率这一属性,在美元帐户上面增加了美元,对人民币的汇率的属性。最终得到调整,后的,OOA,模型如下:,领域对象设计,59,60,61,
展开阅读全文