zoukankan      html  css  js  c++  java
  • 开学测试感想

    9.22

    题目:

    数据结构测试要求:(8分)

    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”键,退回系统录入账号界面。

    代码:

    package moniATM;
    
    import java.io.UnsupportedEncodingException;
    import java.io.UnsupportedEncondingException;
    import java.nio.charset.Charset;
    import java.util.scanner;
    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 Account() {
        }
    
        public Account(String IDcard, String Name, String Adress, String password,
                int balance) {
            this.accountID = accountID;
            this.accountname = accountname;
            this.operatedate = operatedate;
            this.operatetype=operatetype;
            this.accountpassword = accountpassword;
            this.accountbalance = accountbalance;
        }
    
        public void setaccountname(String acccountname) {
            this.accountname = accountname;
        }
    
        public void setsetaccountID() {
            this.accountID = accountID;
        }
    
        public void setoperatedate(String operatedate) {
            this.operatedate = operatedate;
        }
    
        public void setoperatetype(int operatetype) {
            this.operatetype =operatetype;
        }
    
        public void setaccountpassword(String accountpassword) {
            this.accountpassword = accountpassword;
        }
    
        public void setaccountbalance(int accountbalance) {
            this.accountbalance = accountbalance;
        }
    
        public void setamount(int amount) {
            this.amount = amount;
        }
    
        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 void setAccount() {
            // TODO Auto-generated method stub
            
        }
    }
    package moniATM;
    
    import java.io.FileWriter;
    import java.io.PrintWriter;
    import java.io.UnsupportedEncodingException;
    import java.io.UnsupportedEncondingException;
    import java.util.Scanner;
    
    import com.sun.codemodel.internal.writer.FileCodeWriter;
    
    
    public class AccountManager
    {
        public Object accountID;
        public Object accountpassword;
    
        public class Main
        {
            private static final String NULL = null;
            private Object system;
            public void main(String[] args) throws UnsupportedEncodingException {
                char choise;
                int i = 0;        
                boolean flag;//判断标识
                Scanner sc = new Scanner(System.in);
                Account[] array = new Account[100];
                public void setList(int i,ArrayList<Account> ac)
                {
                    try
                    {
                        Account a=ac.get(i);
                    
                    }
                    catch(Exception e)
                    {
                        System.out.println("文件写入失败");
                    }
                }
                for (int n = 0; n < 100; n++) {
                    array[n] = new Account("asd", "asd", "asd", "asd", 1);
                }
                do {            
                    System.out.println("|**********************************************|");
                    System.out.println("|                  欢迎使用中国工商银                                                         |");
                    System.out.println("|**********************************************|");
                    System.out.println("|                    请输入您的账号                                                           |");
                    System.out.println("|**********************************************|");
                    System.out.println("");
                    boolean isNULL;
                    if(isNULL)
                    {
                        System.out.println("|**********************************************|");
                        System.out.println("|                该卡不是工商卡                                                                        |");
                        System.out.println("|**********************************************|");
                    }
                    else {
                    System.out.println("********************************************");
                    System.out.println("              欢迎使用中国工商银行自助柜员系统                                ");
                    System.out.println("********************************************");
                    System.out.println("                   请输入您的密码                                                        ");
                    System.out.println("********************************************");
                    }
                    public void setInformation(ArrayList<Account> ac)//写入信息
                    {
                        try
                        {
                            int i=0;
                            FileWriter fw=new FileWriter("AccountInformation");
                            PrintWriter pw=new PrintWriter(fw);
                            for(i=0;i<ac.size();i++)
                            {
                            
                                pw.println(((Object) ac.get(i)).getAccountID()+" "+((Object) ac.get(i)).getAccontpassword()+" "+ ac.get(i).getAccountname()+" "+ac.get(i).getAccountbalance());
                            }
                            pw.flush();
                            pw.close();
                            fw.close();
                        }
                
                    {
                        System.out.println("|**********************************************|");
                        System.out.println("|               密码输入错误,请重新输入                                                      |");
                        System.out.println("|**********************************************|");
                        counter++;
                    }while(counter<3);
                    Lock_Sys();
                    
                    
                    
                    
                    if(isRight(accountID,accountpassword))
                    {
                        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("|**********************************************|");
                    }
                    
        
                    switch (choise) {
                    case '1':
                         System.out.println("|**********************************************|");
                         System.out.println("|             欢迎使用中国工商银行自助柜员系统                                            |");
                         System.out.println("|                   请输入存款金额                                                               |");
                         System.out.println("|**********************************************|");
                         if(isNULL)
                         { 
                         System.out.println("|**********************************************|");
                         System.out.println("|             输入金额有误,返回取款页面                                                         |");
                         }
                         else
                         {
                             System.out.println("|**********************************************|");
                             System.out.println("|             欢迎使用中国工商银行自助柜员系统                                            |");
                             System.out.println("|**********************************************|");
                             System.out.println("|                     存款成功 现金额为                                                   |");
                         };
                            
                        
                        
                    case '2':{
                        int amount;
                    
                        System.out.println("|**********************************************|");
                        System.out.println("|               欢迎使用中国工商银行自助柜员系统                                    |");
                        System.out.println("|**********************************************|");
                        System.out.println("|                 当前账户每日可支取2万元                                                |");
                        System.out.println("|                 1.100元                                                                               |");
                        System.out.println("|                 2.200元                                                                               |");
                        System.out.println("|                 3.500元                                                                               |");
                        System.out.println("|                 4.1000元                                                                            |");
                        System.out.println("|                 5.2000元                                                                            |");
                        System.out.println("|                 6.5000元                                                                            |");
                        System.out.println("|                 7.其他金额                                                                             |");
                        System.out.println("|                 8.退卡                                                                                      |");
                        System.out.println("|                 9.退回                                                                                      |");
                        System.out.println("|**********************************************|");
                        int t;
                        t = sc.nextInt();
                            switch (t) {
                            case 1:amount = 100;break;
                            case 2:amount = 200;break;
                            case 3:amount = 500;break;
                            case 4:amount = 1000;break;
                            case 5:amount = 2000;break;
                            case 6:amount = 5000;break;
                            
                            }
                            if(amount>array[0].getaccountbalance())
                                System.out.println("余额不足");
                        
                    }
                           
                    case '3':
                        System.out.println("|**********************************************|");
                        System.out.println("|               欢迎使用中国工商银行自助柜员系统                                    |");
                        System.out.println("|**********************************************|");
                        System.out.println("|                    请输入转账金额                                                            |");
                        System.out.println("|**********************************************|");
                        array[0].setamount(sc.nextInt());
                        Account a=new Account();
                        Account b=new Account();
                        Scanner input=new Scanner(System.in);
                        String z="",x="";
                        int t=0,m=0,f1=0;
                        while(f1==0)
                        {
                            face(i,6,ac);
                            z=input.next();
                            if((t=id(z,ac))>=0)//判断
                            {
                                try
                                {
                                    face(i,7,ac);
                                    m=input.nextInt();
                                    if(m<=0)throw new Exception();
                                }
                                catch(Exception e)
                                {
                                    face(i,13,ac);
                                    f1=1;
                                    continue;
                                }
                                
                                if(f1==0)//输入正确 开始转账
                                {
                                    a=ac.get(i);
                                    b=ac.get(t);
                                    a.setAmount(-m);
                                    b.setAmount(m);
                                    ac.set(i, a);
                                    face(i,t,1,ac);
                                    x=input.next();
                                    if(x.equals("Y")==true)
                                    {
                                        a.setOperatedate();
                                        a.setOperatetype(3);
                                        b.setOperatedate();
                                        b.setOperatetype(3);
                                        if(ac.get(i).getAccountbalance()>=m)
                                        {
                                        a.setAccountbalance(a.getAccountbalance()-m);
                                        ac.set(i, a);
                                        setList(i, ac);
                                        b.setAccountbalance(b.getAccountbalance()+m);
                                        ac.set(t, b);
                                        setList(t, ac);
                                        setInformation(ac);
                                        face(i,t,2,ac);
                                        break;
                                        }
                                        else
                                        {
                                            face(i,19,ac);
                                            break;
                                        }
                                        
                                    }
                                    else if(x.equals("N")==true)
                                    {
                                        break;
                                    }
                                    else
                                    {
                                        face(i,20,ac);
                                    }
    
                                }
                            }
                        }
                    }
                
                        
                        
                    case '4':
                        System.out.println("|**********************************************|");
                        System.out.println("|               欢迎使用中国工商银行自助柜员系统                                    |");
                        System.out.println("|**********************************************|");
                        System.out.println("|                    请输入当前密码                                                            |");
                        System.out.println("|                    请输入修改密码                                                           |");
                        System.out.println("|                    请输入确认密码                                                            |");
                        public int id(String accountID,ArrayList<Account> ac)
                        {
                            int i=0,t=0;
                            if(accountID.length()!=8)
                            {
                                return -2;
                            }
                            for(t=0;t<accountID.length();t++)
                            {
                                if(accountID.charAt(t)<'0'||accountID.charAt(t)>'9')
                                {
                                    return -2;
                                }
                            }
                            for(i=0;i<ac.size();i++)
                            {  
                                if(ac.get(i).getAccountID().equals(accountID)==true)
                                {
                                    return i;
                                }
                            }
                            return -1;
                        }
                    
                        
                    case '5':
                        System.out.println("|**********************************************|");
                        System.out.println("|               欢迎使用中国工商银行自助柜员系统                                    |");
                        System.out.println("|**********************************************|");
                        System.out.println("|                    当前账户余额为: "+array[0].getaccountbalance()+"  元                                                |");
                        System.out.println("|                    账户清单信息为                                                           |");
                        System.out.println("|  1.操作日期                            操作类型                    操作金额                                            |");
                        
                        public int login(int i,String accountpassword,ArrayList<Account> ac)
                        {
                            int t=0;
                            if(accountpassword.length()!=6)
                            {
                                return -1;
                            }
                            for(t=0;t<accountpassword.length();t++)
                            {
                                if(accountpassword.charAt(t)<'0'||accountpassword.charAt(t)>'9')
                                {
                                    return -1;
                                }
                            }
                            if(ac.get(i).getAccontpassword().equals(accountpassword)==true)
                            {
                                return 1;
                            }
                            else
                            {
                                return -1;
                            }
                    
                        
                    }
                        
                        
                    
                
                    

    开学之初,java课程迎来了第一次考试。Java开学测试,测验的是在暑期期间,同学们自学java的结果。考试试题由课程老师,独自出题,难度系数约为完成了java基础课程的水平。

    考试题目是实现ATM机的基本功能。考试要求为:ATM机的账户记录Account有账户的唯一性标识(8个数字的组合),用户的姓名,操作日期(Date),操作类型,账户密码(六位的数字,可以用0开头),当前的余额(可以为0)。该程序模拟ATM的功能设计,当用户插卡后显示,输入密码界面,用户输入正确密码(用户输入错误密码,则提示该卡已被锁定,无法操作),则弹出选择界面:存款、取款、转账汇款、修改密码、查询余额。

    考试开始前,应老师要求,在编程前十五分钟,我对老师发的文本要求,详细的捋顺了自己的思路。说真的,本来没什么感觉,因为以前的程序,嗯,还是称之为代码吧,之前的代码十分短小,编写起来可边写边看,边看边想,可是,程序量一旦大起来,便出现了,边玩一部分后,不得不回头修改之前代码缺漏的地方,往往很长的时间都用在了对之前代码的修改上,而当我将整体的思路捋顺后,在类中的函数便可以一次性编好,无需进行太大的修改,这是一个我需要养成的习惯。

    说真的,对于java,在暑期我所花费的时间并不长,仅仅只是掌握了最最基础的类与函数。不得不说,学校要求学生先学习c与c++是有依据的。在学习java时,我会不由得将java与c++语言相通的地方进行比较,哪怕语言不同,但是语言的结构,函数的作用,类的封装还是大同小异的。循环函数,if语句,数组声明,switch语句仅仅经过一次的阅读,依照之前语言的经验,很快便上手了。

    但是,和之前一样的是,我又一次卡在了对于文件的读取上。而且不像之前的c++有老师的指教,这一次的自学让我苦不堪言,文本的读取输出到屏幕上倒是十分简单,难就难在读取后要按照字符串的形式接受。在经过了长时间的自学后,我也只能取巧来完成相同的功能。利用readline函数,读取一行的字符接收到字符串上,来完成对字符的读取。

    很惭愧,自己只能利用取巧的方式,怪也怪自己没有在暑期认真的学习,怨不得别人。

    很难说出那种自学的快感和纠结的痛苦,静下心来阅读别人的程序,去领会他人的想法。了解他人程序后,又要去验证自己的一些小想法,去小改程序。都说天下文章一大抄,就看会抄不会抄。程序又何尝不是,站在巨人的肩膀上,确实要看的更远。

    这一次开学测试,就像老师说的那样,认清自己,明白自己的不足,被打击后,坚强的站起来,不在倒下时放弃,就在倒下处雄起。很幸运自己遇到了这样的老师,他不是逼迫你,而是让你自己逼迫自己。

  • 相关阅读:
    sublime text 2安装及使用
    C陷阱与缺陷之语法陷阱
    上门洗车APP --- Androidclient开发 之 项目结构介绍
    编写语法分析程序
    TCP header
    boost事件处理
    TP-LINK无线路由器WR340G+ 54M支持WDS
    300M无线路由器 TL-WR842N
    python 2.7 支持dict comprehension
    100M 宽带办理
  • 原文地址:https://www.cnblogs.com/wangdayang/p/13725580.html
Copyright © 2011-2022 走看看