第一次Java测试及感触(2018.9.20)
在本周周四进行了java测试,有一点感触,测试的题目是用Java实现一个ATM机的管理系统。之前老师提前给我们样卷,结果考试的时候换了题型,瞬间脑子空白,一时不知道怎么下手,因为暑假虽然涉猎了java,但是没有深入系统地进行学习,导致了对很多知识一知半解,遇到很多问题束手无策。经过三个钟头的挣扎,只完成了一小部分的代码,只有简单的set()get()函数,以及简单的输出界面,能够输出ATM的初始界面,能够输入银行卡号,数据库也只是建立了一个大概。
后来在课后又对代码进行了断断续续的修改,对从网上找来的数据库代码段进行了较大修改,然后简单的补了其他部分的程序。
通过这次测试,我明白了初学者离熟练编写代码还有一段很长的距离,基本数据类型、数组、程序控制语句等都得在练习中熟悉,在之后的几天内,得知有人已经编出了图形窗口界面(为了简便起见我并没有往这方面想),便突然有了斗志,成长路上有这样全心向前的战友相信对我的正面帮助会很大。
以后每天要抽出时间进行代码习题的练习,熟能生巧,同时也要多读相关书籍,争取能在期末考试得到自己想要的结果。
account类
package zuoye;
//信1705-3 20173526 赵剑峰
import java.io.IOException; import java.io.Serializable; import java.util.Scanner; import java.util.ArrayList; public class Account implements Serializable { private String accountID;//账户 private String accountname;//姓名 private String operatedate;//时间 private int operatetype;//操作类型 private String accountpassword;//密码 private int accountbalance;//余额 private int amount;//流水金额 public String getaccountID() { return accountID; } public String getaccountname() { return accountname; } public String getoperatedate() { return operatedate; } public int getoperatetype() { return operatetype; } public String getaccountpassword() { return accountpassword; } public int getaccountbalance() { return accountbalance; } public int getamount() { return amount; } public void setaccountID(String accountID) { this.accountID=accountID; } public void setaccountname(String accountname) { this.accountname=accountname; } public void setoperatedate(String operatedate) { this.operatedate=operatedate; } public void setoperatetype(int operatetype) { this.operatetype=operatetype; } public void setaccountpassword(String accountpassword) { this.accountpassword=accountpassword; } public void setaccountbalance(int accountbalance) { this.accountbalance=accountbalance; } public void setamount(int amount) { this.amount=amount; } public Account(String accountID,String accountname,String operatedate,int operatetype,String accountpassword,int accountbalance,int amount) { this.accountID=accountID; this.accountname=accountname; this.operatedate=operatedate; this.operatetype=operatetype; this.accountpassword=accountpassword; this.accountbalance=accountbalance; this.amount=amount; } public Account(){} public String tostring() { return "id="+accountID+",accountname="+accountname+",accountpassword="+accountpassword+",accountbalance="+accountbalance; } public String tostring1() { return "id="+accountID+",accountname="+accountname+",operatedate="+operatedate+",operatetype="+operatetype+",aamount="+amount; } public static void main(String[] args) throws IOException { AccountManager a=new AccountManager(); ArrayList<Account> people=new ArrayList<Account>(); ArrayList<Account> list=new ArrayList<Account>(); a.show(people); a.enterID(people,list); } }
AccountManager类
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Scanner; import java.util.ArrayList; import java.util.Date; public class AccountManager { public void addAccount(ArrayList<Account> people) { Scanner in = new Scanner(System.in); Account ac=new Account(); System.out.println("请输入账户的账号、名称、密码、账户余额"); String accountID=in.next(); String accountname=in.next(); String accountpassword=in.next(); int accountbalance=in.nextInt(); ac.setaccountID(accountID); ac.setaccountname(accountname); ac.setaccountpassword(accountpassword); ac.setaccountbalance(accountbalance); people.add(ac); File file = new File("accountinformation.txt"); // 对象输出流 ObjectOutputStream out = null; try { // 将数组对象写入文件 out = new ObjectOutputStream(new FileOutputStream(file)); out.writeObject(people); out.flush(); out.close(); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void show(ArrayList<Account> people) { File file = new File("accountinformation.txt"); ObjectInputStream in = null; try { in = new ObjectInputStream(new FileInputStream(file)); people = (ArrayList<Account>) in.readObject(); for (int i=0;i<people.size();i++) { Account s=people.get(i); System.out.println(s.tostring()); } }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public void enterID(ArrayList<Account> people,ArrayList<Account> list) { int a=1; int flag=-1; while(a==1) { System.out.println("**************************************************"); System.out.println(" 欢迎使用中国工商银行自动柜员系统"); System.out.println("请输入您的账号:"); Scanner in = new Scanner(System.in); String ID=in.next(); if(ID.length()!=8) { System.out.println("该卡不是工行卡"); a=1; } File file = new File("accountinformation.txt"); ObjectInputStream oin = null; try { oin = new ObjectInputStream(new FileInputStream(file)); people = (ArrayList<Account>) oin.readObject(); for (int i=0;i<people.size();i++) { Account s=people.get(i); if(s.getaccountID().equals(ID)) { flag=i;a=1; } } if(flag==-1) { System.out.println("该账号不存在"); } else { a=2; } }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } enterpassword(people,flag,list); } public void enterpassword(ArrayList<Account> people,int i,ArrayList<Account> list) { System.out.println("**************************************************"); System.out.println(" 欢迎使用中国工商银行自动柜员系统"); System.out.println("请输入您的密码:"); Account s=new Account(); File file = new File("accountinformation.txt"); ObjectInputStream oin = null; try { oin = new ObjectInputStream(new FileInputStream(file)); people = (ArrayList<Account>) oin.readObject(); s=people.get(i); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } for(int j=0;j<3;j++) { Scanner in = new Scanner(System.in); String password=in.next(); if(s.getaccountpassword().equals(password)) { enter(s.getaccountID(),people,list); } else System.out.println("密码录入错误"); } System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理"); } public void enter(String a,ArrayList<Account> people,ArrayList<Account> list) { System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"使用中国工商银行自助柜员系统"); System.out.println("1、存款;"); System.out.println("2、取款;"); System.out.println("3、转账汇款;"); System.out.println("4、修改密码;"); System.out.println("5、查询余额;"); System.out.println("请输入选择:"); Scanner in = new Scanner(System.in); int operatetype=in.nextInt(); switch(operatetype) { case 1:deposit(a,people,list);break; case 2:withdrawal(a,people,list);break; case 3:transfer(a,people,list);break; case 4:alter(a,people,list);break; case 5:seclect(a,people,list);break; } } public void deposit(String a,ArrayList<Account> people,ArrayList<Account> list) { System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println("请输入存款金额:"); Scanner in = new Scanner(System.in); String money=in.next(); int flag=0; if(money=="q") { enterID(people,list); } int num=Integer.valueOf(money); File file = new File("accountinformation.txt"); ObjectInputStream oin = null; try { oin = new ObjectInputStream(new FileInputStream(file)); people = (ArrayList<Account>) oin.readObject(); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } Account ac=new Account(); for(int i=0;i<people.size();i++) { ac=people.get(i); if(ac.getaccountID().equals(a)) { flag=i; break; } } ac.setaccountbalance(ac.getaccountbalance()+num); people.set(flag,ac); System.out.println("当前账户存款操作成功。"); System.out.println("当前账户余额为:"+ac.getaccountbalance()); int operatetype=1; ac.setoperatetype(operatetype); ac.setamount(num); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateNowStr = sdf.format(date); ac.setoperatedate(dateNowStr); list.add(ac); File file1 = new File("accountlist.txt"); // 对象输出流 ObjectOutputStream out = null; ObjectOutputStream out1 = null; try { out = new ObjectOutputStream(new FileOutputStream(file)); out.writeObject(people); out.flush(); out.close(); // 将数组对象写入文件 out1 = new ObjectOutputStream(new FileOutputStream(file1)); out1.writeObject(list); out1.flush(); out1.close(); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println("1、返回输入账户界面"); System.out.println("2、返回操作界面"); int i=in.nextInt(); switch(i) { case 1:enterID(people,list);break; case 2:enter(a,people,list);break; } } public void withdrawal(String a,ArrayList<Account> people,ArrayList<Account> list) { System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println(" 当前账户每日可以支取2万元。"); 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、返回"); Scanner in = new Scanner(System.in); int x=in.nextInt(); int flag = 0; int money = 0; switch(x) { case 1:money=100;break; case 2:money=500;break; case 3:money=1000;break; case 4:money=1500;break; case 5:money=2000;break; case 6:money=5000;break; case 8:enterID(people,list);break; case 9:enter(a,people,list);break; } if(x==7) { System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println("******************************************************"); System.out.println("请输入取款金额:"); money=in.nextInt(); } File file = new File("accountinformation.txt"); ObjectInputStream oin = null; try { oin = new ObjectInputStream(new FileInputStream(file)); people = (ArrayList<Account>) oin.readObject(); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } Account ac=new Account(); for(int i=0;i<people.size();i++) { ac=people.get(i); if(ac.getaccountID().equals(a)) { flag=i; break; } } if(ac.getaccountbalance()<money) { System.out.println("账户余额不足"); } else { ac.setaccountbalance(ac.getaccountbalance()-money); System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println("当前账户取款操作"+money+"元成功。"); System.out.println("当前账户余额为:"+ac.getaccountbalance()+"元成功。"); } int operatetype=2; ac.setoperatetype(operatetype); ac.setamount(money); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateNowStr = sdf.format(date); ac.setoperatedate(dateNowStr); list.add(ac); people.set(flag, ac); File file1 = new File("accountlist.txt"); ObjectOutputStream out = null; ObjectOutputStream out1 = null; try { out = new ObjectOutputStream(new FileOutputStream(file)); out.writeObject(people); out.flush(); out.close(); // 将数组对象写入文件 out1 = new ObjectOutputStream(new FileOutputStream(file1)); out1.writeObject(list); out1.flush(); out1.close(); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println("1、返回输入账户界面"); System.out.println("2、返回操作界面"); int i=in.nextInt(); switch(i) { case 1:enterID(people,list);break; case 2:enter(a,people,list);break; } } public void transfer(String a,ArrayList<Account> people,ArrayList<Account> list) { int flag=0; int money=0; Account ab=new Account(); Scanner in = new Scanner(System.in); File file = new File("accountinformation.txt"); ObjectInputStream oin = null; try { oin = new ObjectInputStream(new FileInputStream(file)); people = (ArrayList<Account>) oin.readObject(); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } Account ac=new Account(); for(int i=0;i<people.size();i++) { ac=people.get(i); if(ac.getaccountID().equals(a)) { flag=i; break; } } int num=0; int leap=-1; while(num==0) { System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println("******************************************************"); System.out.println("请输入转账账户:"); String b=in.next(); for(int i=0;i<people.size();i++) { int j=0; ab=people.get(i); if(ab.getaccountID().equals(b)) { leap=i; num=1; break; } else { num=0; } } if(num==0) { System.out.println("该账户不存在"); } if(num==1) { int num2=0; while(num2==0) { System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println("******************************************************"); System.out.println("请输入转账金额:"); money=in.nextInt(); if(ac.getaccountbalance()<money) { System.out.println("户余额不足"); System.out.println("您当前的余额为"+ac.getaccountbalance()+"元"); } if(ac.getaccountbalance()>=money) { num2=1; } } String name=ab.getaccountname(); System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println("******************************************************"); System.out.println("请确认是否向"+name+"转账"+money+"元"); System.out.println("确认请按Y,否请按N"); String x=in.next(); if(x.equals("X")) { enter(a,people,list); } if(x.equals("Y")) { System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println("******************************************************"); System.out.println("成功向"+name+"转账"+money+"元"); ac.setaccountbalance(ac.getaccountbalance()-money); ab.setaccountbalance(ab.getaccountbalance()+money); System.out.println("当前账户余额为:"+ac.getaccountbalance()); num=1; } } } people.set(flag, ac); people.set(leap, ab); int operatetype=3; ac.setoperatetype(operatetype); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateNowStr = sdf.format(date); ac.setoperatedate(dateNowStr); ac.setamount(money); list.add(ac); File file1 = new File("accountlist.txt"); ObjectOutputStream out = null; ObjectOutputStream out1 = null; try { out = new ObjectOutputStream(new FileOutputStream(file)); out.writeObject(people); out.flush(); out.close(); // 将数组对象写入文件 out1 = new ObjectOutputStream(new FileOutputStream(file1)); out1.writeObject(list); out1.flush(); out1.close(); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println("1、返回输入账户界面"); System.out.println("2、返回操作界面"); int i=in.nextInt(); switch(i) { case 1:enterID(people,list);break; case 2:enter(a,people,list);break; } } public void alter(String a,ArrayList<Account> people,ArrayList<Account> list) { int flag=0; Scanner in = new Scanner(System.in); File file = new File("accountinformation.txt"); ObjectInputStream oin = null; try { oin = new ObjectInputStream(new FileInputStream(file)); people = (ArrayList<Account>) oin.readObject(); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } Account ac=new Account(); for(int i=0;i<people.size();i++) { ac=people.get(i); if(ac.getaccountID().equals(a)) { flag=i; break; } } int num=0; while(num==0) { System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println(" 请输入当前密码:"); String pass=in.next(); if(ac.getaccountpassword().equals(pass)) { num=1; } if(num==0) System.out.println(" 当前密码录入错误"); if(num==1) { System.out.println(" 请输入修改密码:"); String n1=in.next(); System.out.println(" 请输入确认密码:"); String n2=in.next(); if(n1.equals(n2)) { num=1; ac.setaccountpassword(n1); } else { num=0; System.out.println(" 修改密码与确认密码不一致"); } } } System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println("当前账户密码修改成功"); people.set(flag, ac); /*int operatetype=4; ac.setoperatetype(operatetype); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateNowStr = sdf.format(date); ac.setoperatedate(dateNowStr); list.add(ac);*/ File file1 = new File("accountlist.txt"); ObjectOutputStream out = null; ObjectOutputStream out1 = null; try { out = new ObjectOutputStream(new FileOutputStream(file)); out.writeObject(people); out.flush(); out.close(); // 将数组对象写入文件 out1 = new ObjectOutputStream(new FileOutputStream(file1)); out1.writeObject(list); out1.flush(); out1.close(); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println("1、返回输入账户界面"); System.out.println("2、返回操作界面"); int i=in.nextInt(); switch(i) { case 1:enterID(people,list);break; case 2:enter(a,people,list);break; } } public void seclect(String a,ArrayList<Account> people,ArrayList<Account> list) { System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println("******************************************************"); Scanner in = new Scanner(System.in); File file = new File("accountinformation.txt"); ObjectInputStream oin = null; try { oin = new ObjectInputStream(new FileInputStream(file)); people = (ArrayList<Account>) oin.readObject(); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } Account ac=new Account(); for(int i=0;i<people.size();i++) { ac=people.get(i); if(ac.getaccountID().equals(a)) { break; } } System.out.println("当前账户余额为:"+ac.getaccountbalance()+"元"); System.out.println("账户清单信息为:"); File file1 = new File("accountlist.txt"); ObjectInputStream oon = null; try { oon = new ObjectInputStream(new FileInputStream(file1)); list = (ArrayList<Account>) oon.readObject(); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } Account ab=new Account(); for(int i=0;i<list.size();i++) { ab=list.get(i); if(ab.getaccountID().equals(a)) { String op = null; if(ab.getoperatetype()==1) op="存款"; if(ab.getoperatetype()==2) op="取款"; if(ab.getoperatetype()==3) op="转账汇款"; System.out.println(""+ab.getoperatedate()+" "+op+" "+ab.getamount()); } } System.out.println("******************************************************"); System.out.println(" 欢迎"+a+"用户使用中国工商银行自助柜员系统"); System.out.println("1、返回输入账户界面"); System.out.println("2、返回操作界面"); int i=in.nextInt(); switch(i) { case 1:enterID(people,list);break; case 2:enter(a,people,list);break; } } }