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("\t\t\t当前账户密码录入错误!");
                                        }
                                    }
                                }
                                    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("\t\t欢迎" + name + "使用中国工商银行自动柜员系统");
        System.out.println("*******************************************************");
        System.out.println("\t\t\t当前账户向"+nameZhuan+"转账"+anyMoney+"元");
        System.out.println("\t\t\t当前账户余额为:" + oneres);
        System.out.println("*******************************************************");
    }

    private static void insureMenu(String name,StringBuffer sbName,int  money) {
        System.out.println("*******************************************************");
        System.out.println("\t\t欢迎" + name + "使用中国工商银行自动柜员系统");
        System.out.println("*******************************************************");
        System.out.println("\t\t\t请确认是否向"+sbName+"转账"+money+"元");
        System.out.println("\t\t\t(“N”表示不确认转账;“Y”表示确认转账。)");
        System.out.println("\t\t\t请输入您的选择:");
        
    }

    private static void transferMenu(String name) {
        System.out.println("*******************************************************");
        System.out.println("\t\t欢迎" + name + "使用中国工商银行自动柜员系统");
        System.out.println("*******************************************************");
        System.out.println("\t\t\t请输入转账金额:");
        
    }

    private static void insertMoney(String name) {

        System.out.println("*******************************************************");
        System.out.println("\t\t欢迎" + name + "使用中国工商银行自动柜员系统");
        System.out.println("*******************************************************");
        System.out.println("\t\t\t请输入取款金额:");

    }

    private static void succedWithdraw(String name, int cmoney, int money) {
        System.out.println("*******************************************************");
        System.out.println("\t\t欢迎" + name + "使用中国工商银行自动柜员系统");
        System.out.println("*******************************************************");
        System.out.println("\t\t\t当前账户取款操作 " + cmoney + "成功!");
        System.out.println("\t\t\t当前账户余额为:" + money);
        System.out.println("*******************************************************");
    }

    private static void succeedMenu(String name) {

        System.out.println("*******************************************************");
        System.out.println("\t\t欢迎" + name + "使用中国工商银行自动柜员系统");
        System.out.println("*******************************************************");
        System.out.println("\t\t\t当前账户密码修改成功!");
        System.out.println("*******************************************************");
    }

    private static void doWithdraw() {

    }// 实行取款

    // 查询余额
    private static void checkMoney(int money, String name) {
        System.out.println("*******************************************************");
        System.out.println("\t\t欢迎" + 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("\t\t欢迎" + name + "使用中国工商银行自动柜员系统");
        System.out.println("*******************************************************");
        System.out.println("您的余额为:" + money);
        System.out.println("*******************************************************");

    }

    // 修改密码
    private static void changePassword(String name) {
        System.out.println("*******************************************************");
        System.out.println("\t\t欢迎" + name + "使用中国工商银行自动柜员系统");
        System.out.println("*******************************************************");
        System.out.println("请输入当前密码:");

    }

    // 转账汇率
    private static void transferAccount(String name) {
        System.out.println("*******************************************************");
        System.out.println("\t\t欢迎" + name + "使用中国工商银行自动柜员系统");
        System.out.println("*******************************************************");
        System.out.println("请输入转账账户:");
    }

    // 取款
    private static void withdraw(String name, double sum) {
        System.out.println("*******************************************************");
        System.out.println("\t\t欢迎" + name + "使用中国工商银行自动柜员系统");
        System.out.println("*******************************************************");
        System.out.println("\t\t\t当前用户每日可支取" + 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("\t\t欢迎" + name + "使用中国工商银行自动柜员系统");
        System.out.println("*******************************************************");
        System.out.println("\t\t\t请输入存款金额:");

    }

    // 主菜单
    public static void showMainMenu() {

        System.out.println("*******************************************************");
        System.out.println("\t\t欢迎使用中国工商银行自动柜员系统");
        System.out.println("*******************************************************");
        System.out.println("\t\t\t请输入您的账号:");
    }

    // 输入密码的菜单
    public static void insertPasswordMenu(String name) {

        System.out.println("*******************************************************");
        System.out.println("\t\t欢迎" + name + "使用中国工商银行自动柜员系统");
        System.out.println("*******************************************************");
        System.out.println("\t\t\t请输入您的密码:");
    }

    // 系统主界面
    public static void showInterFace(String name) {

        System.out.println("*******************************************************");
        System.out.println("\t\t欢迎" + name + "使用中国工商银行自动柜员系统");
        System.out.println("*******************************************************");
        System.out.println("\t\t\t1.存款");
        System.out.println("\t\t\t2.取款");
        System.out.println("\t\t\t3.转账汇款");
        System.out.println("\t\t\t4.修改密码");
        System.out.println("\t\t\t5.查询余额");
        System.out.println("\t\t\t退出请输入‘q’");
        System.out.println("\t\t\t请输入操作数:");
    }

}

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

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

猜你喜欢

转载自www.cnblogs.com/msdog/p/9692318.html