1. 类结构如图所示。

​​

  • 将类结构以代码形式表示,并对方法和构造器提供合理的实现;
  • 使用TestBanking类对代码进行测试。

1.创建类 Account        按要求创建四个方法

package test06;public class Account {double balance;public void  Account(double balance) {this.balance = balance;}public boolean deposit(double amount) {balance += amount;return true;}public boolean withdraw(double amount) {if (amount <= balance) {balance -= amount;return true;} else {return false;}}public double getBalance() {return balance;}
}

2.创建类 SavingAccount        按要求创两个方法

package test06;public class SavingAccount extends Account {private double rate;public SavingAccount(double balance, double rate) {super();this.rate = rate;}
}

3.创建类 CheckingAccount    按要求创两个方法

package test06;public class CheckingAccount extends Account {double overdraft;public CheckingAccount(double balance, double overdraft) {super();this.overdraft = overdraft;}public CheckingAccount(double balance) {this(balance, 0.0);}public boolean withdraw(double amount) {if (amount <= balance) {balance -= amount;return true;} else if (amount <= balance + overdraft) {overdraft -= (amount - balance);balance = 0;return true;} else return false;}public double getOverdraft() {return overdraft;}
}

4.创建类 Bank

package test06;import java.util.HashMap;public class Bank {private HashMap customers;private int custNum;public Bank() {customers = new HashMap();custNum = 0;}public void addCustomer(Customer customer) {customers.put(new Integer(custNum + 1), customer);custNum++;}public Customer getCustomer(int index) {if (index >= 1 && index <= custNum) {return (Customer) (customers.get(new Integer(index)));}else {return null;}}public HashMap getAllCustomer() {return customers;}public int getCustomerNum() {return custNum;}
}

5.创建类 Customer

package test06;import java.util.ArrayList;public class Customer {private String name;private ArrayList accounts = new ArrayList();public Customer(String name) {this.name = name;}public String getName() {return name;}public void addAccount(Account account) {accounts.add(account);}public Account getAccount(int index) {return (Account) (accounts.get(index - 1));}public ArrayList getAllAccount() {return accounts;}
}

6.创建test

package test06;public class TestBanking {public static void main(String[] args) {Bank bank = new Bank();bank.addCustomer(new Customer("ZhaoLong"));bank.addCustomer(new Customer("ZJJ"));Customer cust1 = bank.getCustomer(1);Customer cust2 = bank.getCustomer(2);cust1.addAccount(new SavingAccount(999999.0, 2.1));cust1.addAccount(new CheckingAccount(999999.0, 1.0));cust2.addAccount(new CheckingAccount(999999.0, 20.0));Account acc1 = cust1.getAccount(1);System.out.println(cust1.getName() + "的余额为:" + acc1.getBalance());acc1.deposit(88888.0);System.out.println(cust1.getName() + "的余额为: " + acc1.getBalance());acc1.withdraw(99999.0);System.out.println(cust1.getName() + "的余额为:" + acc1.getBalance());acc1.withdraw(99999.0);System.out.println(cust1.getName() + "'的余额为:" + acc1.getBalance());CheckingAccount acc2 = (CheckingAccount) cust1.getAccount(2);System.out.println(cust1.getName() + "的余额为: " + acc2.getBalance() + " 透支是: " + acc2.getOverdraft());acc2.deposit(88888.0);System.out.println(cust1.getName() + "的余额为:" + acc2.getBalance() + " 透支是: " + acc2.getOverdraft());acc2.withdraw(99999.0);System.out.println(cust1.getName() + "的余额为:" + acc2.getBalance() + " 透支是:" + acc2.getOverdraft());acc2.withdraw(99909.0);System.out.println(cust1.getName() + "的余额为:" + acc2.getBalance() + " 透支是: " + acc2.getOverdraft());acc2.withdraw(90000.0);System.out.println(cust2.getName() + "的余额为:" + acc2.getBalance() + " 透支是: " + acc2.getOverdraft());CheckingAccount acc3 = (CheckingAccount) cust2.getAccount(1);System.out.println(cust2.getName() + "的余额为: " + acc3.getBalance() + " 透支是:" + acc3.getOverdraft());acc3.deposit(99000.0);System.out.println(cust2.getName() + "的余额为: " + acc3.getBalance() + " 透支是: " + acc3.getOverdraft());acc3.withdraw(20000.0);System.out.println(cust2.getName() + "的余额为:" + acc3.getBalance() + " 透支是: " + acc3.getOverdraft());acc3.withdraw(3000.0);System.out.println(cust2.getName() + "的余额为:" + acc3.getBalance() + " 透支是: " + acc3.getOverdraft());acc3.withdraw(10000.0);System.out.println(cust2.getName() + "的余额为:" + acc3.getBalance() + " 透支是: " + acc3.getOverdraft());}
}

