1. 程式人生 > >Java測試筆記

Java測試筆記

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 class
Account { 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測試筆記