自动取款机(ATM)模拟程序(C控制台应用程序)_第1页
自动取款机(ATM)模拟程序(C控制台应用程序)_第2页
自动取款机(ATM)模拟程序(C控制台应用程序)_第3页
自动取款机(ATM)模拟程序(C控制台应用程序)_第4页
自动取款机(ATM)模拟程序(C控制台应用程序)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自动取款机〔ATM〕模拟程序一、需求我们需要设计一个具备如下功能的ATM模拟程序。●开户:用户能够通过ATM来开设帐号,开户需要设置密码。●登录:用户能够登录到已经开设的帐号上,登录需要验证密码。●治理帐号:用户登录到帐号上后,能够进展如下的操作。■存款:将指定的款项存到帐号中。■取款:从帐号中取出指定的款项。■查询余额:查询帐号的余额。■修改密码:修改帐号的密码。二、分析面对对象编程的第一步是进展面对对象分析。面对对象分析的目标是建立问题领域的模型,包括如下模型。功能模型:即画出每一个功能要求的用例图。/对象图描述对象、对象的属性、对象间的关系。动态模型:描述系统的动态行为,通过序列图来描述对象的交互,以提醒对象间如何写作来完成每个具体的用例,单个对象的状态变化和动态行为可以通过状态图来表达。功能模型依据我们的需求,可以很简洁地画出ATM模拟程序的用例图:可以看出,用户可以开户和登录帐号,开户或者登录帐号之后就能治理帐号。要治理账号,就必需首先登录帐号或者开户。治理帐号的功能包括存款、取款、查询余额和修改密码。对象模型ATMATM的,因此帐号是其中的核心对象。此外,需要一个程序来启动ATM。因此,在ATM模拟程序中,我们需要处理四个类,或者说四类对象:启动程序、ATM、银行及帐号。1〕Account帐号类Account包含全部的帐号信息负责全部的帐号操作。根本的帐号信息包括:帐号名name帐号密码password帐号余额balance主要的帐号操作包括:登录Login存款Deposit取款Withdraw查询余额Get_Balance修改密码ChangePassword2〕Bank银行类Bank的本质就是一组帐号的组合,并负责治理帐号。根本的银行信息包括:银行名name已经开户的帐号数usedAccountNum可以容纳的最大账户数MaxAccountNum帐号集accounts主要的银行操作包括:开户OpenAccount登录帐号LoginAccountATM不能撤销帐号,因此我们不关心这个操作ATM类ATM类与银行类之间在一对一的关联关系,ATM供给用户界面,并将用户的恳求提交给银行、将银行的反响提交给用户。根本的ATM信息包括:银行Bank主要的ATM操作包括:启动Start开户OpenAccount登录帐号LoginAccount治理帐号ManageAccount一些显示不同信息的关心操作〔PrintLogo、Print、Pause等。启动程序类Program启动程序类Program的唯一功能就是创立银行类和ATM类的实例,并将它们关联起来,然ATM〔ATMStart方法。因此,这个类仅仅包含程序的入口点Main方法。ATM模拟程序的类图ATM模拟程序的类图:留意:BankAccount类的数据成员都使用protected访问模式,主要是为了使它们的之类都能集成它们的这些数据成员。动态模型ATM模拟程序的根本工作流程:三、设计经过分析,我们已经了解了ATM模拟程序中的四个类的根本构造。在设计阶段需要进一步细化个各类的构造。Account类,我们将进展如下的调整:用只读属性来实现Get_Balance方法增加赌气name的只读属性。增加构造函数。重载Deposit方法,并供给三个重载方法。Withdraw方法,并供给三个重载方法。Bank类,主要调整包括:供给构造函数,传入银行的名称。增加读取name的只读属性。用数组来实现帐号集。用常量来表示MaxAccountNum对ATM类,主要增加几个与用户交互的函数〔打印信息和输入信息的密码。Account类和Bank类是功能类,ATMAccountBank类时候,不要涉及任何的用户界面操作。全部的用户界面都放在ATMBank类和AccountATM四、实现在ATM工程中增加Account类usingSystem;usingSystem.Collections.Generic;usingSystem.Text;//Account.cs工程中的Account类源文件namespaceATM{classAccount{protectedstringname;protectedstringpassword;protecteddecimalbalance;publicdecimalBanlance{get{}}

returnbalance;publicstringName{get{}}

returnname;publicAccount(stringname,stringpassword){this.balance=0;=name;this.password=password;}publicboolDeposit(decimalamount){if(amount<=0){returnfalse;}balance+=amount;returntrue;}publicboolDeposit(doubleamount){returnDeposit((decimal)amount);}publicboolDeposit(intamount){returnDeposit((decimal)amount);}publicboolDeposit(decimalamount,outdecimalbalance){boolsucceed=Deposit(amount);balance=this.balance;returnsucceed;}publicboolWithdraw(decimalamount){if(amount>balance||amount<=0){returnfalse;}balance-=amount;returntrue;}publicboolWithdraw(doubleamount){returnWithdraw((decimal)amount);}publicboolWithdraw(intamount){returnWithdraw((decimal)amount);}publicboolWithdraw(decimalamount,outdecimalbalance){boolsucceed=Withdraw(amount);balance=this.balance;returnsucceed;}publicboolChangePassword(stringoldPassword,stringnewPassword){if(oldPassword!=password){returnfalse;}password=newPassword;returntrue;}publicboolLogin(stringname,stringpassword){return(==name&&this.password==password);}}}在ATM工程中增加Bank类usingSystem;usingSystem.Collections.Generic;usingSystem.Text;//Bank.cs工程中的Bank类源文件namespaceATM{classBank{protectedstringname;protectedconstintMaxAccountNum=2048;protectedintusedAccountNum;protectedAccount[]accounts;publicstringName{get{}}

