Java測試筆記
阿新 • • 發佈:2018-09-24
info ted ring edate break 老師 etop emp 余額
本次Java測試主要是做一個與ATM相似的系統,用文本文件來作為用戶數據庫,實現存款、取款、轉賬、修改密碼、查詢余額的功能。
在做這次測試之前老師並沒有講解與Java相關的知識,所以這就需要我們自學Java,考驗我們的自學能力的同時,也檢測了我們的自學成果。
首先,先定義一個賬戶類,裏面包含賬號、姓名、操作時間、流水金額、密碼、操作類型、賬戶余額成員,還有各個成員的設置、得到函數。
import java.util.Scanner; import java.io.*; import java.io.IOException; import java.nio.file.Paths; public classAccount { private String accountID; private String accountname; private String operatedate;//操作時間 private int operatetype;//存儲操作 private String accountpassword; private int accountbalance;//儲存賬戶余額 private int amount; public void setaccountID(String a) { accountID = a; }public void setaccountname(String a) { accountname = a; } public void setoperatedate(String a) { operatedate = a; } public void setoperatetype(int a) { operatetype = a; } public void setaccountpassword(String a) { accountpassword = a; }public void setaccountbalance(int a) { accountbalance = a; } public void setamount(int a) { amount = a; } 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 Account() { } }
然後定義另一個類,用來存放其他函數和主函數及類AccountManage,在做測試時要用到文件流的輸入和輸出,因為以前在學習Java時沒有看到也沒有學到有關文件流的輸入和輸出之類的東西,所以只能在做測試時,現場去上網查詢,簡單掌握了Scanner類中的文件流,然後再類中寫了兩個函數分別用來將accountinformation.txt和accountlist.txt中的數據讀入到對象中,還有兩個函數分別用來將操作或修改後的對象數據寫入到accountinformation.txt和accountlist.txt兩個文件中。主函數中,函數主體是do循環語句裏套上switch語句,do循環語句用來反復執行任務,switch語句用來進行任務的選擇。在寫程序時,發現Java裏不能直接進行字符串與字符串之間或字符與字符之間的比較(就是不可以用“==“號來比較),如果想要進行比較,則需要調用函數來進行比較(如a.compareTo(b) == 0,及比較a、b是否相等)。循環執行switch語句並在執行一個case後選擇下一個執行任務後,進行switch後數字的修改,然後繼續循環執行。雖然寫完了程序,但是將修改或執行後的對象數據寫入文件的功能還沒有實現,在接下來的時間我會將其完善。
1 class AccountManager{ 2 static Account in[] =new Account[5]; 3 4 static void infile1(Account a[])throws IOException{ //對文件1中的用戶信息進行錄入 5 Scanner in = new Scanner(Paths.get("accountinformation.txt")); 6 int i=0; 7 while(in.hasNextLine()) { 8 a[i]=new Account(); 9 String data1 = in.next(); 10 String data2 = in.next(); 11 String data3 = in.next(); 12 int data4=in.nextInt(); 13 a[i].setaccountID(data1); 14 a[i].setaccountname(data2); 15 a[i].setaccountpassword(data3); 16 a[i].setaccountbalance(data4); 17 i++; 18 } 19 in.close(); 20 } 21 static void infile2(Account a[])throws IOException{ //對文件2中的用戶信息進行錄入 22 Scanner in = new Scanner(Paths.get("accountlist.txt")); 23 int i=0; 24 while(in.hasNextLine()) { 25 a[i]=new Account(); 26 String data1 = in.next(); 27 String data2 = in.next(); 28 String data3 = in.next(); 29 int data4=in.nextInt(); 30 int data5=in.nextInt(); 31 a[i].setaccountID(data1); 32 a[i].setaccountname(data2); 33 a[i].setoperatedate(data3); 34 a[i].setoperatetype(data4); 35 a[i].setamount(data5); 36 i++; 37 } 38 in.close(); 39 } 40 static void outfile1(Account a[],int len) throws IOException { //將信息進行輸入到文件1中 41 PrintWriter out = new PrintWriter("accountinformation.txt"); 42 int i = 0; 43 for(i=0;i<len-1;i++) { 44 if(a[i]!=null)out.print(a[i].getaccountID()+"\n"+a[i].getaccountname()+"\n"+a[i].getaccountpassword()+"\n"+a[i].getaccountbalance()+"\n"); 45 } 46 out.flush(); 47 out.close(); 48 } 49 void outfile2(Account a[],int len) throws IOException { //將信息進行輸入到文件2中 50 PrintWriter out = new PrintWriter("accountinformation.txt"); 51 int i = 0; 52 for(i=0;i<len-1;i++) { 53 if(a[i]!=null)out.print(a[i].getaccountID()+"\n"+a[i].getaccountname()+"\n"+a[i].getoperatedate()+"\n"+a[i].getoperatetype()+"\n"+a[i].getamount()+"\n"); 54 } 55 out.flush(); 56 out.close(); 57 } 58 59 60 public static void main(String args[]) throws IOException{ 61 infile1(in); 62 infile2(in); 63 for(int i = 0;i < 5; i++) { 64 in[i].setaccountpassword("123"); 65 } 66 Scanner sc =new Scanner(System.in); 67 int j = 1; 68 int g = 0; 69 do { 70 switch(j) { 71 case 1:{ 72 do { 73 System.out.println("**************************************************"); 74 System.out.println("歡迎使用中國工商銀行自動櫃員系統"); 75 System.out.println("**************************************************"); 76 System.out.println("請輸入您的賬號:"); 77 System.out.println("**************************************************"); 78 //添加輸入 79 String accid; 80 accid = sc.nextLine(); 81 int temp1 = 0; 82 int temp2 = 0; 83 int temp3 = 0; 84 for(int i = 0; i < 5; i++) { 85 if((in[i].getaccountID().compareTo(accid) != 0) && (accid.length() == in[i].getaccountID().length())) { 86 temp1++; 87 } 88 } 89 if(temp1 == 5) 90 System.out.println("該賬號不存在" + "\n"); 91 for(int i = 0; i < 5; i++) { 92 if((in[i].getaccountID().compareTo(accid) != 0) && (accid.length() != in[i].getaccountID().length())) { 93 temp2 = 1; 94 } 95 } 96 if(temp2 == 1) 97 System.out.println("該卡不是工行卡" + "\n"); 98 for(int i = 0; i < 5; i++) { 99 if(in[i].getaccountID().compareTo(accid) == 0) { 100 j = 2; 101 g = i; 102 } 103 } 104 } while(j != 2); 105 } 106 break; 107 case 2:{ 108 if(j == 2) { 109 int k = 0; 110 do { 111 int temp = 0; 112 System.out.println("*********************************************************"); 113 System.out.println("歡迎" + in[g].getaccountID() + "使用中國工商銀行自助櫃員系統"); 114 System.out.println("*********************************************************"); 115 System.out.println("請輸入您的密碼:"); 116 System.out.println("*********************************************************"); 117 //添加輸入 118 String accpass; 119 accpass = sc.nextLine(); 120 for(int i = 0; i < 5; i++) { 121 if((in[i].getaccountpassword().compareTo(accpass) == 0)&&(in[i] != null)) { 122 j = 3; 123 } 124 else if((in[i].getaccountpassword().compareTo(accpass) != 0)&&(in[i] != null)) { 125 temp++; 126 } 127 } 128 if(temp != 0) { 129 System.out.println("密碼錄入錯誤" + "\n"); 130 k++; 131 } 132 } while((k != 3) && (j != 3)); 133 if(k == 3) { 134 System.out.println("該賬號三次錄入密碼錯誤,該卡已被系統沒收,請與工行及時聯系處理" + "\n"); 135 j = 1; 136 } 137 } 138 } 139 break; 140 case 3:{ 141 if(j == 3) { 142 int f = 0; 143 String temp2; 144 String temp1; 145 System.out.println("***************************************************************\r\n" + 146 "歡迎"+in[g].getaccountID()+"使用中國工商銀行自助櫃員系統\r\n" + 147 "****************************************************************\r\n" + 148 "1、存款;\r\n" + 149 "2、取款;\r\n" + 150 "3、轉賬匯款;\r\n" + 151 "4、修改密碼;\r\n" + 152 "5、查詢余額;\r\n" + 153 "****************************************************************"); 154 f = sc.nextInt(); 155 switch(f) { 156 case 1:{ 157 int a; 158 int b; 159 int c; 160 do { 161 System.out.println("***************************************************************\r\n" + 162 "歡迎"+in[g].getaccountID()+"使用中國工商銀行自助櫃員系統\r\n" + 163 "****************************************************************\r\n" + 164 "請輸入存款金額;\r\n" + 165 " \r\n" + 166 "****************************************************************"); 167 a = sc.nextInt(); 168 c = a + in[g].getamount(); 169 b = a % 1; 170 if(b == 0) 171 in[g].setamount(c); 172 else 173 System.out.println("輸入金額有誤"); 174 break; 175 } while(true); 176 System.out.println("輸入字母“q”,則返回系統輸入賬號界面;輸入正整數,則跳轉"); 177 178 temp2 = sc.nextLine(); 179 if(temp2.compareTo("q") == 0) { 180 j =1; 181 break; 182 } 183 else { 184 System.out.println("***************************************************************\r\n" + 185 "歡迎"+in[g].getaccountID()+"使用中國工商銀行自助櫃員系統\r\n" + 186 "****************************************************************\r\n" + 187 "當前賬戶存款操作成功。\r\n" + 188 "當前賬戶余額為:"+in[g].getamount()+"\r\n" + 189 "****************************************************************"); 190 System.out.println("輸入字母“q”,則返回系統輸入賬號界面"); 191 } 192 temp1 = sc.nextLine(); 193 if(temp1.compareTo("q") == 0) { 194 j = 1; 195 } 196 197 } 198 break; 199 case 2:{ 200 System.out.println("***************************************************************\r\n" + 201 "歡迎"+in[g].getaccountID()+"使用中國工商銀行自助櫃員系統\r\n" + 202 "****************************************************************"+ 203 "當前賬戶每日可以支取2萬元。\r\n" + 204 "1、100元\r\n" + 205 "2、500元\r\n" + 206 "3、1000元\r\n" + 207 "4、1500元\r\n" + 208 "5、2000元\r\n" + 209 "6、5000元;\r\n" + 210 "7、其他金額\r\n" + 211 "8、退卡\r\n" + 212 "9、返回\r\n" + 213 "****************************************************************"); 214 int tt; 215 int qt; 216 int js = 0; 217 tt = sc.nextInt(); 218 int a[] = {100, 500, 1000, 1500, 2000, 5000}; 219 int c; 220 switch(tt) { 221 case 1:{ 222 if(in[g].getamount() < 100) { 223 System.out.println("賬戶余額不足"); 224 } 225 else 226 js = 1; 227 } 228 break; 229 case 2:{ 230 if(in[g].getamount() < 500) { 231 System.out.println("賬戶余額不足"); 232 } 233 else 234 js = 1; 235 } 236 break; 237 case 3:{ 238 if(in[g].getamount() < 1000) { 239 System.out.println("賬戶余額不足"); 240 } 241 else 242 js = 1; 243 } 244 break; 245 case 4:{ 246 if(in[g].getamount() < 1500) { 247 System.out.println("賬戶余額不足"); 248 } 249 else 250 js = 1; 251 } 252 break; 253 case 5:{ 254 if(in[g].getamount() < 2000) { 255 System.out.println("賬戶余額不足"); 256 } 257 else 258 js = 1; 259 } 260 break; 261 case 6:{ 262 if(in[g].getamount() < 5000) { 263 System.out.println("賬戶余額不足"); 264 } 265 else 266 js = 1; 267 } 268 break; 269 case 7:{ 270 System.out.println("***************************************************************\r\n" + 271 "歡迎"+in[g].getaccountID()+"使用中國工商銀行自助櫃員系統\r\n" + 272 "****************************************************************\r\n" + 273 "請輸入取款金額:\r\n" + 274 "****************************************************************"); 275 qt = sc.nextInt(); 276 if(in[g].getamount() < in[g].getamount()) { 277 System.out.println("賬戶余額不足"); 278 } 279 else 280 js = 1; 281 } 282 break; 283 case 8:{ 284 j = 1; 285 } 286 break; 287 case 9:{ 288 j = 3; 289 } 290 break; 291 } 292 if(js == 1) { 293 c = in[g].getamount() - a[tt - 1]; 294 in[g].setamount(c); 295 System.out.println("***************************************************************\r\n" + 296 "歡迎"+in[g].getaccountID()+"使用中國工商銀行自助櫃員系統\r\n" + 297 "****************************************************************\r\n" + 298 "當前賬戶取款操作"+a[tt - 1]+"\r\n" + 299 "當前賬戶余額為:"+c+"\r\n" + 300 "****************************************************************"); 301 } 302 303 } 304 break; 305 case 3:{ 306 System.out.println("***************************************************************\r\n" + 307 "歡迎"+in[g].getaccountID()+"使用中國工商銀行自助櫃員系統\r\n" + 308 "****************************************************************\r\n" + 309 "請輸入轉賬金額;\r\n" + 310 "****************************************************************"); 311 int zhuan; 312 String ss; 313 String zh; 314 String yn; 315 zhuan = sc.nextInt(); 316 if(in[g].getamount() < zhuan) { 317 System.out.println("賬戶余額不足"); 318 } 319 else { 320 System.out.println("輸入被轉賬賬戶:"); 321 zh = sc.nextLine(); 322 System.out.println("***************************************************************\r\n" + 323 "歡迎"+in[g].getaccountID()+"使用中國工商銀行自助櫃員系統\r\n" + 324 "****************************************************************\r\n" + 325 "請確認是否向"+zh+"轉賬"+zhuan+"元。\r\n" + 326 "****************************************************************"); 327 System.out.println("輸入“N”表示不確認轉賬,輸入“Y”表示確認轉賬"); 328 yn = sc.nextLine(); 329 if(yn.compareTo("Y") == 0) { 330 for(int i = 0; i < 5; i++) { 331 if((in[i].getaccountID().compareTo(zh) == 0)&&(in[i] != null)) { 332 int rr; 333 int uu; 334 rr = in[i].getamount() + zhuan; 335 uu = in[g].getamount() - zhuan; 336 in[i].setamount(rr); 337 in[g].setamount(uu); 338 } 339 } 340 System.out.println("***************************************************************\r\n" + 341 "歡迎"+in[g].getaccountID()+"使用中國工商銀行自助櫃員系統\r\n" + 342 "****************************************************************\r\n" + 343 "當前賬戶向"+zh+"成功轉賬"+zhuan+"元。\r\n" + 344 "當前賬戶余額為:"+in[g].getamount()+"\r\n" + 345 "****************************************************************"); 346 System.out.println("輸入字母“q”,則返回系統輸入賬號界面"); 347 ss = sc.nextLine(); 348 if(ss.compareTo("q") == 0) { 349 j = 1; 350 } 351 } 352 else if(yn.compareTo("N") == 0) { 353 j = 3; 354 } 355 } 356 } 357 break; 358 case 4:{ 359 int m = 0; 360 String ss; 361 do { 362 System.out.println("***************************************************************\r\n" + 363 "歡迎"+in[g].getaccountID()+"使用中國工商銀行自助櫃員系統\r\n" + 364 "****************************************************************\r\n" + 365 "請輸入當前密碼:\r\n" + 366 "請輸入修改密碼:\r\n" + 367 "請輸入確認密碼:\r\n"); 368 String x1, x2, x3; 369 x1 = sc.nextLine(); 370 x2 = sc.nextLine(); 371 x3 = sc.nextLine(); 372 if(in[g].getaccountpassword().compareTo(x1) != 0) { 373 System.out.println("當前密碼錄入錯誤"); 374 } 375 else if(x2.compareTo(x3) != 0) { 376 System.out.println("修改密碼與確認密碼不一致"); 377 } 378 else { 379 in[g].setaccountpassword(x2); 380 System.out.println("***************************************************************\r\n" + 381 "歡迎"+in[g].getaccountID()+"使用中國工商銀行自助櫃員系統\r\n" + 382 "****************************************************************\r\n" + 383 "當前賬戶密碼修改成功\r\n" + 384 "****************************************************************"); 385 m = 1; 386 } 387 } while(m == 0); 388 System.out.println("輸入字母“q”,則返回系統輸入賬號界面"); 389 ss = sc.nextLine(); 390 if(ss.compareTo("q") == 0) { 391 j = 1; 392 } 393 } 394 break; 395 case 5:{ 396 String ss; 397 System.out.println("***************************************************************\r\n" + 398 "歡迎"+in[g].getaccountID()+"使用中國工商銀行自助櫃員系統\r\n" + 399 "****************************************************************\r\n" + 400 "當前賬戶余額為:"+in[g].getamount()+"元"); 401 System.out.println("輸入字母“q”,則返回系統輸入賬號界面"); 402 ss = sc.nextLine(); 403 if(ss.compareTo("q") == 0) { 404 j = 1; 405 } 406 } 407 break; 408 }//小 switch 409 } 410 } 411 break; 412 }//大 switch 413 } while(true);//大 do while 414 } 415 }
Java測試筆記