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到熟练的地步,这一切皆是自己不认真所致。
以上是我对这次课堂测试所展露出来的问题的反思。
问题的提出就是为了解决。此后我应端正学习态度,不再盲目图快,而是一步一个脚印,打好基础才能盖起高楼。