首页 > 编程语言 >控制台C#ATM DEMO

控制台C#ATM DEMO

时间:2022-08-21 17:12:46浏览次数:36  
标签:Console string C# DEMO ATM AccNo WriteLine icbcbank accNo

主要运行结果:

代码:

  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

相关文章

  • C语言学习指针一
    #include<stdio.h>main(){inta,b,c;int*e;intd[2]={0};e=&a;printf("%d,%d\n",a,&a);printf("%d,%d\n",a,a);printf("%d,%d\n"......
  • F2F-Discussing transportation
    Doyouliveintianjing?Inthepast,whatkindoftraffic/transportationdoyouusuallychoose,whenyouplantotravelsomewhere?在高峰时段inpeakhourHav......
  • Spring学习1-IOC、IOC容器、Bean、DI
    1.IOC(InversionofControl)控制反转   (1)什么是控制反转呢? 使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此......
  • crossover在mac安装KeyGen.exe注册机的方法
    Mac上一些应用的正常使用,如果想要运行windows的exe程序,可以借助crossover软件,今天为您带来crossover在mac安装KeyGen.exe注册机的方法。crossover在mac安装KeyGen.exe注册......
  • 关于Java 连接 MySQL 数据库报错:Failed to obtain JDBC Connection; ...: Communicati
    原因:是因为Java连接MySQL没有收到任何数据包,也就是说连接失败。解决方法:打开Windows服务程序,找到mysql进程,重启一下就可以了。......
  • CentOS 7 安装gitLab 全过程
    1.关闭防火墙&&禁用防火墙systemctlstopfirewalldsystemctldisablefirewalld2.关闭SELLINUX安全策略vi/etc/sysconfig/selinux...SELINUX=disable.........
  • js基础之call、apply
    call与apply的异同相同点:1、都可以用来修改函数内部的this指向2、都会立即执行函数不同点:1、传参方式不同第一个参数都是传递需要指向的obj,之后的传递参......
  • svn客户端检出的工程导入eclipse后不显示SVN信息
    1、首先确定原因:是由于SVN客户端与SVN插件版本不对应导致的,因此需要更换SVN插件版本1.1、SVN插件与SVN客户端版本对应关系插件svn1.4.x对应TortoiseSvn1.5.x插件svn1.6......
  • 封面 - JavaScript指南
     IT软件开发之JavaScript   AGuidetoJavaScriptJavaScript指南-------------------------------------------------------------------------------争取做......
  • 软约束 soft constraint
    首先使用关键字soft声明软约束。硬约束之间如果存在矛盾,那么求解器将失败,仿真也会失败。当没有同时满足所有有效硬约束和定义为软约束的解决方案时,求解器将放弃软约束并......