主要实现了
登录
查询余额
存款
取款
转账
开户
销户
使用txt格式存储对象
由于本人学艺不精,暂时无法实现销户功能,即从文件中删除一个对象
现将代码发布于此,互相学习
用户类
package bank;
import java.io.Serializable;
public class Account implements Serializable {
private String name;
private String password;
private double remainMoney;
private long serialVersionUID = -440948515215806088L;
public Account(){
}
public Account(String name, String password, double remainMoney){
this.name = name;
this.password = password;
this.remainMoney = remainMoney;
}
public double getRemainMoney() {
return remainMoney;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
public boolean addRemainMoney(double money){
this.remainMoney += money;
return true;
}
public boolean delRemainMoney(double money){
this.remainMoney -= money;
return true;
}
public void setName(String name) {
this.name = name;
}
}
银行管理员类
package bank;
import java.io.*;
public class Administrator {
private static int accountNum = 3;
public int getAccountNum() {
return accountNum;
}
public boolean addAccountNum(){ //增加用户数量
accountNum++;
return true;
}
public boolean delAccountNum(){ //减少用户数量
accountNum--;
return true;
}
public String login(String admin, String password){
int temp = accountNum;
//需要一个对象输入流
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D://银行系统//accountMessage.txt"));
while(temp-- != 0){
Account a = (Account)ois.readObject();
if (a.getName().equals(admin)){
if (a.getPassword().equals(password)){
return "登录成功!!!";
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "用户名或密码错误!!!";
}
public double query(String admin){
int temp = accountNum;
//需要一个对象输入流
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D://银行系统//accountMessage.txt"));
while(temp-- != 0){
Account a = (Account)ois.readObject();
if (a.getName().equals(admin)){
return a.getRemainMoney();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return 0.00;
}
public boolean save(String admin, double money){ //存钱
int temp = accountNum;
//需要一个对象输入流
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D://银行系统//accountMessage.txt"));
while(temp-- != 0){
Account a = (Account)ois.readObject();
if (a.getName().equals(admin)){
a.addRemainMoney(money);
return true;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public boolean take(String admin, double money){ //取钱
int temp = accountNum;
//需要一个对象输入流
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D://银行系统//accountMessage.txt"));
while(temp-- != 0){
Account a = (Account)ois.readObject();
if (a.getName().equals(admin)){
if(a.getRemainMoney() > money){ //判断余额
a.delRemainMoney(money);
return true;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public boolean transfer(String admin, String toAdmin, double money){
int temp = accountNum;
//需要一个对象输入流
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D://银行系统//accountMessage.txt"));
while(temp-- != 0){
Account a = (Account)ois.readObject();
if (a.getName().equals(admin)){
if (a.getRemainMoney() < money){ //余额不足直接返回false
System.out.println("余额不足转账失败!!!");
return false;
}
while (temp-- != 0){
Account b = (Account)ois.readObject();
if (b.getName().equals(toAdmin)){
b.addRemainMoney(money); //b用户增加余额
a.delRemainMoney(money); //a用户减少余额
System.out.println("转账成功!!!");
return true;
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
//开户,将新用户写入文件
public boolean newAccount(String admin, String password, double money){
Account a = new Account(admin, password, money);
File accountMessage = new File("D://银行系统//accountMessage.txt");
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try{
fos = new FileOutputStream(accountMessage);
oos = new ObjectOutputStream(fos);
oos.writeObject(a);
oos.flush();
} catch (IOException e){
e.printStackTrace();
}
return true;
}
//销户,从文件中删除用户
public boolean deleteAccount(String admin){
//需要一个对象输入流
int temp = accountNum;
File accountMessage = new File("D://银行系统//accountMessage.txt");
FileInputStream fis = null;
ObjectInputStream ois = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(accountMessage);
ois = new ObjectInputStream(fis);
while( temp-- != 0){
Account a = (Account)ois.readObject();
if (a.getName().equals(admin)){
//如何从文件中删除用户
// a = null;
System.out.println("销户成功!!!");
return true;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}
主函数类
package bank;
import java.io.*;
import java.util.Scanner;
public class Bank {
static {
Account a1 = new Account("郑中拓", "123", 1111);
Account a2 = new Account("渡一教育", "666",2222);
Account a3 = new Account("Java", "888", 3333);
File accountMessage = new File("D://银行系统//accountMessage.txt");
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
accountMessage.createNewFile();
fos = new FileOutputStream(accountMessage);
oos = new ObjectOutputStream(fos);
oos.writeObject(a1);
oos.writeObject(a2);
oos.writeObject(a3);
oos.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("欢迎进入银行系统!!!");
System.out.println("请输入账户:");
String name = input.nextLine();
System.out.println("请输入密码:");
String password = input.nextLine();
Administrator a = new Administrator();
System.out.println(a.login(name, password));
System.out.println("您的账户余额为: "+a.query(name));
a.deleteAccount(name);
}
}
总结:自己独立完成任务时,先要有整体的思路,先构建起来整体的框架,比如把需要实现的函数先初始化,再根据要求一步步实现,补充方法的功能。