开学测试

JAVA的第一堂课,我们如约到教室测试,一共四节课时间,测试内容是做银行提款机的程序。

       我先把题目中要求的类和主函数写出来,然后把之前写的学生管理系统的开始界面的语句改了改,然后按照题目中的顺序写程序。

       首先是按照要求写了私有变量,以及私有变量的set和get函数(后加的,当时根本没时间写),然后就是主函数在主函数中我写的不多,主要是调用核对账号、密码以及显示主界面的函数。

       在核对账号的函数中,用一个变量存储客户输入的账号,然后打开储存客户账号的文件,按行查找账号,当找到账号就把那一行的数据赋值给相应的变量,然后主函数调用核对密码的函数,如果账号不对,回到主函数依旧调用核对账号的函数,直到账号输入正确。

 

 

   

       在核对密码的函数中,用一个变量存储客户输入的密码,如果密码输入正确,则回到主函数,调用主界面函数,如果不正确,则由time变量存储输入账号次数,若达到三次则锁定,回到输入账号的界面。

 

 

 

       进入主界面函数后,显示可以进行的选项。在主函数中利用switch语句判断、调用对应的函数。

 

 

 

 

 

 

 

       在存款函数中用户输入错误金额会提示出错,然后回到存款界面,如果输入q则回到输入账号界面,输入正确金额后,找到对应的账号,加金额写道临时文件中,最后把临时文件写入到存储文件中,然后在流水文件中写入账户和操作。

 

 

 

 

 

 

 

取款函数与存款函数类似,用switch语句判断取款金额。

 

 

 

       转账汇款函数与前面几个函数基本相同,需要注意的是两个账户的金额都要修改。

 

 

 

       修改密码,确认原密码和两次新密码之后将修改后的密码写到文件中,若其中出现错误则跳回修改密码界面。

 

 

 

       查询函数,在流水文件中找到相应账户的信息并输出。

 

 

 

 本次测试成绩为19分,原因在于没有将代码完善,一些功能还会出错,所以我认识到敲代码不仅仅要准确也要有速度。而这些的基础就在于程序员对语言、结构的掌握。我以后要经常敲代码,多熟悉代码。

 

以下是完整的程序代码。

package test;
import java.util.*;
//信 1905-1 20194171 常金悦
  
import java.io.*;
  
public class AccountManager {
       
       private String accountID;               //用户账号
       private String accountname;             //账户名称
       private String operatedate;             //操作时间   2018-09-20
       private int operatetype;                //操作类型
       private String accountpassword;         //用户密码
       private int accountbalance;             //账户余额
       private int amount;                     //流水金额
       
       String getaccountID(){return accountID;}
       void setaccountID(String s){accountID=s;}
       
       String getaccountname(){return accountname;}
       void setaccountname(String s){accountname=s;}
       
       String getoperatedate(){return operatedate;}
       void setoperatedate(String s){operatedate=s;}
       
       int getoperatetype(){return operatetype;}
       void setoperatetype(int s){operatetype=s;}
       
       String getaccountpassword(){return accountpassword;}
       void setaccountpassword(String s){accountpassword=s;}
       
       int getaccountbalance(){return accountbalance;}
       void setaccountbalance(int s){accountbalance=s;}
       
       int getamount(){return amount;}
       void setamount(int s){amount=s;}
              
       public static void main(String[] args)throws IOException{
              AccountManager acc=new AccountManager();
              System.out.println("*******************************");
              System.out.println(" 欢迎使用中国工商银行自动柜员系统");
              acc.mmaaiinn();
       }
       void mmaaiinn()throws IOException{
              int a=0;
              while(a==0){
                     System.out.println("*******************************");
                  System.out.println("请输入您的账号:");
                  String Id=zhanghao();
                  if(Id.equals("false")){}
                  else {
                         a=mima(Id);
                         if(a==1) jiemian();
                     }
                }
       }
       
       public String zhanghao()throws IOException{
              Scanner input = new Scanner(System.in,"UTF-8");
              String ID=input.next();
              
              InputStream is = new FileInputStream("accountinformation.txt");
        Scanner ss = new Scanner(is,"UTF-8");
        int t=0;
        while(ss.hasNext()){
               String line = ss.nextLine();
               String[] txt = line.split(",");
               String id = txt[0];
               if(id.equals(ID)){
                   accountID=txt[0];
                    accountpassword=txt[1];
                    accountbalance=Integer.valueOf(txt[2]);
                      t=-1;
                      break;
               }
        }
        if(t==0){
               System.out.println("该卡不是工行卡");
               return "false";
        }
        else return ID;
       }
       
