• 我们为之奋斗过的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}		银行账户:{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}	转入卡余额{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

  • 相关阅读:
    URAL 1658. Sum of Digits(DP)
    HDU 4433 locker(SPFA+DP)
    Vijos 1092 全排列
    POJ 1141 Brackets Sequence(DP)
    HDU 4597 Play Game
    HDU 1693 Eat the Trees(插头DP)
    USACO 5.4 Twofive(DP)
    USACO 5.5 Hidden Password(搜索+优化)
    USACO 5.5 Picture(周长并)
    USACO 5.4 Telecowmunication(最大流+枚举)
  • 原文地址:https://www.cnblogs.com/hyjj/p/4913564.html
Copyright © 2020-2023  润新知