• Bank,我只是来完成作业的


    写这个Bank我需要有:开户,取款,存款,转账,查询余额,退出功能。

    这样我需要有两个类:BankUser。一个Main入口。

    先看这个User,他定义了各个需要的属性(字段)和字段的属性(虽然在这里并没什么卵用,不过这样也显示我也是知道有这个的嘛)

    class User
        {
            //初始化账户姓名,密码,身份证号,存款余额,账号
            private string _name;
            private int _passWord;
            private string _idName;
            private double _balance;
            private string _account;
            public string Name
            {
                get { return _name; }
                set { _name = value; }
            }
            public int PassWord
            {
                get { return _passWord; }
                set { _passWord = value; }
            }
            public string IdName
            {
                get { return _idName; }
                set { _idName = value; }
            }
            public double Balance
            {
                get { return _balance; }
                set { _balance = value; }
            }
            public string Account
            {
                get { return _account; }
                set { _account = value; }
            }
        }

    好了,下面看一下关键的Bank类,他里面包含了各个方法,我最喜欢方法了,方法能让很多不可能变成可能,你值得拥有。

    Bank类中首先我们new出一个User的对象数组,然后定义一个方法存储三个客户信息:

     User users=new User();
     User[] userGroup = new User[10];

    然后开始写欢迎菜单和选项(开户,存款,取款,转账,查询余额,退出),你懂得,switch结构:

      //初始化三个用户信息
            public void Initial()
            {
                userGroup[0] = new User();
                userGroup[0].Name = "王丽丽";
                userGroup[0].Account = "21005061989080818";
                userGroup[0].IdName = "210050619890808185";
                userGroup[0].Balance = 200000;
                userGroup[0].PassWord = 123456;
                userGroup[1] = new User();
                userGroup[1].Name = "张莹莹";
                userGroup[1].Account = "51001061989123112";
                userGroup[1].IdName = "510010619891231127";
                userGroup[1].Balance = 400000000;
                userGroup[1].PassWord = 283868;
                userGroup[2] = new User();
                userGroup[2].Name = "刘华";
                userGroup[2].Account = "41020719890405127";
                userGroup[2].IdName = "410207198904051271";
                userGroup[2].Balance = 5600000;
                userGroup[2].PassWord = 000000;
    
            }
            //菜单
            public void showMenu()
            {
                int temp = 0;
                do
                {
                    Console.WriteLine("====================欢迎使用自动银行服务========================");
                    Console.WriteLine("1:开户	2:存款	3:取款	4:转账	5:查询余额	6:退出");
                    Console.WriteLine("================================================================");
                    string result = Console.ReadLine();
                    switch (result)
                    {
                        case "1":
                            newUser();
                            break;
                        case "2":
                            saveMoney();
                            break;
                        case "3":
                            getMoney();
                            break;
                        case "4":
                            transferAccount();
                            break;
                        case "5":
                            getBalance();
                            break;
                        case "6":
                            temp = -1;
                            break;
                        default:
                            Console.WriteLine("输入错误,请检查重输.");
                            break;
                    }
                } while (temp==0);
            }

    好了准备工作做完了,我分析了一下开户,存款,取款,转账,查询。发现很多都需要遍历User对象数组查找账号(和对应的下标),然后判定密码。好了,这里需要两个方法:judgeAccount(判定账号);judgePWD(判定密码);如下:

    //输入账号判定,返回-1或-2则为没有该账号,返回i值(0或正整数)则为有该账号,并且账号的下标为i
            public int judgeAccount(string account)
            {
                int i = -1;
                bool result = false;
                foreach (User item in userGroup)
                {
                    if (item==null&&result==false)
                    {
                        i = -1;
                        break;
                    }
                    else if (item==null&&result==true)
                    {
                        break;
                    }
                    else 
                    {
                        i += 1;
                        if (account.Equals(item.Account))
                        {
                            result = true;                    //判定有相等值则赋给result为true
                            break;
                        }
                    }
                }
                return i;
            }
            //密码判定,返回-1为密码错误,返回0位密码正确
            public int judgePWD(int passWord,int num)
            {
                if (passWord == userGroup[num].PassWord)
                {
                    return 0;
                }
                else
                {
                    return -1;
                }
            }

    到这里就要开始真正的关键的主要的必须的:开户(newUser();),存款(saveMoney()),取款(getMoney()),转账(transferAccount()),查询余额(getBalance())方法了:

     开户::::::::::::::::::::::::::::::::::::::

    //开户
            public void newUser()
            {
                int i = 0;
                foreach (User item in userGroup)
                {
                    if (item!=null)
                    {
                        i += 1;
                    }
                    else
                    {
                        break;
                    }
                }
                userGroup[i] = new User();
                Console.Write("请输入姓名:");
                userGroup[i].Name = Console.ReadLine();
                Console.Write("请输入身份证号:");
                userGroup[i].IdName = Console.ReadLine();
                userGroup[i].Account = userGroup[i].IdName;
                Console.WriteLine("您的卡号已随机生成,请记好:{0}", userGroup[i].Account);
                do
                {
                    Console.Write("请输入密码:");
                    int result = int.Parse(Console.ReadLine());
                    Console.Write("请再次输入密码:");
                    userGroup[i].PassWord = int.Parse(Console.ReadLine());
                    if (result.Equals(userGroup[i].PassWord) == false)
                    {
                        Console.WriteLine("两次输入密码不一致");
                        continue;
                    }
                    break;
                } while (true);
                Console.Write("请输入存入的金额:");
                userGroup[i].Balance = double.Parse(Console.ReadLine());
                Console.WriteLine("用户名:{0}  账户:{1}  身份证号:{2}  存款余额:{3}", userGroup[i].Name, user         Group[i].Account, userGroup[i].IdName, userGroup[i].Balance);
            }

    完美的代码啊!越看越喜欢。先用foreach找到User对象数组中空的一组元素下标(i),然后从控制台录入信息。存入数组,完成,完美。

    开始存款了,最喜欢的还是这个过程,想存多少就存多少,都是我的(钱嘛,就是个数)

    //存款
            public void saveMoney()
            {
                Console.WriteLine("请输入存入账号:");
                int xiabiao=judgeAccount(Console.ReadLine());
                if (xiabiao < 0)
                {
                    Console.WriteLine("没有该账号,请重新输入");
                    saveMoney();
                }
                do
                {
                    Console.WriteLine("请输入密码:");
                    int result=judgePWD(int.Parse(Console.ReadLine()), xiabiao);
                    if (result == 0)
                    {
                        Console.WriteLine("请输入存入金额:");
                        double save= double.Parse(Console.ReadLine());
                        userGroup[xiabiao].Balance += save;
                        Console.WriteLine("用户名:{0}  账户:{1} 存入金额{2} 存款余额:{3}", userGroup[xiabiao]              .Name, userGroup[xiabiao].Account,save, userGroup[xiabiao].Balance);
                        break;
                    }
                    else
                    {
                        Console.WriteLine("密码错误,请检查重输!");
                        continue;
                    }
                } while (true);
            }

    这里引用了密码判定(judgeAcount();),密码判定(judgePWD();),然后在数组中找到对应下标的元素(余额),加上存款项金额。完成,不完美的地方就是这里不应该有密码判定的,我认为存钱其实不用输密码,不过不想改了。

    取款了

       //取款
            public void getMoney()
            {
                Console.Write("请输入账号:");
                int xiabiao=judgeAccount(Console.ReadLine());
                if (xiabiao<0)
                {
                    Console.WriteLine("没有该账号,请检查重输");
                    getMoney();
                }
                
                do
                {
                    Console.Write("请输入密码:");
                    int passWord = int.Parse(Console.ReadLine());
                    int result = judgePWD(passWord, xiabiao);
                    if (result<0)
                    {
                        Console.WriteLine("密码错误,请检查重输");
                        continue;
                    }
                    break;
                } while (true);
                double getmoney;
                do
                {
                    Console.WriteLine("账户余额:" + userGroup[xiabiao].Balance);
                    Console.Write("请输入取款金额(本机只允许取整百人民币:");
                    getmoney = double.Parse(Console.ReadLine());
                    if (getmoney%100!=0)
                    {
                        Console.WriteLine("取款金额不是整百,请重新取款");
                        continue;
                    }
                    if (getmoney>userGroup[xiabiao].Balance)
                    {
                        Console.WriteLine("取款金额大于余额,请重新输入");
                        continue;
                    }
                    break;
                } while (true);
                userGroup[xiabiao].Balance = userGroup[xiabiao].Balance - getmoney;
                Console.WriteLine("账号:{0}	本次成功取款:{1}	当前余额:{2}", userGroup[xiabiao].Account, getmoney, userGroup[xiabiao].Balance);
            }

    取款同存款大概的方式是一样的,只是一个加一个减。完美!

    开始转账了:

    //转账
            public void transferAccount()
            {
               //转出
                int zhuanchuxiabiao;
                double getmoney;
                do
                {
                    Console.Write("请输入转出账号:");
                    zhuanchuxiabiao = judgeAccount(Console.ReadLine());
                    if (zhuanchuxiabiao < 0)
                    {
                        Console.WriteLine("没有该账号,请检查重输");
                        continue;
                    }
                    Console.Write("请输入密码:");
                    int passWord = int.Parse(Console.ReadLine());
                    int result = judgePWD(passWord, zhuanchuxiabiao);
                    if (result < 0)
                    {
                        Console.WriteLine("密码错误,请检查重输");
                        continue;
                    }
                    break;
                } while (true);
                do
                {
                    Console.WriteLine("账户余额:" + userGroup[zhuanchuxiabiao].Balance);
                    Console.Write("请输入转出金额:");
                    getmoney = double.Parse(Console.ReadLine());
                    if (getmoney > userGroup[zhuanchuxiabiao].Balance)
                    {
                        Console.WriteLine("转出金额大于余额,请重新输入");
                        continue;
                    }
                    break;
                } while (true);
                //转入
                int zhuanruxiabiao;
                do
                {
                    Console.WriteLine("请输入转入账号:");
                    zhuanruxiabiao = judgeAccount(Console.ReadLine());
                    if (zhuanruxiabiao < 0)
                    {
                        Console.WriteLine("没有该账号,请重新输入");
                        continue;
                    }
                    userGroup[zhuanchuxiabiao].Balance = userGroup[zhuanchuxiabiao].Balance - getmoney;
                    userGroup[zhuanruxiabiao].Balance += getmoney;
                    Console.WriteLine("账号:{0}	本次成功转出:{1}	当前余额:{2}", userGroup[zhuanchuxiabiao].            Account, getmoney, userGroup[zhuanchuxiabiao].Balance);
                    Console.WriteLine("转入用户名:{0}	转入账户:{1}	转入金额{2}", userGroup[zhuanruxiabiao].            Name, userGroup[zhuanruxiabiao].Account,getmoney);
                    break;
                } while (true);
            }

    转账就是把取款和存款合到一块,很简单。Perfect!

    查询余额开始了

     //查询余额
            public void getBalance()
            {
                int xiabiao;
                Console.Write("请输入查询的账户;");
                do
                {
                    xiabiao = judgeAccount(Console.ReadLine());
                    if (xiabiao < 0)
                    {
                        Console.WriteLine("没有该账号,请重新输入");
                        continue;
                    }
                    break;
                } while (true);
                do
                {
                    Console.Write("请输入密码:");
                    int passWord = int.Parse(Console.ReadLine());
                    int result = judgePWD(passWord, xiabiao);
                    if (result < 0)
                    {
                        Console.WriteLine("密码错误,请检查重输");
                        continue;
                    }
                    break;
                } while (true);
                Console.WriteLine("用户名:{0}  存款余额:{3}  账户:{1}  身份证号:{2}", userGroup[xiabiao].Name         , userGroup[xiabiao].Account, userGroup[xiabiao].IdName, userGroup[xiabiao].Balance);
            }                

    一个跟取款很相似的方法。你值得拥有!

    下面就是无关大雅的方法了:

    遍历数组:

      //遍历用户信息
            public void showUsers()
            {
                foreach (User item in userGroup)
                {
                    if (item==null)
                    {
                        return;
                    }
                    Console.WriteLine("用户名:{0}  账户:{1}  身份证号:{2}  存款余额:{3}",item.Name,item.Accou            nt,item.IdName,item.Balance);
                }
            }

    到这里Bank类中方法就完了。该Main入口了上场了。

     static void Main(string[] args)
            {
                Bank bank = new Bank();
                bank.Initial();             //初始化三个用户
                bank.showUsers();           //遍历对象数组(展示三个用户)
                bank.showMenu();            //菜单项,选项菜单
                bank.showUsers();           //再次遍历数组(查看操作完成后数据的变化)
                Console.ReadLine();
            }

    完美,遇见了谁!

  • 相关阅读:
    R vs Python:构建data.frame、读取csv与统计描述
    R语言学习笔记:使用reshape2包实现整合与重构
    Python学习笔记:lambda表达式
    Python学习笔记:startswith & endswith 判断开头结尾是否为指定字符串
    Python学习笔记:一手漂亮的Python函数
    电信行业数据挖掘分析
    Oracle学习笔记:实现select top N的方法
    Oracle学习笔记:ORA-22992 cannot use LOB locators selected from remote tables
    Linux学习笔记:ls和ll命令
    vb常用命名空间
  • 原文地址:https://www.cnblogs.com/who-else/p/4912836.html
Copyright © 2020-2023  润新知