     public int mima(String Id)throws IOException{
           System.out.println("*******************************");
             System.out.println(" 欢迎"+Id+"使用中国工商银行自动柜员系统");
             int time=0;
          int a=0;
             while(time!=3){
                    System.out.println("*******************************");
                    System.out.println("请输入您的密码:");
                    Scanner input = new Scanner(System.in,"UTF-8");
                    String mm=input.next();
                    if(accountpassword.equals(mm)){
                            a=1;
                            return a;
                    }
                 else{
                            System.out.println("*******************************");
                               System.out.println("密码输入错误");
                               time++;
                      }  
          }
              
          if(time==3){
                     System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理");
                     a=0;
            }
             return a;
       }
     
     public void jiemian()throws IOException{
           System.out.println("*******************************");
             System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
             System.out.println("*******************************");
             System.out.println("1、存款");
             System.out.println("2、取款");
             System.out.println("3、转账汇款");
             System.out.println("4、修改密码");
             System.out.println("5、查询余额");
             System.out.println("*******************************");
             Scanner input = new Scanner(System.in,"UTF-8");
             int a=0;
             a = input.nextInt();
              input.nextLine();
              
              switch (a) {
              case 1: cunkuan();
                     break;
              case 2: qukuan();
                     break;
              case 3: zhuanzhang();
                     break;
              case 4: xiugai();
                     break;
              case 5: chaxun();
                     break;
              default:
                     System.out.println("*******************************");
                     System.out.println("Wrong number!");
                     break;
                 }
              input.close();
              }
     
     
     public void cunkuan()throws IOException{
           System.out.println("*******************************");
             System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
             System.out.println("*******************************");
             System.out.println("请输入存款金额:");
             Scanner input = new Scanner(System.in,"UTF-8");
             String a;
             int e=0;
             a = input.nextLine();
             if(a.equals("q")) mmaaiinn();
             else {e=Integer.valueOf(a);}
             if((e<=0)){
                 System.out.println("输入金额有误");
                 cunkuan();
             }
             else{
                    int money=0;
                    InputStream is = new FileInputStream("accountinformation.txt");
              Scanner ss = new Scanner(is,"UTF-8");
              
              File f2 = new File("account.txt");
              FileWriter fw2 = new FileWriter(f2); 
              PrintWriter pw2 = new PrintWriter(fw2);
              
              while(ss.hasNext()){
                     String line = ss.nextLine();
                     String[] txt = line.split(",");
                     String id = txt[0];
                     if(id.equals(accountID)){
                         money=accountbalance+e;
                         pw2.println(id+","+accountpassword+","+money);
                     }
                     else{
                            pw2.println(line);
                     }  
                    
              }
              
              
              //12345678,787878,0
              
              
              pw2.close();
              is = new FileInputStream("account.txt");
               ss = new Scanner(is,"UTF-8");
               
               File f = new File("accountinformation.txt");
               fw2 = new FileWriter(f);
               PrintWriter w = new PrintWriter(fw2);
               
               while (ss.hasNext()) {
                      String line = ss.nextLine();
                      w.println(line);
               }
               w.close();
               
                    System.out.println("*******************************");
                   System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
                   System.out.println("*******************************");
                    System.out.println("当前账户存款操作成功");
                    System.out.println("当前账户余额为:"+money+"元");
                    
                    f=new File("accountlist.txt");
                    FileWriter fw = new FileWriter(f,true); 
            PrintWriter pw=new PrintWriter(fw);
            pw.println(accountID+",take in"+a+"RMB");
            pw.close();
             }
             
             
     }
     public void qukuan()throws IOException{
        System.out.println("*******************************");
            System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
            System.out.println("*******************************");
            System.out.println(" 当前账户每日可以支取2万元。");
            System.out.println(" 1、100元");
         System.out.println(" 2、500元");
         System.out.println(" 3、1000元");
         System.out.println(" 4、1500元");
         System.out.println(" 5、2000元");
            System.out.println(" 6、5000元");
            System.out.println(" 7、其他金额");
            System.out.println(" 8、退卡");
            System.out.println(" 9、返回");
            Scanner input = new Scanner(System.in,"UTF-8");
              int a=0;
              int money=0;
            a = input.nextInt();
              input.nextLine();
              switch (a) {
              case 1:
                     money=100;
                     break;
              case 2:
                     money=500;
                     break;
              case 3:
                     money=1000;
                     break;
              case 4:
                     money=1500;
                     break;
              case 5:
                     money=2000;
                     break;
              case 6:
                  money=5000;
                  break;
              case 7:{
            System.out.println("*******************************");
                   System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
                   System.out.println("*******************************");
                   System.out.println("请输入取款金额");
            money=input.nextInt();
            }
                break;
              case 8:{mmaaiinn();}break;
              case 9:{jiemian();}break;
              default:
                     System.out.println("*******************************");
                     System.out.println("Wrong number!");
                     break;
               }
              if(money>0){
                     if(money<=accountbalance){
                      System.out.println("*******************************");
                          System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
                          System.out.println("*******************************");
                          System.out.println(" 当前账户取款操作"+money+"元成功");
                          accountbalance=accountbalance-money;
                          System.out.println(" 当前账户余额为"+accountbalance+"元");
                          InputStream is = new FileInputStream("accountinformation.txt");
                     Scanner ss = new Scanner(is,"UTF-8");
                     
                     File f2 = new File("account.txt");
                     FileWriter fw2 = new FileWriter(f2); 
                     PrintWriter pw2 = new PrintWriter(fw2);
                     
                     while(ss.hasNext()){
                            String line = ss.nextLine();
                            String[] txt = line.split(",");
                            String id = txt[0];
                            if(id.equals(accountID)){
                                pw2.println(id+","+accountpassword+","+accountbalance);
                            }
                            else{
                                   pw2.println(line);
                            }}
                           pw2.close();
                           is = new FileInputStream("account.txt");
                            ss = new Scanner(is,"UTF-8");
                            
                            File f = new File("accountinformation.txt");
                            fw2 = new FileWriter(f);
                            PrintWriter w = new PrintWriter(fw2);
                            
                            while (ss.hasNext()) {
                                   String lin = ss.nextLine();
                                   w.println(lin);
                            }
                            w.close();
                            
                            
                          f=new File("accountlist.txt");
                           FileWriter fw = new FileWriter(f,true); 
                   PrintWriter pw=new PrintWriter(fw);
                   pw.println(accountID+",take out"+money+"RMB");
                   pw.close();
                   fw.close();
                            
                     }else{
                            System.out.println("账户余额不足");
                     }
              }
              
              input.close();
             
     }
     
     
     
