Java实现控制台版银行管理系统

发布于:2023-07-04 ⋅ 阅读:(114) ⋅ 点赞:(0)

源码链接:https://github.com/zhangdididi/BankManager

要完成一个简单版本的银行管理系统,首先需要设计好整体框架,这里我们新建四个类,分别为 用户(Person) 、银行卡(BankCard)、银行(Bank)还有一个测试类(Test)

其中每一个类的功能不同,其中:

  1. 用户要实现存钱、取钱和转账的方法。
  2. 银行要实现登录、注册以及银行系统界面的方法。、
  3. 银行卡则需要有构造方法、getter和setter方法还有查询余额的方法。

用户

import java.util.Map;
import java.util.Scanner;

public class Person {

    Scanner sc = new Scanner(System.in);

    //存钱
    public void save(BankCard card) {
        System.out.println("请输入您的存入金额:");
        double money = sc.nextDouble();
        if (money > 0) {
            card.setMoney(card.getMoney() + money);
            System.out.println("存入成功");
            card.balance();
        } else {
            System.out.println("请输入正确金额");
        }
    }

    //取钱
    public void withdraw(BankCard card) {
        System.out.println("请输入您要取出的金额:");
        double money = sc.nextDouble();
        if (money > 0 && money <= card.getMoney()) {
            card.setMoney(card.getMoney() - money);
            System.out.println("取款成功!");
            System.out.println("已取:" + money + "元");
            card.balance();
        } else if (money > card.getMoney()) {
            System.out.println("您的存款不足!");
        } else {
            System.out.println("请输入正确金额");
        }
    }

    //转账
    public void transfer(BankCard card) {
        int count = 3;
        while (count > 0) {
            System.out.println("请输入对方的账户id:");
            int destID = sc.nextInt();//目的账号
            Map<Integer, BankCard> bankCards = Bank.bankCards;
            if (bankCards.containsKey(destID)) {
                //查找目的账户存在,再进行转账操作
                BankCard dest = bankCards.get(destID);//目的账户
                System.out.println("请输入您要转账的金额:");
                double money = sc.nextDouble();
                if (money <= card.getMoney()) {
                    //有足够的金额才能转账
                    card.setMoney(card.getMoney() - money);
                    dest.setMoney(dest.getMoney() + money);
                    System.out.println("转账成功!");
                    card.balance();
                    return;
                } else {
                    System.out.println("余额不足");
                }
            }
            System.out.println("您还有" + (count - 1) + "次机会,请重新输入");
            count--;
        }
    }
}

银行

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Bank {
    //用哈希表来存储银行卡,根据卡号来找到对应的银行卡
    //这样查找的更快
    public static Map<Integer, BankCard> bankCards = new HashMap<>();

    //注册银行卡方法
    public void register(int id, int password) {
        //先查询要注册的银行卡号是否存在
        if (bankCards.containsKey(id)) {
            System.out.println("这个账户已经注册过了,请重新选择您的业务");
            return;
        }
        bankCards.put(id, new BankCard(id, password));
        System.out.println("注册成功,已将您的银行卡信息成功存入本行");
    }

    //登录,根据id和password取银行卡
    public BankCard login(int id, int password) {
        if (bankCards.size() == 0) {
            System.out.println("本行目前不存在任何银行卡信息");
            return null;
        }
        if (bankCards.get(id).getPassword() == password) {
            //如果密码正确,则登录成功,返回银行卡
            return bankCards.get(id);
        } else {
            //否则就返回null
            return null;
        }
    }

    //进入银行界面
    public void operate(Person person) {
        int count = 3;
        while (count > 0) {
            System.out.println("欢迎来到本银行,请选择您的业务:");
            System.out.println("====1.登录账户===2.注册账户===3.退出");
            Scanner scanner = new Scanner(System.in);
            int key = scanner.nextInt();
            if (key == 3) {
                System.out.println("您已成功退出银行系统");
                return;
            }
            System.out.println("请输入您的银行卡账号:");
            int id = scanner.nextInt();
            System.out.println("请输入您的银行卡密码:");
            int password = scanner.nextInt();
            switch (key) {
                case 1:
                    BankCard card = login(id, password);
                    if (card != null) {
                        System.out.printf("=== 账户%d登陆成功 ===", id);
                        while (true) {
                            System.out.println("===请输入您需要的业务===");
                            System.out.println("===1.存钱===2.取钱===3.转账===4.查询余额===5.退卡");
                            int operationNum = scanner.nextInt();
                            if (operationNum == 5) break;
                            operateLoginSuccess(person, operationNum, card);
                        }
                    } else {
                        System.out.println("登陆失败!");
                        count--;
                    }
                    break;
                case 2:
                    register(id, password);
                    break;
            } //end switch
        }//end while
    }

    private void operateLoginSuccess(Person person, int operationNum, BankCard card) {
        switch (operationNum) {
            case 1:
                person.save(card);
                break;
            case 2:
                person.withdraw(card);
                break;
            case 3:
                person.transfer(card);
                break;
            case 4:
                card.balance();
                break;
            default:
                break;
        }
    }
}

银行卡

import java.text.DecimalFormat;

public class BankCard {
    private int id;//银行卡号
    private int password;//银行卡密码
    private double money;//银行卡余额

    //根据卡号和密码来新建一张银行卡 (构造方法)
    public BankCard(int id, int password) {
        this.id = id;
        this.password = password;
    }

    //查询余额
    public void balance() {
        DecimalFormat df = new DecimalFormat("#.00");
        System.out.println("您的余额为: " + df.format(money));
    }

    //根据setter()方法和getter()方法来获取或者修改银行卡信息
    public void setId(int id) {
        this.id = id;
    }

    public void setPassword(int password) {
        this.password = password;
    }

    public void setMoney(double money) {

        this.money = money;
    }

    public int getId() {
        return id;
    }

    public int getPassword() {
        return password;
    }

    public double getMoney() {
        return money;
    }
}

测试

public class Test {
    public static void main(String[] args) {
        Bank bank = new Bank();
        Person person = new Person();
        bank.operate(person);
    }
}


网站公告

今日签到

点亮在社区的每一天
去签到