ATM

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、…………………………………………………………

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

Account类

public class Account {
    
    String accountID;       //存储学生的用户账号(由八位数字组成)
    String accountname;     //存储账户的名称
    String operatedate;     //存储操作的时间,由十位字符组成,显示格式为“2019-09-20”
    int operatetype;        // 存储操作账户的类型
    String accountpassword; //用户密码
    int accountbalance;     //存储账户余额
    int amount;             //操作流水金额
    
                 //用户账号的设置和读取
     
    
    public void setaccountID(String accountID) {
        this.accountID= accountID;
    }
    
    public String getaccountID() {
        return accountID;
    }
    
    
                  //存储账户名称的设置和读取
    
    
    public void setaccountname(String accountname) {
        this.accountname= accountname;
    }
    
    public String getaccountname() {
        return accountname;
    }
    
    
                  //存储操作时间的设置和读取
    
    
    public void setoperatedate(String operatedate) {
        this.operatedate=operatedate;
    }
    
    public String getoperatedate() {
        return operatedate;
    }
    
                //存储账户类型的设置和读取
    
    
    public void setoperatetype(int operatetype) {
        this. operatetype= operatetype;
    }
    
    public int getoperatetype() {
        return  operatetype;
    }
     
               //用户密码的设置和读取
    
    
    public void setaccountpassword(String accountpassword) {
        this.accountpassword=accountpassword;
    }
    
    public String getaccountpassword() {
        return accountpassword;
    }
    
    
               //存储账户余额的设置和读取
    
    
    public void setaccountbalance(int accountbalance) {
        this.accountbalance=accountbalance;
    }
    
    public int getaccountbalance() {
        return accountbalance;
    }

                  //操作流水金额的设置和读取
    
    
    public void setamount(int amount) {
        this.amount=amount;
    }
    
    public int getamount() {
        return amount;
    }
    
                  //构造函数
    public Account(String accountID,String accountname,String accountpassword,int accountbalance) {
        this.accountID=accountID;
        this.accountname=accountname;
        this.accountpassword=accountpassword;
        this.accountbalance=accountbalance;
    }
    
    public Account() {
    }
}

AccountManager类


//信1905-2 20194023 刘天雯
package day01;

import java.util.Scanner;

public class AccountManager {

    static Account[] acc = new Account[5];

    static int n;
    
    static AccountManager z=new AccountManager();//用于调用方法

    public AccountManager() {

        for (int i = 0; i < n; i++) {

            acc[i] = new Account();
        }
        acc[0] = new Account("20194001", "哈密瓜", "20204001", 3000);
        acc[1] = new Account("20194002", "香蕉", "20204002", 10000);
        acc[2] = new Account("20194003", "苹果", "20204003", 250);
        acc[3] = new Account("20194004", "菠萝", "20204004", 8050);
        acc[4] = new Account("20194005", "火龙果", "20204005", 6008);

    }

    // 初始界面

    public static void first() {

        System.out.println("***********************************************************");
        System.out.println("            欢迎使用中国工商银行自动柜员系统                             ");
        System.out.println("**********************************************************");
        System.out.println("              请输入您的账号                                                      ");
        System.out.println("**********************************************************");

        @SuppressWarnings("resource")
        Scanner scan = new Scanner(System.in);
        String zhanghao = scan.next();

        int e = 5;

        for (int i = 0; i < 5; i++) {

            if (zhanghao.equals(acc[i].getaccountID())) {
                e = i;

            }
        }
        if (e == 5) {
            System.out.println("不是本银行的卡,即将返回初始界面");
            first();
        }

        else {
            mima(e);
        }

    }

    // 密码界面

    public static void mima(int pass) {

        System.out.println("***************************************************************");
        System.out.println("   欢迎" + acc[pass].getaccountname() + "使用中国工商银行自助柜员系统");
        System.out.println("***************************************************************");
        System.out.println("                    请输入您的密码:");

        int time = 0; // 记录输入密码的次数

        @SuppressWarnings("resource")
        Scanner scan = new Scanner(System.in);

        while (time < 3) {

            String save = scan.nextLine();

            if (save.equals(acc[pass].getaccountpassword())) {
                System.out.println("输入密码正确,成功跳转到主界面");
                zhujiemian(pass);
            }

            else {
                System.out.println("密码输入错误,请重新输入。");
                time++;
            }

            if (time == 3) {
                System.out.println("你已失去三次输入密码机会,即将返回初始界面。");
                first();
            }
        }
    }

    // 一个返回界面方法

