实验题目: 5_续 1

创建客户账户
实验目的:
instanceof 运算符的应用
提 示:
修改 Customer 类 1.修改 Customer 类来处理具有多种类型的联合账户。(例如用数组表示多重性一节所作的,该类必须包括以下的公有方法:addAccount(Account),getAccount(int)和 getNumOfAccounts()。每个 Customer 可以有多个 Account。(声明至少有 5 个)
2.完成 TestBanking 程序
该程序创建一个客户和账户的集合,并生成这些客户及其账户余额的报告。在TestBanking.Java 文件中,你会发现注释块以/***…***/来开头和结尾。这些注释只是必须提供的代码的位置。
3.使用 instanceof 操作符测试拥有的账户类型,并且将 account_type 设置为适当的值,例如:“SavingsAccount”或“CheckingAccount”。 4.编译并运行该程序,将看到下列结果
CUSTOMERS REPORT

Customer: Simms, Jane
Savings Account: current balance is ¥500.00
Checking Account: current balance is ¥200.00
Customer: Bryant, Owen
Checking Account: current balance is ¥200.00
Customer: Soley, Tim
Savings Account: current balance is ¥1,500.00
Checking Account: current balance is ¥200.00
Customer: Soley, Maria
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 boolean withdraw(double amt){if (balance >= amt){balance -= amt ;return true ;} else {System.out.println("余额不足!");return false ;}}
}

Bank.java

package banking;public class Bank {private Customer[] customers ;private int numberOfCustomer ;public Bank(){customers = new Customer[5] ;numberOfCustomer = 0 ;}public void addCustomer(String f, String l){Customer cus= new Customer(f,l) ;customers[numberOfCustomer] = cus ;numberOfCustomer++ ;}public int getNumOfCustomers(){return numberOfCustomer ;}public Customer getCustomer(int index){return customers[index] ;}
}

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 boolean withdraw(double amt){if (balance >= amt){balance -= amt ;return true ;} else if ((amt-balance) < overdraftProtection){overdraftProtection -= (amt-balance) ;balance = 0;return true ;} else {System.out.println("超过透支额度,交易失败");return false ;}}
}

Customer.java

package banking;public class Customer {private String firstName ;private String lastName ;private Account[] accounts ;private int numberOfAccounts ;public Customer(String f, String l){firstName = f ;lastName = l ;accounts = new Account[5] ;}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[numberOfAccounts] = acct ;numberOfAccounts++ ;}public Account getAccount(int index){return accounts[index] ;}public int getNumOfAccounts(){return numberOfAccounts ;}
}

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) {NumberFormat currency_format = NumberFormat.getCurrencyInstance();Bank bank = new Bank();Customer customer;// 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 reportSystem.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()));}}}
}

银行业务管理软件 (5).1相关推荐

  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. 银行业务管理软件(8)

    实验题目 8: 将替换这样的数组代码:这些数组代码用于实现银行和客户间,以及客户与他们 的帐户间的关系的多样性. 实验目的: 使用集合 实验说明: 修改 Bank 类 修改 Bank 类,利用 Arr ...

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

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

  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. 利用LED+LDR组成可控组件搭建的振荡电路
  2. spring boot2 整合(一)Mybatis (特别完整!)
  3. Autofac 一个使用Demo
  4. 【VS开发】static、extern分析总结
  5. matlab与maple互联,Matlab,Maple和Mathematica三款主流科学计算软件的互操作
  6. python日期迭代_计算敏捷项目中迭代时间安排(Python3版)
  7. 蜗牛导航网站模板+随机壁纸+天气插件
  8. oracle工程师考试题,信息安全工程师考试练习试题及答案(三)
  9. 【SaaS - Export项目】23 - Shiro加密实现登录注销,MD5加密算法,加盐加密,shiro凭证匹配器,实现增加用户密码密文存储数据库,登录时通过加盐加密对密文进行比较
  10. webStorm汉化
  11. NoteBurner iTunes DRM Audio Converter Mac版(苹果DRM音频转换器)
  12. sougou ubuntu 优麒麟_Ubuntu20.04LTS安装搜狗输入法
  13. 态路小课堂丨光缆知识
  14. 使用gnome3桌面总结
  15. 智能交通卡口和电子警察解决方案
  16. 使用 Parity 建立Proof-of-Authority (PoA) Ethereum Chain
  17. linux下批量修改图片分辨率
  18. 小猫长成巨兽,快递江湖抹不去极兔阴影
  19. 随机向量x的协方差阵_统计不相关:两个随机向量x(?)与y(?)统计不相关,若它们的互协方差矩阵不等于零矩阵,即Cxy = O。...
  20. 软件测试中UT,IT,ST,UAT

热门文章

  1. 博客粉丝群发功能使用文档
  2. Word2013如何添加参考文献
  3. ipad pro 11寸四周黑边,屏幕适配解决
  4. dllhost.exe
  5. 道路交通管理概论-行车管理
  6. 华为Freebuds Pro 2按捏没反应,触控失灵解决方法
  7. 第一届黑客攻防挑战赛下周开启,真实的黑客攻防等你挑战!
  8. VPP Agent 简介
  9. 杭电第四届网络攻防大赛(蛋疼的初赛)
  10. android GMS 耗电分析