/*增加了工具包”com.cx.bank.util” 在工具包中添加类
InvalidDepositException作用:存款为负数时抛出异常
AccountOverDrawnException作用:取款超出余额时抛出异常,把业务层的异常抛给测试层处理
*/
InvalidDepositException.java
package com.cx.bank.util;
public class InvalidDepositException extends Exception{
public void InvalidDepositException(){
}
public InvalidDepositException(String s) {
super(s);
}
}
AccountOverDrawnException.java
package com.cx.bank.util;
public class AccountOverDrawnException extends Exception{
public void AccountOverDrawnException() {
}
public AccountOverDrawnException(String s) {
super(s);
}
}
ManagerImpl.java
package com.cx.bank.manager;
import com.cx.bank.model.MoneyBean;
import com.cx.bank.util.AccountOverDrawnException;
import com.cx.bank.util.InvalidDepositException;
/**
* 包名:com.cx.bank.manager (业务层)
* ManagerImpl业务类
*/
public class ManagerImpl implements ManagerInterface {
private static ManagerImpl instance = null; // 单例对象
private final MoneyBean moneyBean = new MoneyBean();
// 构造函数私有化,防止外部创建对象
private ManagerImpl() {
}
// 获取单例对象的静态方法
public static ManagerImpl getInstance() {
if (instance == null) {
instance = new ManagerImpl();
}
return instance;
}
public double inquiry() {
return moneyBean.getMoney();
}
public boolean withdrawals(double money) throws AccountOverDrawnException {
if (money <= 0) {
throw new AccountOverDrawnException("对不起,您的取款金额需大于0元!");
}
double leave = moneyBean.getMoney();
if (money > leave) {
System.out.println("对不起,您的存款金额不够!");
return false;
}
moneyBean.setMoney(leave - money);
System.out.println("取款成功!");
return true;
}
public boolean deposit(double money) throws InvalidDepositException {
if (money <= 0) {
throw new InvalidDepositException("对不起,您的存款金额需大于0元!");
}
double leave = moneyBean.getMoney();
moneyBean.setMoney(leave + money);
System.out.println("存款成功!");
return true;
}
public void exitSystem() {
System.out.println("系统已经退出");
System.exit(1);
}
}
TestBank.java
package com.cx.bank.test;
import com.cx.bank.manager.ManagerImpl;
import com.cx.bank.util.AccountOverDrawnException;
import com.cx.bank.util.InvalidDepositException;
import java.util.Scanner;
/*
* 测试层
*/
public class TestBank {
private static void printMenu() {
System.out.println("-----------银行系统1.3------------");
System.out.println(" 1.查询 ");
System.out.println(" 2.存款 ");
System.out.println(" 3.取款 ");
System.out.println(" 4.退出 ");
System.out.println("------------欢迎使用-------------");
}
public static void main(String[] args) {
ManagerImpl manager = ManagerImpl.getInstance();
Scanner scanner = new Scanner(System.in);
int flag;
while (true) {
printMenu();//调用界面
System.out.println("请你输入操作:");
flag = scanner.nextInt();
switch (flag) {
case 1: //查询金额
System.out.println("您当前余额为:" + manager.inquiry() + "");
continue;
case 2: //存款
System.out.println("请输入你要存入的金额:");
double money = scanner.nextDouble();
try {
manager.deposit(money);
} catch (InvalidDepositException e) {
e.printStackTrace();
}
System.out.println("您当前余额为:" + manager.inquiry() + "");
continue;
case 3: //取款
System.out.println("请输入您要取款的金额:");
double money1 = scanner.nextDouble();
try {
manager.withdrawals(money1);
} catch (AccountOverDrawnException e) {
e.printStackTrace();
}
System.out.println("您当前余额为:" + manager.inquiry() + "");
continue;
case 4: //退出系统
manager.exitSystem();
break;
}
}
}
}
/*后续更新,只是用作笔记,若有英雄所见略同勿喷*/