⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atm.cs

📁 实现ATM的主要功能:开户
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;

namespace ATM
{
    class ATM
    {
        private const string quitCode = "3";
        private Bank bank;
        public ATM(Bank bank)
        {
            this.bank = bank;
        }
        public void Start()
        {
            while (true)
            {
                // 主界面
                PrintLogo();
                Console.WriteLine("       1. 开户                                ");
                Console.WriteLine("       2. 登录                                ");
                Console.WriteLine("       3. 退出                                ");
                Console.WriteLine("----------------------------------------------");
                Console.WriteLine("");
                Console.Write("你的选择(回车结束):");
                string code = Console.ReadLine();

                // quit system
                if (code == quitCode)        // 退出
                    return;


                if (code == "1")            // 开户
                    OpenAccount();
                else if (code == "2")       // 登陆
                    LoginAccount();
            }
        }
        private void LoginAccount()
        {
            PrintLogo();
            Console.WriteLine("       请输入你的帐号的用户名和密码           ");
            Console.WriteLine("----------------------------------------------");
            Console.WriteLine("");
            string name = Input("用户名(回车结束):");
            string password = Input("密码(回车结束):");

            // 登录帐号
            Account account;
            if (!bank.LoginAccount(name, password, out account))
            {
                Console.Write("登录错误,请检查用户名和密码是否正确。按Enter键继续...");
                Console.Read();
            }
            else
            {
                ManageAccount(ref account);
            }
        }
        private void OpenAccount()
        {
            PrintLogo();
            Console.WriteLine("       请输入你的帐号的用户名和密码           ");
            Console.WriteLine("----------------------------------------------");
            Console.WriteLine("");
            string name = Input("用户名(回车结束):");
            string password = Input("密码(回车结束):");

            // 开户
            Account account;
            if (!bank.OpenAccount(name, password, out account))
            {
                Console.Write("开户错误,用户名可能已经存在。按Enter键继续...");
                Console.Read();
            }
            else
            {
                Print("开户", 0, account);
                Pause();
                ManageAccount(ref account);
            }
        }
        private void ManageAccount(ref Account account)
        {
            while (true)
            {
                // 管理帐号界面
                PrintLogo();
                Console.WriteLine("       1. 存款                                ");
                Console.WriteLine("       2. 取款                                ");
                Console.WriteLine("       3. 查询余额                            ");
                Console.WriteLine("       4. 修改密码                            ");
                Console.WriteLine("       5. 退出                                ");
                Console.WriteLine("----------------------------------------------");
                Console.WriteLine("");
                Console.Write("你的选择(回车结束):");
                string code = Console.ReadLine();

                decimal amount;
                bool succeed;
                switch (code)
                {
                    case "1":
                        amount = InputNumber("\n输入存款数目:");
                        succeed = account.Deposit(amount);
                        if (succeed)
                        {
                            Print("存入", amount, account);
                        }
                        else
                        {
                            Console.WriteLine("存款失败!");
                        }
                        Pause();
                        break;
                    case "2":
                        amount = InputNumber("\n输入取款数目:");
                        succeed = account.Withdraw(amount);
                        if (succeed)
                        {
                            Print("取出", amount, account);
                        }
                        else
                        {
                            Console.WriteLine("取款失败!");
                        }
                        Pause();
                        break;
                    case "3":
                        Print(account);
                        Pause();
                        break;
                    case "4":
                        string oldPassword = Input("当前密码(回车结束):");
                        string newPassword = Input("新密码(回车结束):");
                        succeed = account.ChangePassword(oldPassword, newPassword);
                        if (succeed)
                            Console.WriteLine("密码修改成功!");
                        else
                            Console.WriteLine("密码修改失败!");
                        Pause();
                        break;
                    case "5":
                        return;
                    default:
                        break;
                }

            }
        }
        private void PrintLogo()
        {
            Console.WriteLine("\n----------------------------------------------");
            Console.WriteLine("  {0}自动取款机  ", bank.Name);
            Console.WriteLine("   用户第一   瓜瓜至上");
            Console.WriteLine("----------------------------------------------");
        }
        private string Input(string prompt)
        {
            Console.Write(prompt);
            string str = Console.ReadLine();
            while (str == "")
            {
                Console.Write("不能为空,{0}", prompt);
                str = Console.ReadLine();
            }
            return str;
        }
        private decimal InputNumber(string prompt)
        {
            Console.Write(prompt);
            string s = Console.ReadLine();
            decimal amount = 0;
            try
            {
                amount = Decimal.Parse(s);
            }
            catch (Exception)
            {
                Console.Write("输入的数值格式不正确,请重新输入!");
                amount = InputNumber(prompt);
            }
            return amount;
        }
        private void Pause()
        {
            Console.Write("按Enter键继续...");
            Console.Read();
        }
        private void Print(string operation, decimal amount, Account account)
        {
            Console.WriteLine("---------------------------");
            Console.WriteLine("姓名: {0}", account.Name);
            Console.WriteLine("{0}: {1}", operation, amount);
            Console.WriteLine("余额: {0}", account.Balance);
            Console.WriteLine("---------------------------");
            Console.WriteLine("{0}成功!", operation);
        }
        public void Print(Account account)
        {
            Console.WriteLine("---------------------------");
            Console.WriteLine("姓名: {0}", account.Name);
            Console.WriteLine("余额: {0}", account.Balance);
            Console.WriteLine("---------------------------");
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -