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的各种方法,虽然这不能成为我不学习的理由,但我会尽量都顾及到,现在只有一句话能表达我的内心了吧:路漫漫其修远兮,吾将上下而求索。

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

  • 相关阅读:
    hihoCoder #1062 : 最近公共祖先·一
    hihoCoder #1050 : 树中的最长路
    hihoCoder #1049 : 后序遍历
    108 Convert Sorted Array to Binary Search Tree 将有序数组转换为二叉搜索树
    107 Binary Tree Level Order Traversal II 二叉树的层次遍历 II
    106 Construct Binary Tree from Inorder and Postorder Traversal 从中序与后序遍历序列构造二叉树
    105 Construct Binary Tree from Preorder and Inorder Traversal 从前序与中序遍历序列构造二叉树
    104 Maximum Depth of Binary Tree 二叉树的最大深度
    102 Binary Tree Level Order Traversal 二叉树的层次遍历
    101 Symmetric Tree 判断一颗二叉树是否是镜像二叉树
  • 原文地址:https://www.cnblogs.com/msdog/p/9692318.html
Copyright © 2011-2022 走看看