实验题目 8:
将替换这样的数组代码:这些数组代码用于实现银行和客户间,以及客户与他们
的帐户间的关系的多样性。
实验目的:
使用集合
实验说明:
修改 Bank 类
修改 Bank 类,利用 ArrayList 实现多重的客户关系,不要忘记倒入必须的
java.util类
1. 将 Customer 属性的声明修改为List 类型,不再使用
numberOfCustomers 属性。
2. 修改 Bank 构造器,将 customers 属性的声明修改为List 类型,不再使用
numberOfcustomers 属性
3. 修改 addCustomer 方法,使用 add 方法
4. 修改 getCustomer 方法,使用 get 方法
5. 修改 getNumofCustomer 方法,使用 size 方法
修改 Customer 类 6. 修改 Customer 类,使用 ArrayList 实现多重的账户关系。修改方法同
上。
编译运行 TestBanking 程序
这里,不必修改 CustomerReport 代码,因为并没有改变 Bank 和
Customer 类的接口。编译运行TestBanking
应看到下列输出结果:
" CUSTOMERS REPORT "
“=================”
Customer:Simms,Jane
Savings Account:current balance is
尚硅谷 Java 基础实战—Bank 项目
$500.00 Checking Account:current
balance is $200.00
Customer:Bryant,Owen
Checking Accout:current balance is $200
Customer:Soley,Tim U7
Savings Account:current balance is $1,500.00
Checking Account:current balance is $200.00
Customer:Soley,Tim
Checking Account:current balance is $200.00
Savings Account :current balance is $150.00

Account.java

package banking;public class Account {protected double balance ;public Account(){}public Account(double init_balance){balance = init_balance ;}public void setBalance(double balance) {this.balance = balance;}public double getBalance() {return balance;}public boolean deposit(double amt){if (amt > 0){balance += amt ;return true ;}else {System.out.println("请输入正确的存款数");return false ;}}public void withdraw(double amt) throws OverdraftException{if (balance >= amt){balance -= amt ;} else {throw new OverdraftException("资金不足", amt - balance) ;}}
}

Bank.java

package banking;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class Bank {private List<Customer> customers ;//private int numberOfCustomer ;private Bank(){customers = new ArrayList<Customer>() ;}private static Bank bank = new Bank() ;public static Bank getBank(){return bank ;}public void addCustomer(String f, String l){Customer cust= new Customer(f,l) ;customers.add(cust) ;}public int getNumOfCustomers(){return customers.size() ;}public Customer getCustomer(int index){return customers.get(index) ;}public Iterator<Customer> getCustomers(){return customers.iterator() ;}
}

CheckingAccount.java

package banking;public class CheckingAccount extends Account{private Double overdraftProtection ;public CheckingAccount(double balance){super(balance);}public CheckingAccount(double balance, double protect){super(balance);overdraftProtection = protect ;}public double getOverdraftProtection() {return overdraftProtection;}public void setOverdraftProtection(double overdraftProtection) {this.overdraftProtection = overdraftProtection;}public void withdraw(double amt) throws OverdraftException{if (balance >= amt){balance -= amt ;} else{if(overdraftProtection == null){throw new OverdraftException("no overdraft exception", amt - balance) ;}else if (overdraftProtection <= amt - balance){throw new OverdraftException("Insuffient funds for overdraft exception", amt - balance - overdraftProtection) ;}else {overdraftProtection -= (amt - balance) ;balance = 0 ;}}}
}

Customer.java

package banking;import java.util.ArrayList;
import java.util.List;public class Customer {private String firstName ;private String lastName ;//private Account[] accounts ;//private int numberOfAccounts ;private List<Account> accounts ;public Customer(String f, String l){firstName = f ;lastName = l ;accounts = new ArrayList<Account>() ;}public String getFirstName(){return firstName ;}public String getLastName(){return lastName ;}/*    public void setAccount(Account acct){accounts = acct ;}public Account getAccount(){return account ;}*/public void addAccount(Account acct){accounts.add(acct) ;}public Account getAccount(int index){return accounts.get(index) ;}public int getNumOfAccounts(){return accounts.size() ;}
}

CustomerReport.java

