java_000.JAVA语言课堂测试试卷01
Posted 26never
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java_000.JAVA语言课堂测试试卷01相关的知识,希望对你有一定的参考价值。
在暑假各种自学,来学校发现还要考文件,又补文件,至于数据库,卡在了插入数据,可以打印所有的数据但就是插入老师出错。(当然今天下午这一问题已经解决了)。在上周四,迎来了Java考试,原定1个半小时,由于试卷更改,改为2个半,又延长到3个小时。我就感觉我顺着自己的思路往下写,写一段验证一下,也没出现什么bug,但写着写着时间就到了,最终只写出来框架和账户登陆,存款,取款,修改密码,文件完全没写到。老师说他花了两个小时写完,还觉得自己很慢了。
题目就是ATM取款机,要求有字符打印的界面,输入账户密码来登陆,然后选择:存款、取款、转账、修改密码、查询余额(并输入流水记录),每一个都有不同的界面,执行完后可以返回输入账号界面;要有两个文件,一个记录账户信息一个记录流水。
说说自己的思路吧。先写好框架,所有的输入界面统一由face()函数负责,对于输入账户这个最初的界面进行循环,再对与是否输入存在的账号在套一层循环,输入存在的账号则跳出,进入下一个循环——输入密码,循环超过3次,禁止继续。然后加主界面的循环,switch选择1到5,调用5个不同的函数,每个函数调用情况有的会有返回值,正确的大于零,错误的小于零,不同的值对应不同的情况。定义四个函数来执行两个文件的写入和读取,在最开始调用读取信息来获得所有账户的信息,每执行一个存款等操作,将变更的值写进数组,再写入文件,并在流水文件中新加一行流水。也就是最后再在程序中相应的位置增加文件函数的调用。
结构如下:
mian()
{
最外层循环——循环执行所有程序
循环--调用face()--输入账号-函数
循环--调用face()--输入密码-函数
循环--调用face()--主界面-如果在下面输入错误则跳回主界面,如果输入‘q‘则跳出此循环
{
switch
{
存款--函数--调用face()
取款--函数--调用face()
转账--函数--调用face()
修改密码--函数-调用face()
查询余额--函数-调用face()
}
}
}
虽然要求写上1000字,但我没什么好写的了啊。就是读一读题,在脑子里面大致画一个框架,然后一点点补全而已。就这样吧。
1 package Accunt; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Date; 5 6 public class Account 7 { 8 private String accountID,accountname,operatedate,accontpassword; 9 private int operatetype,accountbalance,amount;//“1”表示存款,“2”表示取款,“3”表示转账汇款,“4”表示修改账户密码,“5”表示查询余额。 10 public Account() {} 11 public Account(String accountID,String accountname,String accontpassword,int accountbalance) 12 { 13 this.accountID = accountID; 14 this.accountname = accountname; 15 this.accontpassword = accontpassword; 16 this.accountbalance = accountbalance; 17 } 18 public int getAccountbalance() 19 { 20 return accountbalance; 21 } 22 public void setAccountbalance(int accountbalance) 23 { 24 this.accountbalance = accountbalance; 25 } 26 public String getAccountID() 27 { 28 return accountID; 29 } 30 public void setAccountID(String accountID) 31 { 32 this.accountID = accountID; 33 } 34 public String getAccountname() 35 { 36 return accountname; 37 } 38 public void setAccountname(String accountname) 39 { 40 this.accountname = accountname; 41 } 42 public String getOperatedate() 43 { 44 return operatedate; 45 } 46 public void setOperatedate() 47 { 48 Date now = new Date( ); 49 SimpleDateFormat ft = new SimpleDateFormat ("yyyy.MM.dd"); 50 this.operatedate = ft.format(now); 51 } 52 public String getAccontpassword() 53 { 54 return accontpassword; 55 } 56 public void setAccontpassword(String accontpassword) 57 { 58 this.accontpassword = accontpassword; 59 } 60 public int getOperatetype() 61 { 62 return operatetype; 63 } 64 public void setOperatetype(int operatetype) 65 { 66 this.operatetype = operatetype; 67 } 68 public int getAmount() 69 { 70 return amount; 71 } 72 public void setAmount(int amount) 73 { 74 this.amount = amount; 75 } 76 77 }
1 package Accunt; 2 import java.io.*; 3 import java.util.ArrayList; 4 import java.util.Scanner; 5 public class AccountManager 6 { 7 8 public static void main(String[] args) 9 { 10 Scanner input=new Scanner(System.in); 11 ArrayList<Account> ac=new ArrayList<Account>(); 12 int select1=1,flag1=0,flag2=0,flagq=0,flag4=0,k; 13 String q="q"; 14 getInformation(ac); 15 for(;;) 16 { 17 18 do 19 { 20 face(1);//账户对比 21 flag1=id(input.next(),ac); 22 if(flag1==-2) {face(0,12,ac);} 23 if(flag1==-1) {face(0,13,ac);} 24 }while(flag1<0); 25 26 for(k=0;k<3;k++) 27 { 28 29 face(2);//密码对比 30 flag2=login(flag1,input.next(),ac); 31 if(flag2<0) {face(flag1,14,ac);} 32 if(flag2>0) {break;} 33 } 34 if(flag2>0&&k<3) 35 { 36 do 37 { 38 face(flag1,3,ac);//主界面 39 try 40 { 41 select1=input.nextInt(); 42 if(select1<=0) throw new Exception (); 43 } 44 catch(Exception e) 45 { 46 face(flag1,15,ac); 47 } 48 switch(select1) 49 { 50 case 1://存款 51 { 52 cunkuan(flag1,ac); 53 if(q.equals(input.next())) 54 { 55 q=""; 56 flagq=1; 57 } 58 }break; 59 case 2://取款 60 { 61 flag4=qukuan(flag1,ac); 62 if(flag4==2)continue; 63 if(flag4==1)flagq=1; 64 }break; 65 case 3://转账 66 { 67 zhuanzhang(flag1,ac); 68 if(q.equals(input.next())) 69 { 70 q=""; 71 flagq=1; 72 } 73 }break; 74 case 4://修改密码 75 { 76 resetpassward(flag1, ac); 77 if(q.equals(input.next())) 78 { 79 q=""; 80 flagq=1; 81 } 82 }break; 83 case 5://查看 84 { 85 face(flag1,10,ac); 86 if(q.equals(input.next())) 87 { 88 q=""; 89 flagq=1; 90 } 91 }break; 92 } 93 }while(flagq!=1); 94 } 95 else 96 { 97 face(flag1,11,ac); 98 } 99 100 } 101 } 102 public static void getInformation(ArrayList<Account> ac)//获得信息 103 { 104 105 try 106 { 107 FileReader fr=new FileReader("AccountInformation"); 108 Scanner r=new Scanner(fr); 109 while(r.hasNext()) 110 { 111 Account a=new Account(); 112 a.setAccountID(r.next()); 113 a.setAccontpassword(r.next()); 114 a.setAccountname(r.next()); 115 a.setAccountbalance(r.nextInt()); 116 ac.add(a); 117 } 118 fr.close(); 119 r.close(); 120 } 121 catch(Exception e) 122 { 123 System.out.println("文件写入失败"); 124 } 125 } 126 public static void setInformation(ArrayList<Account> ac)//写入信息 127 { 128 try 129 { 130 int i=0; 131 FileWriter fw=new FileWriter("AccountInformation"); 132 PrintWriter pw=new PrintWriter(fw); 133 for(i=0;i<ac.size();i++) 134 { 135 136 pw.println(ac.get(i).getAccountID()+" "+ac.get(i).getAccontpassword()+" "+ ac.get(i).getAccountname()+" "+ac.get(i).getAccountbalance()); 137 } 138 pw.flush(); 139 pw.close(); 140 fw.close(); 141 } 142 catch(Exception e) 143 { 144 System.out.println("文件写入失败"); 145 } 146 } 147 public static String getList(int i,ArrayList<Account> ac)//读取流水 148 { 149 try 150 { 151 FileReader fr=new FileReader("AccountList"); 152 Scanner in=new Scanner(fr); 153 String iid=ac.get(i).getAccountID(); 154 String id=new String(); 155 String s=new String(); 156 String sum=""; 157 int z=1; 158 while(in.hasNextLine()) 159 { 160 id=in.next(); 161 if(iid.equals(id)) 162 { 163 s=id+" "+in.nextLine()+" "; 164 sum=sum+"( "+z+" ) "+s; 165 z++; 166 } 167 } 168 fr.close(); 169 in.close(); 170 return sum; 171 } 172 catch(Exception e) 173 { 174 System.out.println("文件读取失败"); 175 return ""; 176 } 177 } 178 public static void setList(int i,ArrayList<Account> ac)//写入流水 179 { 180 try 181 { 182 Account a=ac.get(i); 183 FileWriter fw=new FileWriter("AccountList",true); 184 PrintWriter pw=new PrintWriter(fw); 185 pw.println(a.getAccountID()+" "+a.getAccountname()+" "+ a.getOperatedate()+" "+a.getOperatetype()+" "+a.getAmount()); 186 pw.flush(); 187 pw.close(); 188 fw.close(); 189 } 190 catch(Exception e) 191 { 192 System.out.println("文件写入失败"); 193 } 194 } 195 public static void zhuanzhang(int i,ArrayList<Account> ac) 196 { 197 Account a=new Account(); 198 Account b=new Account(); 199 Scanner input=new Scanner(System.in); 200 String z="",x=""; 201 int t=0,m=0,f1=0; 202 while(f1==0) 203 { 204 face(i,6,ac); 205 z=input.next(); 206 if((t=id(z,ac))>=0)//判断 207 { 208 try 209 { 210 face(i,7,ac); 211 m=input.nextInt(); 212 if(m<=0)throw new Exception(); 213 } 214 catch(Exception e) 215 { 216 face(i,13,ac); 217 f1=1; 218 continue; 219 } 220 221 if(f1==0)//输入正确 开始转账 222 { 223 a=ac.get(i); 224 b=ac.get(t); 225 a.setAmount(-m); 226 b.setAmount(m); 227 ac.set(i, a); 228 face(i,t,1,ac); 229 x=input.next(); 230 if(x.equals("Y")==true) 231 { 232 a.setOperatedate(); 233 a.setOperatetype(3); 234 b.setOperatedate(); 235 b.setOperatetype(3); 236 if(ac.get(i).getAccountbalance()>=m) 237 { 238 a.setAccountbalance(a.getAccountbalance()-m);//取款 239 ac.set(i, a); 240 setList(i, ac); 241 b.setAccountbalance(b.getAccountbalance()+m);//存款 242 ac.set(t, b); 243 setList(t, ac); 244 setInformation(ac); 245 face(i,t,2,ac); 246 break; 247 } 248 else 249 { 250 face(i,19,ac); 251 break; 252 } 253 254 } 255 else if(x.equals("N")==true) 256 { 257 break; 258 } 259 else 260 { 261 face(i,20,ac); 262 } 263 264 } 265 } 266 } 267 } 268 public static void resetpassward(int i,ArrayList<Account> ac) 269 { 270 Account a=new Account(); 271 Scanner input=new Scanner(System.in); 272 String s1="",s2="",s3=""; 273 int f1=0,f2=0,t=0; 274 face(i,8,ac); 275 s1=input.next(); 276 f1=login(i,s1,ac);//密码正确 277 if(f1==1) 278 { 279 s2=input.next(); 280 s3=input.next(); 281 if(s2.equals(s3))//相等 282 { 283 if(s2.length()!=6)//格式 284 { 285 f2= -1; 286 face(i,16,ac); 287 } 288 for(t=0;t<s2.length();t++)//格式 289 { 290 if(s2.charAt(t)<‘0‘||s2.charAt(t)>‘9‘) 291 { 292 f2= -1; 293 face(i,16,ac); 294 } 295 } 296 if(f2==0) 297 { 298 a=ac.get(i); 299 a.setAmount(0); 300 a.setOperatetype(4); 301 a.setOperatedate(); 302 a.setAccontpassword(s2); 303 ac.set(i, a); 304 setList(i, ac); 305 setInformation(ac); 306 face(i,9,ac); 307 } 308 } 309 else 310 { 311 face(i,17,ac); 312 } 313 } 314 else 315 { 316 face(i,18,ac); 317 } 318 } 319 public static int qukuan(int i,ArrayList<Account> ac) 320 { 321 Account a=new Account(); 322 Scanner input=new Scanner(System.in); 323 int f=0,m=0; 324 face(i,5,ac); 325 do 326 { 327 try 328 { 329 f=input.nextInt(); 330 if(f<=0)throw new Exception(); 331 } 332 catch(Exception e) 333 { 334 face(i,15,ac); 335 continue; 336 } 337 switch(f) 338 { 339 case 1:m=100;break; 340 case 2:m=500;break; 341 case 3:m=1000;break; 342 case 4:m=1500;break; 343 case 5:m=2000;break; 344 case 6:m=5000;break; 345 case 7: 346 { 347 try 348 { 349 m=input.nextInt(); 350 if(m<=0)throw new Exception(); 351 } 352 catch(Exception e) 353 { 354 face(i,15,ac); 355 continue; 356 } 357 };break; 358 case 8:return 1; 359 case 9:return 2; 360 } 361 }while(f>8); 362 if(ac.get(i).getAccountbalance()>=m) 363 { 364 a=ac.get(i); 365 a.setAccountbalance(a.getAccountbalance()-m); 366 a.setAmount(m*-1); 367 a.setOperatetype(2); 368 a.setOperatedate(); 369 ac.set(i, a); 370 setList(i, ac); 371 setInformation(ac); 372 face(i,22,ac); 373 } 374 else 375 { 376 face(i,19,ac); 377 } 378 return 0; 379 } 380 //@SuppressWarnings("resource") 381 public static void cunkuan(int i,ArrayList<Account> ac) 382 { 383 Account a=new Account(); 384 Scanner input=new Scanner(System.in); 385 int m=0,f=0; 386 face(i,4,ac); 387 try 388 { 389 m=input.nextInt(); 390 if(m<=0) throw new Exception(); 391 392 } 393 catch(Exception e) 394 { 395 face(i,15,ac); 396 f= -1; 397 } 398 a=ac.get(i); 399 a.setAccountbalance(a.getAccountbalance()+m); 400 a.setAmount(m); 401 a.setOperatetype(1); 402 a.setOperatedate(); 403 ac.set(i, a); 404 setList(i, ac); 405 setInformation(ac); 406 if(f==0) 407 { 408 face(i,21,ac); 409 } 410 } 411 public static int id(String accountID,ArrayList<Account> ac) 412 { 413 int i=0,t=0; 414 if(accountID.length()!=8)//格式 415 { 416 return -2; 417 } 418 for(t=0;t<accountID.length();t++)//格式 419 { 420 if(accountID.charAt(t)<‘0‘||accountID.charAt(t)>‘9‘) 421 { 422 return -2; 423 } 424 } 425 for(i=0;i<ac.size();i++)//查找 i 为账户序号 426 { 427 if(ac.get(i).getAccountID().equals(accountID)==true) 428 { 429 return i; 430 } 431 } 432 return -1; 433 } 434 435 public static int login(int i,String accountpassword,ArrayList<Account> ac) 436 { 437 int t=0; 438 if(accountpassword.length()!=6)//格式 439 { 440 return -1; 441 } 442 for(t=0;t<accountpassword.length();t++)//格式 443 { 444 if(accountpassword.charAt(t)<‘0‘||accountpassword.charAt(t)>‘9‘) 445 { 446 return -1; 447 } 448 } 449 if(ac.get(i).getAccontpassword().equals(accountpassword)==true)//正误 450 { 451 return 1; 452 } 453 else 454 { 455 return -1; 456 } 457 } 458 public static void face(int select) 459 { 460 System.out.println("**********************************************"); 461 System.out.println(" 欢迎使用中国工商银行自助柜台系统"); 462 System.out.println("**********************************************"); 463 switch(select) 464 { 465 case 1://输入账号 466 { 467 System.out.println(" 请输入你的账号"); 468 }break; 469 case 2://输入密码 470 { 471 System.out.println(" 请输入你的密码"); 472 473 }break; 474 } 475 } 476 public static void face(int i,int select,ArrayList<Account> ac) 477 { 478 System.out.println("**********************************************"); 479 System.out.println(" 欢迎"+ac.get(i).getAccountname()+"使用中国工商银行自助柜台系统"); 480 System.out.println("**********************************************"); 481 switch(select) 482 { 483 484 case 3://主界面 485 { 486 System.out.println(" 1、 存款"); 487 System.out.println(" 2、 取款"); 488 System.out.println(" 3、 转账汇款"); 489 System.out.println(" 4、 修改密码"); 490 System.out.println(" 5、 查询余额"); 491 }break; 492 case 4://存款 493 { 494 System.out.println(" 请输入存款金额"); 495 }break; 496 case 5://取款 497 { 498 System.out.println(" "+ac.get(i).getAccountname()+"账户当前账户每日可以支取2万元。"); 499 System.out.println(" 1、100元"); 500 System.out.println(" 2、500元"); 501 System.out.println(" 3、1000元"); 502 System.out.println(" 4、1500元"); 503 System.out.println(" 5、2000元"); 504 System.out.println(" 6、5000元"); 505 System.out.println(" 7、其他金额"); 506 System.out.println(" 8、退卡"); 507 System.out.println(" 9、返回"); 508 }break; 509 case 6://输入转账账户 510 { 511 System.out.println(" 请输入转账账户:"); 512 }break; 513 case 7://输入转账金额 514 { 515 System.out.println(" 请输入转账金额:"); 516 }break; 517 case 8://修改密码 518 { 519 System.out.println(" 请输入当前密码:"); 520 System.out.println(" 请输入修改密码:"); 521 System.out.println(" 请输入确认密码:"); 522 }break; 523 case 9://修改密码成功 524 { 525 System.out.println(" 当前账户修改密码成功"); 526 }break; 527 case 10://显示余额和操作流程 528 { 529 System.out.println(" 当前账户余额为 "+ac.get(i).getAccountbalance()+" 元。"); 530 System.out.println(" 当前账户清单信息为:"); 531 System.out.print(getList(i, ac)); 532 Account a=ac.get(i); 533 a.setAmount(0); 534 a.setOperatetype(5); 535 a.setOperatedate(); 536 setList(i, ac); 537 }break; 538 case 11: 539 { 540 System.out.println(" 该账号三次录入密码错误,该卡已被系统没收,请与工商银行及时联系。"); 541 }break; 542 case 12: 543 { 544 System.out.println(" 该卡不是工商卡"); 545 }break; 546 case 13: 547 { 548 System.out.println(" 该账号不存在"); 549 }break; 550 case 14: 551 { 552 System.out.println(" 密码录入错误"); 553 }break; 554 case 15: 555 { 556 System.out.println(" 请输入正整数"); 557 }break; 558 case 16: 559 { 560 System.out.println(" 密码格式错误"); 561 }break; 562 case 17: 563 { 564 System.out.println(" 修改密码与确认密码不一致"); 565 }break; 566 case 18: 567 { 568 System.out.println(" 当前密码录入错误"); 569 }break; 570 case 19: 571 { 572 System.out.println(" 账户余额不足"); 573 }break; 574 case 20: 575 { 576 System.out.println(" 请输入"Y"或"N""); 577 }break; 578 case 21: 579 { 580 System.out.println(" 当前账户存款款"+ac.get(i).getAmount()+"成功。"); 581 System.out.println(" 当前账户余额为 "+ac.get(i).getAccountbalance()+" 元。"); 582 }break; 583 case 22: 584 { 585 System.out.println(" 当前账户取款"+ac.get(i).getAmount()+"成功。"); 586 System.out.println(" 当前账户余额为 "+ac.get(i).getAccountbalance()+" 元。"); 587 }break; 588 } 589 } 590 public static void face(int i,int t,int select,ArrayList<Account> ac) 591 { 592 String s=ac.get(t).getAccountname(); 593 String star=s.substring(1); 594 star="*"+star; 595 System.out.println("*********************************************"); 596 System.out.println(" 欢迎"+ac.get(i).getAccountname()+"使用中国工商银行自助柜台系统"); 597 System.out.println("**********************************************"); 598 switch(select) 599 { 600 case 1://确认 601 { 602 System.out.println(" 请确认是否向"+star+"转账"+ac.get(i).getAmount()*-1+"元"); 603 }break; 604 case 2: 605 { 606 System.out.println(" 当前账户成功向"+star+"转账"+ac.get(i).getAmount()*-1+"元"); 607 System.out.println(" 当前账户余额为 "+ac.get(i).getAccountbalance()+" 元。"); 608 }break; 609 } 610 } 611 612 }
以上是关于java_000.JAVA语言课堂测试试卷01的主要内容,如果未能解决你的问题,请参考以下文章