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


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

  • 相关阅读:
    高质量c/c++编程(10)
    .net 访问excel问题
    高质量c/c++编程(9)
    C#排序算法 之 冒泡排序
    C#排序算法 之 希尔排序
    高质量c/c++编程附录
    C#排序算法 之 插入排序
    读《漂亮女上司》有感
    高质量c/c++编程(6)
    高质量c/c++编程(5)
  • 原文地址:https://www.cnblogs.com/zhaoyids/p/13715604.html
Copyright © 2020-2023  润新知