本课堂要求我们自制一个工商银行的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的各种方法,虽然这不能成为我不学习的理由,但我会尽量都顾及到,现在只有一句话能表达我的内心了吧:路漫漫其修远兮,吾将上下而求索。
未来的我还是需要靠这些来吃饭,所以现在多学习一点,未来的资本就更高一层,所以现在趁我还有精力,还有动力,我会催促自己去学习,