天天看点

银行系统(Java实现)

主要实现了

登录

查询余额

存款

取款

转账

开户

销户

使用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);

    }
}