creditcardmanagerimpl.java

来自「利用CORBA的值类型实现的一个分布式程序」· Java 代码 · 共 49 行

JAVA
49 行
字号
// 信用卡管理员的对象实现
package Bank;

public class CreditCardManagerImpl extends CreditCardManagerPOA {
    // 属性定义(该管理员所负责的所有信用卡)
    protected java.util.Map cardList;

    // 构造方法,管理员初始时管理的信用卡为空
    public CreditCardManagerImpl()  {
        cardList = new java.util.HashMap();
    }
    // 开设一个信用卡账户
    public synchronized CreditCard open(String num, float init) throws CardNumberDuplicated  {
        // 如果卡号已存在则抛出异常
        if (cardList.get(num) != null)  throw new CardNumberDuplicated();
        // 按指定初始余额创建一个本地的信用卡对象并保存到信用卡清单中
        CreditCard localCard = new CreditCardImpl(init);
        cardList.put(num, localCard);
        // 在服务端控制台打印提示信息并返回新开设的信用卡
        System.out.println("新开信用卡:" + num);
        return localCard;
    }
    // 撤销一个信用卡账户
    public void close(String num) throws CardNumberNotFound, AccountNotBalanced {
        // 如果卡号不存在则抛出异常
        CreditCard localCard = (CreditCard) cardList.get(num);
        if (localCard == null)  throw new CardNumberNotFound();
        // 如果该信用卡尚有余额则抛出异常
        if (localCard.getBalance() != 0)  throw new AccountNotBalanced();
        // 删除该信用卡
        cardList.remove(num);
        System.out.println("撤销信用卡:" + num);
    }
    // 根据卡号访问信用卡
    public CreditCard find(String num) throws CardNumberNotFound {
        // 如果卡号不存在则抛出异常
        CreditCard localCard = (CreditCard) cardList.get(num);
        if (localCard == null)  throw new CardNumberNotFound();
        // 返回找到的信用卡
        return localCard;
    }
    // 在两个信用卡之间划账
    public void transfer(CreditCard src, CreditCard des, float amount) throws AccountOverdraft {
        src.withdraw(amount);
        des.deposit(amount);
        System.out.println("成功划账:" + amount + "元");
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?