主要运行结果:
代码:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 using System.Runtime.Serialization.Formatters.Binary; 7 8 namespace ATMApp 9 { 10 /*------------------------------ 11 Copyright (C) 2022 bobchu 12 文件名:ATM.cs 13 功能描述:ATM类:显示ATM输入输出等 14 创建标识:bobchu - 20220811 15 -------------------------------- */ 16 class ATM 17 { 18 public static Bank icbcbank = new Bank("ICBC");/// 建立名称为ICBC的情态的银行对象语句 19 /// <summary> 20 /// 主程序方法(整个应用程序执行和退出的地方):显示主菜单等 21 /// </summary> 22 /// <param name="args"></param> 23 static void Main(string[] args) 24 { 25 LoadIcbcBankInfo(); 26 string code = ""; 27 do //用while或dowhile也可以 28 { 29 Console.Clear(); 30 Console.Title = "ATM"; 31 Console.WriteLine(" " + icbcbank.bankName + "模拟ATM"); 32 Console.WriteLine("---------------------"); 33 Console.WriteLine("1.登录 2.开户 0.退出"); 34 Console.WriteLine("--------------------"); 35 Console.Write("请选择:"); 36 code = Console.ReadLine(); 37 if (code == "1") //switch也可以 38 ATMLoginAccountUI(); 39 else if (code == "2") 40 ATMOpenAccountUI(); 59 } 60 } while (code != "0"); 61 SaveIcbcBankInfo(); 62 Console.WriteLine("按一下任意键退出系统..."); 63 } 64 /// <summary> 65 /// 登录功能界面方法:主菜单选择登录后显示 66 /// </summary> 67 public static void ATMLoginAccountUI() 68 { 69 Console.Clear(); 70 Console.WriteLine("登录"); 71 Console.WriteLine("--------------"); 72 Console.Write("输入你的账号:"); 73 string accNo = Console.ReadLine(); 74 Console.Write("输入你的密码:"); 75 string pwd = Console.ReadLine(); 76 if (!icbcbank.LoginAccount(accNo, pwd)) //icbc银行不能登录账户? 77 { 78 Console.WriteLine("无账号或密码不对!"); 79 Console.ReadKey(); 80 return;//返出该方法 81 } 82 else 83 { 84 ShowMenuUI(accNo); 85 } 86 } 87 /// <summary> 88 /// 显示某账号操作菜单方法:登录成功以后显示 89 /// </summary> 90 /// <param name="accNo"></param> 91 public static void ShowMenuUI(string accNo) 92 { 93 do 94 { 95 Console.Clear(); 96 Console.WriteLine(" 交易菜单"); 97 Console.WriteLine("--------------"); 98 Console.WriteLine("账号:" + accNo); 99 Console.WriteLine("开户时间:" + icbcbank.GetCreatedTime(accNo).ToString("yyyy-MM-dd HH: mm")); 100 Console.WriteLine("--------------"); 101 Console.WriteLine("1.查余额"); 102 Console.WriteLine("2.取 款"); 103 Console.WriteLine("3.存 款"); 104 Console.WriteLine("4.转 账"); // 转账功能还没有做 105 Console.WriteLine("5.查交易"); 106 Console.WriteLine("6.改密码"); 107 Console.WriteLine("7.销账号"); 108 Console.WriteLine("0.退 出"); 109 Console.WriteLine("---------------"); 110 Console.Write("请选择:"); 111 switch (Console.ReadLine()) 112 { 113 case "1": 114 DisplayBalanceUI(accNo); 115 break; 116 case "2": 117 WithdrawUI(accNo); 118 break; //跳出switch 119 case "3": 120 depositUI(accNo); 121 break; 122 case "6": 123 ChangePasswordUI(accNo); 124 break; 125 case "5": 126 QueryAccountTransUI(accNo); 127 break; 128 case "7": 129 DelAccountUI(accNo); 130 break; 131 case "0": 132 return; 133 } 134 } while (true); 135 } 136 /// <summary> 137 /// 删除某账户界面方法 138 /// </summary> 139 /// <param name="AccNo"></param> 140 public static void DelAccountUI(string AccNo) 141 { 142 Console.Write("是否真的要销户(y/n)?"); 143 string answer = Console.ReadLine(); 144 if (answer == "y") //销账号比较重要所以提问 145 { 146 if (!icbcbank.DelAccountById(AccNo)) 147 { 148 Console.WriteLine("账户余额为不为0,不能销户!");//直接销账号也可以,只是写明要退金额 149 Console.ReadKey(); 150 } 151 else 152 { 153 Console.WriteLine("销户成功,欢迎再来!"); 154 Console.ReadKey(); 155 SaveIcbcBankInfo();//别忘,因为是非正常退出应用程序 156 Environment.Exit(0);//直接强制退出应用程序.有点暴力哦,哈哈哈—老猪新作。 157 } 158 } 159 } 160 /// <summary> 161 /// 查询某个账户交易记录方法 162 /// </summary> 163 /// <param name="AccNo"></param> 164 public static void QueryAccountTransUI(string AccNo) 165 { 166 Console.WriteLine("\t 所有交易记录"); 167 Console.WriteLine("\t ——————"); 168 169 Console.WriteLine("{0,-14}\t{1,-10}", "交易时间", " 交易金额"); 170 Console.WriteLine(); 171 foreach (var item in icbcbank.GetAccountRecords(AccNo)) 172 { 173 Console.WriteLine("{0,-14}\t{1,10}", item.Key.ToString("yyyy/MM/dd HH:mm"), item.Value.ToString("+#.##;-#.##;0")); //大写HH是24小时制 174 Console.WriteLine("—————————————————"); 175 } 176 Console.WriteLine("{0,-14}\t{1,10}", "目前余额", icbcbank.GetBalanceByAccountNo(AccNo).ToString("+#.##;-#.##;0")); 177 178 Console.ReadKey(); 179 } 180 /// <summary> 181 /// 修改某个账户密码界面方法 182 /// </summary> 183 /// <param name="AccNo"></param> 184 public static void ChangePasswordUI(string AccNo) 185 { 186 Console.Write("输入老的密码:"); 187 string oldpwd = Console.ReadLine(); 188 Console.Write("输入新的密码:"); 189 string newpwd = Console.ReadLine(); 190 if (icbcbank.ChangePasword(AccNo, oldpwd, newpwd)) 191 { 192 Console.WriteLine("成功修改"); 193 } 194 else 195 Console.WriteLine("成功不修改"); 196 Console.ReadKey(); 197 } 198 /// <summary> 199 /// 向某个账户存款界面方法 200 /// </summary> 201 /// <param name="AccNo"></param> 202 public static void depositUI(string AccNo) 203 { 204 Console.Write("输入存款金额:"); 205 double amount = Convert.ToDouble(Console.ReadLine()); 206 if (!icbcbank.DepositAccount(AccNo, amount)) 207 { 208 Console.WriteLine("存款不成功"); 209 } 210 else 211 Console.WriteLine("存款成功"); 212 Console.ReadKey(); 213 } 214 /// <summary> 215 /// 从某个账户取款界面方法 216 /// </summary> 217 /// <param name="AccNo"></param> 218 public static void WithdrawUI(string AccNo) 219 { 220 Console.Write("输入取款金额:"); 221 double amount = Convert.ToDouble(Console.ReadLine()); 222 if (!icbcbank.WithdrawAccount(AccNo, amount)) 223 { 224 Console.WriteLine("取款不成功,余额可能不足"); 225 } 226 else 227 Console.WriteLine("取款成功!,取款{0}元,余额{1}元", amount, icbcbank.GetBalanceByAccountNo(AccNo)); 228 Console.ReadKey(); 229 } 230 /// <summary> 231 /// 显示某个账户余额界面方法 232 /// </summary> 233 /// <param name="AccNo"></param> 234 public static void DisplayBalanceUI(string AccNo) 235 { 236 Console.Write("账户余额为:" + icbcbank.GetBalanceByAccountNo(AccNo)); 237 Console.ReadKey(); 238 } 239 /// <summary> 240 /// 开户 241 /// </summary> 242 public static void ATMOpenAccountUI() 243 { 244 ///1、输入要建账号和密码 245 ///2、空吗 246 ///3、调用开户方法放账户到bank的Accounts集合 247 ///4、空 248 ///5、不是空 249 ///6、显示开户账户操作菜单 250 Console.Clear(); 251 Console.WriteLine("开户"); 252 Console.WriteLine("--------------"); 253 Console.Write("你要的账号:"); 254 string accNo = Console.ReadLine(); 255 Console.Write("你设的密码:"); 256 string pwd = Console.ReadLine(); 257 if (accNo == "" || pwd == "") 258 { 259 Console.WriteLine("用户名密码不能为空,开户失败!"); 260 Console.ReadKey(); 261 return;//退出本方法回菜单 262 } 263 //以下银行对象进行开户 264 if (!icbcbank.OpenAccount(accNo, pwd)) 265 { 266 Console.WriteLine("可能已经存在,开户错误!"); 267 Console.ReadKey(); 268 return; 269 } 270 Console.WriteLine("开户成功!"); 271 Console.ReadKey(); 272 ShowMenuUI(accNo); 273 } 274 /// <summary> 275 /// 运行主程序时加载银行对象信息方法 276 /// </summary> 277 static void LoadIcbcBankInfo() 278 { 279 ///1、文件存在不 280 ///2、读文件 281 ///3、二进制 282 ///4、反序列读到当前静态银行bank 283 if (File.Exists("bank.dat")) 284 { 285 FileStream fs = new FileStream("bank.dat", FileMode.Open, FileAccess.Read); 286 BinaryFormatter bf = new BinaryFormatter(); 287 icbcbank = bf.Deserialize(fs) as Bank; 288 fs.Close(); 289 } 290 } 291 /// <summary> 292 /// 退出主程序时存储银行对象信息方法 293 /// </summary> 294 static void SaveIcbcBankInfo() 295 { 296 ///1、建立bank 297 ///2、二进制化 298 ///3、序列化 299 FileStream fs = new FileStream("bank.dat", FileMode.Create, FileAccess.Write); 300 BinaryFormatter bf = new BinaryFormatter(); 301 bf.Serialize(fs, icbcbank); 302 fs.Close(); 303 } 304 } 305 }
标签:Console,string,C#,DEMO,ATM,AccNo,WriteLine,icbcbank,accNo From: https://www.cnblogs.com/jzzhuhyfu/p/16610327.html