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