我们为之奋斗过的C#-----Bank系统
首先感谢大家抽出宝贵的时间来看这个Bank系统,这是我最近学的Bank系统,你们看我刚一学完就给你们分享了我的所学以及学习的一些经验,所以大家一定要耐心看下去,真的你会有所收获的,不信你看看.下面话不多说.我们直接切入正题,怎样来做这个Bank系统.还记得我给大家分享的经验吗?做这样的题目需要先理清逻辑思路,然后在来做.
1.这个Bank要实现的功能是:
1.开户2.存款3.取款4.查询余额5.转账6.修改密码7退出
2首先这个Bank系统需要这几个类:
Card类(银卡类)
Bank类(Bank系统中的核心类);
程序的入口类(实质上就是Manin方法)
3 核心类bank类中定义方法:
初始化100张卡的前3张卡信息,给前3张卡的信息赋值方法: EvaluationCard()
输出出三张卡的信息的方法outputCardShow()
欢迎菜单的方法Welcome();
开户的方法CreateAccount()
存款的方法MoneyIn()
取款的方法MoneyOut()
转账的方法TransferMoney()
查询余额的方法SelectMoney()
修改密码的方法ModifyPwd()
退出的方法ExitSystem()
4在Main方法中调用方法.
下面就是代码的部分的,来自五湖四海的朋友们,认真看吧!
Card类
public class Card { //字段 private string cardName;//持卡人姓名 private int cardNumber;//卡账户 private string cardPwd;//卡密码 private double cardMoney;//卡余额 private string idCard;//身份证号 //属性 public string IdCard { get { return idCard; } set { idCard = value; } } public double CardMoney { get { return cardMoney; } set { cardMoney = value; } } public string CardPwd { get { return cardPwd; } set { cardPwd = value; } } public int CardNumber { get { return cardNumber; } set { cardNumber = value; } } public string CardName { get { return cardName; } set { cardName = value; } } }
Bank类(核心类)
public class Bank { Card[] card = new Card[100];//实例化一个数组对象给定一个长度为100;
Bank类中的方法.
初始化100张卡的前3张卡信息,给前3张卡的信息赋值方法: EvaluationCard()
public void EvaluationCard() { Card card1 = new Card();//实例化一个card1对象 card1.CardName = "汪苏泷"; card1.CardMoney = 10000; card1.CardNumber = 11111111; card1.CardPwd = "11111111"; card[0] = card1; Card card2 = new Card();//实例化一个card2对象 card2.CardName = "林俊杰"; card2.CardMoney = 1000; card2.CardNumber = 22222222; card2.CardPwd = "22222222"; card[1] = card2; Card card3 = new Card();//实例化一个card3对象 card3.CardName = "王力宏"; card3.CardMoney = 10000; card3.CardNumber = 33333333; card3.CardPwd = "33333333"; card[2] = card3; } 打印出三张卡的信息的方法outputCardShow() public void outputCardShow() { Console.WriteLine("********************************************"); foreach (Card item in card)//用foreach循环遍历数组 { if (item != null)//保证数组对象中的值不为null. { Console.WriteLine("用户名:{0}\t\t银行账户:{1}", item.CardName, item.CardNumber); } } Console.WriteLine("********************************************"); } 欢迎菜单的方法Welcome() public void Welcome() { //调用打印三张卡信息,在屏幕中显示,后续开户功能会增加更多卡信息 outputCardShow(); Console.WriteLine("欢迎进入泪洒星辰ATM自助取款系统"); Console.WriteLine("功能:1.开户 2.存款 3.取款 4.查询余额 5.转账 6.修改密码 7.退出"); Console.WriteLine("请选择您要操作的功能模块,亲"); string result = Console.ReadLine(); switch (result)//根据对应的数字选择对应的功能模块 { case "1": //调用开户的方法 CreateAccount(); break; case "2": //调用存款的方法 MoneyIn(); break; case "3": //调用取款的方法 MoneyOut(); break; case "4": //调用查询余额的方法 SelectMoney(); break; case "5": //调用转账的方法 TransferMoney(); break; case "6": //调用修改密码的方法 ModifyPwd(); break; case "7": // 调用退卡的方法 ExitSystem(); Console.WriteLine("成功退卡!"); break; default: Console.WriteLine("没有对应的功能模块!"); break; } }
开户的方法CreateAccount()
public void CreateAccount() { Console.WriteLine("==================="); Console.WriteLine("这里是开户模块"); Console.WriteLine("==================="); Console.WriteLine("请输入省份证号码:"); string id = Console.ReadLine(); Random ran = new Random();//实例化一个随机数对象 //让系统随机产生一个10000000~99999999之间的随机数 int RandKey = ran.Next(10000000, 99999999); //向屏幕打印出用户的银行账号 Console.WriteLine("请牢记您的账户:{0}", RandKey); Console.WriteLine("请输入用户名:"); string name = Console.ReadLine(); Console.WriteLine("请输入密码:"); string mima = Console.ReadLine(); Console.WriteLine("请输入预存余额:"); double money = double.Parse(Console.ReadLine()); Card cards = new Card(); cards.IdCard = id; cards.CardName = name; cards.CardPwd = mima; cards.CardMoney = money; cards.CardNumber = RandKey; for (int i = 0; i < card.Length; i++) { if (card[i] == null) { card[i] = cards; Console.WriteLine("*******************"); Console.WriteLine("恭喜开户成功!"); Console.WriteLine("*******************"); break; } } Welcome(); }
存款的方法MoneyIn()
public void MoneyIn() { Console.WriteLine("==================="); Console.WriteLine("这里是存款"); Console.WriteLine("==================="); Console.WriteLine("请输入账号:"); int number = int.Parse(Console.ReadLine()); bool flag = false;//定义一个标记,标记指示卡号默认是不存在 for (int i = 0; i < card.Length; i++)//用for循环遍历数组 { //如果数组中的值不为null并且输入的账号要和数组中的账号一致才能输入密码. if (card[i] != null && number.Equals(card[i].CardNumber)) { flag = true;//改变标记这里账号已经审核成功 Console.WriteLine("请输入密码:"); string pwd = Console.ReadLine(); if (pwd.Equals(card[i].CardPwd))//如果密码一致,才能进行下一步 { Console.WriteLine("{0},您好!登录成功", card[i].CardName); Console.WriteLine("============================"); Console.WriteLine("请输入你的存款金额:"); Console.WriteLine("============================"); double money = double.Parse(Console.ReadLine()); //存款金额=存款金额+账户已有余额; card[i].CardMoney = card[i].CardMoney + money; Console.WriteLine("============================"); Console.WriteLine("存款成功!目前账户余额为:{0}", card[i].CardMoney); Console.WriteLine("============================"); Welcome();//调用欢迎菜单,返回主菜单 break; } else { Console.WriteLine("============================"); Console.WriteLine("对不起你输入的密码有误!"); Console.WriteLine("============================"); break; } } } //出了循环证明没有匹配的账号flag的值没被改过判定flag标记是否为false if(flag==false) { Console.WriteLine("============================"); Console.WriteLine("对不起!没检测到该卡"); Console.WriteLine("============================"); } }
取款的方法MoneyOut()
public void MoneyOut() { Console.WriteLine("==================="); Console.WriteLine("这里是取款"); Console.WriteLine("==================="); Console.WriteLine("请输入账号:"); int number = int.Parse(Console.ReadLine()); bool flag = false; for (int i = 0; i < card.Length; i++) { if (card[i] != null && number.Equals(card[i].CardNumber)) { flag = true; Console.WriteLine("请输入密码:"); string pwd = Console.ReadLine(); if (pwd.Equals(card[i].CardPwd)) { Console.WriteLine("{0},您好!登录成功", card[i].CardName); Console.WriteLine("请输入你的取款金额:"); double money = double.Parse(Console.ReadLine()); if (money > card[i].CardMoney) { Console.WriteLine("============================"); Console.WriteLine("对不起!你的余额不足本次取款"); Console.WriteLine("============================"); } else { //如果输入的取款数不是100的整数倍那么输入的金额就会不合法,知道输入合法才可退出 while (money % 100 != 0) { Console.WriteLine("您输入的不合法"); Console.WriteLine("请输入取款金额"); money = Convert.ToInt32(Console.ReadLine()); } //代码执行到这里,证明转账金额合法 card[i].CardMoney = card[i].CardMoney - money; Console.WriteLine("============================"); Console.WriteLine("取款成功!目前账户余额为:{0}", card[i].CardMoney); Console.WriteLine("============================"); Welcome();//调用欢迎菜单,返回主菜单 break; } } else { Console.WriteLine("============================"); Console.WriteLine("对不起你输入的密码有误!"); Console.WriteLine("============================"); break; } } } if (flag == false) { Console.WriteLine("对不起!没检测到该卡"); } }
转账的方法”难点”(这块可能要花大量时间理解if结构嵌套关系太多)TransferMoney()
public void TransferMoney() { Console.WriteLine("============================"); Console.WriteLine("这里是转账"); Console.WriteLine("============================"); Console.WriteLine("请输入转出卡卡号"); int outnum = int.Parse(Console.ReadLine()); bool flag = false;//默认转出卡不存在 bool outCardFlag = false;//默认转入卡不存在 int type = 0; foreach (Card card1 in card) { if (card1!= null) { if (card1.CardNumber.Equals(outnum)) { flag = true; Console.WriteLine("请输入转出卡密码"); string outpwd = Console.ReadLine(); if (card1.CardPwd.Equals(outpwd)) //判断密码是否一致 { //用户名 密码均正确,可以执行后续内容 Console.WriteLine("请输入转入卡卡号"); int intnum = int.Parse(Console.ReadLine()); foreach (Card card2 in card) { if (card2 != null) { if (card2.CardNumber.Equals(intnum)) //判断转入卡是否存在 { type = 1; //存在,可以提示输入转账金额 Console.WriteLine("请输入转账金额"); int money = Convert.ToInt32(Console.ReadLine()); if (money <= card1.CardMoney) //合法 { while (money % 100 != 0) //不是面值100的 { Console.WriteLine("============================"); Console.WriteLine("您输入的不合法"); Console.WriteLine("请输入转账金额"); Console.WriteLine("============================"); money = Convert.ToInt32(Console.ReadLine()); } //代码执行到这里,证明转账金额合法 //改变双方的余额 card1.CardMoney -= money; card2.CardMoney += money; Console.WriteLine("转账成功!"); outCardFlag = true; Console.WriteLine("============================"); Console.WriteLine("转出卡余额{0}\t转入卡余额{1}", card1.CardMoney, card2.CardMoney); Console.WriteLine("============================"); Welcome();//调用欢迎菜单,返回主菜单 } else { Console.WriteLine("============================"); Console.WriteLine("余额不足!"); Console.WriteLine("============================"); } break; } } } if (outCardFlag == false && type == 0) { Console.WriteLine("============================"); Console.WriteLine("转入卡不存在!"); Console.WriteLine("============================"); } } else { Console.WriteLine("============================"); Console.WriteLine("转出卡密码错误!"); Console.WriteLine("============================"); } break; } } } //出了循环,如果flag还是false,就证明没有该卡! if (flag == false) { Console.WriteLine("============================"); Console.WriteLine("没有该卡"); Console.WriteLine("============================"); } }
查询余额的方法SelectMoney()
public void SelectMoney() { Console.WriteLine("==================="); Console.WriteLine("这里是查询余额"); Console.WriteLine("==================="); Console.WriteLine("请输入账号:"); int number = int.Parse(Console.ReadLine()); bool flag = false; for (int i = 0; i < card.Length; i++) { if (card[i] != null && number.Equals(card[i].CardNumber)) { flag = true; Console.WriteLine("请输入密码:"); string pwd = Console.ReadLine(); if (pwd.Equals(card[i].CardPwd)) { Console.WriteLine("{0},您好!登录成功", card[i].CardName); Console.WriteLine("============================"); Console.WriteLine("目前账户余额为:{0}", card[i].CardMoney); Console.WriteLine("============================"); Welcome();//调用欢迎菜单,返回主菜单 break; } else { Console.WriteLine("============================"); Console.WriteLine("对不起你输入的密码有误!"); Console.WriteLine("============================"); break; } } } if (flag == false) { Console.WriteLine("============================"); Console.WriteLine("对不起!没检测到该卡"); Console.WriteLine("============================"); } }
修改密码的方法ModifyPwd()
public void ModifyPwd() { Console.WriteLine("==================="); Console.WriteLine("这里是修改密码"); Console.WriteLine("==================="); Console.WriteLine("请输入账号:"); int number = int.Parse(Console.ReadLine()); bool flag = false; for (int i = 0; i < card.Length; i++) { if (card[i] != null && number.Equals(card[i].CardNumber)) { flag = true; Console.WriteLine("请输入密码:"); string pwd = Console.ReadLine(); if (pwd.Equals(card[i].CardPwd)) { Console.WriteLine("{0},您好!登录成功", card[i].CardName); Console.WriteLine("请输入你的新密码:"); string newpwd = Console.ReadLine(); Console.WriteLine("请确认你的密码:"); string newpwdone = Console.ReadLine(); if (newpwdone.Equals(newpwd))//判断两次输入的密码是否一致 { //代码执行到这说明密码已经一致 card[i].CardPwd = newpwdone; Console.WriteLine("============================"); Console.WriteLine("修改密码成功!修改后的密码为{0};请牢记密码.", card[i].CardPwd); Console.WriteLine("============================"); Welcome();//调用欢迎菜单,返回主菜单 } else { Console.WriteLine("============================"); Console.WriteLine("对不起!前后密码不一致!未能更改密码:"); Console.WriteLine("============================"); } break; } else { Console.WriteLine("============================"); Console.WriteLine("对不起你输入的密码有误!"); Console.WriteLine("============================"); break; } } } if (flag == false) { Console.WriteLine("============================"); Console.WriteLine("对不起!没检测到该卡"); Console.WriteLine("============================"); } }
退出的方法ExitSystem()
public void ExitSystem() { Console.WriteLine("============================"); Console.WriteLine("谢谢您的使用!"); Console.WriteLine("============================"); }
最后在程序的入口类(Main方法)中调用
static void Main(string[] args) { Bank bank = new Bank();//创建bank对象 bank. EvaluationCard();//调用EvaluationCard()方法.保证前三项有值 bank.Welcome();//调用欢迎菜单的方法,上面代码中功能模块的方法已经在case块中调用 Console.ReadLine(); }
到这终于结束了,希望对刚入门的一些人士有帮助,也在此感谢大家能够看完,感觉写的还可以的支持一下,如若有其他的一些问题,请发送到
我的邮箱:18813091329@163.com.
QQ:2991635691