运行截图如下:

第六次 java实验 紫金学院 泛型02相关推荐

  1. 第六次 java实验 紫金学院 泛型01

    使用TreeSet和Comparator,编写TreeSetTest2类,要求对TreeSet中的元素1-元素10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列. Java ...

  2. 第八次 java实验 紫金学院 输入/输出流

    一.实验目的 熟悉流--输入/输出流的基本概念. 掌握常用输入/输出流的使用. 掌握文件与文件字节流操作(重点). 二.实验原理及说明 在Java中把不同的数据源和程序间的数据传输(输入和输出或者数据 ...

  3. 第七次 java实验 紫金学院 异常

    好久没更新了,在准备期末考,忘记更新了,今日就直接出代码,有不懂的可以私信我 前面是重点和难点,如果想搞明白的可以先看前面的 如果了解单纯想看代码请移驾--> 一.实验目的 熟悉异常的基本概念. ...

  4. 第六周java实验报告四

    实验报告: 一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:rad ...

  5. java实验报告实验六,第六周java实验报告四

    实验四 实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆的半径. 2. ...

  6. java校内报纸实验报告_第六周Java实验报告四

    ---恢复内容开始--- 一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成 ...

  7. 第五次实验 紫金学院 集合框架3

    使用TreeSet和Comparator,编写TreeSetTest类,要求对TreeSet中的元素"HashSet"."ArrayList"."Tr ...

  8. 第五次实验 紫金学院 集合框架2

    2. 写MyStack类,实现栈功能,要求在类中使用ArrayList保存数据.写MyStackTest类对栈功能进行测试. 本节实训主要是对栈的操作, 对栈和队列操作已经在数据结构那个专题里面有了, ...

  9. 第五次实验 紫金学院 集合框架1

    写MyQueue类,实现队列功能,要求在类中使用ArrayList保存数据.写MyQueueTest类对队列功能进行测试. 咱们就直接上代码吧,内容很详细了,结合前面的几次实训,本事实训也是很简单的. ...

最新文章

  1. cmd 文本替换_将CMD信息保存为文件
  2. Nginx SSL 配置
  3. C语言两种查找方式(分块查找,二分法)
  4. Docker Compose 配置文件详解
  5. Ext.Net中常用的验证
  6. 开始→运行→命令集锦
  7. string会传null吗_JVM 解剖公园(10): String.intern()
  8. hdu 2141 Can you find it(二分)
  9. 手机MODEM 开发(23)---Modem1 NVRAM基础知识总结
  10. 卷积神经网络工作原理直观的解释
  11. L1-02-yum源的配置(本地源)
  12. 洛谷P2671 求和 数学 前缀和
  13. 解决Appium-windows安装时无法自动下载Appium-Desktop
  14. Ubuntu出现Failed to Fetch的解决办法
  15. Linux公社FTP服务器地址及用户名密码
  16. Python实现b''开头二进制字符串转换为str的utf-8
  17. dorado 刷新_记录新建dorado项目更新规则中报错
  18. 实参高阶函数和装饰器
  19. 怎么画地铁图 java_创建地铁图-地铁图显示-开发指南-地铁图 JS API | 高德地图API...
  20. SQL 判断字段是否为中文、字母、数字

热门文章

  1. WebDay19 MySQL存储引擎 索引 锁 集群
  2. MySQL时间戳和unix时间戳区别、MySQL中的时间类型
  3. 杰理之跳转SD卡升级【篇】
  4. 对某一比赛参赛队基本信息进行管理
  5. QT程序在不同分辨率电脑上字体变大,溢出控件
  6. Python界面编程第十八课:Pyside2 (Qt For Python)Slider拖动条
  7. 【美术干货】如何打造高精度的写实类游戏角色?
  8. Mac技巧:如何使用iMessage 中“与你共享”功能
  9. C# 正则替换 Regex.Replace
  10. Android 涂鸦板(简易版)