package banking;import java.text.NumberFormat;public class CustomerReport {Bank bank = Bank.getBank() ;Customer customer ;public void generateReport(){NumberFormat currency_format = NumberFormat.getCurrencyInstance() ;System.out.println("\t\t\tCUSTOMERS REPORT");System.out.println("\t\t\t=================");for (int cust_idx = 0 ; cust_idx < bank.getNumOfCustomers() ; cust_idx++){customer = bank.getCustomer(cust_idx) ;System.out.println();System.out.println("Customer: " + customer.getLastName() + ", " + customer.getFirstName());for (int acct_idx = 0; acct_idx < customer.getNumOfAccounts(); acct_idx++){Account account = customer.getAccount(acct_idx) ;String account_type = "" ;if (account instanceof SavingAccount){account_type = "SavingAccount" ;}if (account instanceof CheckingAccount){account_type = "CheckingAccount" ;}System.out.println(account_type + ":current balance is" + currency_format.format(account.getBalance()));}}}}

OverdraftException.java

package banking;public class OverdraftException extends Exception{static final long serialVersionUID = -3387516993124229948L ;private double deficit ;public double getDeficit(){return deficit ;}public OverdraftException(String msg, double deficit){super(msg);this.deficit = deficit ;}}

SavingAccount.java

package banking;public class SavingAccount extends Account{private double interestRate ;public SavingAccount(double balance, double interest_rate){super(balance);interestRate = interest_rate ;}public double getInterestRate() {return interestRate;}public void setInterestRate(double interestRate) {this.interestRate = interestRate;}
}

TestBanking.java