    public static void fanhui(int pass) {
        System.out.println("***************************************************************");
        System.out.println("如要仍要进行其他操作,请输入111,将返回主界面;");
        System.out.println("如不进行其他操作,请输入000,将结束程序");
        System.out.println("***************************************************************");
        @SuppressWarnings("resource")
        Scanner scan = new Scanner(System.in);

        int ch = scan.nextInt();

        if (ch == 111) {
            zhujiemian(pass);
        }

        if (ch == 000) {
            System.exit(0);
        }
    }

    // 主界面

    public static void zhujiemian(int pass) {

        System.out.println("***************************************************************");
        System.out.println("   欢迎" + acc[pass].getaccountname() + "使用中国工商银行自助柜员系统");
        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("****************************************************************");
        System.out.println("                      请输入:");
        @SuppressWarnings("resource")
        Scanner scan = new Scanner(System.in);
        int temp = scan.nextInt();

        switch (temp)

        {

        case 1: {
            acc[pass].setoperatetype(1);
            cunkuan(pass);
            fanhui(pass);
        }
            break;

        case 2: {
            acc[pass].setoperatetype(2);
            qukuan(pass);
            fanhui(pass);
        }

            break;

        case 3: {
            acc[pass].setoperatetype(3);
            zhuanzhanghuikuan(pass);
            fanhui(pass);
        }
            break;

        case 4: {
            acc[pass].setoperatetype(4);
            xiugaimima(pass);
            fanhui(pass);
        }
            break;

        case 5: {
            acc[pass].setoperatetype(5);
            chaxunyue(pass);
            fanhui(pass);
        }
            break;

        default: {

            System.out.println("您未进行正确操作,返回主界面");

            zhujiemian(pass);
        }
            break;
        }
    }

    // 存款界面

    public static void cunkuan(int pass) {
        System.out.println("***************************************************************");
        System.out.println("   欢迎" + acc[pass].getaccountname() + "存款");
        System.out.println("****************************************************************");
        System.out.println("                 请输入存款金额:");
        @SuppressWarnings("resource")
        Scanner scan = new Scanner(System.in);
        int cundeqian = scan.nextInt();
        if (cundeqian < 0) {
            System.out.println("输入的金额有误,返回主界面");
            first();
        } else {
            acc[pass].setamount(acc[pass].getamount() + cundeqian);
            acc[pass].setaccountbalance(acc[pass].getaccountbalance() + cundeqian);
            System.out.println("****************************************************************");
            System.out.println("                当前账户存款操作成功。");
            System.out.println("             当前账户余额为:" + acc[pass].getaccountbalance() + "元");
        }

    }