returnname;publicBank(stringname){=name;this.usedAccountNum=0;accounts=newAccount[MaxAccountNum];}publicboolLoginAccount(stringname,stringpassword,outAccountaccount){account=null;for(inti=0;i<usedAccountNum;++i){if(accounts[i].Login(name,password)){account=accounts[i];returntrue;}}returnfalse;}publicboolOpenAccount(stringname,stringpassword,outAccountaccount){account=null;for(inti=0;i<usedAccountNum;++i){if(accounts[i].Name==name){returnfalse;}}account=newAccount(name,password);accounts[usedAccountNum++]=account;returntrue;}}}在ATM工程中增加ATM类usingSystem;usingSystem.Collections.Generic;usingSystem.Text;//ATM.cs工程中的ATM类源文件namespaceATM{classATM{privateconststringquitcode=“20230814“;privateBankbank;publicATM(Bankbank){this.bank=bank;}publicvoidStart{while(true){//主界面PrintLogo;Console.WriteLine(“---------------1.开户 “);Console.WriteLine(“---------------2.登录 “);Console.WriteLine(“---------------3.退出 “);Console.WriteLine(“ “);Console.WriteLine(““);Console.Write(“请输入您的选择(回车完毕):“);stringcode=Console.ReadLine;//quitsystemif(code==quitcode){return;}if(code==“1“){OpenAccount;}elseif(code==“2“){LoginAccount;}elseif(code==“3“){);Console.ReadKey;return;}}}privatevoidLoginAccount{PrintLogo;Console.WriteLine(“ 请输入您的帐号的用户名和密码:---------------“);Console.WriteLine(“ “);Console.WriteLine(““);stringname=Input(“用户名(回车完毕):“);stringpasswordInput(“密码(回车完毕):“);//登录帐号Accountaccount;if(!bank.LoginAccount(name,password,outaccount)){Console.WriteLine(“---登录错误,请检查用户名和密码是否正确。按Enter键继续...---“);Console.Read;}else{ManageAccount(refaccount);}}privatevoidOpenAccount{PrintLogo;Console.WriteLine(“ 请输入您的帐号的用户名和密码:---------------“);Console.WriteLine(“ “);Console.WriteLine(““);stringname=Input(“用户名(回车完毕):“);stringpasswordInput(“密码(回车完毕):“);//开户Accountaccount;if(!bank.OpenAccount(name,password,outaccount)){Console.WriteLine(“---开户错误,用户名和密码已经存在。按Enter键连续...---“);Console.Read;}else{Print(“开户“,0,account);Pause;ManageAccount(refaccount);}}privatevoidManageAccount(refAccountaccount){while(true){PrintLogo;Console.WriteLine(“---------------1.存款 “);Console.WriteLine(“---------------2.取款 “);Console.WriteLine(“---------------3.查询余额 “);Console.WriteLine(“---------------4.修改密码 “);Console.WriteLine(“---------------5.退出 “);Console.WriteLine(“ “);Console.WriteLine(““););stringcode=Console.ReadLine;strings;decimalamount;boolsucceed;switch(code){case“1“:amountInputNumber(“\n请输入存款数目:“);succeed=account.Deposit(amount);if(succeed){Print(“存入“,amount,account);}else{Console.WriteLine(“存款失败!“);}Pause;break;case“2“:amountInputNumber(“\n请输入取款数目:“);succeed=account.Withdraw(amount);if(succeed){Print(“取出“,amount,account);}else{Console.WriteLine(“取款失败!“);}Pause;break;case“3“:Print(account);;Pause;break;case“4“:stringoldPasswordInput(“当前密码(回车完毕):“);stringnewPassword=Input(“密码(回车完毕):“);succeed=account.ChangePassword(oldPassword,newPassword);if(succeed){Console.WriteLine(“密码修改成功!“);}else{Console.WriteLine(“密码修改失败!“);}Pause;break;case“5“:return;//break;default:break;}}}privatevoidPrintLogo{Console.WriteLine(“\n “);Console.WriteLine(“{0}自动取款机用专业的心做专业的事“,bank.Name);Console.WriteLine(“ “);}privatestringInput(stringprompt){Console.Write(prompt);stringstr=Console.ReadLine;while(str==““){Console.Write(“不能为空,{0}“,prompt);str=Console.ReadLine;}returnstr;}privatedecimalInputNumber(stringprompt){Console.Write(prompt);strings=Console.Read

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论