软件工程开学考试题目及源代码。

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

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

各成员的含义如下:

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

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

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

变量operatetypeint类型,用于存储操作账户的类型,具体描述为“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类:

package account;

public class Account {
    
    private String accountID;
    private String accountname;
    private String operatedate;
    private int operatetype=0;
    private String accountpassword;
    private int accountbalance=0;
    private int amount=0;
    public String getAccountID() {
        return accountID;
    }
    public void setAccountID(String accountID) {
        this.accountID = accountID;
    }
    public String getAccountname() {
        return accountname;
    }
    public void setAccountname(String accountname) {
        this.accountname = accountname;
    }
    public String getOperatedate() {
        return operatedate;
    }
    public void setOperatedate(String operatedate) {
        this.operatedate = operatedate;
    }
    public int getOperatetype() {
        return operatetype;
    }
    public void setOperatetype(int operatetype) {
        this.operatetype = operatetype;
    }
    public String getAccountpassword() {
        return accountpassword;
    }
    public void setAccountpassword(String accountpassword) {
        this.accountpassword = accountpassword;
    }
    public int getAccountbalance() {
        return accountbalance;
    }
    public void setAccountbalance(int accountbalance) {
        this.accountbalance += accountbalance;
    }
    public int getAmount() {
        return amount;
    }
    public void setAmount(int amount) {
        this.amount += amount;
    }


    }

AccountManager类:

package account;
import java.util.*; 
public class AccountManager extends Account{
private static Account[] yonghu=new Account[10];
public AccountManager() {
    yonghu[0]=new Account();
    yonghu[1]=new Account();
    yonghu[2]=new Account();
    yonghu[3]=new Account();
    yonghu[4]=new Account();
    yonghu[0].setAccountID("20194177");yonghu[0].setAccountname("赵一");yonghu[0].setAccountpassword("132480");yonghu[0].setAmount(100);yonghu[0].setOperatedate("2020-9-22");yonghu[0].setOperatetype(0);yonghu[0].setAccountbalance(110);
    yonghu[1].setAccountID("20194178");yonghu[1].setAccountname("赵二");yonghu[1].setAccountpassword("132481");yonghu[1].setAmount(200);yonghu[1].setOperatedate("2020-9-23");yonghu[1].setOperatetype(0);yonghu[1].setAccountbalance(210);
    yonghu[2].setAccountID("20194179");yonghu[2].setAccountname("赵三");yonghu[2].setAccountpassword("132482");yonghu[2].setAmount(300);yonghu[2].setOperatedate("2020-9-24");yonghu[2].setOperatetype(0);yonghu[2].setAccountbalance(310);
    yonghu[3].setAccountID("20194180");yonghu[3].setAccountname("赵四");yonghu[3].setAccountpassword("132483");yonghu[3].setAmount(400);yonghu[3].setOperatedate("2020-9-25");yonghu[3].setOperatetype(0);yonghu[3].setAccountbalance(410);
    yonghu[4].setAccountID("20194181");yonghu[4].setAccountname("赵五");yonghu[4].setAccountpassword("132484");yonghu[4].setAmount(500);yonghu[4].setOperatedate("2020-9-26");yonghu[4].setOperatetype(0);yonghu[4].setAccountbalance(510);
    
}
public int yanzhengzhanghao(String x) {
    int j=0;
if(x.length()!=8) {
    return 2;
}
        for(int i=0;i<5;i++) {
        if(yonghu[i].getAccountID().equals(x)) {
            return 1;
        }
        else
            j++;
    }
       return 0;
    
}
    public static void main(String[] args) {
        // 信1905-1 20194177 赵一
        Scanner s = new Scanner(System.in);
        int www=0;
        while(www==0) {
            System.out.println("信1905-1 20194177 赵一");
        System.out.println("*************************************************");
        System.out.println("        欢迎使用中国工商银行自动柜员系统");
        System.out.println("*************************************************");
        System.out.print("               请输入您的账号");
        String a=s.next();
        AccountManager zz=new AccountManager();
        int b=zz.yanzhengzhanghao(a);
        if(b==2) {
            System.out.println("该卡不是工行卡");
        }
        if(b==0) {
            System.out.println("该账号不存在");
        }
        if(b==1) {
            int o;
            for(o=0;!(yonghu[o].getAccountID().equals(a));o++) {
                
            }
            System.out.println("*************************************************");
            System.out.println("欢迎"+yonghu[o].getAccountname()+"使用中国工商银行自助柜台系统");
            System.out.println("*************************************************");
            System.out.print("请输入你的密码:");
            String mima=s.next();
            int mimacishu=0;
            int qqq=0;while(qqq==0) {
                if(!(yonghu[o].getAccountpassword().equals(mima))) {
                    System.out.print("密码录入错误");
                    mimacishu++;
                }
            if(mimacishu==3) {
                System.out.println("该卡已被系统没收,请与工行及时联系处理");
                qqq++;
            }
            if(yonghu[o].getAccountpassword().equals(mima)) {
                System.out.println("********************************************");
                System.out.println("欢迎"+yonghu[o].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("********************************************");
                int choose=s.nextInt();
                if(choose==1) {
                    System.out.println("********************************************");
                    System.out.println("欢迎"+yonghu[o].getAccountname()+"使用中国工商银行自助柜台系统");
                    System.out.println("********************************************");
                    System.out.print("请输入存款金额:");
                    String cunkuan=s.next();
                    if(cunkuan.equals("q")) {
                        System.out.println("返回账号界面");
                        qqq=1;
                    }
                    double dcunkuan= Double.parseDouble(cunkuan);
                    if(dcunkuan-(int)dcunkuan!=0) {
                        System.out.println("输入金额有误");
                    }
                    else {
                        System.out.println("********************************************");
                        System.out.println("欢迎"+yonghu[o].getAccountname()+"使用中国工商银行自助柜台系统");
                        System.out.println("********************************************");
                        System.out.println("当前账户存款操作成功");
                        yonghu[o].setAccountbalance((int)dcunkuan);
                        System.out.println("当前账户余额为:"+yonghu[o].getAccountbalance()+"元");
                    }
                }
                if(choose==2) {
                    int eee=0;while(eee==0) {
                    System.out.println("********************************************");
                    System.out.println("欢迎"+yonghu[o].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("********************************************");
                    int choose1=s.nextInt();
                    if(choose1>=1&&choose1<=6) {if(choose1==1) {
                        if(yonghu[o].getAccountbalance()<100) {
                            System.out.println("账户余额不足");
                        }
                        else
                        {
                            System.out.println("********************************************");
                            System.out.println("欢迎"+yonghu[o].getAccountname()+"使用中国工商银行自助柜台系统");
                            System.out.println("********************************************");
                            System.out.println("当前账户取款操作100元成功");
                            yonghu[o].setAccountbalance(-100);
                            System.out.println("当前账户余额为"+yonghu[o].getAccountbalance()+"元");
                        }
                    }
                    if(choose1==2) {
                        if(yonghu[o].getAccountbalance()<500) {
                            System.out.println("账户余额不足");
                        }
                        else
                        {
                            System.out.println("********************************************");
                            System.out.println("欢迎"+yonghu[o].getAccountname()+"使用中国工商银行自助柜台系统");
                            System.out.println("********************************************");
                            System.out.println("当前账户取款操作500元成功");
                            yonghu[o].setAccountbalance(-500);
                            System.out.println("当前账户余额为"+yonghu[o].getAccountbalance()+"元");
                        }
                    }
                    if(choose1==3) {
                        if(yonghu[o].getAccountbalance()<1000) {
                            System.out.println("账户余额不足");
                        }
                        else
                        {
                            System.out.println("********************************************");
                            System.out.println("欢迎"+yonghu[o].getAccountname()+"使用中国工商银行自助柜台系统");
                            System.out.println("********************************************");
                            System.out.println("当前账户取款操作1000元成功");
                            yonghu[o].setAccountbalance(-100);
                            System.out.println("当前账户余额为"+yonghu[o].getAccountbalance()+"元");
                        }
                    }
                    if(choose1==4) {
                        if(yonghu[o].getAccountbalance()<1500) {
                            System.out.println("账户余额不足");
                        }
                        else
                        {
                            System.out.println("********************************************");
                            System.out.println("欢迎"+yonghu[o].getAccountname()+"使用中国工商银行自助柜台系统");
                            System.out.println("********************************************");
                            System.out.println("当前账户取款操作1500元成功");
                            yonghu[o].setAccountbalance(-100);
                            System.out.println("当前账户余额为"+yonghu[o].getAccountbalance()+"元");
                        }
                    }
                    if(choose1==5) {
                        if(yonghu[o].getAccountbalance()<2000) {
                            System.out.println("账户余额不足");
                        }
                        else
                        {
                            System.out.println("********************************************");
                            System.out.println("欢迎"+yonghu[o].getAccountname()+"使用中国工商银行自助柜台系统");
                            System.out.println("********************************************");
                            System.out.println("当前账户取款操作2000元成功");
                            yonghu[o].setAccountbalance(-100);
                            System.out.println("当前账户余额为"+yonghu[o].getAccountbalance()+"元");
                        }
                    }
                    if(choose1==6) {
                        if(yonghu[o].getAccountbalance()<5000) {
                            System.out.println("账户余额不足");
                        }
                        else
                        {
                            System.out.println("********************************************");
                            System.out.println("欢迎"+yonghu[o].getAccountname()+"使用中国工商银行自助柜台系统");
                            System.out.println("********************************************");
                            System.out.println("当前账户取款操作5000元成功");
                            yonghu[o].setAccountbalance(-100);
                            System.out.println("当前账户余额为"+yonghu[o].getAccountbalance()+"元");
                        }
                    }
}
                    if(choose1==7) {
                        System.out.println("********************************************");
                        System.out.println("欢迎"+yonghu[o].getAccountname()+"使用中国工商银行自助柜台系统");
                        System.out.println("********************************************");
                        System.out.print("请输入取款金额:");
                        int qukuan=s.nextInt();
                        if(yonghu[o].getAccountbalance()<qukuan) {
                            System.out.println("账户余额不足");
                        }
                        else
                        {
                            System.out.println("********************************************");
                            System.out.println("欢迎"+yonghu[o].getAccountname()+"使用中国工商银行自助柜台系统");
                            System.out.println("********************************************");
                            System.out.println("当前账户取款操作"+qukuan+"元成功");
                            int qukuan1=-qukuan;
                            yonghu[o].setAccountbalance(qukuan1);
                            System.out.println("当前账户余额为"+yonghu[o].getAccountbalance()+"元");
                        }
                    }
                    if(choose1==8) {
                        eee++;
                    }
                    if(choose1==9) {
                        eee++;
                        qqq=1;
                    }
                    }
                    
                }
            if(choose==3) {
                System.out.println("********************************************");
                System.out.println("欢迎"+yonghu[o].getAccountname()+"使用中国工商银行自助柜台系统");
                System.out.println("********************************************");
                System.out.print("请输入转账用户:");
                String zhuanzhangyonghu=s.next();
                int i;
                for(i=0;!(yonghu[i].getAccountname().equals(zhuanzhangyonghu))&&i<5;i++) {
                    
                }
                if(i==4) {
                    if(!(yonghu[i].getAccountname().equals(zhuanzhangyonghu))) {
                        System.out.println("该用户不存在");}
                    else {}
                }
                else {
                    System.out.println("********************************************");
                    System.out.println("欢迎"+yonghu[o].getAccountname()+"使用中国工商银行自助柜台系统");
                    System.out.println("********************************************");
                    System.out.print("请输入转账金额:");
                    int zhuanzhang=s.nextInt();
                    if(yonghu[o].getAccountbalance()<zhuanzhang) {
                        System.out.println("账户余额不足");
                    }
                    
                }
                
                System.out.println("**********************************************");
                
            }    
            if(choose==4) {
                int rrr=0;
                while(rrr==0) {
                System.out.println("********************************************");
                System.out.println("欢迎"+yonghu[o].getAccountname()+"使用中国工商银行自助柜台系统");
                System.out.println("********************************************");
                System.out.println("请输入当前密码:");
                String dangqianmima=s.next();
                System.out.println("请输入修改密码:");
                String xiugaimima=s.next();
                System.out.println("请输入确认密码:");
                String querenmima=s.next();
                if(!(yonghu[o].getAccountpassword().equals(dangqianmima))) {    System.out.println("当前密码录入错误");}
                else if(xiugaimima.equals(querenmima)) {
                    System.out.println("修改密码与确认密码不一致");
                }
                else {
                    System.out.println("********************************************");
                    System.out.println("欢迎"+yonghu[o].getAccountname()+"使用中国工商银行自助柜台系统");
                    System.out.println("********************************************");
                    System.out.println("当前账户密码修改成功");
                    System.out.println("*******************************************");
                    yonghu[o].setAccountpassword(xiugaimima);
                    
                }
                }}
            }
            }
        }}
        System.out.println("*************************************************");
        
    }

}

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

原文地址:https://www.cnblogs.com/zhaoyids/p/13715604.html