开学第一次测试
今天是开学第一天的测试,测试的内容是暑假在家自学java的情况,以下是题目要求:
------------------------------------------------------------------------------------------------------------------------------------------------------
ATM机的账户记录Account有账户的唯一性标识(8个数字的组合),用户的姓名,操作日期(Date),操作类型,账户密码(六位的数字,可以用0开头),当前的余额(可以为0)。
1、定义Account类,其中包括七个私有变量(accountID,accountname,operatedate,operatetype,accountpassword, accountbalance,)。(3分)
各成员的含义如下:
变量accountID为字符串类型String,用于存储学生的用户账号(由八位数字组成)。
变量accountname为字符串类型String,用于存储账户的名称。
变量operatedate为字符串类型String,用于存储操作的时间,由十位字符组成,显示格式为“2018-09-20”。
变量operatetype为int类型,用于存储操作账户的类型,具体描述为“1”表示存款,“2”表示取款,“3”表示转账汇款,“4”表示修改账户密码,“5”表示查询余额。
变量accountpassword为字符串类型String,用于用户密码,由六位数字组成。
变量accountbalance为整数类型int,用于存储账户余额,缺省为0。
变量amount为整数类型int,表示操作流水金额。
2、对每个变量定义get()(读取变量信息)和set()(设置变量信息)的方法。(3分)
3、定义accountinformation.txt作为账户基本信息库,基本信息包括accountID,accountname,accountpassword, accountbalance,要求事先实现至少存储五个账户的信息,定义accountlist.txt作为账户操作流水信息数据库,操作流水信息包括(accountID,accountname,operatedate,operatetype, amount)。(要求将学号作为帐号,将考生信息作为第一条记录)。(2分)
三、功能要求:(12分)
该程序模拟ATM的功能设计,当用户插卡后显示,输入密码界面,用户输入正确密码(用户输入错误密码,则提示该卡已被锁定,无法操作),则弹出选择界面:存款、取款、转账汇款、修改密码、查询余额。
注意:对accountinformation.txt和accountlist.txt数据库中的信息进行读写操作时,必须调用get()和set()方法,否则,出现一处扣除0.5分,直至扣完为止。
(1) 需要在程序开始的注释中注明班级、学号、姓名。(1分)
(2) 定义AccountManager类实现下列要求
(3)程序开始运行模拟用户插卡显示用户输入账号功能;(1分)
①界面设计:
***************************************************************
欢迎使用中国工商银行自动柜员系统
**************************************************************** 请输入您的账号:
****************************************************************
②功能设计
用户在该界面输入账号信息,如果输入账号位数有误,提示“该卡不是工行卡”,如果输入账号信息在accountinformation.txt不存在,则提示“该账号不存在”,账号输入不成功,系统提示错误信息后返回输入账号界面;输入账号成功后,系统跳转到输入密码界面。
(4)用户输入密码功能;(1分)
①界面设计:
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
**************************************************************** 请输入您的密码:
****************************************************************
②功能设计
用户在该界面输入账号密码信息,如果密码录入错误(出现位数不对或与文件中该账号对应的密码不服),则提示“密码录入错误”,如果密码录入三次错误,则提示“该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理”。单次密码输入不成功,系统提示错误信息,返回输入密码界面;三次密码输入不成功,系统提示错误信息,返回输入账号界面,密码输入成功,系统跳转到主界面。
(5)系统主界面如下图所示,选择相应的数字执行相应的功能。(1分)
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
1、 存款;
2、 取款;
3、 转账汇款;
4、 修改密码;
5、 查询余额;
****************************************************************
(6)存款功能:(2分)
存款操作流程:
①系统进入存款界面:
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
请输入存款金额;
****************************************************************
②用户在该界面输入存款金额后,如果输入不是正整数,提示用户“输入金额有误,返回取款界面;输入字母“q”,则返回系统输入账号界面,表示退出柜员机操作;输入正整数,则跳转到下图存款成功界面。
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
当前账户存款操作成功。
当前账户余额为:XXXX元
****************************************************************
③存款成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户余额。
④点击“q”键,退回系统录入账号界面
(7)取款功能:则显示100元、500元、1000元、1500元、2000元、5000元、其他金额、退卡、返回操作供用户选择(3分)
取款流程设计:
① 系统进入取款界面:
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************当前账户每日可以支取2万元。
1、100元
2、500元
3、1000元
4、1500元
5、2000元
6、5000元;
7、其他金额
8、退卡
9、返回
****************************************************************
②用户选择1-6选项时,判断账户余额是否不小于录入金额,如果小于,则提示“账户余额不足”,如果大于,则跳转到下图取款成功界面。
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
当前账户取款操作XXXX元成功。
当前账户余额为:XXXX元
****************************************************************
③用户选择7选项时,显示录入金额界面
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
请输入取款金额:
****************************************************************
判断账户余额是否不小于录入金额,如果小于,则提示“账户余额不足”,如果大于,则跳转到下图取款成功界面。
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
当前账户取款操作XXXX元成功。
当前账户余额为:XXXX元
****************************************************************
④取款成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户余额。
⑤用户选择“8”选项时,系统跳转到输入账户界面。
⑥用户选择“9”选项时,系统跳转到系统主界面。
(8)转账汇款功能:(1分)
系统流程如下所示:
①系统进入转账主界面
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
请输入转账账户;
****************************************************************
②用户在该界面输入判断该账户是否存在accountinformation.txt文件中,如果没有提示“该账户不存在”,如果有则跳转到转账金额界面。
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
请输入转账金额;
****************************************************************
③判断账户余额是否不小于录入金额,如果小于,则提示“账户余额不足”,如果大于,则跳转到下图转账确认成功界面。
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
请确认是否向*XX(将转账的用户名称第一个用*代替,其余正常显示)转账XXXX元。
****************************************************************
④单击“N”表示不确认转账,系统跳转到系统主界面;单击“Y”表示确认转账,系统跳转到转账成果界面,。
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
当前账户向*XX成功转账XXXX元。
当前账户余额为:XXXX元
****************************************************************
⑤转账汇款成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户余额。
⑥点击“q”键,退回系统录入账号界面
(9)修改密码功能:(1分)
修改密码操作流程:
① 系统进入修改密码界面:
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
请输入当前密码:
请输入修改密码:
请输入确认密码:
****************************************************************
② 当前密码录入错误,提示“当前密码录入错误”,系统返回修改密码界面,清空数据重新录入;修改后密码与确认密码不一致,提示“修改密码与确认密码不一致”,系统返回修改密码界面,清空数据重新录入。
③ 密码修改成功,系统跳转到密码修改成功界面。
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
当前账户密码修改成功
****************************************************************
④ 密码修改成功后将该条记录作为操作流水信息记录到accountlist.txt文件中,并修改accountinformation.txt中的账户密码。
⑤ 点击“q”键,退回系统录入账号界面
(10)查询功能:(1分)
查询操作流程:
①系统显示当前用户余额和操作流水信息:
***************************************************************
欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统
****************************************************************
当前账户余额为:XXXX元
账户清单信息为:
1、操作日期 操作类型(不用显示数字) 操作金额
2、操作日期 操作类型(不用显示数字) 操作金额
3、…………………………………………………………
****************************************************************
②点击“q”键,退回系统录入账号界面。
整个系统的内容很多,但是自己相关的用法都是现通过百度搜索的方法,所以自己代码的速度很慢,最后完成的功能也很少。
以下是我当时编辑的源代码:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// 牛振鹏 信1905-1 20194007
package First;
import java.util.Scanner;
class Account{ // 学生类
private String [] accountID=new String[] {"1234567"};//存储学生的用户账号
private String accountname; //存储账户的名称
private double operatedate;//存储操作的时间
private int operatetype; //存储操作账户的类型
private double networkscore=123456; //用户密码
private double datebasescore=0; //存储账户余额
void setaccountID(String a[],int b) // 设置初始账号
{
int i;
for(i=0;i<b;i++)
{
accountID[i]=a[i];
}
}
String getaccountID() // 返回初始账号
{
return accountID[0];
}
void setoperatedate(double a) { // 设置操作的时间
operatedate=a;
}
double setoperatedate() { // 返回操作的时间
return operatedate;
}
void setaccountname(String a) { // 设置账号名称
accountname=a;
}
String setaccountname() { // 返回账号名称
return accountname;
}
void setoperatetype(int a) { // 设置操作账户的类型
operatetype=a;
}
int operatetype() { // 返回操作账户的类型
return operatetype;
}
void setnetworkscore(double a) { // 设置用户密码
networkscore=a;
}
double getnetworkscore() { // 返回用户密码
return networkscore;
}
void setdatebasescore(double a) { // 设置存储账户余额
datebasescore=a;
}
double getdatebasescore() { // 返回存储账户余额
return datebasescore;
}
}
class AccountManager extends Account{
Scanner cn=new Scanner(System.in);
public void inaccountID() { // 输入账号
System.out.println("*************************************");
System.out.println(" 欢迎使用中国工商银行自动取款系统 ");
System.out.println("*************************************");
System.out.println(" 请输入您的账号: ");
System.out.println("*************************************");
}
public void judaccountID() { // 判断账号正误
Scanner input = new Scanner(System.in);
String accountone = input.nextLine();
int length = accountone.length();
if(length!=8)
{System.out.println("该卡不是工行卡");
System.out.println(" 请输入您的账号: ");
judaccountID();
}
if(accountone!=getaccountID()) {
System.out.println("该账号不存在");
System.out.println(" 请输入您的账号: ");
judaccountID();
}
if(accountone==getaccountID()) {
innetworkscore();
}
}
public void innetworkscore() { // 输入密码
System.out.println("*************************************");
System.out.println(" 欢迎使用中国工商银行自动取款系统 ");
System.out.println("*************************************");
System.out.println(" 请输入您的密码: ");
System.out.println("*************************************");
}
public void judworkscore() { // 判断密码正误
Scanner input = new Scanner(System.in);
int n=0;
double a = input.nextDouble();
double length = (a+"").length();
if(length!=6||a!=123456)
{System.out.println("密码录入错误");
n++;
System.out.println(" 请输入您的密码: ");
judworkscore();
}
if(n==3) { System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理 ");
System.out.println(" 请输入您的账号: ");
judaccountID();
}
if(length==6&&a==123456) {
account();
}
}
public void account() { // 显示主界面
System.out.println("**************************************************");
System.out.println(" 欢迎XXXXXXXX(账户名称)使用中国工商银行自助柜员系统 ");
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("*************************************************");
}
public void store() { // 存款显示
System.out.println("*************************************");
System.out.println(" 欢迎使用中国工商银行自助柜员系统 ");
System.out.println("*************************************");
System.out.println(" 请输入存款金额: ");
System.out.println("*************************************");
}
public void storewin() { // 存款成功显示
System.out.println("*************************************");
System.out.println(" 当前账户存款操作成功 ");
System.out.println("*************************************");
System.out.println(" 当前账户余额为:XXXX元 ");
System.out.println("*************************************");
}
public void qukuan() { // 取款显示
System.out.println("*************************************");
System.out.println(" 欢迎使用中国工商银行自助柜员系统 ");
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、返回 ");
}
public void zhuan() { }
public void xiugai() { }
public void find() { }
}
public class Firsthello{
public static void main(String[] args) {
int n;
AccountManager account=new AccountManager();
Account stu=new Account();
account.inaccountID();
Scanner cn=new Scanner(System.in);
n=cn.nextInt();
while(n>=1&&n<=5) {
switch(n) {
case 1:{
account.store();break;
}
case 2:{
account.qukuan();
break;
}
case 3:{
account.zhuan();
break;
}
case 4:{
account.xiugai();
break;
}
case 5:{
account.find();
break;
}
}
}
}}