ATM测试总结报告
package manage;//信1905-1 张国强 20193996 import java.util.Scanner; import java.text.SimpleDateFormat; import java.util.Date; class Account { private String accountID; private String accountname; private String operatedate; private int operatetype; private String accountpassword; private int accountbalance; private int amount; public String get_accountID() { return accountID; } public String get_accountname() { return accountname; } public String get_operatedate() { return operatedate; } public int get_operatetype() { return operatetype; } public String get_accountpassword() { return accountpassword; } public int get_accountbalance() { return accountbalance; } public int get_amount() { return amount; } public void set_accountID(String a) { accountID=a; } public void set_accountname(String a) { accountname=a; } public void set_operatedate(String a) { operatedate=a; } public void set_operatetype(int a) { operatetype=a; } public void set_accountpassword(String a) { accountpassword=a; } public void set_accountbalance(int a) { accountbalance=a; } public void set_(int a) { amount=a; } Account(String accountID,String accountname,String accountpassword,int accountbalance) { this.accountID=accountID; this.accountname=accountname; this.accountpassword=accountpassword; this.accountbalance=accountbalance; } public void accountlist(String accountID,String accountname,String operatedate,int operatetype,int amount) { this.accountID=accountID; this.accountname=accountname; this.operatedate=operatedate; this.operatetype=operatetype; this.amount=amount; } } public class AccountManager { static int di; static Scanner input=new Scanner(System.in); static Account m[]=new Account[5]; static int length=5; static void chushi() { m[0]=new Account("20190001", "qwe","123456",5123); m[1]=new Account("20190002", "asd","654321",5166); m[2]=new Account("20190003", "fgh","112233",9658); m[3]=new Account("20190004", "uio","224466",1230); m[4]=new Account("20190005", "jkl","445566",1504); } static public void faceid()//账号界面 { System.out.println("****************************************************************"); System.out.println(" 欢迎使用中国工商银行自动柜员系统"); System.out.println("****************************************************************"); System.out.println(" 请输入您的账号:\n"); System.out.println("****************************************************************"); } static public void judgeid()//判断账户 { String p; int qq=0; p=input.next(); int width; width=p.length(); if(width!=8) { System.out.println("该卡不是工行卡"); } for(int i=0;i<length;i++) { if(p.equals(m[i].get_accountID())) { qq=1; di=i; facepassword(); judgepassword(); } } if(qq==0) { System.out.println("该账号不存在"); } } static public void facepassword()//密码界面 { System.out.println("****************************************************************"); System.out.println(" 欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统"); System.out.println("****************************************************************"); System.out.println(" 请输入您的密码:\n"); System.out.println("****************************************************************"); } static public void judgepassword()//判断密码是否正确 { String password; password=input.next(); for(int i=0;i<3;i++) { if(password.equals(m[di].get_accountpassword())) { zhuface(); break; } else { System.out.println("密码录入错误"); } if(i==3) { System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理"); faceid(); } } } static public void zhuface()//主界面 { System.out.println("****************************************************************"); System.out.println(" 欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统"); System.out.println("****************************************************************"); System.out.println("\t\t\t1.存款\n\t\t\t2.取款\n\t\t\t3.转账汇款\n\t\t\t4.修改密码\n\t\t\t5.查询余额\n"); System.out.println("****************************************************************"); } static public void chance()//选择 { int ss; for(;;) { ss=input.nextInt(); m[di].set_operatetype(ss); switch(ss) { case 1:cun();break; case 2:qu();break; case 3:zhuan();break; case 4:xiugai();break; case 5:chaxun();break; } System.out.println("输入q返回,不返回输入continue"); String kk; kk=input.next(); if(kk.equals("q")) { faceid(); judgeid(); chance(); } else { zhuface(); } } } static public void cun()//存钱 { System.out.println("****************************************************************"); System.out.println(" 欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统"); System.out.println("****************************************************************"); System.out.println(" 请输入存款金额:\n"); System.out.println("****************************************************************"); double l; l=input.nextDouble(); if(l-(int)l==0) { System.out.println("****************************************************************"); System.out.println(" 欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统"); System.out.println("****************************************************************"); System.out.println(" 当前账户存款操作成功。\n当前账户余额为:"+((int)l+m[di].get_accountbalance())); System.out.println("****************************************************************"); m[di].set_accountbalance((int)l+m[di].get_accountbalance()); } else { System.out.println("输入金额有误"); } } static public void qu()//取钱 { System.out.println("****************************************************************"); System.out.println(" 欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统"); System.out.println("****************************************************************"); System.out.println(" 当前账户每日可以支取2万元。\n1、100元\r\n" + "2、500元\r\n" + "3、1000元\r\n" + "4、1500元\r\n" + "5、2000元\r\n" + "6、5000元\r\n"+"7、其他金额\r\n" + "8、退卡\r\n" + "9、返回"); System.out.println("****************************************************************"); int qq; qq=input.nextInt(); int mm = 0; switch(qq) { case 1:mm=100;break; case 2:mm=500;break; case 3:mm=1000;break; case 4:mm=1500;break; case 5:mm=2000;break; case 6:mm=5000;break; case 7: System.out.println("****************************************************************"); System.out.println(" 欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统"); System.out.println("****************************************************************"); System.out.println(" 请输入取款金额:"); int ee; ee=input.nextInt(); System.out.println("****************************************************************"); if(m[di].get_accountbalance()<ee) { System.out.println("账户余额不足"); } else { m[di].set_accountbalance(m[di].get_accountbalance()-qq); System.out.println("****************************************************************"); System.out.println(" 欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统"); System.out.println("****************************************************************"); System.out.println(" 当前账户取款操作"+ee+"元成功。"); System.out.println(" 当前账户余额为:"+m[di].get_accountbalance()); } break; case 8: faceid(); judgeid(); chance(); break; case 9: faceid(); judgeid(); chance(); break; } if(qq==1||qq==2||qq==3||qq==4||qq==5||qq==6) { if(m[di].get_accountbalance()<mm) { System.out.println("账户余额不足"); } else { m[di].set_accountbalance(m[di].get_accountbalance()-qq); System.out.println("****************************************************************"); System.out.println(" 欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统"); System.out.println("****************************************************************"); System.out.println(" 当前账户取款操作"+mm+"元成功。"); System.out.println(" 当前账户余额为:"+m[di].get_accountbalance()); } } } static public void zhuan()//转账 { System.out.println("****************************************************************"); System.out.println(" 欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统"); System.out.println("****************************************************************"); System.out.println(" 请输入转账账户:\n"); System.out.println("****************************************************************"); String ff; ff=input.next(); int qian=0; int ww=0;int dd = 0; for(int i=0;i<5;i++) { if(ff.equals(m[i].get_accountID())) { ww=1;dd=i; } } if(ww==0) { System.out.println("该账户不存在"); } else { System.out.println("****************************************************************"); System.out.println(" 欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统"); System.out.println("****************************************************************"); System.out.println(" 请输入转账金额;"); System.out.println("****************************************************************"); qian=input.nextInt(); if(qian>m[di].get_accountbalance()) { System.out.println("账户余额不足"); } else { System.out.println("****************************************************************"); System.out.println(" 欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统"); System.out.println("****************************************************************"); System.out.println("请确认是否向*"+m[dd].get_accountID().substring(1,8)+"转账"+qian+"元"); System.out.println("****************************************************************"); m[dd].set_accountbalance(m[dd].get_accountbalance()+qian); m[di].set_accountbalance(m[di].get_accountbalance()-qian); } } } static public void xiugai()//修改密码 { for(;;) { System.out.println("****************************************************************"); System.out.println(" 欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统"); System.out.println("****************************************************************"); System.out.println(" 请输入当前密码:\n"); String ss; ss=input.next(); if(ss.equals(m[di].get_accountpassword())) { System.out.println(" 请输入修改密码:"); String s1; s1=input.next(); System.out.println(" 请输入修改密码:"); String s2; s2=input.next(); if(s1.equals(s2)) { m[di].set_accountpassword(s1); break; } else { System.out.println("修改密码与确认密码不一致"); } } else { System.out.println("原密码错误"); } System.out.println("****************************************************************"); } } static public void chaxun()//查询 { System.out.println("****************************************************************"); System.out.println(" 欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统"); System.out.println("****************************************************************"); System.out.println(" 当前账户余额为:\n"+m[di].get_accountbalance()); System.out.println("账户清单信息为:"); SimpleDateFormat sdf = new SimpleDateFormat(); sdf.applyPattern("yyyy-MM-dd"); Date date = new Date();// 获取当前时间 System.out.println("现在时间:" + sdf.format(date)); System.out.println("****************************************************************"); } public static void main(String []args) { faceid(); chushi(); judgeid(); chance(); } }
截图
总结:
今天进行了Java开学测试。编译了一个关于ATM的程序。因为在平时练习中编写的程序都是比较短的。所以在看到这个程序的时候是比较慌。开始的时候没有理清头绪,开始也没有身体就直接开始敲基本数据。这样肯定就感觉思路不是很清晰。 后来就停下来认真的审了题。首先弄明白了这个题要建两个类。首先建立了一个account类。然后又建了一个accountmanage类。在account类中,我定义了基本的数据变量。并对这些数据变量。进行了,做出设置和得到的函数。 在这个程序中,遇到的问题有,首先,我对文件的操作不是十分明确。我承认在自学Java的时候,对于文件的操作不是十分熟悉。所以我在写这个程序的时候采用了数组的方法。在程序的开头,我定义了一个acount数组。先对数组进行了初始化。利用构造函数。对数组初始化了五组数据。在这一点上也遇到了一些问题。开始没有用构造函数。使用了一个。不同函数对其数据进行赋值。但是没有成功。然后便采用了构造函数的方法。 接下来我认为这个程序比较困难的一点就是,要在不同功能之间来回切换。这就需要我有清晰的思路。对程序有一个整体的把握。在编译时老师给我们提出的意见。鉴于我们先搭建整个框架,然后再添加其中的细节。这却是是做这种工程的有效方法。在编译时,为了方便我将。这个单独的页面都分成。都编译成单独的小函数。方便使用时调用。把取款,存款,转账和查询都分别编译成函数。因为在这个程序中使用。存款,取款和转账。还有账户界面之间要相互进行切换。于是我就根据题意在每个函数中给他们留下接口。F如果存款不成功的话。返回账户界面。我就会在存款函数中调用界面函数。从而能够返回账号界面。其余都采用了这种方式。 这个程序没有得满分原因有以下几点。首先,我对题目的理解不是十分透彻。所以我在审题方面就花费了很多时间。开始自己的思路不是十分清晰。也不知道从什么地方开始编译。等有了思路,已经过去了很多时间。所以以后在写程序的时候思路不能乱。首先要把程序的整个思路捋清楚。把整体的框架先搭建出来。然后再增加其中的一些细节。 在写这个程序的时候,首先在文件部分就纠结了很长时间。因为我对文件的操作不是十分熟悉。所以这个程序没有做到很完善。其中比较重要的一点就是没有进行文件的读写。接下来我会在java学习中学习对数据进行文件读写。然后比较困难的一点应该就是,在查询那一块儿。对每一条信息的执行记录没有得出来。我认为这个需求也是可以实现的。我想到了一个比较笨的方法。就是先定义时间的一个函数。然后再定义一个字符串数组。。每个操作之后就使用一次这个时间函数。并把这个时间记录在字符串数组中。操作记录也是同样的方法。也可以定义一个字符串数组。然后在里面进行记录。当然这个方法是比较笨的,大佬们有什么好的办法也可以给我提出来。我感觉在程序跳转方面的思路还是比较清晰的。各个页面之间的跳转是可以成功实现的。当时在测试时犯了一个比较低级的错误。我在修改密码之后。忘记了要返回到账号页面。因为我是用数组进行存储信息的。如果重新运行程序的话。我的密码是没有修改的。所以我如果要验证我的密码是否修改,我应该在运行的程序是可以返回到账号页面。从而验证是否密码修改成功。这可能也就是没有应用文件操作的弊端了。对文件信息的操作能够记录下来,可能是比较重要的。所以之后我应该学习这方面的技术。提高这个程序的实际应用能力。希望我的编译能力也能够不断的提高。