    // 取款界面
    public static void qukuan(int pass) {
        System.out.println("***************************************************************");
        System.out.println("   欢迎" + acc[pass].getaccountname() + "进行  取款");
        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、返回");
        System.out.println("****************************************************************");
        System.out.println("                        #:请选择");
        @SuppressWarnings("resource")
        Scanner scan = new Scanner(System.in);
        int choice = scan.nextInt();

        switch (choice) {
        case 1: {
            
            if (acc[pass].getaccountbalance() < 100) {
                System.out.println("账户余额不足,返回取款界面");
                qukuan(pass);
            } else {
                acc[pass].setamount(acc[pass].getamount() + 100);
                acc[pass].setaccountbalance(acc[pass].getaccountbalance() - 100);
                System.out.println("***************************************************************");
                System.out.println("   欢迎" + acc[pass].getaccountname() + "进行  取款");
                System.out.println("****************************************************************");
                System.out.println("             当前账户取款操作100元成功。");
                System.out.println("             当前账户余额为:" + acc[pass].getaccountbalance() + "元");
            }
            break;
        }

        case 2: {
            
            if (acc[pass].getaccountbalance() < 500) {
                System.out.println("账户余额不足,返回取款界面");
                qukuan(pass);
            } else {
                acc[pass].setamount(acc[pass].getamount() + 500);
                acc[pass].setaccountbalance(acc[pass].getaccountbalance() - 500);
                System.out.println("***************************************************************");
                System.out.println("   欢迎" + acc[pass].getaccountname() + "进行  取款");
                System.out.println("****************************************************************");
                System.out.println("             当前账户取款操作500元成功。");
                System.out.println("             当前账户余额为:" + acc[pass].getaccountbalance() + "元");
            }
            break;
        }

        case 3: {
            
            if (acc[pass].getaccountbalance() < 1000) {
                System.out.println("账户余额不足,返回取款界面");
                qukuan(pass);
            } else {
                acc[pass].setamount(acc[pass].getamount() + 1000);
                acc[pass].setaccountbalance(acc[pass].getaccountbalance() - 1000);
                System.out.println("***************************************************************");
                System.out.println("   欢迎" + acc[pass].getaccountname() + "进行  取款");
                System.out.println("****************************************************************");
                System.out.println("             当前账户取款操作1000元成功。");
                System.out.println("             当前账户余额为:" + acc[pass].getaccountbalance() + "元");
            }

        }
            break;
            
        case 4: {
            
            if (acc[pass].getaccountbalance() < 1500) {
                System.out.println("账户余额不足,返回取款界面");
                qukuan(pass);
            } else {
                acc[pass].setamount(acc[pass].getamount() + 1500);
                acc[pass].setaccountbalance(acc[pass].getaccountbalance() - 1500);
                System.out.println("***************************************************************");
                System.out.println("   欢迎" + acc[pass].getaccountname() + "进行  取款");
                System.out.println("****************************************************************");
                System.out.println("             当前账户取款操作1500元成功。");
                System.out.println("             当前账户余额为:" + acc[pass].getaccountbalance() + "元");
            }
            break;
        }

        case 5: {
            
            if (acc[pass].getaccountbalance() < 2000) {
                System.out.println("账户余额不足,返回取款界面");
                qukuan(pass);
            } else {
                acc[pass].setamount(acc[pass].getamount() + 2000);
                acc[pass].setaccountbalance(acc[pass].getaccountbalance() - 2000);
                System.out.println("***************************************************************");
                System.out.println("   欢迎" + acc[pass].getaccountname() + "进行   取款 ");
                System.out.println("****************************************************************");
                System.out.println("             当前账户取款操作2000元成功。");
                System.out.println("             当前账户余额为:" + acc[pass].getaccountbalance() + "元");
            }
            break;
        }

        case 6: {
            
            if (acc[pass].getaccountbalance() < 5000) {
                System.out.println("账户余额不足,返回取款界面");
                qukuan(pass);
            } else {
                acc[pass].setamount(acc[pass].getamount() + 5000);
                acc[pass].setaccountbalance(acc[pass].getaccountbalance() - 5000);
                System.out.println("***************************************************************");
                System.out.println("   欢迎" + acc[pass].getaccountname() + "进行   取款 ");
                System.out.println("****************************************************************");
                System.out.println("             当前账户取款操作5000元成功。");
                System.out.println("             当前账户余额为:" + acc[pass].getaccountbalance() + "元");
            }
            break;
        }

        case 7: {
            
            System.out.println("请输入你要取款的金额:");
            int num = scan.nextInt();

            if (acc[pass].getaccountbalance() < num) {
                System.out.println("账户余额不足,返回取款界面");
                qukuan(pass);
            } else {
                acc[pass].setamount(acc[pass].getamount() + num);
                acc[pass].setaccountbalance(acc[pass].getaccountbalance() - num);
                System.out.println("***************************************************************");
                System.out.println("   欢迎" + acc[pass].getaccountname() + "进行  取款");
                System.out.println("****************************************************************");
                System.out.println("             当前账户取款操作" + num + "元成功。");
                System.out.println("             当前账户余额为:" + acc[pass].getaccountbalance() + "元");
            }
            break;
        }

        case 8: {
            
            System.out.println("您执行了退卡操作,即将返回初始界面!");
            first();
            break;
        }
        case 9: {
            
            System.out.println("您执行了返回操作,即将返回主界面!");
            zhujiemian(pass);
            break;
        }
        default: {

            System.out.println("您没有输入正确的指令,即将重新返回取款界面!");
            qukuan(pass);

        }
            break;
        }
    }

    




    // 修改密码界面

    public static void xiugaimima(int pass) {
        
        System.out.println("请输入您想设置的新密码:");
        @SuppressWarnings("resource")
        Scanner scan = new Scanner(System.in);
        String xinmima = scan.next();
        System.out.println("新密码修改成功,新密码为:"+xinmima);
        acc[pass].setaccountpassword(xinmima);
        fanhui(pass);
    }
    
        


       // 转账汇款界面

