银行

来源:互联网 发布:mafia 2 mac 编辑:程序博客网 时间:2024/04/20 03:43
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;        }    }}

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;        }    }}

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("不要拿石头来开玩笑!!!"); } } } }}

原创粉丝点击