版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用 Vs2010 写控制台应用程序 银行 ATM 自动取款机系统教程 要写出银行 ATM 自动取款机系统,我们先要梳理取款机的运作过程。首先,一套完整的 ATM 系统包 括取款界面,后台处理。后台处理中,银行和账户是不可缺的因素。所以,我们可以在项目中创建三个类: ATM 类、 Account 账户类、 Bank 银行类。下面是详细的代码: (本系统已成都银行为例) 排版若有不妥,敬请原谅。以下代码仅供参考。一、Program 为了方便大家学习,特讲一些构造函数、方法、获取属性等语法的书写方法注释在 Program 中。 using System;using System.Collection
2、s.Generic;using System.Linq;using System.Text;namespaceATMclass Programstatic void Main( string args)/ 创建银行Bank bank = new Bank( "成都银行 ");/ 创建自动提款机ATMatm = new ATM(bank);/ 调用 Start() 方法atm.Start();/1. 无参构造函数创建对象并且赋值/ 实例化对象的语法:/ 类对象名 = new 类 ();/Student student = new Student();/ 设置属性的语法:/ 对
3、象名属性名 = 值/student.Name = " 小明 "/student.Age = 18;/student.Sex = " 男 D"/student.ClassName = "0801T"/2. 带参构函数创建对象并且赋值/Student wangwu = new Student("wangwu", "女 ", 20);/string studyResult = wangwu.StudyByName(wangwu.Name);/Console.WriteLine(studyResult)
4、;/ 获取属性的语法 ;/ 对象名属性名/string studentName = student.Name;/ 调用方法的语法:Illi对象名方法名(实际参数1,实际参数2,.实际参数n); /student.Study(studentName);Console.ReadLine();二、ATM 类using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ATMclass ATMprivate Bank bank;public ATM( Bank bank)this
5、.bank = bank;public void Start()while ( true )Console .WriteLine( "= =");Console .WriteLine( ">>>>欢迎使用0ATM 自动取款机 <<<<, this .bank.Name); Console .WriteLine( "" );Console.WriteLine(Console .WriteLine( " *" );Console .WriteLine( " *"
6、 );Console .WriteLine( " *" );Console .WriteLine( "*11Console .WriteLine( "" );选*择*1、开户 2 、登陆业*务Console .WriteLine( "= =");Console .WriteLine( " 请选择: ");string input = Console .ReadLine();/ 实际参数可以不赋初始值Account account;if (input = "1" )/开a户Console
7、 .Write( " 用 户 名: " );string username = Console .ReadLine();Console .Write( " 密 码: " );string password = Console .ReadLine(); int pa = password.Trim().IndexOf( " " );if (password.Trim() !="" && pa > 0)Console .WriteLine( " 您输入的密码不合法! ");/调
8、用开a户方法out account);bool openResult = bank.OpenAccount(username, password,if (openResult = true )Console .WriteLine(Console .WriteLine(Console .WriteLine( else"开户 成功! ");" 用户名: 0" , account.Username);" 余额: 0" , account.Balance);Console .WriteLine( " 开户失败! ");el
9、se if (input = "2" )/ 登录Console .Write( " 用户名: " ); string username = Console .ReadLine();Console .Write( " 密 码: " ); string password = Console .ReadLine();bool loginResult = bank.LoginAtm(username, password, out account); if (loginResult = true )/ 是 否跳出当前循环标 记bool isEx
10、sist = false ; while ( true )if (isExsist = true )break ;Console .WriteLine( "=);="Console .WriteLine(">>>> 欢迎 使 1 用0ATM 自动 取款机 <<<<" , this .bank.Name);Console.WriteLine( "1.存款");Console.WriteLine( "2.取款");Console.WriteLine( "3.转a
11、账”);Console.WriteLine( "4.查询 余 额");Console.WriteLine( "5.修T改密码");Console.WriteLine( "6.注连销");Console.WriteLine( "7.退出");Console .WriteLine( "=);=" Console .Write( " 请选择: " );string inp = Console .ReadLine();switch (inp)case "1" :/
12、 存款Console .WriteLine( " 请输入存款金 e 额: " );string money = Console .ReadLine();/转a换为a十进制数ydecimal moneyDecimal = 0;trydecimal .Parse(money);moneyDecimal =catch ( Exception ex)Console .WriteLine( " 您的输入有误 ,请重新输 入: +ex.Message);/ 调 用 账户 里的存款方法bool depositResult = account.Deposit(moneyDecim
13、al);account.Username);account.Balance);if (depositResult =Console .WriteLine(Console .WriteLine(Console .WriteLine(true )" 存款成功! ");" 您的用 户 名: 0" 您的余 额: 0" ,elseConsole .WriteLine( " 存款失 败 !");break ;case "2" :/ 取款 Console .WriteLine("请输 入取款金 e额:&quo
14、t;);string moneyDraw = Console.ReadLine();decimal moneyDecimalq = 0;trymoneyDecimalq =decimal .Parse(moneyDraw);catch ( Exception ex)Console.WriteLine("您的输 入有误 ,请重新输 入:ex.Message);bool drawResult = account.Draw(moneyDecimalq);if (drawResult = true )Console.WriteLine("取款成功! ");Console.
15、WriteLine("您的用 户 名: 0" ,account.Username);Console .WriteLine( " 您的余 额: 0"account.Balance);elseConsole .WriteLine( " 取款失 败 !");break ; case "3" :/1. 提示 输 入转 a 入的用 户 名Console .WriteLine( " 请输 入转入的用 户 名: " ); string transferUsername =Console .ReadLine()
16、;112. 判D断转a入的用户名是否存在Account transferAccount =null ;/ 2.1 获取银行D账户 列D表,循环每一个账户foreach ( Account item in bank.AccountList)/ 2.2 与输出的用户名进行D比较,如果用 户名存 在,获取转 a 入的账户if (transferUsername = item.Username)/ 获取账入账户transferAccount = item;break;113. 提示 输 入转a账金e额Console .WriteLine( " 请输 入转账金额: " ); stri
17、ng transferMoney = Console.ReadLine(); decimal transferMoneyDecimal = 0;try transferMoneyDecimal= decimal .Parse(transferMoney);catch ( Exception ex)Console.WriteLine( "您的输 入有误 ,请重新输 入: " + ex.Message);/4. 调用当前账户的转账方法 bool transferResult = account.TransferMoney(transferAccount, transferMon
18、eyDecimal);/5. 输出转账结果 if (transferResult)account.Username);account.Balance);Console .WriteLine(Console .WriteLine(Console .WriteLine("转a账成功! ”);" 您的用 户 名: 0"" 您的余 额: 0"elseConsole .WriteLine( " 转 a 账失 败 ! ");/ 转 a 账 break ;case "4" :/ 查询 余 额Console .Write
19、Line( " 您的余 额为 a: 0" , account.Balance); break ;case "5" :/ 修改密 码/ 提示 输 入原密 码Console .WriteLine( " 请输 入旧密 码: " ); string oldPassword = Console.ReadLine();/ 提示 输 入新密 码Console .WriteLine( " 请输 入新密 码 "); string newPassword = Console.ReadLine();/ 提示 再次输 入新密 码Conso
20、le .WriteLine( "请再次输 入新密 码"); string newPasswordRepeat = Console.ReadLine();/ 验证两次密 码是 否一致if (newPassword.Equals(newPasswordRepeat)/调用当前账户的修T改密码方法bool changeResult =account.ChangePassword(oldPassword, newPassword);if (changeResult)Console .WriteLine("修T改密 码成功! ”);elseConsole .WriteLin
21、e("修T改密 码失 败!");elseConsole .WriteLine( " 两次输 入的密 码不一致,请重新输 入! ");break ; case "6" :/注连销isExsist = true ; break ;case "7" :/ 退出return ; default :Console .WriteLine( " 选择有误 ,请重新选择! "); break ;elseConsole .WriteLine( " 登录失 败 !");elseConsole .
22、WriteLine( " 您的输 入有误 ,请重新输 入: " );三、Bank 类using System;using System.Collections.Generic;using System.Linq;using System.Text;namespaceATMclass Bankprivate string name;/ <summary>/ 银行名称/ </summary> public string Nameget return name; set name = value ; / 定义账户集合private List <Acc
23、ount > accountList;public List <Account > AccountList get return accountList; public Bank( string name) this .name = name;accountList = new List <Account >(); / <summary>/ 开户/ </summary>Ill vparam name="username">用户名 </param>III vparam name="passwor
24、d"> 密码 </param>lll vparam name="account"> 账户 vlparam>III vreturns> 是否成功 vIreturns>public bool OpenAccount( string username, string password, out Account account) account =null ;bool result = true ;II 验证用户名是否存在 foreach ( Account item in accountList)if (item.Usernam
25、e = username)return false/开a户Account acc = new Account(username, password); / 将新账户添加到银行账户集合里 accountList.Add(acc);/ 将新账户赋给输出账户account = acc;return result;/ <summary>/ 登录/ </summary>/vparam name="username">用户名 </param>/vparam name="password"> 密码 </param&
26、gt;/ vparam name="account"> 当前账户 v/param>/ vreturns> 是否成功 v/returns>public bool LoginAtm( string username, string password, out Account account)bool result = false ;/out 关键字的作用:为了在调用方法时返回该参数。/定义方法的时候,如果参数有 Dout关键字,那么在方法体里面必须给该参数y赋初始值。account =null ;/ 循环银行账户集合进行匹配foreach ( Accou
27、nt item in accountList)bool res = item.Login(username, password);if (res = true )result =true ;/ 将登录成功的账户赋给输出账户account = item; break;return result;四、Account 类using System;using System.Collections.Generic;using System.Linq;using System.Text;namespaceATMclass Accountprivate string username;/ <summa
28、ry>/ 用户名/ </summary>public string Usernameget return username; private string password;private decimal balance;public decimal Balanceget return balance; set balance = value ; / <summary>/ 开户/ </summary>/ <param name="username"></param>/ <param name="
29、;password"></param> public Account( string username, string password)this .username = username;this .password = password; this .balance = 0;/ <summary>/ 登录方法/ </summary>Ill vparam name="username">用户名 </param>III vparam name="password"> 密码 <
30、;/param>lll vreturns>vlreturns>public bool Login( string username, string password)bool result = false ;if ( this .username = username && this .password = password) result =true ;return result;III vsummary>III 存款III vIsummary>Ill vparam name="money">存款的金额 </param>III vreturns> 存款是否成功 | vIreturns> public bool Deposit( decimal money)bool result = false ;II 判断存款金额不能小于等于,不能大于是 10000if (money v= 10000 && money > 0) II
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《医疗行业简介》课件
- 《就英法联军远征中国致巴特勒上尉的信》第二课时人教版九年级语文上册课件
- 2015年重庆市B卷中考满分作文《我们携手走进青春》
- 《人才知识大全》课件
- 《房地产物业管理》课件
- 安全培训资料:20个固废-危废的常见违法行为
- 电力设施维护设备租赁合同协议
- 免租金书店租赁合同
- 医疗服务质量提升与客户关系
- 风力发电场护坡施工合同范本
- 《中国的海洋资源》示范课教学设计【湘教版八年级地理上册】
- 班会:拓展学生的兴趣爱好课件
- 城市污水处理厂水质检测与安全生产
- 《食品毒理学》课件
- 消化系统常见疾病及护理
- 施工现场安全巡检记录表-模板
- Part3-4 Unit5 Ancient Civilization教案-【中职专用】高一英语精研课堂(高教版2021·基础模块2)
- 江苏开放大学《汽车维修企业管理》终结性考试复习题库(附答案)
- 人力资源部人事科运用PDCA循环提升医院岗前培训的有效性
- 2023年广东省深圳市事业单位笔试参考题库(共500题)答案详解版
- 药疹护理的课件
评论
0/150
提交评论