zoukankan      html  css  js  c++  java
  • java课堂测试---ATM机

    本课堂要求我们自制一个工商银行的ATM机系统:虽然是以前没有系统的学过Java,但是毕竟还是有自学的经验。

    以下是我的代码:

    <Account.java>:

     1 package ATM存款机;
     2 //信1705-3班  201736**  **
     3 public class Account {
     4 
     5     private String accountID;//存储学生用户账号
     6     private String accountName;//存储账户的名称
     7     private String operateDate;//存储操作时间,10位字符:2018-09-20
     8     private int operateType;//存储操作账户的类型
     9     //“1”表示存款,“2”表示取款,“3”表示转账汇款,“4”表示修改账户密码,“5”表示查询余额。
    10     private String accountPassword;//用户密码,6位数
    11     private int amount;//操作流水金额
    12     private int accountbalance;//存储账户余额
    13     //账号,姓名,操作日期,密码,流水
    14     public Account(String accountID,String accountName,String operateDate,String accountPassword,int accountbalance) {
    15         this.accountID = accountID;
    16         this.accountPassword = accountPassword;
    17         this.accountName = accountName;
    18         this.operateDate = operateDate;
    19         this.accountbalance = accountbalance;
    20     }
    21     public String getAccountID() {
    22         return accountID;
    23     }
    24     public void setAccountID(String accountID) {
    25         this.accountID = accountID;
    26     }
    27     public String getAccountname() {
    28         return accountName;
    29     }
    30     public void setAccountname(String accountname) {
    31         this.accountName = accountname;
    32     }
    33     public String getOperatedate() {
    34         return operateDate;
    35     }
    36     public void setOperatedate(String operatedate) {
    37         this.operateDate = operatedate;
    38     }
    39     public int getOperatetype() {
    40         return operateType;
    41     }
    42     public void setOperatetype(int operatetype) {
    43         this.operateType = operatetype;
    44     }
    45     public String getAccountpassword() {
    46         return accountPassword;
    47     }
    48     public void setAccountpassword(String accountpassword) {
    49         this.accountPassword = accountpassword;
    50     }
    51     public int getAmount() {
    52         return amount;
    53     }
    54     public void setAmount(int amount) {
    55         this.amount = amount;
    56     }
    57     public String getAccountName() {
    58         return accountName;
    59     }
    60     public void setAccountName(String accountName) {
    61         this.accountName = accountName;
    62     }
    63     public String getOperateDate() {
    64         return operateDate;
    65     }
    66     public void setOperateDate(String operateDate) {
    67         this.operateDate = operateDate;
    68     }
    69     public int getOperateType() {
    70         return operateType;
    71     }
    72     public void setOperateType(int operateType) {
    73         this.operateType = operateType;
    74     }
    75     public String getAccountPassword() {
    76         return accountPassword;
    77     }
    78     public void setAccountPassword(String accountPassword) {
    79         this.accountPassword = accountPassword;
    80     }
    81     public int getAccountbalance() {
    82         return accountbalance;
    83     }
    84     public void setAccountbalance(int accountbalance) {
    85         this.accountbalance = accountbalance;
    86     }
    87 
    88 
    89 }

    <AccountTest.java>:

    package ATM存款机;
    
    //信1705-3班  201736**  **
    import java.util.Scanner;
    
    public class AccountTest {
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            String ID;//输入的账号
            int A = 0;// 判断对错,0为错
            int T = 0;// 正确数
            String password;// 密码
            // 录入数据
            Account account[] = new Account[5];
            account[0] = new Account("20143602", "ms", "2018-09-19", "123456", 2000);
            account[1] = new Account("20143603", "rose", "2018-09-19", "123456", 5000);
            account[2] = new Account("20143604", "jak", "2018-09-19", "123456", 6000);
            account[3] = new Account("20143605", "mark", "2018-09-19", "123456", 3000);
            account[4] = new Account("20143606", "daad", "2018-09-19", "123456", 4000);
            //
            while (true) {
                showMainMenu();//主菜单
                ID = scanner.next();//输入账户
                if (ID.length() != 8) {//判断长度
                    System.out.println("该卡不是银行卡!  ");
                } else {//长度符合
                    for (int i = 0; i < 5; i++) {// 循环寻找是否存在相同的账户
                        if (ID.equals(account[i].getAccountID())) {// 判断相等是否
                            A++;//相等则正确
                            T = i;//把该值的编号赋给T,正确数加1,为下一步做准备
                        }
                    }
                    if (A == 0) {
                        System.out.println("该账号不存在!");
                    } else {//A不等于0
                        System.out.println("输入成功!");
                        String name = account[T].getAccountname();//把姓名赋给name,以后利于调用
                        insertPasswordMenu(name);//输入密码菜单,引用name
                        password = scanner.next();//输入密码
                        int time = 0;//声明次数
                        for (int t = 0; t < 2; t++) {//三次内
                            if (password.equals(account[T].getAccountpassword())) {//密码相等
                                time++;//时间加1
                                // System.out.println(time);//时间测试
                            } else {//错误输出提示
                                System.out.println("输入错误,重新输入:");
                                password = scanner.next();
                            }
                        }
                        if (time != 0) {
                            int B = 0;// 当取款操作为 9或输入N时,B加1并转到主界面
                            while (B == 0) {
                                String choice;//声明选项
                                showInterFace(name);//显示系统主界面
                                choice = scanner.next();
                                if (choice.compareTo("q") == 0)
                                    break;
                                else {
                                    switch (choice) {
                                    case "1": {
                                        int cunMoney;//声明存款钱数
                                        deposit(name);
                                        cunMoney = scanner.nextInt();
                                        if (cunMoney < 0) {
                                            System.out.println("输入金额有误!");
                                        } else {
                                            account[T].setAccountbalance(account[T].getAccountbalance() + cunMoney);
                                            checkCunMoney(account[T].getAccountbalance(), name);
                                        }
                                    }
                                        break;// 存款ok
                                    case "2": {
                                        int  chose;//声明钱总数与选择
                                        double sum = 2;
                                        withdraw(name, sum);
                                        chose = scanner.nextInt();
                                        if (chose == 9) {
                                            System.out.println("退卡成功!");
                                            B++;
                                            break;
                                        }
                                        if (chose > 0 || chose < 9) {
                                            switch (chose) {
                                            case 1: {
                                                int money = account[T].getAccountbalance();
                                                int res = money - 100;
                                                sum=sum-0.01;
                                                if (res < 0) {
                                                    System.out.println("账户余额不足!");
                                                } else {
                                                    account[T].setAccountbalance(res);
                                                    succedWithdraw(name, 100, res);
                                                }
                                            };
                                                break;
                                            case 2: {
                                                int money = account[T].getAccountbalance();
                                                int res = money - 500;
                                                sum=sum-0.05;
                                                if (res < 0) {
                                                    System.out.println("账户余额不足!");
                                                } else {
                                                    account[T].setAccountbalance(res);
                                                    succedWithdraw(name, 500, res);
                                                }
                                            };
                                                break;
                                            case 3: {
                                                int money = account[T].getAccountbalance();
                                                int res = money - 1000;
                                                sum=sum-0.1;
                                                if (res < 0) {
                                                    System.out.println("账户余额不足!");
                                                } else {
                                                    account[T].setAccountbalance(res);
                                                    succedWithdraw(name, 1000, res);
                                                }
                                            };
                                                break;
                                            case 4: {
                                                int money = account[T].getAccountbalance();
                                                int res = money - 1500;
                                                sum=sum-0.15;
                                                if (res < 0) {
                                                    System.out.println("账户余额不足!");
                                                } else {
                                                    account[T].setAccountbalance(res);
                                                    succedWithdraw(name, 1500, res);
                                                }
                                            };
                                                break;
                                            case 5: {
                                                int money = account[T].getAccountbalance();
                                                int res = money - 2000;
                                                sum=sum-0.2;
                                                if (res < 0) {
                                                    System.out.println("账户余额不足!");
                                                } else {
                                                    account[T].setAccountbalance(res);
                                                    succedWithdraw(name, 2000, res);
                                                }
                                            };
                                                break;
                                            case 6: {
                                                int money = account[T].getAccountbalance();
                                                int res = money - 5000;
                                                sum=sum-0.5;
                                                if (res < 0) {
                                                    System.out.println("账户余额不足!");
                                                } else {
                                                    account[T].setAccountbalance(res);
                                                    succedWithdraw(name, 5000, res);
                                                }
                                            };
                                                break;
                                            case 7: {
                                                insertMoney(name);
                                                int anyMoney = scanner.nextInt();
                                                int money = account[T].getAccountbalance();
                                                int res = money - anyMoney;
                                                sum=sum-anyMoney/10000.0000;
                                                if (res < 0) {
                                                    System.out.println("账户余额不足!");
                                                } else {
                                                    account[T].setAccountbalance(res);
                                                    succedWithdraw(name, anyMoney, res);
                                                }
                                            };
                                                
                                                break;
                                            case 8:
                                                ;
                                                break;
                                            }
                                        }
                                        doWithdraw();//
                                    }
                                        break;// 取款
                                    case "3": {
                                        String zzname;
                                        int C = 0;// 与A相同
                                        int Z=0;//转账账户编号
                                        transferAccount(name);//转账菜单
                                        zzname = scanner.next();//转账人账号
                                        for (int i = 0; i < 5; i++) {// account[i].getAccountID()
                                            if (zzname.equals(account[i].getAccountID())) {// 判断相等是否
                                                C++;
                                                Z=i;
                                            }
                                        }
                                        if(zzname.equals(account[T].getAccountID())) {
                                            C++;
                                        }
                                        if (C == 0) {
                                            System.out.println("该账号不存在!");
                                        }
                                        else if(C==2) {
                                            System.out.println("您不能向自己转账!");
                                        }
                                        else {
                                            transferMenu(name);
                                            StringBuffer nameZhuan;//声明被转账人姓名
                                            int anyMoney = scanner.nextInt();//输入被转账钱数
                                            int money = account[T].getAccountbalance();//将转账人的钱数赋值
                                            int resOne = money - anyMoney;//查询余额
                                            if (resOne < 0) {
                                                System.out.println("账户余额不足!");
                                            } else {//余额充足
                                            
                                                nameZhuan=new StringBuffer(account[Z].getAccountName());//
                                                nameZhuan.replace(0,1, "*");//首字母变*
                                                insureMenu(name,nameZhuan,anyMoney);
                                                String result=scanner.next();
                                                if(result.compareTo("N")==0) {
                                                    B++;
                                                    break;
                                                }else {
                                                    account[Z].setAccountbalance(account[Z].getAccountbalance()+anyMoney);//被转账人的余额
                                                    account[T].setAccountbalance(resOne);//转账人的余额
                                                    succeedTransfer(name,nameZhuan,anyMoney,resOne);//成功界面
                                                }
                                                    
                                            }
                                        }
                                    }
                                        break;// 转账汇率
                                    case "4": {
                                        String oldPassword, newPasswordOne, newPasswordTwo;
                                        changePassword(name);
                                        oldPassword = scanner.next();
                                        String passw = account[T].getAccountPassword();
                                        while (oldPassword.compareTo(passw) == 0) {
                                            System.out.println("请输入修改密码:");
                                            newPasswordOne = scanner.next();
                                            System.out.println("请输入确认密码:");
                                            newPasswordTwo = scanner.next();
                                            if (newPasswordOne.equals(newPasswordTwo)) {
                                                account[T].setAccountpassword(newPasswordOne);
                                                succeedMenu(name);
                                                break;
                                            } else {
                                                System.out.println("			当前账户密码录入错误!");
                                            }
                                        }
                                    }
                                        break;// 修改密码 ok
                                    case "5":
                                        checkMoney(account[T].getAccountbalance(), name);
                                        break;// 查询余额 ok
    
                                    }
                                }
                            }
                        } // if
    
                    } // else
                }
            } // while
    
        }// main
    
        private static void succeedTransfer(String name, StringBuffer nameZhuan, int anyMoney, int oneres) {
            System.out.println("*******************************************************");
            System.out.println("		欢迎" + name + "使用中国工商银行自动柜员系统");
            System.out.println("*******************************************************");
            System.out.println("			当前账户向"+nameZhuan+"转账"+anyMoney+"元");
            System.out.println("			当前账户余额为:" + oneres);
            System.out.println("*******************************************************");
        }
    
        private static void insureMenu(String name,StringBuffer sbName,int  money) {
            System.out.println("*******************************************************");
            System.out.println("		欢迎" + name + "使用中国工商银行自动柜员系统");
            System.out.println("*******************************************************");
            System.out.println("			请确认是否向"+sbName+"转账"+money+"元");
            System.out.println("			(“N”表示不确认转账;“Y”表示确认转账。)");
            System.out.println("			请输入您的选择:");
            
        }
    
        private static void transferMenu(String name) {
            System.out.println("*******************************************************");
            System.out.println("		欢迎" + name + "使用中国工商银行自动柜员系统");
            System.out.println("*******************************************************");
            System.out.println("			请输入转账金额:");
            
        }
    
        private static void insertMoney(String name) {
    
            System.out.println("*******************************************************");
            System.out.println("		欢迎" + name + "使用中国工商银行自动柜员系统");
            System.out.println("*******************************************************");
            System.out.println("			请输入取款金额:");
    
        }
    
        private static void succedWithdraw(String name, int cmoney, int money) {
            System.out.println("*******************************************************");
            System.out.println("		欢迎" + name + "使用中国工商银行自动柜员系统");
            System.out.println("*******************************************************");
            System.out.println("			当前账户取款操作 " + cmoney + "成功!");
            System.out.println("			当前账户余额为:" + money);
            System.out.println("*******************************************************");
        }
    
        private static void succeedMenu(String name) {
    
            System.out.println("*******************************************************");
            System.out.println("		欢迎" + name + "使用中国工商银行自动柜员系统");
            System.out.println("*******************************************************");
            System.out.println("			当前账户密码修改成功!");
            System.out.println("*******************************************************");
        }
    
        private static void doWithdraw() {
    
        }// 实行取款
    
        // 查询余额
        private static void checkMoney(int money, String name) {
            System.out.println("*******************************************************");
            System.out.println("		欢迎" + name + "使用中国工商银行自动柜员系统");
            System.out.println("*******************************************************");
            System.out.println("您的余额为:" + money);
            System.out.println("*******************************************************");
    
        }
    
        // 存款后余额
        private static void checkCunMoney(int money, String name) {
            System.out.println("*******************************************************");
            System.out.println("		欢迎" + name + "使用中国工商银行自动柜员系统");
            System.out.println("*******************************************************");
            System.out.println("您的余额为:" + money);
            System.out.println("*******************************************************");
    
        }
    
        // 修改密码
        private static void changePassword(String name) {
            System.out.println("*******************************************************");
            System.out.println("		欢迎" + name + "使用中国工商银行自动柜员系统");
            System.out.println("*******************************************************");
            System.out.println("请输入当前密码:");
    
        }
    
        // 转账汇率
        private static void transferAccount(String name) {
            System.out.println("*******************************************************");
            System.out.println("		欢迎" + name + "使用中国工商银行自动柜员系统");
            System.out.println("*******************************************************");
            System.out.println("请输入转账账户:");
        }
    
        // 取款
        private static void withdraw(String name, double sum) {
            System.out.println("*******************************************************");
            System.out.println("		欢迎" + name + "使用中国工商银行自动柜员系统");
            System.out.println("*******************************************************");
            System.out.println("			当前用户每日可支取" + sum + "万元.");
            System.out.println("1.100元");
            System.out.println("2.500元");
            System.out.println("3.1000元");
            System.out.println("4.1500元");
            System.out.println("5.2000元");
            System.out.println("6.5000元");
            System.out.println("7.其他金额");
            System.out.println("8.返回");
            System.out.println("9.退卡");
            System.out.println("*******************************************************");
    
        }
    
        // 存款
        private static void deposit(String name) {
            System.out.println("*******************************************************");
            System.out.println("		欢迎" + name + "使用中国工商银行自动柜员系统");
            System.out.println("*******************************************************");
            System.out.println("			请输入存款金额:");
    
        }
    
        // 主菜单
        public static void showMainMenu() {
    
            System.out.println("*******************************************************");
            System.out.println("		欢迎使用中国工商银行自动柜员系统");
            System.out.println("*******************************************************");
            System.out.println("			请输入您的账号:");
        }
    
        // 输入密码的菜单
        public static void insertPasswordMenu(String name) {
    
            System.out.println("*******************************************************");
            System.out.println("		欢迎" + name + "使用中国工商银行自动柜员系统");
            System.out.println("*******************************************************");
            System.out.println("			请输入您的密码:");
        }
    
        // 系统主界面
        public static void showInterFace(String name) {
    
            System.out.println("*******************************************************");
            System.out.println("		欢迎" + name + "使用中国工商银行自动柜员系统");
            System.out.println("*******************************************************");
            System.out.println("			1.存款");
            System.out.println("			2.取款");
            System.out.println("			3.转账汇款");
            System.out.println("			4.修改密码");
            System.out.println("			5.查询余额");
            System.out.println("			退出请输入‘q’");
            System.out.println("			请输入操作数:");
        }
    
    }

    这就是我做了四天的一个ATM机的代码。功能除了与文件有关的地方没有完成,其他的功能应该都是完成了的。

    通过做这个ATM机的代码,我了解到了Java语言的魅力,它有很多方法,虽然我现在学到的还很少,但我尽量在学习。每次在遇到一个新的问题时,我都会先去思考如何简便的做出来,(当然是在我的知识范围内),当然我也会去网上查找一些新的方法,就如我的这个代码中,就有很多我在这几天刚刚学到方法:如StringBuffer类以及它的replace(int start,int end,String replace),这个代替String类中从start到end的字符,当然还要把String类转化为String Buffer类,这就是我们经常见到的信息保护的一种了。

    从第一次接触Java并安装好写我的第一个HelloWorld到现在已经有一个多月了吧!这其中的艰辛与困难是只有自己一步步走来的人才懂得,就当时安装eclipse时,就有数不尽的难题,就如在自己使用eclipse时,时不时冒出来一个框框,由于是全英文,自己也看不懂为啥,就去度娘,度娘出来的结果自己也只能一个一个筛选是不是自己的问题,然后跟着步骤一步一步的解决,往往是能解决问题的,但有时候的问题是版本问题或缺了啥东西,或是自己的软件或电脑问题,有事就要重新安装,重新安装就意味着卸载,从零开始,好在看了几个名师的视频后注意到在安装时应该注意的问题,加上对这款软件的一点一点的了解后,终于不用卸载了。

    代码是建立在C与C++的基础上的,但是输入输出照样有很大的改变,尤其是输入,在刚开始的时候,我只会输出语句,这应该就是为什么helloworld很出名了吧。在这次的代码考试中我更是加深了对Java的了解,对这个语言有了更深的兴趣,在我们这一堆人中,已经有人开始用Java写界面了,我的下一步是将文件写入,并熟练地使用文件的各种方法,相信文件也是有不少方法等我去学习的。

    在这个测试中我已经充分的了解到了自己的不足,就是对基础的掌握不够,如static,这个将一个函数或数据声明为静态类型的符号,我掌握的就是很差,所以在我写代码的时候,尽量先不去写关于static的函数与代码,我会在未来的学习中尽量补全自己的不足,毕竟基础知识一大片,完全补齐需要耗费很大的精力,而我还要学习Java的各种方法,虽然这不能成为我不学习的理由,但我会尽量都顾及到,现在只有一句话能表达我的内心了吧:路漫漫其修远兮,吾将上下而求索。

    未来的我还是需要靠这些来吃饭,所以现在多学习一点,未来的资本就更高一层,所以现在趁我还有精力,还有动力,我会催促自己去学习,

  • 相关阅读:
    Ubuntu14.04安装ROS Indigo
    STM32F103移植uCOSIII始终卡在PendSV或Systick处解决办法
    STM32F103移植uCOSIII始终卡在PendSV或Systick处解决办法
    WIN7下PS/2等键盘失灵无法使用的解决办法--实测有效
    WIN7下PS/2等键盘失灵无法使用的解决办法--实测有效
    在altium designer9 等中使用protell99se的如0805,0603等PCB封装库
    在altium designer9 等中使用protell99se的如0805,0603等PCB封装库
    VB将输入文本框的数字分割并按十六进制发送
    Windows 10同步时间的方法
    maven安装cucumber的pom文件设置
  • 原文地址:https://www.cnblogs.com/msdog/p/9692318.html
Copyright © 2011-2022 走看看