实现持卡用户数据持久化存储(使用BufferedReader/BufferedWriter读取文件信息和写入信息)
- 文件banckCard(存储用户银行卡信息)\文件Transfers(存储所有的转账记录)
- 创建BanckCard银行卡类,银行卡信息(账号,密码,余额,银行卡名,持卡人姓名)
- 创建Transfers转账信息类(持卡人姓名、银行名称、卡号、flag标记)
- 创建ATM类,实现各种功能的操作
- 工具类(解决输入卡号、密码、存款、取款输入异常)
- 测试类(new ATM对象 调用登录方法)
文件中用户银行卡的信息如下
转账记录文件
一、银行卡BanckCard类
public class BankCard {
private String account; //账号
private String password; //密码
private double balance; //余额
private String bankName; //银行卡名字
private String name; //持卡人姓名
@Override
public String toString() {
return "BankCard{" +
"account='" + account + '\'' +
", password='" + password + '\'' +
", balance=" + balance +
", bankName='" + bankName + '\'' +
", name='" + name + '\'' +
'}';
}
public BankCard() {
}
public BankCard(String account, String password, double balance, String bankName, String name) {
this.account = account;
this.password = password;
this.balance = balance;
this.bankName = bankName;
this.name = name;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public String getBankName() {
return bankName;
}
public void setBankName(String bankName) {
this.bankName = bankName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
二、 转账信息类(所有用户转账记录)
/**
* 转账信息类
*/
public class Transfers {
private String name; //持卡人姓名
private String account; //银行卡账号
private String bankName; //银行卡名字
private int flag; //标记
public int getFlag() {
return flag;
}
public void setFlag(int flag) {
this.flag = flag;
}
@Override
public String toString() {
return name + '\'' + account + '\'' + bankName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getBankName() {
return bankName;
}
public void setBankName(String bankName) {
this.bankName = bankName;
}
}
三、ATM
1.ATM中的全局变量
BankCard bankCard[]=new BankCard[10];//存储银行卡信息的数组
int id;//标记 当login()方法登录成功时将bankCard数组下标赋值给id方便后面方法直接找到当前登录的银行卡信息
//将Transfers文件中所有转账记录放入list集合
List<Transfers> listTransfers=new ArrayList<>();
2.使用ATM无参构造器ATM(),BufferedReader输入流读取文件信息
public ATM(){
//创建输入流
BufferedReader br=null;
BufferedReader br1=null;
int i=0;
String line=null;
String line1=null;
try {
//读取文件banckcardes账户信息存放bankCard数组中
br = new BufferedReader(new FileReader("src/zuoye/d0718/bankcardes"));
while ((line=br.readLine())!=null){
String[] d = line.split(",");
//将文件中的信息存储在数组bankCard中
this.bankCard[i]=new BankCard(d[0],d[1],Double.parseDouble(d[2]),d[3],d[4]);
i++;
}
//读取Transfers文件转账记录放入list集合
br1 = new BufferedReader(new FileReader("src/zuoye/d0718/Transfers"));
while ((line1=br1.readLine())!=null){
String[] d = line1.split("\t");
Transfers tf = new Transfers();
tf.setName(d[0]);
tf.setAccount(d[1]);
tf.setBankName(d[2]);
tf.setFlag(Integer.parseInt(d[3]));
listTransfers.add(tf);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {