银行系统(Java实现)

it2023-12-19  64

主要实现了 登录 查询余额 存款 取款 转账 开户 销户 使用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); } }

总结:自己独立完成任务时,先要有整体的思路,先构建起来整体的框架,比如把需要实现的函数先初始化,再根据要求一步步实现,补充方法的功能。

最新回复(0)