JAVA的第一次课堂测试

今天进行了第一场JAVA的课堂测试,以下是题目:

ATM机的账户记录Account有账户的唯一性标识(8个数字的组合),用户的姓名,操作日期(Date),操作类型,账户密码(六位的数字,可以用0开头),当前的余额(可以为0)。

1、定义Account类,其中包括七个私有变量(accountID,accountname,operatedate,operatetype,accountpassword, accountbalance,)。(3分)

各成员的含义如下:

变量accountID为字符串类型String,用于存储学生的用户账号(由八位数字组成)。

变量accountname为字符串类型String,用于存储账户的名称。

变量operatedate为字符串类型String,用于存储操作的时间,由十位字符组成,显示格式为“2018-09-20”。    

变量operatetype为int类型,用于存储操作账户的类型,具体描述为“1”表示存款,“2”表示取款,“3”表示转账汇款,“4”表示修改账户密码,“5”表示查询余额。

变量accountpassword为字符串类型String,用于用户密码,由六位数字组成。

变量accountbalance为整数类型int,用于存储账户余额,缺省为0。

变量amount为整数类型int,表示操作流水金额。

2、对每个变量定义get()(读取变量信息)和set()(设置变量信息)的方法。(3分)

3、定义accountinformation.txt作为账户基本信息库,基本信息包括accountID,accountname,accountpassword, accountbalance,要求事先实现至少存储五个账户的信息,定义accountlist.txt作为账户操作流水信息数据库,操作流水信息包括(accountID,accountname,operatedate,operatetype, amount)。(要求将学号作为帐号,将考生信息作为第一条记录)。(2分)

三、功能要求:(12分)

该程序模拟ATM的功能设计,当用户插卡后显示,输入密码界面,用户输入正确密码(用户输入错误密码,则提示该卡已被锁定,无法操作),则弹出选择界面:存款、取款、转账汇款、修改密码、查询余额。

注意:对accountinformation.txt和accountlist.txt数据库中的信息进行读写操作时,必须调用get()和set()方法,否则,出现一处扣除0.5分,直至扣完为止。

(1) 需要在程序开始的注释中注明班级、学号、姓名。(1分)

(2) 定义AccountManager类实现下列要求

(3)程序开始运行模拟用户插卡显示用户输入账号功能;(1分)

①界面设计:

***************************************************************

             欢迎使用中国工商银行自动柜员系统

****************************************************************

                         请输入您的账号:

****************************************************************

②功能设计

用户在该界面输入账号信息,如果输入账号位数有误,提示“该卡不是工行卡”,如果输入账号信息在accountinformation.txt不存在,则提示“该账号不存在”,账号输入不成功,系统提示错误信息后返回输入账号界面;输入账号成功后,系统跳转到输入密码界面。

 

(4)用户输入密码功能;(1分)

①界面设计:

***************************************************************

欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

****************************************************************

                           请输入您的密码:

****************************************************************

②功能设计

用户在该界面输入账号密码信息,如果密码录入错误(出现位数不对或与文件中该账号对应的密码不服),则提示“密码录入错误”,如果密码录入三次错误,则提示“该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理”。单次密码输入不成功,系统提示错误信息,返回输入密码界面;三次密码输入不成功,系统提示错误信息,返回输入账号界面,密码输入成功,系统跳转到主界面。

 

(5)系统主界面如下图所示,选择相应的数字执行相应的功能。(1分)

***************************************************************

欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

****************************************************************

1、 存款;

2、 取款;

3、 转账汇款;

4、 修改密码;

5、 查询余额;

****************************************************************

(6)存款功能:(2分)

存款操作流程:

①系统进入存款界面:

***************************************************************

欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

****************************************************************

                       请输入存款金额;

****************************************************************

②用户在该界面输入存款金额后,如果输入不是正整数,提示用户“输入金额有误,返回取款界面;输入字母“q”,则返回系统输入账号界面,表示退出柜员机操作;输入正整数,则跳转到下图存款成功界面。

***************************************************************

欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

****************************************************************

                   当前账户存款操作成功。

      当前账户余额为:XXXX元

****************************************************************

③存款成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户余额。

④点击“q”键,退回系统录入账号界面