     public void zhuanzhang()throws IOException{
               System.out.println("*******************************");
                   System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
                   System.out.println("*******************************");
                   System.out.println(" 请输入转账用户");
                   int t=0;
                   Scanner input = new Scanner(System.in,"UTF-8");
                   String id=input.nextLine();
                   InputStream is = new FileInputStream("accountinformation.txt");
              Scanner ss = new Scanner(is,"UTF-8");
              while(ss.hasNext()){
                     String line = ss.nextLine();
                     String[] txt = line.split(",");
                     String idd = txt[0];
                     if(idd.equals(id)){
                            t=-1;
                            System.out.println("*******************************");
                            System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
                            System.out.println("*******************************");
                            System.out.println(" 请输入转账金额");
                            int money=input.nextInt();
                            if(money<=accountbalance){
                                System.out.println("*******************************");
                                    System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
                                    System.out.println("*******************************");
                                    System.out.println(" 请确认是否向"+idd+"转账"+money+"元");
                                    String s=input.next();
                                    if(s.equals("Y")){
                                    System.out.println("*******************************");
                                    System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
                                    System.out.println("*******************************");
                                    System.out.println(" 当前账户向"+idd+"成功转账"+money+"元");
                                    System.out.println(" 当前账户余额为"+(accountbalance-money)+"元");
                                    
                             File f2 = new File("account.txt");
                           FileWriter fw2 = new FileWriter(f2); 
                           PrintWriter pw2 = new PrintWriter(fw2);
                           
                           InputStream iis = new FileInputStream("accountinformation.txt");
                           Scanner sss = new Scanner(iis,"UTF-8");
                           
                           f2 = new File("account.txt");
                           fw2 = new FileWriter(f2); 
                           pw2 = new PrintWriter(fw2);
                           
                           while(sss.hasNext()){
                                  line = sss.nextLine();
                                  txt = line.split(",");
                                  if(txt[0].equals(accountID)||txt[0].equals(idd)){
                                         if(txt[0].equals(idd)){
                                             pw2.println(idd+","+txt[1]+","+(money+Integer.valueOf(txt[2])));
                                         }
                                         else{
                                                pw2.println(accountID+","+accountpassword+","+(accountbalance-money));
                                         }
                                  }
                                  else{
                                         pw2.println(line);
                                  }}
                                 pw2.close();
                                  
                                  
                              is = new FileInputStream("account.txt");
                           ss = new Scanner(is,"UTF-8");
                           
                           File f = new File("accountinformation.txt");
                           fw2 = new FileWriter(f);
                           PrintWriter w = new PrintWriter(fw2);
                           
                           while (ss.hasNext()) {
                                  String lin = ss.nextLine();
                                  w.println(lin);
                           }
                           w.close();
                                  
                                    f=new File("accountlist.txt");
                                     FileWriter fw = new FileWriter(f,true); 
                             PrintWriter pw=new PrintWriter(fw);
                             pw.println(accountID+",take "+money+"RMB to"+idd);
                             pw.close();
                             fw.close();
                                    }else if(s.equals("N")){
                                           jiemian();
                                    }
                               }else{
                                      System.out.println("账户余额不足");
                               }
                     }
              }if(t!=-1){
                            System.out.println("该账户不存在");
                     }
     }
     
     
     public void xiugai()throws IOException{
            System.out.println("*******************************");
            System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
             System.out.println("*******************************");
             System.out.println("请输入当前密码");
             Scanner input = new Scanner(System.in,"UTF-8");
             String ma=input.nextLine();
             if(ma.equals(accountpassword)){
                    System.out.println("请输入修改密码");
             String ma1=input.nextLine();
             System.out.println("请输入确认密码");
             String ma2=input.nextLine();
             if(ma1.equals(ma2)){
                   System.out.println("*******************************");
             System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
                System.out.println("*******************************");
              System.out.println("当前账户密码修改成功");
               
               
               File f2 = new File("account.txt");
               FileWriter fw2 = new FileWriter(f2); 
               PrintWriter pw2 = new PrintWriter(fw2);
               
               InputStream is = new FileInputStream("accountinformation.txt");
              Scanner ss = new Scanner(is,"UTF-8");
              
               while(ss.hasNext()){
                      String lin = ss.nextLine();
                      String txt[] = lin.split(",");
                      if(txt[0].equals(accountID)){
                           
                          pw2.println(txt[0]+","+ma2+","+txt[2]);
                      }
                      else{
                             pw2.println(lin);
                      }
                    }
                     pw2.close();
                      
                     is = new FileInputStream("account.txt");
                      ss = new Scanner(is,"UTF-8");
                      
                      File f = new File("accountinformation.txt");
                      fw2 = new FileWriter(f);
                      PrintWriter w = new PrintWriter(fw2);
                      
                      while (ss.hasNext()) {
                             String lin = ss.nextLine();
                             w.println(lin);
                      }
                      w.close();
                   
             f=new File("accountlist.txt");
                     FileWriter fw = new FileWriter(f,true); 
            PrintWriter pw=new PrintWriter(fw);
            pw.println(accountID+",change password into"+ma2);
            pw.close();
            fw.close();
                }else{
                   xiugai();
             }
              
           }else{
                   System.out.println("密码输入错误");
                   xiugai();
            }
     }
     
     public void chaxun()throws IOException{
                 System.out.println("*******************************");
               System.out.println(" 欢迎"+accountID+"使用中国工商银行自动柜员系统");
                  System.out.println("*******************************");
                System.out.println("当前账户余额为"+accountbalance+"元");
                InputStream is = new FileInputStream("accountlist.txt");
               Scanner ss = new Scanner(is,"UTF-8");
               int x=0;
               while(ss.hasNext()){
                      String line = ss.nextLine();
                      String[] txt = line.split(",");
                      if(txt[0].equals(accountID)){
                             x++;
                             System.out.println(x+"."+txt[1]);
                      }    
               }
     }
       
  }

 

posted @ 2020-09-23 11:35  奇怪的软工人  阅读(80)  评论(0编辑  收藏  举报