zoukankan      html  css  js  c++  java
  • Java测试笔记(ATM)

    本次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()+"
    "+a[i].getaccountname()+"
    "+a[i].getaccountpassword()+"
    "+a[i].getaccountbalance()+"
    ");
     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()+"
    "+a[i].getaccountname()+"
    "+a[i].getoperatedate()+"
    "+a[i].getoperatetype()+"
    "+a[i].getamount()+"
    ");
     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("该账号不存在" + "
    ");
     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("该卡不是工行卡" + "
    ");
     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("密码录入错误" + "
    ");
    130                             k++;
    131                         }                            
    132                     } while((k != 3) && (j != 3));
    133                     if(k == 3) {
    134                         System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理" + "
    ");
    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("***************************************************************
    " + 
    146                             "欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统
    " + 
    147                             "****************************************************************
    " + 
    148                             "1、存款;
    " + 
    149                             "2、取款;
    " + 
    150                             "3、转账汇款;
    " + 
    151                             "4、修改密码;
    " + 
    152                             "5、查询余额;
    " + 
    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("***************************************************************
    " + 
    162                                     "欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统
    " + 
    163                                     "****************************************************************
    " + 
    164                                     "请输入存款金额;
    " + 
    165                                     "       
    " + 
    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("***************************************************************
    " + 
    185                                     "欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统
    " + 
    186                                     "****************************************************************
    " + 
    187                                     "当前账户存款操作成功。
    " + 
    188                                     "当前账户余额为:"+in[g].getamount()+"
    " + 
    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("***************************************************************
    " + 
    201                                 "欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统
    " + 
    202                                 "****************************************************************"+
    203                                 "当前账户每日可以支取2万元。
    " + 
    204                                 "1、100元
    " + 
    205                                 "2、500元
    " + 
    206                                 "3、1000元
    " + 
    207                                 "4、1500元
    " + 
    208                                 "5、2000元
    " + 
    209                                 "6、5000元;
    " + 
    210                                 "7、其他金额
    " + 
    211                                 "8、退卡
    " + 
    212                                 "9、返回
    " + 
    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("***************************************************************
    " + 
    271                                     "欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统
    " + 
    272                                     "****************************************************************
    " + 
    273                                     "请输入取款金额:
    " + 
    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("***************************************************************
    " + 
    296                                     "欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统
    " + 
    297                                     "****************************************************************
    " + 
    298                                     "当前账户取款操作"+a[tt - 1]+"
    " + 
    299                                     "当前账户余额为:"+c+"
    " + 
    300                                     "****************************************************************");
    301                         }
    302                         
    303                     }
    304                     break;
    305                     case 3:{
    306                         System.out.println("***************************************************************
    " + 
    307                                 "欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统
    " + 
    308                                 "****************************************************************
    " + 
    309                                 "请输入转账金额;
    " + 
    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("***************************************************************
    " + 
    323                                     "欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统
    " + 
    324                                     "****************************************************************
    " + 
    325                                     "请确认是否向"+zh+"转账"+zhuan+"元。
    " + 
    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("***************************************************************
    " + 
    341                                         "欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统
    " + 
    342                                         "****************************************************************
    " + 
    343                                         "当前账户向"+zh+"成功转账"+zhuan+"元。
    " + 
    344                                         "当前账户余额为:"+in[g].getamount()+"
    " + 
    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("***************************************************************
    " + 
    363                                     "欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统
    " + 
    364                                     "****************************************************************
    " + 
    365                                     "请输入当前密码:
    " + 
    366                                     "请输入修改密码:
    " + 
    367                                     "请输入确认密码:
    ");
    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("***************************************************************
    " + 
    381                                         "欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统
    " + 
    382                                         "****************************************************************
    " + 
    383                                         "当前账户密码修改成功
    " + 
    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("***************************************************************
    " + 
    398                                 "欢迎"+in[g].getaccountID()+"使用中国工商银行自助柜员系统
    " + 
    399                                 "****************************************************************
    " + 
    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 }
  • 相关阅读:
    关于拷贝构造函数和赋值运算符
    笔试题(转)
    Pro *C/C++学习笔记(一)
    __cdecl
    Visual Studio 2010中C++的四大变化(转)
    小小递归函数的执行过程
    stl string常用函数
    【C/C++ string】之strcpy函数
    409 Excuses, Excuses!
    10878 Decode the tape
  • 原文地址:https://www.cnblogs.com/leity/p/9696184.html
Copyright © 2011-2022 走看看