(7)取款功能:则显示100元、500元、1000元、1500元、2000元、5000元、其他金额、退卡、返回操作供用户选择(3分)

取款流程设计:

① 系统进入取款界面:

***************************************************************

欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

****************************************************************

当前账户每日可以支取2万元。

1、100元

2、500元

3、1000元

4、1500元

5、2000元

6、5000元;

7、其他金额

8、退卡

9、返回

****************************************************************

②用户选择1-6选项时,判断账户余额是否不小于录入金额,如果小于,则提示“账户余额不足”,如果大于,则跳转到下图取款成功界面。

***************************************************************

欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

****************************************************************

当前账户取款操作XXXX元成功。

当前账户余额为:XXXX元

****************************************************************

用户选择7选项时,显示录入金额界面

***************************************************************

欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

****************************************************************

请输入取款金额:

****************************************************************

判断账户余额是否不小于录入金额,如果小于,则提示“账户余额不足”,如果大于,则跳转到下图取款成功界面。

***************************************************************

欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

****************************************************************

当前账户取款操作XXXX元成功。

当前账户余额为:XXXX元

****************************************************************

④取款成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户余额。

⑤用户选择“8”选项时,系统跳转到输入账户界面。

⑥用户选择“9”选项时,系统跳转到系统主界面。

(8)转账汇款功能:(1分)

系统流程如下所示:

①系统进入转账主界面

***************************************************************

欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

****************************************************************

请输入转账账户;

       

****************************************************************

②用户在该界面输入判断该账户是否存在accountinformation.txt文件中,如果没有提示“该账户不存在”,如果有则跳转到转账金额界面。

***************************************************************

欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

****************************************************************

请输入转账金额;

       

****************************************************************

③判断账户余额是否不小于录入金额,如果小于,则提示“账户余额不足”,如果大于,则跳转到下图转账确认成功界面。

***************************************************************

欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

****************************************************************

请确认是否向*XX(将转账的用户名称第一个用*代替,其余正常显示)转账XXXX元。

****************************************************************

④单击“N”表示不确认转账,系统跳转到系统主界面;单击“Y”表示确认转账,系统跳转到转账成果界面,。

***************************************************************

欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

****************************************************************

当前账户向*XX成功转账XXXX元。

当前账户余额为:XXXX元

****************************************************************

⑤转账汇款成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户余额。

⑥点击“q”键,退回系统录入账号界面

(9)修改密码功能:(1分)

修改密码操作流程:

① 系统进入修改密码界面:

***************************************************************

欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

****************************************************************

请输入当前密码:

请输入修改密码:

请输入确认密码:

****************************************************************

② 当前密码录入错误,提示“当前密码录入错误”,系统返回修改密码界面,清空数据重新录入;修改后密码与确认密码不一致,提示“修改密码与确认密码不一致”,系统返回修改密码界面,清空数据重新录入。

③ 密码修改成功,系统跳转到密码修改成功界面。

***************************************************************

欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

****************************************************************

当前账户密码修改成功

****************************************************************

④ 密码修改成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户密码。

⑤ 点击“q”键,退回系统录入账号界面

(10)查询功能:(1分)

查询操作流程:

①系统显示当前用户余额和操作流水信息:

***************************************************************

欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

****************************************************************

当前账户余额为:XXXX元

账户清单信息为:

1、操作日期    操作类型(不用显示数字) 操作金额

2、操作日期    操作类型(不用显示数字) 操作金额

3、…………………………………………………………

****************************************************************

 ②点击“q”键,退回系统录入账号界面。