package banking;import java.text.NumberFormat;public class TestBanking {public static void main(String[] args) {Bank bank = Bank.getBank();Customer customer;CustomerReport report = new CustomerReport();// Create several customers and their accountsbank.addCustomer("Jane", "Simms");customer = bank.getCustomer(0);customer.addAccount(new SavingAccount(500.00, 0.05));customer.addAccount(new CheckingAccount(200.00, 400.00));bank.addCustomer("Owen", "Bryant");customer = bank.getCustomer(1);customer.addAccount(new CheckingAccount(200.00));bank.addCustomer("Tim", "Soley");customer = bank.getCustomer(2);customer.addAccount(new SavingAccount(1500.00, 0.05));customer.addAccount(new CheckingAccount(200.00));bank.addCustomer("Maria", "Soley");customer = bank.getCustomer(3);// Maria and Tim have a shared checking accountcustomer.addAccount(bank.getCustomer(2).getAccount(1));customer.addAccount(new SavingAccount(150.00, 0.05));// Generate a reportreport.generateReport();}
}

可选:修改 CustomerReport 类
修改 CustomerReport 类,使用 Iterator 实现对客户的迭代
1. 在 Bank 类中,添加一个名为 getCustomers 的方法,该方法返回一个客户
列 表上的 iterator
2. 在 Customer 类中,添加一个名为个体 Accounts 的方法,该方法返回一个
帐 户列表上的 iterator
3. 修改 CustomerReport 类,使用一对嵌套的 while 循环(而不是使用嵌套的
for 循环),在客户的 iterator 与帐户的 iterator 上进行迭代
4. 重新编译运行 TestBanking 程序,应看到与上面一样的输出结果

Bank.java

package banking;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class Bank {private List<Customer> customers ;//private int numberOfCustomer ;private Bank(){customers = new ArrayList<Customer>() ;}private static Bank bank = new Bank() ;public static Bank getBank(){return bank ;}public void addCustomer(String f, String l){Customer cust= new Customer(f,l) ;customers.add(cust) ;}public int getNumOfCustomers(){return customers.size() ;}public Customer getCustomer(int index){return customers.get(index) ;}public Iterator<Customer> getCustomers(){return customers.iterator() ;}
}

CustomerAccount .java

package banking;public class CheckingAccount extends Account{private Double overdraftProtection ;public CheckingAccount(double balance){super(balance);}public CheckingAccount(double balance, double protect){super(balance);overdraftProtection = protect ;}public double getOverdraftProtection() {return overdraftProtection;}public void setOverdraftProtection(double overdraftProtection) {this.overdraftProtection = overdraftProtection;}public void withdraw(double amt) throws OverdraftException{if (balance >= amt){balance -= amt ;} else{if(overdraftProtection == null){throw new OverdraftException("no overdraft exception", amt - balance) ;}else if (overdraftProtection <= amt - balance){throw new OverdraftException("Insuffient funds for overdraft exception", amt - balance - overdraftProtection) ;}else {overdraftProtection -= (amt - balance) ;balance = 0 ;}}}
}

Customer.java

package banking;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class Customer {private String firstName ;private String lastName ;//private Account[] accounts ;//private int numberOfAccounts ;private List<Account> accounts ;public Customer(String f, String l){firstName = f ;lastName = l ;accounts = new ArrayList<Account>() ;}public String getFirstName(){return firstName ;}public String getLastName(){return lastName ;}/*    public void setAccount(Account acct){accounts = acct ;}public Account getAccount(){return account ;}*/public void addAccount(Account acct){accounts.add(acct) ;}public Account getAccount(int index){return accounts.get(index) ;}public int getNumOfAccounts(){return accounts.size() ;}public Iterator<Account> getAccounts(){return accounts.iterator() ;}
}

CustomerReport.java

package banking;import java.text.NumberFormat;
import java.util.Iterator;public class CustomerReport {Bank bank = Bank.getBank();Customer customer;public void generateReport() {NumberFormat currency_format = NumberFormat.getCurrencyInstance();// Generate a reportSystem.out.println("\t\t\tCUSTOMERS REPORT");System.out.println("\t\t\t================");// for (int cust_idx = 0; cust_idx < bank.getNumOfCustomers();// cust_idx++) {Iterator<Customer> customers = bank.getCustomers();while (customers.hasNext()) {customer = customers.next();System.out.println();System.out.println("Customer: " + customer.getLastName() + ", "+ customer.getFirstName());// for (int acct_idx = 0; acct_idx < customer.getNumOfAccounts();// acct_idx++) {Iterator<Account> accounts = customer.getAccounts();while (accounts.hasNext()) {Account account = accounts.next();String account_type = "";if (account instanceof SavingAccount) {account_type = "SavingAccount";}if (account instanceof CheckingAccount) {account_type = "CheckingAccount";}System.out.println(account_type + ": current balance is "+ currency_format.format(account.getBalance()));}}}
}

OverdraftException.java

package banking;public class OverdraftException extends Exception{static final long serialVersionUID = -3387516993124229948L ;private double deficit ;public double getDeficit(){return deficit ;}public OverdraftException(String msg, double deficit){super(msg);this.deficit = deficit ;}}

SavingAccount.java

package banking;public class SavingAccount extends Account{private double interestRate ;public SavingAccount(double balance, double interest_rate){super(balance);interestRate = interest_rate ;}public double getInterestRate() {return interestRate;}public void setInterestRate(double interestRate) {this.interestRate = interestRate;}
}

TestBanking.java

package banking;import java.text.NumberFormat;public class TestBanking {public static void main(String[] args) {Bank bank = Bank.getBank();Customer customer;CustomerReport report = new CustomerReport();// Create several customers and their accountsbank.addCustomer("Jane", "Simms");customer = bank.getCustomer(0);customer.addAccount(new SavingAccount(500.00, 0.05));customer.addAccount(new CheckingAccount(200.00, 400.00));bank.addCustomer("Owen", "Bryant");customer = bank.getCustomer(1);customer.addAccount(new CheckingAccount(200.00));bank.addCustomer("Tim", "Soley");customer = bank.getCustomer(2);customer.addAccount(new SavingAccount(1500.00, 0.05));customer.addAccount(new CheckingAccount(200.00));bank.addCustomer("Maria", "Soley");customer = bank.getCustomer(3);// Maria and Tim have a shared checking accountcustomer.addAccount(bank.getCustomer(2).getAccount(1));customer.addAccount(new SavingAccount(150.00, 0.05));// Generate a reportreport.generateReport();}
}

银行业务管理软件(8)相关推荐

  1. 银行业务管理软件(5)

    实验题目 5: 在银行项目中创建 Account 的两个子类:SavingAccount 和 CheckingAccount 实验目的: 继承.多态.方法的重写. 提 示: 创建 Account 类的 ...

  2. 银行业务管理软件(7)

    实验题目 7:(在6基础上修改) 将建立一个 OverdraftException 异常,它由 Account 类的withdraw()方法抛出. 实验目的: 自定义异常 实验说明: 创建 Overd ...

  3. 银行业务管理软件(6)

    实验题目 6:(在5_续1的基础上修改) 修改 Bank 类来实现单子设计模式: 实验目的: 单子模式. 提示: 1. 修改 Bank 类,创建名为 getBanking 的公有静态方法,它返回一个 ...

  4. 银行业务管理软件 (1)

    实验说明: 在这个练习里,创建一个简单版本的 Account 类.将这个源文件放入 banking 程 序包中.在创建单个帐户的默认程序包中,已编写了一个测试程序 TestBanking. 这个测试程 ...

  5. 银行业务管理软件 (5).1

    实验题目: 5_续 1 创建客户账户 实验目的: instanceof 运算符的应用 提 示: 修改 Customer 类 1.修改 Customer 类来处理具有多种类型的联合账户.(例如用数组表示 ...

  6. 【软件工程】 文档 - 银行业务管理 - 结构化设计

    软件工程 银行业务管理和现金结算系统 --- 结构化设计文档 ***原创所有,本文禁止一切形式的转载. 一.   体系结构设计 1)    软件结构化设计概述 该阶段主要在于定义银行业务管理系统的主要 ...

  7. Money Pro for Mac 1.9.2 中文破解版下载 账单计划预算管理软件

    Money Pro for Mac 提供一站式账单计划.预算管理和账户跟踪. 本应用程序拥有轻松同步功能. Money Pro 是家庭预算乃至商务应用的理想之选. 用户手册中文版能为您提供很大的帮助. ...

  8. vue右键自定义菜单_一款小巧的开源右键菜单管理软件

    要说右键管理软件,果核上面目前收集了几款,例如年久失修的右键管家. 虽然很多年没有更新了,但是软件的功能却正常,日常删除多余的右键菜单没问题. 另外,就是火绒家的右键管家,基本功能也够用 不过嘛,今天 ...

  9. 施工日志管理软件app_康智颐app下载-康智颐客户端下载v1.4.9 安卓官方版

    康智颐app是一款健康管理监测软件,软件专注为用户带来专业的健康服务,帮助用户更加方便的监测身体的各种指标,让你随时都能了解自己的健康状态,为你的身体健康保驾护航,感兴趣的朋友快来下载吧! 康智颐客户 ...

最新文章

  1. 虚拟磁盘没有可用的合格服务器,VMware提示:没有更多空间可供虚拟磁盘***.vmdk使用 所引发的故障及处理...
  2. 基于新型存储的大数据存储管理
  3. 为系统扩展而采取的一些措施——缓存
  4. 开源linux 二进制工具,谷歌开源二进制文件对比工具 BinDiff
  5. 回溯法 —— 求解子集和问题
  6. Tensorflow:常见错误
  7. 输入一正整数,将各数字反转后输出
  8. php教程 网易,网易开源镜像使用帮助
  9. 前端:分享几个前端素材网站
  10. CPC23-4-K. 喵喵的神数 (数论 Lucas定理)
  11. 网站建设的流程及步骤是什么?
  12. 【qq机器人】定时发送消息大全
  13. simulink中找不到CarSim S-Function图标
  14. 笔记本怎么做wifi热点(xp版)
  15. 一个小问题,解决提示无法启动程序,“....exe”。系统找不到指定文件
  16. 并发编程五:java并发线程池底层原理详解和源码分析
  17. Linux下Socket编程一 socket 基础
  18. 艰难的选择_如何艰难地保护Kubernetes
  19. 个人网站的设计与实现
  20. LQ-630K/LQ-635K如何安装及更换打印机色带?

热门文章

  1. 数据分析 回归问题: 美国King County房价预测训练赛
  2. endp 汇编start_汇编语言程序设计:[20]汇编计算器
  3. 【清橙A1094】【牛顿迭代法】牛顿迭代法求方程的根
  4. java.lang.SecurityException: sealing violation: package xx.xx.xx is sealed
  5. unity java游戏大全_3D unity   滚球小游戏
  6. Word 表格添加行快捷键
  7. android下赚钱的几个方式,flutter下拉列表
  8. 在线文本保留中文提取过滤工具
  9. C#下怎样处理并保存单色格式PNG图片?
  10. 3.9亿听障人士的福音,这款APP帮他们 “听见”世界