    public static void zhuanzhanghuikuan(int pass) {

        @SuppressWarnings("resource")
        
        Scanner scan = new Scanner(System.in);

        System.out.println("您要转入的账号是?");
        
        String zhanghao1 = scan.next();

        int shuru = 0 ;
        int flag=0;
        for (int i = 0; i < 5; i++) {

            if (zhanghao1.equals(acc[i].getaccountID())) {
                shuru=i;
                break;
            }
            else {
                flag++;
            }
    
        }
        if(flag==5) {
            System.out.println("您要转入的账号并不是本银行账号,即将返回主界面");
            zhujiemian(pass);
        }
                System.out.println("您想转移的金额是?");

                int zhuanzhang = scan.nextInt();
                
                if (acc[pass].getaccountbalance() - zhuanzhang <= 0) {
                    System.out.println("您的余额不足,转账失败!");
                } else {
                    acc[pass].setaccountbalance(acc[pass].getaccountbalance() - zhuanzhang);
                    acc[pass].setamount(acc[pass].getamount() + zhuanzhang);
                    
                    acc[shuru].setaccountbalance(acc[shuru].getaccountbalance() + zhuanzhang);
                    acc[shuru].setamount(acc[shuru].getamount() + zhuanzhang);
                    
                    System.out.println("转账" + zhuanzhang + "元操作成功!");
                    System.out.println( zhanghao1 + "的余额为:" + acc[shuru].getaccountbalance());
                    System.out.println("您的账号余额为:" + acc[pass].getaccountbalance());
                }
            }
//查询余额界面
public static void chaxunyue(int pass) { System.out.println("您的账户余额为:"+acc[pass].getaccountbalance()); fanhui(pass); } //主函数 public static void main(String[] args) { AccountManager.first(); } }

欢迎界面:

输入账号不是本银行账号时:

输入密码界面:

输入密码错误时:

主界面:

 

 存款:

取款界面:

正常取款:

余额不足时:

 (8)选项退卡:

(9)选项返回:

转账汇款:

 

修改密码:

 查询金额:

反思:

今天进行了课前测试,测试题目为ATM自助取款机。之前没有进行过相关练习,只接触过简单的学生系统。测试刚开始的时候还比较顺利,和学生系统相似,完成了一些变量和方法的设置,写出了Account 类。然而在写AccountManager 类的时候遇到了很多问题。没有一个明确的思路,头脑不够清晰,不能快速理清各个界面之间的关系,也不能全面地考虑用户输入过程中可能出现的多种问题。目前为止仍然不能明确理解文件的处理,上述代码只能用数组完成。

1、不会文件的读写

要求:定义accountinformation.txt作为账户基本信息库,基本信息包括accountID,accountname,accountpassword, accountbalance,要求事先实现至少存储五个账户的信息,定义accountlist.txt作为账户操作流水信息数据库,操作流水信息包括(accountID,accountname,operatedate,operatetype, amount)。

Java读写文件

3、当在初始界面中输入账号时出现以下错误:

    通过网络查询错误:

但是在之前的代码里我已经开辟了空间依然出现错误,不明白原因。在询问他人的建议后,我在代码中加入了一行,如下图所示,问题得以解决。

我最初在主函数中使用 类名 . first( )来启动初始界面,(事先将该方法定义为了静态方法),然后出现错误。不理解为什么定义了一个对象 z 之后,我再用同样的 类名 . first ()的方法时,错误消失。

上网查询资料得知,Java中主函数调用本类方法必须是静态的,因为main方法必须是静态方法,所以要调用对象方法,不能直接写方法,需要用对象调用。

4、括号数量混乱

当敲击回车后,系统自动生成收尾的回车,往往因为忽略了这一点导致程序发生错误。思路也不够清晰,以至于不能即时发现括号结构的错误。

5、思路不清楚

 看见题目头脑空白,源于我的熟练程度不够。在之前学习C语言和c++的过程中,我并没有做到每个题目都认真彻底的理解完成,加之没有额外的大量的练习,导致我并没有养成良好的编程习惯以及编程思路,关于这一点,我将再接下来的学习生涯中加大练习,增强自己的熟练程度。

6、不懂得分而治之

尽管老师一再强调写完一部分的代码后要运行,避免在最后的时候出现问题而无从下手。在实际操作过程中,很多时候我仍然写了很多板块后才运行一次,解决错误的时候带来了很多不必要的麻烦。我认为造成这种结果的原因主要是因为,我并不能很好的理解板块与板块之间的关联。不明白一个程序要想成功运行需要哪些基本的东西,因为不懂,所以无从下手。

在这道题目的若干功能中,最让我感到头疼的是转账汇款功能。我的循环和条件语句不能很好的结合,导致每次我输入转入账号时它都显示账号不是已有帐号,因此我在这个板块上花费了比较多的时间。还有就是,通过这道题目,我更加深刻地理解了为什么要多写方法,哪怕这个方法里只有一两行代码。分而治之的思想在程序中格外重要,不同界面之间的变换与连接,就是依托这种思维。

原文地址:https://www.cnblogs.com/ltw222/p/13736135.html