源码链接:https://github.com/zhangdididi/BankManager
要完成一个简单版本的银行管理系统,首先需要设计好整体框架,这里我们新建四个类,分别为 用户(Person) 、银行卡(BankCard)、银行(Bank)还有一个测试类(Test)
其中每一个类的功能不同,其中:
- 用户要实现存钱、取钱和转账的方法。
- 银行要实现登录、注册以及银行系统界面的方法。、
- 银行卡则需要有构造方法、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);
}
}