zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    web前端面试题
    Delphi控制摄像头
    表达式计算
    web services基础知识二
    soap和web services
    IdTCPClient和IdTCPServer主要属性
    工控控件组iocomp的iplot控件的使用
    编译开关
    delphi web services控件组
    將FastReport存入數據庫,讀出并更新
  • 原文地址:https://www.cnblogs.com/CCRNRT/p/9694580.html
Copyright © 2011-2022 走看看