zoukankan      html  css  js  c++  java
  • JAVA的第一次课堂测试

    今天进行了第一场JAVA的课堂测试,以下是题目:

    ATM机的账户记录Account有账户的唯一性标识(8个数字的组合),用户的姓名,操作日期(Date),操作类型,账户密码(六位的数字,可以用0开头),当前的余额(可以为0)。

    1、定义Account类,其中包括七个私有变量(accountID,accountname,operatedate,operatetype,accountpassword, accountbalance,)。(3分)

    各成员的含义如下:

    变量accountID为字符串类型String,用于存储学生的用户账号(由八位数字组成)。

    变量accountname为字符串类型String,用于存储账户的名称。

    变量operatedate为字符串类型String,用于存储操作的时间,由十位字符组成,显示格式为“2018-09-20”。    

    变量operatetype为int类型,用于存储操作账户的类型,具体描述为“1”表示存款,“2”表示取款,“3”表示转账汇款,“4”表示修改账户密码,“5”表示查询余额。

    变量accountpassword为字符串类型String,用于用户密码,由六位数字组成。

    变量accountbalance为整数类型int,用于存储账户余额,缺省为0。

    变量amount为整数类型int,表示操作流水金额。

    2、对每个变量定义get()(读取变量信息)和set()(设置变量信息)的方法。(3分)

    3、定义accountinformation.txt作为账户基本信息库,基本信息包括accountID,accountname,accountpassword, accountbalance,要求事先实现至少存储五个账户的信息,定义accountlist.txt作为账户操作流水信息数据库,操作流水信息包括(accountID,accountname,operatedate,operatetype, amount)。(要求将学号作为帐号,将考生信息作为第一条记录)。(2分)

    三、功能要求:(12分)

    该程序模拟ATM的功能设计,当用户插卡后显示,输入密码界面,用户输入正确密码(用户输入错误密码,则提示该卡已被锁定,无法操作),则弹出选择界面:存款、取款、转账汇款、修改密码、查询余额。

    注意:对accountinformation.txt和accountlist.txt数据库中的信息进行读写操作时,必须调用get()和set()方法,否则,出现一处扣除0.5分,直至扣完为止。

    (1) 需要在程序开始的注释中注明班级、学号、姓名。(1分)

    (2) 定义AccountManager类实现下列要求

    (3)程序开始运行模拟用户插卡显示用户输入账号功能;(1分)

    ①界面设计:

    ***************************************************************

                 欢迎使用中国工商银行自动柜员系统

    ****************************************************************

                             请输入您的账号:

    ****************************************************************

    ②功能设计

    用户在该界面输入账号信息,如果输入账号位数有误,提示“该卡不是工行卡”,如果输入账号信息在accountinformation.txt不存在,则提示“该账号不存在”,账号输入不成功,系统提示错误信息后返回输入账号界面;输入账号成功后,系统跳转到输入密码界面。

     

    (4)用户输入密码功能;(1分)

    ①界面设计:

    ***************************************************************

    欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

    ****************************************************************

                               请输入您的密码:

    ****************************************************************

    ②功能设计

    用户在该界面输入账号密码信息,如果密码录入错误(出现位数不对或与文件中该账号对应的密码不服),则提示“密码录入错误”,如果密码录入三次错误,则提示“该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理”。单次密码输入不成功,系统提示错误信息,返回输入密码界面;三次密码输入不成功,系统提示错误信息,返回输入账号界面,密码输入成功,系统跳转到主界面。

     

    (5)系统主界面如下图所示,选择相应的数字执行相应的功能。(1分)

    ***************************************************************

    欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

    ****************************************************************

    1、 存款;

    2、 取款;

    3、 转账汇款;

    4、 修改密码;

    5、 查询余额;

    ****************************************************************

    (6)存款功能:(2分)

    存款操作流程:

    ①系统进入存款界面:

    ***************************************************************

    欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

    ****************************************************************

                           请输入存款金额;

    ****************************************************************

    ②用户在该界面输入存款金额后,如果输入不是正整数,提示用户“输入金额有误,返回取款界面;输入字母“q”,则返回系统输入账号界面,表示退出柜员机操作;输入正整数,则跳转到下图存款成功界面。

    ***************************************************************

    欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

    ****************************************************************

                       当前账户存款操作成功。

          当前账户余额为:XXXX元

    ****************************************************************

    ③存款成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户余额。

    ④点击“q”键,退回系统录入账号界面

    (7)取款功能:则显示100元、500元、1000元、1500元、2000元、5000元、其他金额、退卡、返回操作供用户选择(3分)

    取款流程设计:

    ① 系统进入取款界面:

    ***************************************************************

    欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

    ****************************************************************

    当前账户每日可以支取2万元。

    1、100元

    2、500元

    3、1000元

    4、1500元

    5、2000元

    6、5000元;

    7、其他金额

    8、退卡

    9、返回

    ****************************************************************

    ②用户选择1-6选项时,判断账户余额是否不小于录入金额,如果小于,则提示“账户余额不足”,如果大于,则跳转到下图取款成功界面。

    ***************************************************************

    欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

    ****************************************************************

    当前账户取款操作XXXX元成功。

    当前账户余额为:XXXX元

    ****************************************************************

    用户选择7选项时,显示录入金额界面

    ***************************************************************

    欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

    ****************************************************************

    请输入取款金额:

    ****************************************************************

    判断账户余额是否不小于录入金额,如果小于,则提示“账户余额不足”,如果大于,则跳转到下图取款成功界面。

    ***************************************************************

    欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

    ****************************************************************

    当前账户取款操作XXXX元成功。

    当前账户余额为:XXXX元

    ****************************************************************

    ④取款成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户余额。

    ⑤用户选择“8”选项时,系统跳转到输入账户界面。

    ⑥用户选择“9”选项时,系统跳转到系统主界面。

    (8)转账汇款功能:(1分)

    系统流程如下所示:

    ①系统进入转账主界面

    ***************************************************************

    欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

    ****************************************************************

    请输入转账账户;

           

    ****************************************************************

    ②用户在该界面输入判断该账户是否存在accountinformation.txt文件中,如果没有提示“该账户不存在”,如果有则跳转到转账金额界面。

    ***************************************************************

    欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

    ****************************************************************

    请输入转账金额;

           

    ****************************************************************

    ③判断账户余额是否不小于录入金额,如果小于,则提示“账户余额不足”,如果大于,则跳转到下图转账确认成功界面。

    ***************************************************************

    欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

    ****************************************************************

    请确认是否向*XX(将转账的用户名称第一个用*代替,其余正常显示)转账XXXX元。

    ****************************************************************

    ④单击“N”表示不确认转账,系统跳转到系统主界面;单击“Y”表示确认转账,系统跳转到转账成果界面,。

    ***************************************************************

    欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

    ****************************************************************

    当前账户向*XX成功转账XXXX元。

    当前账户余额为:XXXX元

    ****************************************************************

    ⑤转账汇款成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户余额。

    ⑥点击“q”键,退回系统录入账号界面

    (9)修改密码功能:(1分)

    修改密码操作流程:

    ① 系统进入修改密码界面:

    ***************************************************************

    欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

    ****************************************************************

    请输入当前密码:

    请输入修改密码:

    请输入确认密码:

    ****************************************************************

    ② 当前密码录入错误,提示“当前密码录入错误”,系统返回修改密码界面,清空数据重新录入;修改后密码与确认密码不一致,提示“修改密码与确认密码不一致”,系统返回修改密码界面,清空数据重新录入。

    ③ 密码修改成功,系统跳转到密码修改成功界面。

    ***************************************************************

    欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

    ****************************************************************

    当前账户密码修改成功

    ****************************************************************

    ④ 密码修改成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户密码。

    ⑤ 点击“q”键,退回系统录入账号界面

    (10)查询功能:(1分)

    查询操作流程:

    ①系统显示当前用户余额和操作流水信息:

    ***************************************************************

    欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统

    ****************************************************************

    当前账户余额为:XXXX元

    账户清单信息为:

    1、操作日期    操作类型(不用显示数字) 操作金额

    2、操作日期    操作类型(不用显示数字) 操作金额

    3、…………………………………………………………

    ****************************************************************

     ②点击“q”键,退回系统录入账号界面。

    以下是我的源码:

      1 //韩凤芸 信1905-2 20194205
      2 import java.io.BufferedReader;
      3 import java.io.File;
      4 import java.io.FileInputStream;
      5 import java.io.FileOutputStream;
      6 import java.io.IOException;
      7 import java.io.InputStreamReader;
      8 import java.io.OutputStreamWriter;
      9 import java.text.SimpleDateFormat;
     10 import java.util.Iterator;
     11 import java.util.Scanner;
     12 import java.util.Vector;
     13 import java.util.*;
     14 class Account{
     15     private String accountID;
     16     private String accountname;
     17     private String operatedate;//操作时间
     18     private int operatetype;//选项
     19     private String accountpassword;
     20     private int accountbalance;//余额
     21     private int amount;//流水
     22     public void setAccountID(String accountID){this.accountID = accountID;}
     23     public String getAccountID(){return accountID;}
     24     public void setAccountname(String accountname){this.accountname = accountname;}
     25     public String getAccountname(){return accountname;}
     26     public void setOperatedate(String operatedate){this.operatedate = operatedate;}
     27     public String getOperatedate(){return operatedate;}
     28     public void setOperatetype(int operatetype){this.operatetype = operatetype;}
     29     public int getOperatetype(){return operatetype;}
     30     public void setAccountpassword(String accountpassword){this.accountpassword = accountpassword;}
     31     public String getAccountpassword(){return accountpassword;}
     32     public void setAccountbalance(int accountbalance){this.accountbalance = accountbalance;}
     33     public int getAccountbalance(){return accountbalance;}
     34     public void setAmount(int amount){this.amount = amount;}
     35     public int getAmount(){return amount;}
     36     public void set(String accountID,String accountname,String accountpassword,int accountbalance)
     37     {
     38         this.accountID=accountID;
     39         this.accountname=accountname;
     40         this.accountpassword=accountpassword;
     41         this.accountbalance=accountbalance;
     42     }
     43     public void Set(String operatedate,int amount)
     44     {
     45         this.operatedate=operatedate;
     46         this.amount=amount;
     47     }
     48 }
     49 public class AccountManager 
     50 {
     51     private static Scanner sc=new Scanner(System.in);
     52     private Vector<Account> vec=new Vector <Account>();
     53     private Iterator<Account> it;
     54     private String str;//各String型成员
     55     private int jh, index, an;
     56     private Account ac=new Account();
     57     public void start()//初始界面(输入账号)
     58     {
     59         jh=3;//3次的输入机会
     60         index=0;
     61         an=0;
     62         System.out.println("***************************************************************");//输出第一个用户界面
     63         System.out.println("                    欢迎使用中国工商银行自动柜员系统");
     64         System.out.println("***************************************************************");
     65         System.out.println("                         请输入您的账号:");
     66         if(sc.hasNext()){str=sc.next();}
     67         if(str.length()==8)//如果账号长度为8
     68         {
     69             if(findID(str))//如果找到了账号
     70             {
     71                 index=findid(str)-1;
     72                 showpass();
     73             }
     74             else//否则
     75             {
     76                 System.out.println("没有找到相关账户信息,请重新输入");
     77                 start();
     78             }
     79         }
     80         else//如果账号长度不为8
     81         {
     82             System.out.println("\t输入的账户信息不是八位数,请重新输入");
     83             start();
     84         }
     85     }
     86     public boolean findID(String id)//寻找账号信息
     87     {
     88         Account Ac=new Account();
     89         it=vec.iterator();
     90         boolean b=false;
     91         while(it.hasNext())
     92         {
     93             Ac=it.next();
     94             if(Ac.getAccountID().equals(id))
     95             {
     96                 ac=Ac;
     97                 b=true;
     98                 break;
     99             }
    100         }
    101         return b;
    102     }
    103     public int findid(String id)//位置
    104     {
    105         Account Ac=new Account();
    106         it=vec.iterator();
    107         for(int i=0;it.hasNext();i++)
    108         {
    109 
    110             Ac=it.next();
    111             if(Ac.getAccountID().equals(id))break;
    112         }
    113         return i;
    114     }
    115     public void showpass()//输入密码
    116     {
    117         System.out.println("***************************************************************");
    118         System.out.println("       欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
    119         System.out.println("***************************************************************");
    120         System.out.println("                        请输入您的密码:");
    121         str=sc.next();
    122         if(str.length()==6)//如果输入的数字长度为6
    123         {
    124             if(Integer.parseInt(str)==ac.getAccountpassword()){SYS();}//如果密码正确
    125             else//否则
    126             {
    127                 if(jh>0)
    128                 {
    129                     jh--;
    130                     System.out.println("    密码错误,请重新输入,还剩"+jh+"次机会重新输入");
    131                     showpass();
    132                 }
    133                 else//输入达上限
    134                 {
    135                     System.out.println("    密码错误输入次数过多已达上限");
    136                     start();
    137                 }
    138             }
    139         }
    140         else//输入的密码不是六位
    141         {
    142             System.out.println("    输入的密码信息不是六位数,请重新输入");
    143             showpass();
    144         }
    145     }
    146     public void SYS()//主界面
    147     {
    148         System.out.println("***************************************************************");
    149         System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
    150         System.out.println("***************************************************************");
    151         System.out.println("                        1.存款");
    152         System.out.println("                        2.取款");
    153         System.out.println("                        3.转账汇款");
    154         System.out.println("                        4.修改密码");
    155         System.out.println("                        5.查询余额");
    156         int n=sc.nextInt();
    157         switch(n)
    158         {
    159         case 1://存款
    160             cunkuan();
    161             break;
    162         case 2://取款
    163             qukuan();
    164             break;
    165         case 3://转账汇款
    166             zhuanzhang();
    167             break;
    168         case 4://修改密码
    169             xiugai();
    170             break;
    171         case 5://查询余额
    172             chaxun();
    173             break;
    174         }
    175     }
    176     public void cunkuan()//存款
    177     {
    178         System.out.println("***************************************************************");
    179         System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
    180         System.out.println("***************************************************************");
    181         System.out.println("                          请输入存款金额:");
    182         int num=0;
    183         if(sc.hasNextInt()){num=sc.nextInt();}//判断输入金额是否为整数
    184         else
    185         {
    186             if(sc.hasNext())
    187             {
    188                 str=sc.next();
    189                 if(str.equals("q")){System.out.println("已经退出系统,返回账号界面");}//输入q返回初始界面
    190                 else
    191                 {
    192                     System.out.println("请输入整数金额");
    193                     cunkuan();
    194                 }
    195             }
    196         }
    197         if(num>0)
    198         {
    199             Account Acc=new Account();
    200             ac.setAccountbalance(ac.getAccountbalance()+num);
    201             ac.setAmount(ac.getAmount()+num);
    202             Acc=ac;
    203             vec.setElementAt(Acc, index);
    204             try 
    205             {
    206                 Daochu();
    207                 daochu();
    208             }
    209         }
    210         else
    211         {
    212             System.out.println("输入错误,请重新输入");
    213             cunkuan();
    214         }
    215         System.out.println("***************************************************************");
    216         System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
    217         System.out.println("***************************************************************");
    218         System.out.println("                       当前账户存款成功");
    219         System.out.println("                     当前账户余额为:"+ac.getAccountbalance());
    220         System.out.println("***************************************************************");
    221         SYS();
    222     }
    223     public void qukuan()//取款
    224     {
    225         System.out.println("***************************************************************");
    226         System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
    227         System.out.println("***************************************************************");
    228         System.out.println("                     当前账户每日可以支取2万元。");
    229         System.out.println("                           1.100元");
    230         System.out.println("                           2.500元");
    231         System.out.println("                           3.1000元");
    232         System.out.println("                           4.1500元");
    233         System.out.println("                           5.2000元");
    234         System.out.println("                           6.5000元");
    235         System.out.println("                           7.其他金额");
    236         System.out.println("                           8.退卡");
    237         System.out.println("                           9.返回");
    238         int n=sc.nextInt();
    239         boolean b=false;
    240         Account Acc=new Account();
    241         int num=0;
    242         if(n==8)
    243         {
    244             System.out.println("退卡成功");
    245             start();
    246             return;
    247         }
    248         else if(n==9)
    249         {
    250             SYS();
    251             return;
    252         }
    253         else
    254         {
    255             switch(n)
    256             {
    257             case 1:
    258                 num=100;
    259                 break;
    260             case 2:
    261                 num=500;
    262                 break;
    263             case 3:
    264                 num=1000;
    265                 break;
    266             case 4:
    267                 num=1500;
    268                 break;
    269             case 5:
    270                 num=2000;
    271                 break;
    272             case 6:
    273                 num=5000;
    274                 break;
    275             case 7:
    276                 num=sc.nextInt();;
    277                 break;
    278             }
    279             if(ac.getAccountbalance()>=num)
    280             {
    281                 b=true;
    282                 ac.setAccountbalance(ac.getAccountbalance()-num);
    283                 ac.setAmount(ac.getAmount()-num);
    284                 Acc=ac;
    285                 vec.setElementAt(Acc, index);
    286              }
    287         }
    288         if(b)
    289         {
    290             System.out.println("***************************************************************");
    291             System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
    292             System.out.println("***************************************************************");
    293             System.out.println("                         当前账户取款成功");
    294             System.out.println("                       当前账户余额为:"+ac.getAccountbalance());
    295             System.out.println("***************************************************************");
    296             SYS();
    297         }
    298     }
    299     public void zhuanzhang()//转账
    300     {
    301         System.out.println("***************************************************************");
    302         System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
    303         System.out.println("***************************************************************");
    304         System.out.println("                      请输入你要转账的账号:");
    305         String type=sc.next();
    306         if((an=findid(type)-1)!=0)
    307         {
    308             int c=sc.nextInt();
    309             System.out.println("               请输入你要转账的金额:");
    310             Account Acc=new Account();
    311             ac.setAccountbalance(ac.getAccountbalance()-c);
    312             ac.setAmount(ac.getAmount()-c);
    313             Acc=ac;
    314             vec.get(an).setAccountbalance(vec.get(an).getAccountbalance()+c);
    315             vec.get(an).setAmount(vec.get(an).getAmount()+c);
    316             vec.setElementAt(Acc, index);
    317             try 
    318             {
    319                 Daochu();
    320                 daochu();
    321             } 
    322             System.out.println("***************************************************************");
    323             System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
    324             System.out.println("***************************************************************");
    325             System.out.println("                        当前账户转账成功");
    326             System.out.println("                       当前账户余额为:"+ac.getAccountbalance());
    327             System.out.println("***************************************************************");
    328             SYS();
    329         }
    330         else
    331         {
    332             System.out.println("金额不足,不能转账");
    333             zhuanzhang();
    334         }
    335      }
    336     public void xiugai()//修改密码
    337     {
    338         System.out.println("***************************************************************");
    339         System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
    340         System.out.println("***************************************************************");
    341         System.out.println("                      请输入你原来的密码:");
    342         int type=sc.nextInt(),g_old=0,g_new=0;
    343         if(type==ac.getAccountpassword())
    344         {
    345             System.out.println("               请输入你要修改的密码:");
    346             if(sc.hasNextInt()){g_old=sc.nextInt();}
    347             if(!(g_old>=100000&&g_old<=999999))
    348             {
    349                 System.out.println("         密码输入格式错误,请重新输入");
    350                 xiugai();
    351                 return;
    352             }
    353             System.out.println("           请再次你输入你要修改的密码:");
    354             if(sc.hasNextInt()){g_new=sc.nextInt();}
    355             if(g_new==g_old)
    356             {
    357                 Account Acc=new Account();
    358                 ac.setAccountpassword(g_old);
    359                 Acc=ac;
    360                 vec.setElementAt(Acc, index);
    361                 try 
    362                 {
    363                     Daochu();
    364                     daochu();
    365                 } 
    366                 System.out.println("             密码修改成功");
    367                 SYS();
    368             }
    369         }
    370      }
    371     public void chaxun()//查询
    372     {
    373         System.out.println("***************************************************************");
    374         System.out.println("        欢迎 "+ac.getAccountname()+" 使用中国工商银行自助柜员系统");
    375         System.out.println("***************************************************************");
    376         System.out.println("                当前账户余额为:"+ac.getAccountbalance());
    377         System.out.println("***************************************************************");
    378         SYS();
    379     }
    380     public void daoru() throws IOException//导入1
    381     {
    382         File a=new File("accountinformation.txt");
    383         FileInputStream b = new FileInputStream(a);
    384         vec.clear();
    385         InputStreamReader c=new InputStreamReader(b,"UTF-8");
    386         {
    387             BufferedReader bufr =new BufferedReader(c);
    388             String line = null;
    389             while((line = bufr.readLine())!=null)
    390             {
    391                 Account Ac=new Account();
    392                 String ook[]=line.toUpperCase().split(" ");
    393                 Ac.set(ook[0],ook[1], Integer.parseInt(ook[2]),Integer.parseInt(ook[3]));
    394                 vec.add(Ac);
    395                 ac=Ac;
    396             }
    397             bufr.close();
    398         }
    399         c.close();
    400         b.close();
    401     }
    402     public void Daoru() throws IOException//导入2
    403     {
    404         File a=new File("accountlist.txt");
    405         FileInputStream b = new FileInputStream(a);
    406         InputStreamReader c=new InputStreamReader(b,"UTF-8");
    407         {
    408             BufferedReader bufr =new BufferedReader(c);
    409             String line = null;
    410             int i=0;
    411             while((line = bufr.readLine())!=null)
    412             {
    413                 Account Ac=new Account();
    414                 String ook[]=line.toUpperCase().split(" ");
    415                 Ac.set(vec.get(i).getAccountID(),vec.get(i).getAccountname(),vec.get(i).getAccountpassword(),vec.get(i).getAccountbalance());
    416                 Ac.set_1(ook[0],Integer.parseInt(ook[1]));
    417                 String temp_str=""; 
    418                 Date dt = new Date(); 
    419                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
    420                 temp_str=sdf.format(dt);
    421                 if(!temp_str.equals(ook[0]))
    422                 {
    423                     Ac.setAmount(0);
    424                     Ac.setOperatedate(temp_str);
    425                 }
    426                 ac=Ac;
    427                 vec.setElementAt(Ac, i);
    428                 i++;
    429             }
    430             bufr.close();
    431         }
    432         c.close();
    433         b.close();
    434     }
    435     public void daochu() throws IOException//导出1
    436     {
    437         Account Ac=new Account();
    438         File a=new File("accountinformation.txt");
    439         FileOutputStream b = new FileOutputStream(a);
    440         OutputStreamWriter c=new OutputStreamWriter(b,"UTF-8");
    441         it=vec.iterator();
    442         int i=0;
    443         while(it.hasNext())
    444        {
    445           i++;
    446           if(i!=1)
    447           c.append("\r\n");
    448           Ac=it.next();
    449           c.append(Ac.getAccountID()+" "+Ac.getAccountname()+" "+Ac.getAccountpassword()+" "+Ac.getAccountbalance());
    450         }
    451         c.close();
    452         b.close();
    453      }
    454      public void Daochu() throws IOException//导出2
    455      {
    456         Account Ac=new Account();
    457         File a=new File("accountlist.txt");
    458         FileOutputStream b = new FileOutputStream(a);
    459         OutputStreamWriter c=new OutputStreamWriter(b,"UTF-8");
    460         it=vec.iterator();
    461         int i=0;
    462         while(it.hasNext())
    463         {
    464           i++;
    465           if(i!=1)
    466           c.append("\r\n");
    467           Ac=it.next();
    468           c.append(Ac.getOperatedate()+" "+Ac.getAmount());
    469          }
    470          c.close();
    471          b.close();
    472        }
    473        public static void main(String[] args) 
    474       { 
    475          AccountManager a=new AccountManager();
    476          try 
    477          {
    478            a.daoru();
    479            a.Daoru();
    480          } 
    481            a.start();
    482        }
    483 }

    今日在课堂之上此代码并未完全编译完成,虽课下一些问题有求教百度但到现在此代码仍有缺陷。
    缺陷大致有二:

       1.取款部分,此部分代码只实现了余额充足时取款之状况,而对于余额不足时无法取款的问题则未曾解决。余额不足时,经代码设计本应得到“余额不足无法取款”的提示反馈,然而此代码却无法实现这一功能,甚至会因此出现“死机”的状态。然而程序却并未报错,而我也始终看不出错误之处。这是我的能力之不足所成。

      2.流水写入文件部分,此部分代码只实现了操作日期及流水金额被写入相应文件,而资金流水所属的账户信息却无法一并被写入其中。我想这或许是我粗心而遗漏了什么部分所致,但我同样无法自行解决问题,这依旧是我能力不足之所为。

    通过今日的测试,发现自己对JAVA学习仍是不足不充分。虽然此前还在为轻而易举地完成了学生管理系统的例题而沾沾自喜,甚至自认为JAVA学习的尚不错,但今天的测试给了我当头一棒般的打击。仅仅是增加了文件的输入输出功能便打乱自己的所有节奏,甚至茫茫然不知该从何写起。直到现在我对于文件的输入输出的实现仍不熟练,代码中有关文件的编译也都是从百度、博客等各处拼凑而来的成果。其他的代码部分也有为了迎合文件输入输出部分而拼凑而来的影子。

    造成以上问题的种种原因在于自己狂妄自大、眼高于顶,匆匆看过几眼书、编过几行代码便真以为自己就能自学成才而沾沾自喜,而实际基础都尚未打好,看了一堆理论知识却不能将其应用于实际,亦不知灵活变通触类旁通,相同问题加些条件换个问法便不知所措。知识储备不够,相关知识随在收藏夹里收藏了许多,却从未好好记过转眼就会忘记,而记住的运用起来也不甚熟练,实践也尚且不足,虽然在暑假期间有编写过几个小程序,但仅凭这几个小程序的编写还不足以让我对JAVA到熟练的地步,这一切皆是自己不认真所致。

    以上是我对这次课堂测试所展露出来的问题的反思。

    问题的提出就是为了解决。此后我应端正学习态度,不再盲目图快,而是一步一个脚印,打好基础才能盖起高楼。

  • 相关阅读:
    使用python将文字写入word文档中
    将图片显示到excel中
    新的写入xlsxwriter和追加写入openpyxl
    oracle 12.2 alter table move online
    主从复制管理和故障处理方法
    MySQL中的权限管理
    windows的CMD如何全屏最大化
    Troubleshooting query v$asm_disk v$asm_diskgroup hang
    library cache锁争用解决
    一则由ORA-1652引起的fixed object相关问题
  • 原文地址:https://www.cnblogs.com/hfy717/p/13715783.html
Copyright © 2011-2022 走看看