题目:
数据结构测试要求:(8分)
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分)
AccountManager类
package ATMtest;
import java.util.Scanner;
public class AccountManager {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String accountID = "20193941"; // 卡号
int accountpassword = 123456; // 密码
boolean flag = true; // 声明布尔类型变量
double accountbalance = 0;// 余额
// 界面
System.out.println("***************************************************************\r\n" + "欢迎使用中国工商银行自动柜员系统\r\n" + "**************************************************************** ");
/** 用于进行登录的次数限制止 **/ for (int i = 1; i <= 3; i++) {
System.out.println("请输入您的账号:");
String inputCard = input.next();
System.out.println("请输入您的密码:");
int inputPwd = input.nextInt();
// 验证账号和密码
if (inputCard.equals(accountID) && inputPwd == accountpassword) {
flag = true; break; } else
{ if (i <= 2) {
System.out.println("对不起,密码输入不正确,你还有" + (3 - i) + "次机会!"); }
else { System.out.println("对不起,您的卡已被锁定!");
break; }
flag = false; }
}
/** 登录成功后选择功能 */
if (flag) { char answer = 'y'; while (answer == 'y')
{ System.out.println("请选择功能:1.存款 2.取款 3.转账汇款 4.修改密码 5.查询余额");
int choice = input.nextInt();
switch (choice) {
case 2: // 执行取款操作
System.out.println("--->取款"); System.out.println("请输入取款金额:"); double getMoney = input.nextDouble(); if (getMoney > 0) { if (getMoney <= accountbalance) { if (getMoney % 100 == 0) { System.out.println("请取走您的钞票!余额为¥" + (accountbalance - getMoney)); } else { System.out.println("对不起,不能取零钱!"); } } else { System.out.println("对不起,余额不足!"); } } else { System.out.println("请输入正确的金额:"); }
break; case 1: // 执行存款操作 System.out.println("--->存款"); System.out.println("请把钞票整理后放入存钞口:"); double saveMoney = input.nextDouble(); if (saveMoney > 0 && saveMoney <= 10000) { if (saveMoney % 100 == 0) { accountbalance += saveMoney; System.out.println("存款成功!余额为¥" + accountbalance); } else {
double backMoney = saveMoney % 100; accountbalance = saveMoney + accountbalance - backMoney; System.out.println("存款成功!余额为¥" + accountbalance); System.out.println("请取走零钱¥" + backMoney); } } else if (saveMoney > 10000) { System.out.println("一次最多存入一万元,请分批存入!"); } else { System.out.println("存入的钞票是假钞,无效没收!"); } break; case 5: // 执行查询余额 System.out.println("--->查询余额"); System.out.println("您卡上的余额是:" + accountbalance); break; case 3: // 执行转账操作 System.out.println("--->转账"); System.out.println("请输入转账金额:"); double goMoney = input.nextDouble(); // 转账金额 if (goMoney > 0) { if (goMoney <= accountbalance) { System.out.println("转账成功!余额为¥" + (accountbalance - goMoney)); } else { System.out.println("对不起,请确保卡上有足够的余额!"); }
} else { System.out.println("转账失败!请输入正确的金额:"); } break; case 4: // 执行退出操作 // System.out.println("--->退出"); System.out.println("谢谢您的使用!"); return; default: System.out.println("对不起,您选择的功能有误!"); break; }// switch end System.out.println("继续吗?y/n"); answer = input.next().charAt(0);
} // while end System.out.println("谢谢您的使用!");
} }}
Account类
package ATMtest;
//信1905-1 20193941 王伊念
public class Account { private String accountID = "20193941";//定义用户ID private String accountname;//存储账户的名称 private String operatedate;//存储操作的时间 private int operatetype;//存储操作账户的类型 private int accountpassword= 123456;//用户密码 private double accountbalance= 0;//存储账户余额 private int amount;//操作流水金额 //读取,设置 public Account() { super(); } public Account(String accountID, int accountpassword, double accountbalance) { super(); this.accountID = accountID; this.accountpassword = accountpassword; this.accountbalance = accountbalance; } 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(int accountpassword) { this.accountpassword=accountpassword; } public int getaccountpassword() { return accountpassword; } public void setaccountbalance(double accountbalance) { this.accountbalance=accountbalance; } public double getaccountbalance() { return accountbalance; } public void setamount(int amount) { this.amount=amount; } public int getamount() { return amount; } }