以下是我的源码:

  1 //韩凤芸 信1905-2 20194205
  2 import java.io.BufferedReader;
  3 import java.io.File;
  4 import java.io.FileInputStream;
  5 import java.io.FileOutputStream;
  6 import java.io.IOException;
  7 import java.io.InputStreamReader;
  8 import java.io.OutputStreamWriter;
  9 import java.text.SimpleDateFormat;
 10 import java.util.Iterator;
 11 import java.util.Scanner;
 12 import java.util.Vector;
 13 import java.util.*;
 14 class Account{
 15     private String accountID;
 16     private String accountname;
 17     private String operatedate;//操作时间
 18     private int operatetype;//选项
 19     private String accountpassword;
 20     private int accountbalance;//余额
 21     private int amount;//流水
 22     public void setAccountID(String accountID){this.accountID = accountID;}
 23     public String getAccountID(){return accountID;}
 24     public void setAccountname(String accountname){this.accountname = accountname;}
 25     public String getAccountname(){return accountname;}
 26     public void setOperatedate(String operatedate){this.operatedate = operatedate;}
 27     public String getOperatedate(){return operatedate;}
 28     public void setOperatetype(int operatetype){this.operatetype = operatetype;}
 29     public int getOperatetype(){return operatetype;}
 30     public void setAccountpassword(String accountpassword){this.accountpassword = accountpassword;}
 31     public String getAccountpassword(){return accountpassword;}
 32     public void setAccountbalance(int accountbalance){this.accountbalance = accountbalance;}
 33     public int getAccountbalance(){return accountbalance;}
 34     public void setAmount(int amount){this.amount = amount;}
 35     public int getAmount(){return amount;}
 36     public void set(String accountID,String accountname,String accountpassword,int accountbalance)
 37     {
 38         this.accountID=accountID;
 39         this.accountname=accountname;
 40         this.accountpassword=accountpassword;
 41         this.accountbalance=accountbalance;
 42     }
 43     public void Set(String operatedate,int amount)
 44     {
 45         this.operatedate=operatedate;
 46         this.amount=amount;
 47     }
 48 }
 49 public class AccountManager 
 50 {
 51     private static Scanner sc=new Scanner(System.in);
 52     private Vector<Account> vec=new Vector <Account>();
 53     private Iterator<Account> it;
 54     private String str;//各String型成员
 55     private int jh, index, an;
 56     private Account ac=new Account();
 57     public void start()//初始界面(输入账号)
 58     {
 59         jh=3;//3次的输入机会
 60         index=0;
 61         an=0;
 62         System.out.println("***************************************************************");//输出第一个用户界面
 63         System.out.println("                    欢迎使用中国工商银行自动柜员系统");
 64         System.out.println("***************************************************************");
 65         System.out.println("                         请输入您的账号:");
 66         if(sc.hasNext()){str=sc.next();}
 67         if(str.length()==8)//如果账号长度为8
 68         {
 69             if(findID(str))//如果找到了账号
 70             {
 71                 index=findid(str)-1;
 72                 showpass();
 73             }
 74             else//否则
 75             {
 76                 System.out.println("没有找到相关账户信息,请重新输入");
 77                 start();
 78             }
 79         }
 80         else//如果账号长度不为8
 81         {
 82             System.out.println("\t输入的账户信息不是八位数,请重新输入");
 83             start();
 84         }
 85     }
 86     public boolean findID(String id)//寻找账号信息
 87     {
 88         Account Ac=new Account();
 89         it=vec.iterator();
 90         boolean b=false;
 91         while(it.hasNext())
 92         {
 93             Ac=it.next();
 94             if(Ac.getAccountID().equals(id))
 95             {
 96                 ac=Ac;
 97                 b=true;
 98                 break;
 99             }
100         }
101         return b;
102     }
103     public int findid(String id)//位置
104     {
105         Account Ac=new Account();
106         it=vec.iterator();
107         for(int i=0;it.hasNext();i++)
108         {
109 
110             Ac=it.next();
111             if(Ac.getAccountID().equals(id))break;
112         }
113         return i;
114     }
115     public void showpass()//输入密码
116     {
117         System.out.println("***************************************************************");
118         System.out.println("       欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
119         System.out.println("***************************************************************");
120         System.out.println("                        请输入您的密码:");
121         str=sc.next();
122         if(str.length()==6)//如果输入的数字长度为6
123         {
124             if(Integer.parseInt(str)==ac.getAccountpassword()){SYS();}//如果密码正确
125             else//否则
126             {
127                 if(jh>0)
128                 {
129                     jh--;
130                     System.out.println("    密码错误,请重新输入,还剩"+jh+"次机会重新输入");
131                     showpass();
132                 }
133                 else//输入达上限
134                 {
135                     System.out.println("    密码错误输入次数过多已达上限");
136                     start();
137                 }
138             }
139         }
140         else//输入的密码不是六位
141         {
142             System.out.println("    输入的密码信息不是六位数,请重新输入");
143             showpass();
144         }
145     }
146     public void SYS()//主界面
147     {
148         System.out.println("***************************************************************");
149         System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
150         System.out.println("***************************************************************");
151         System.out.println("                        1.存款");
152         System.out.println("                        2.取款");
153         System.out.println("                        3.转账汇款");
154         System.out.println("                        4.修改密码");
155         System.out.println("                        5.查询余额");
156         int n=sc.nextInt();
157         switch(n)
158         {
159         case 1://存款
160             cunkuan();
161             break;
162         case 2://取款
163             qukuan();
164             break;
165         case 3://转账汇款
166             zhuanzhang();
167             break;
168         case 4://修改密码
169             xiugai();
170             break;
171         case 5://查询余额
172             chaxun();
173             break;
174         }
175     }
176     public void cunkuan()//存款
177     {
178         System.out.println("***************************************************************");
179         System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
180         System.out.println("***************************************************************");
181         System.out.println("                          请输入存款金额:");
182         int num=0;
183         if(sc.hasNextInt()){num=sc.nextInt();}//判断输入金额是否为整数
184         else
185         {
186             if(sc.hasNext())
187             {
188                 str=sc.next();
189                 if(str.equals("q")){System.out.println("已经退出系统,返回账号界面");}//输入q返回初始界面
190                 else
191                 {
192                     System.out.println("请输入整数金额");
193                     cunkuan();
194                 }
195             }
196         }
197         if(num>0)
198         {
199             Account Acc=new Account();
200             ac.setAccountbalance(ac.getAccountbalance()+num);
201             ac.setAmount(ac.getAmount()+num);
202             Acc=ac;
203             vec.setElementAt(Acc, index);
204             try 
205             {
206                 Daochu();
207                 daochu();
208             }
209         }
210         else
211         {
212             System.out.println("输入错误,请重新输入");
213             cunkuan();
214         }
215         System.out.println("***************************************************************");
216         System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
217         System.out.println("***************************************************************");
218         System.out.println("                       当前账户存款成功");
219         System.out.println("                     当前账户余额为:"+ac.getAccountbalance());
220         System.out.println("***************************************************************");
221         SYS();
222     }
223     public void qukuan()//取款
224     {
225         System.out.println("***************************************************************");
226         System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
227         System.out.println("***************************************************************");
228         System.out.println("                     当前账户每日可以支取2万元。");
229         System.out.println("                           1.100元");
230         System.out.println("                           2.500元");
231         System.out.println("                           3.1000元");
232         System.out.println("                           4.1500元");
233         System.out.println("                           5.2000元");
234         System.out.println("                           6.5000元");
235         System.out.println("                           7.其他金额");
236         System.out.println("                           8.退卡");
237         System.out.println("                           9.返回");
238         int n=sc.nextInt();
239         boolean b=false;
240         Account Acc=new Account();
241         int num=0;
242         if(n==8)
243         {
244             System.out.println("退卡成功");
245             start();
246             return;
247         }
248         else if(n==9)
249         {
250             SYS();
251             return;
252         }
253         else
254         {
255             switch(n)
256             {
257             case 1:
258                 num=100;
259                 break;
260             case 2:
261                 num=500;
262                 break;
263             case 3:
264                 num=1000;
265                 break;
266             case 4:
267                 num=1500;
268                 break;
269             case 5:
270                 num=2000;
271                 break;
272             case 6:
273                 num=5000;
274                 break;
275             case 7:
276                 num=sc.nextInt();;
277                 break;
278             }
279             if(ac.getAccountbalance()>=num)
280             {
281                 b=true;
282                 ac.setAccountbalance(ac.getAccountbalance()-num);
283                 ac.setAmount(ac.getAmount()-num);
284                 Acc=ac;
285                 vec.setElementAt(Acc, index);
286              }
287         }
288         if(b)
289         {
290             System.out.println("***************************************************************");
291             System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
292             System.out.println("***************************************************************");
293             System.out.println("                         当前账户取款成功");
294             System.out.println("                       当前账户余额为:"+ac.getAccountbalance());
295             System.out.println("***************************************************************");
296             SYS();
297         }
298     }
299     public void zhuanzhang()//转账
300     {
301         System.out.println("***************************************************************");
302         System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
303         System.out.println("***************************************************************");
304         System.out.println("                      请输入你要转账的账号:");
305         String type=sc.next();
306         if((an=findid(type)-1)!=0)
307         {
308             int c=sc.nextInt();
309             System.out.println("               请输入你要转账的金额:");
310             Account Acc=new Account();
311             ac.setAccountbalance(ac.getAccountbalance()-c);
312             ac.setAmount(ac.getAmount()-c);
313             Acc=ac;
314             vec.get(an).setAccountbalance(vec.get(an).getAccountbalance()+c);
315             vec.get(an).setAmount(vec.get(an).getAmount()+c);
316             vec.setElementAt(Acc, index);
317             try 
318             {
319                 Daochu();
320                 daochu();
321             } 
322             System.out.println("***************************************************************");
323             System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
324             System.out.println("***************************************************************");
325             System.out.println("                        当前账户转账成功");
326             System.out.println("                       当前账户余额为:"+ac.getAccountbalance());
327             System.out.println("***************************************************************");
328             SYS();
329         }
330         else
331         {
332             System.out.println("金额不足,不能转账");
333             zhuanzhang();
334         }
335      }
336     public void xiugai()//修改密码
337     {
338         System.out.println("***************************************************************");
339         System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
340         System.out.println("***************************************************************");
341         System.out.println("                      请输入你原来的密码:");
342         int type=sc.nextInt(),g_old=0,g_new=0;
343         if(type==ac.getAccountpassword())
344         {
345             System.out.println("               请输入你要修改的密码:");
346             if(sc.hasNextInt()){g_old=sc.nextInt();}
347             if(!(g_old>=100000&&g_old<=999999))
348             {
349                 System.out.println("         密码输入格式错误,请重新输入");
350                 xiugai();
351                 return;
352             }
353             System.out.println("           请再次你输入你要修改的密码:");
354             if(sc.hasNextInt()){g_new=sc.nextInt();}
355             if(g_new==g_old)
356             {
357                 Account Acc=new Account();
358                 ac.setAccountpassword(g_old);
359                 Acc=ac;
360                 vec.setElementAt(Acc, index);
361                 try 
362                 {
363                     Daochu();
364                     daochu();
365                 } 
366                 System.out.println("             密码修改成功");
367                 SYS();
368             }
369         }
370      }
371     public void chaxun()//查询
372     {
373         System.out.println("***************************************************************");
374         System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
375         System.out.println("***************************************************************");
376         System.out.println("                当前账户余额为:"+ac.getAccountbalance());
377         System.out.println("***************************************************************");
378         SYS();
379     }
380     public void daoru() throws IOException//导入1
381     {
382         File a=new File("accountinformation.txt");
383         FileInputStream b = new FileInputStream(a);
384         vec.clear();
385         InputStreamReader c=new InputStreamReader(b,"UTF-8");
386         {
387             BufferedReader bufr =new BufferedReader(c);
388             String line = null;
389             while((line = bufr.readLine())!=null)
390             {
391                 Account Ac=new Account();
392                 String ook[]=line.toUpperCase().split(" ");
393                 Ac.set(ook[0],ook[1], Integer.parseInt(ook[2]),Integer.parseInt(ook[3]));
394                 vec.add(Ac);
395                 ac=Ac;
396             }
397             bufr.close();
398         }
399         c.close();
400         b.close();
401     }
402     public void Daoru() throws IOException//导入2
403     {
404         File a=new File("accountlist.txt");
405         FileInputStream b = new FileInputStream(a);
406         InputStreamReader c=new InputStreamReader(b,"UTF-8");
407         {
408             BufferedReader bufr =new BufferedReader(c);
409             String line = null;
410             int i=0;
411             while((line = bufr.readLine())!=null)
412             {
413                 Account Ac=new Account();
414                 String ook[]=line.toUpperCase().split(" ");
415                 Ac.set(vec.get(i).getAccountID(),vec.get(i).getAccountname(),vec.get(i).getAccountpassword(),vec.get(i).getAccountbalance());
416                 Ac.set_1(ook[0],Integer.parseInt(ook[1]));
417                 String temp_str=""; 
418                 Date dt = new Date(); 
419                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
420                 temp_str=sdf.format(dt);
421                 if(!temp_str.equals(ook[0]))
422                 {
423                     Ac.setAmount(0);
424                     Ac.setOperatedate(temp_str);
425                 }
426                 ac=Ac;
427                 vec.setElementAt(Ac, i);
428                 i++;
429             }
430             bufr.close();
431         }
432         c.close();
433         b.close();
434     }
435     public void daochu() throws IOException//导出1
436     {
437         Account Ac=new Account();
438         File a=new File("accountinformation.txt");
439         FileOutputStream b = new FileOutputStream(a);
440         OutputStreamWriter c=new OutputStreamWriter(b,"UTF-8");
441         it=vec.iterator();
442         int i=0;
443         while(it.hasNext())
444        {
445           i++;
446           if(i!=1)
447           c.append("\r\n");
448           Ac=it.next();
449           c.append(Ac.getAccountID()+" "+Ac.getAccountname()+" "+Ac.getAccountpassword()+" "+Ac.getAccountbalance());
450         }
451         c.close();
452         b.close();
453      }
454      public void Daochu() throws IOException//导出2
455      {
456         Account Ac=new Account();
457         File a=new File("accountlist.txt");
458         FileOutputStream b = new FileOutputStream(a);
459         OutputStreamWriter c=new OutputStreamWriter(b,"UTF-8");
460         it=vec.iterator();
461         int i=0;
462         while(it.hasNext())
463         {
464           i++;
465           if(i!=1)
466           c.append("\r\n");
467           Ac=it.next();
468           c.append(Ac.getOperatedate()+" "+Ac.getAmount());
469          }
470          c.close();
471          b.close();
472        }
473        public static void main(String[] args) 
474       { 
475          AccountManager a=new AccountManager();
476          try 
477          {
478            a.daoru();
479            a.Daoru();
480          } 
481            a.start();
482        }
483 }

今日在课堂之上此代码并未完全编译完成,虽课下一些问题有求教百度但到现在此代码仍有缺陷。
缺陷大致有二:

   1.取款部分,此部分代码只实现了余额充足时取款之状况,而对于余额不足时无法取款的问题则未曾解决。余额不足时,经代码设计本应得到“余额不足无法取款”的提示反馈,然而此代码却无法实现这一功能,甚至会因此出现“死机”的状态。然而程序却并未报错,而我也始终看不出错误之处。这是我的能力之不足所成。

  2.流水写入文件部分,此部分代码只实现了操作日期及流水金额被写入相应文件,而资金流水所属的账户信息却无法一并被写入其中。我想这或许是我粗心而遗漏了什么部分所致,但我同样无法自行解决问题,这依旧是我能力不足之所为。

通过今日的测试,发现自己对JAVA学习仍是不足不充分。虽然此前还在为轻而易举地完成了学生管理系统的例题而沾沾自喜,甚至自认为JAVA学习的尚不错,但今天的测试给了我当头一棒般的打击。仅仅是增加了文件的输入输出功能便打乱自己的所有节奏,甚至茫茫然不知该从何写起。直到现在我对于文件的输入输出的实现仍不熟练,代码中有关文件的编译也都是从百度、博客等各处拼凑而来的成果。其他的代码部分也有为了迎合文件输入输出部分而拼凑而来的影子。

造成以上问题的种种原因在于自己狂妄自大、眼高于顶,匆匆看过几眼书、编过几行代码便真以为自己就能自学成才而沾沾自喜,而实际基础都尚未打好,看了一堆理论知识却不能将其应用于实际,亦不知灵活变通触类旁通,相同问题加些条件换个问法便不知所措。知识储备不够,相关知识随在收藏夹里收藏了许多,却从未好好记过转眼就会忘记,而记住的运用起来也不甚熟练,实践也尚且不足,虽然在暑假期间有编写过几个小程序,但仅凭这几个小程序的编写还不足以让我对JAVA到熟练的地步,这一切皆是自己不认真所致。

以上是我对这次课堂测试所展露出来的问题的反思。

问题的提出就是为了解决。此后我应端正学习态度,不再盲目图快,而是一步一个脚印,打好基础才能盖起高楼。

原文地址:https://www.cnblogs.com/hfy717/p/13715783.html