首先根据ATM属性构建对象
namespace BankSim { /// <summary> /// 银行账户 /// </summary> public class Account { /// <summary> /// 卡号 /// </summary> public string No { get; private set; } /// <summary> /// 余额 /// </summary> public double Balance { get; private set; } /// <summary> /// 密码 /// </summary> public string Password { get; set; } /// <summary> /// 构造器 /// </summary> /// <param name="no">卡号</param> /// <param name="password">初始密码</param> /// <param name="balance">预存金额</param> public Account(string no, string password, double balance) { this.No = no; this.Password = password; this.Balance = balance; } /// <summary> /// 存款 /// </summary> /// <param name="money">存入金额</param> /// <returns>存款成功返回true, 否则返回false</returns> public bool Deposit(double money) { if (money > 0) { Balance += money; return true; } return false; } /// <summary> /// 取款 /// </summary> /// <param name="money">取款金额</param> /// <returns>取款成功返回true, 否则返回false</returns> public bool Withdraw(double money) { if (money > 0 && money <= Balance) { Balance -= money; return true; } return false; } } }
设定默认账户跟密码生成方法
namespace BankSim { public class ATM { private Account[] accounts = new Account[3]; private Account currentAccount = null; public ATM() { accounts[0] = new Account("11223344", "123321", 2300); accounts[1] = new Account("22334455", "147258", 500); accounts[2] = new Account("33445566", "808080", 9800); } public Account Account { get { throw new System.NotImplementedException(); } set { } } /// <summary> /// 读卡 /// </summary> /// <param name="no">卡号</param> /// <returns>读卡成功返回true, 否则返回false</returns> public bool ReadCard(string no) { currentAccount = FindByNo(no); return currentAccount != null; } /// <summary> /// 退卡 /// </summary> public void QuitCard() { currentAccount = null; } /// <summary> /// 密码验证 /// </summary> /// <param name="password">输入密码</param> /// <returns>密码正确返回true, 否则返回false</returns> public bool Verify(string password) { return currentAccount.Password == password; } /// <summary> /// 查看余额 /// </summary> /// <returns></returns> public double ShowBalance() { return currentAccount.Balance; } /// <summary> /// 转账 /// </summary> /// <param name="toAccountNo">转入账号</param> /// <param name="money">转入金额</param> /// <returns>转账成功返回true, 否则返回false</returns> public bool Transfer(string toAccountNo, double money) { Account toAccount = FindByNo(toAccountNo); if (money > 0) { if (toAccount != null) { if (currentAccount.Withdraw(money)) { toAccount.Deposit(money); return true; } } } return false; } /// <summary> /// 存款 /// </summary> /// <param name="money">存入金额</param> /// <returns>存入成功返回true, 否则返回false</returns> public bool PutMoney(int money) { return currentAccount.Deposit(money); } /// <summary> /// 取款 /// </summary> /// <param name="money">取出金额</param> /// <returns>取出成功返回true, 否则返回false</returns> public bool GetMoney(int money) { return currentAccount.Withdraw(money); } /// <summary> /// 修改密码 /// </summary> /// <param name="oldPass">原密码</param> /// <param name="newPass">新密码</param> /// <returns>修改成功返回true, 否则返回false</returns> public bool ChangePassword(string oldPass, string newPass) { if (currentAccount.Password == oldPass) { currentAccount.Password = newPass; return true; } return false; } private Account FindByNo(string no) { for (int i = 0; i < accounts.Length; i++) { if (accounts[i].No == no) { return accounts[i]; } } return null; } } }
调用属性方法运行
using System; namespace BankSim { class Program { static void Main(string[] args) { ATM atm = new ATM(); while (true) { Console.Write("插入银行卡: "); string no = Console.ReadLine(); if (atm.ReadCard(no)) { Console.Write("请输入密码: "); string pass = Console.ReadLine(); if (atm.Verify(pass)) { bool jx = true; do { Console.WriteLine("1. 查询余额"); Console.WriteLine("2. 存款"); Console.WriteLine("3. 取款"); Console.WriteLine("4. 修改密码"); Console.WriteLine("5. 转账"); Console.WriteLine("6. 退卡"); Console.Write("请选择: "); int choice = Convert.ToInt32(Console.ReadLine()); switch (choice) { case 1: Console.WriteLine("您的余额为: " + atm.ShowBalance()); break; case 2: Console.Write("请放入钞票: "); int money1 = Convert.ToInt32(Console.ReadLine()); if (atm.PutMoney(money1)) { Console.WriteLine("存入成功!!!"); } else { Console.WriteLine("无法识别!!!"); } break; case 3: Console.Write("请输入取款金额: "); int money2 = Convert.ToInt32(Console.ReadLine()); if (atm.GetMoney(money2)) { Console.WriteLine("请从出钞口取走钞票"); } else { Console.WriteLine("余额不足!!!"); } break; case 4: Console.Write("请输入原密码: "); string oldPass = Console.ReadLine(); Console.Write("请输入新密码: "); string newPass1 = Console.ReadLine(); Console.Write("请再次输入新密码: "); string newPass2 = Console.ReadLine(); if (newPass1 == newPass2) { if (atm.ChangePassword(oldPass, newPass1)) { Console.WriteLine("修改成功!!!"); } else { Console.WriteLine("修改失败!!!"); } } else { Console.WriteLine("两次输入不一致!!!"); } break; case 5: Console.Write("请输入转入账户的账号: "); string toAccountNo = Console.ReadLine(); Console.Write("请输入转账金额: "); double money3 = Convert.ToDouble(Console.ReadLine()); if (atm.Transfer(toAccountNo, money3)) { Console.WriteLine("转账成功!!!"); } else { Console.WriteLine("转账失败!!!"); } break; case 6: atm.QuitCard(); jx = false; break; } } while (jx); } else { Console.WriteLine("密码错误!!!"); } } else { atm.QuitCard(); Console.WriteLine("不要拿石头来开玩笑!!!"); } } } } }