银行业务管理软件(6)
实验题目 6:(在5_续1的基础上修改)
修改 Bank 类来实现单子设计模式:
实验目的:
单子模式。
提示: 1. 修改 Bank 类,创建名为 getBanking 的公有静态方法,它返回一个 Bank 类的实例。
2. 单个的实例应是静态属性,且为私有。同样,Bank 构造器也应该是私有的创建 CustomerReport 类
1.在前面的银行项目练习中,“客户报告”嵌入在 TestBanking 应用程序的main 方法中。在这个练习中,改代码被放在 ,banking.reports 包的
CustomerReport 类中。您的任务是修改这个类,使其使用单一银行对象。
2. 查找标注为注释块/*** ***/的代码行.修改该行以检索单子银行对象。编译并运行 TestBanking 应用程序看到下列输入结果:
CUSTOMER REPORT
Customer:simms,jane
Savings Account:current balance is
$500.00 Checking Account:current
balance is $200.00
Customer:Bryant,owen
尚硅谷 Java 基础实战—Bank 项目
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 ;private Bank(){customers = new Customer[5] ;numberOfCustomer = 0 ;}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[numberOfCustomer] = cust ;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 ;}
}
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()));}}}}
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();}
}
银行业务管理软件(6)相关推荐
- 银行业务管理软件(5)
实验题目 5: 在银行项目中创建 Account 的两个子类:SavingAccount 和 CheckingAccount 实验目的: 继承.多态.方法的重写. 提 示: 创建 Account 类的 ...
- 银行业务管理软件(7)
实验题目 7:(在6基础上修改) 将建立一个 OverdraftException 异常,它由 Account 类的withdraw()方法抛出. 实验目的: 自定义异常 实验说明: 创建 Overd ...
- 银行业务管理软件(8)
实验题目 8: 将替换这样的数组代码:这些数组代码用于实现银行和客户间,以及客户与他们 的帐户间的关系的多样性. 实验目的: 使用集合 实验说明: 修改 Bank 类 修改 Bank 类,利用 Arr ...
- 银行业务管理软件 (1)
实验说明: 在这个练习里,创建一个简单版本的 Account 类.将这个源文件放入 banking 程 序包中.在创建单个帐户的默认程序包中,已编写了一个测试程序 TestBanking. 这个测试程 ...
- 银行业务管理软件 (5).1
实验题目: 5_续 1 创建客户账户 实验目的: instanceof 运算符的应用 提 示: 修改 Customer 类 1.修改 Customer 类来处理具有多种类型的联合账户.(例如用数组表示 ...
- 【软件工程】 文档 - 银行业务管理 - 结构化设计
软件工程 银行业务管理和现金结算系统 --- 结构化设计文档 ***原创所有,本文禁止一切形式的转载. 一. 体系结构设计 1) 软件结构化设计概述 该阶段主要在于定义银行业务管理系统的主要 ...
- Money Pro for Mac 1.9.2 中文破解版下载 账单计划预算管理软件
Money Pro for Mac 提供一站式账单计划.预算管理和账户跟踪. 本应用程序拥有轻松同步功能. Money Pro 是家庭预算乃至商务应用的理想之选. 用户手册中文版能为您提供很大的帮助. ...
- vue右键自定义菜单_一款小巧的开源右键菜单管理软件
要说右键管理软件,果核上面目前收集了几款,例如年久失修的右键管家. 虽然很多年没有更新了,但是软件的功能却正常,日常删除多余的右键菜单没问题. 另外,就是火绒家的右键管家,基本功能也够用 不过嘛,今天 ...
- 施工日志管理软件app_康智颐app下载-康智颐客户端下载v1.4.9 安卓官方版
康智颐app是一款健康管理监测软件,软件专注为用户带来专业的健康服务,帮助用户更加方便的监测身体的各种指标,让你随时都能了解自己的健康状态,为你的身体健康保驾护航,感兴趣的朋友快来下载吧! 康智颐客户 ...
最新文章
- (转)Python rsa 签名与验证 sign and verify
- 15篇最新AI论文推荐新鲜出炉!真的很skr了~(附链接)
- 不敢相信,相同 SQL 下 Mybatis 查询结果和数据库竟然不一样!
- webkit的几个属性
- C# 调用 *.sql 文件
- 关于python的闭包与装饰器的实验
- 15.supervisor 安装
- kubernetes视频教程笔记 (21)-存储-configmap
- 全球及中国差旅费管理系统行业趋势分析与投资前景建议研究报告2022-2028年版
- 渐进记号 Asymptotic Notations-------geeksforgeeks 翻译
- python单例模式有什么用_python单例模式是什么
- Ruby On Rails和locomotiveCMS安装经历
- 你所不知道的Win键
- java框体怎么添加背景图,文本框添加背景图片,文本框背景图片,public class
- VLAN端口类型(access、Trunk、Hybrid)
- java swing 实现鼠标滑轮聚焦缩放图片
- linux系统tcl电视刷机包,tcl电视刷机包tcl电视升级包系统修复tcl电视强刷包
- 在Python中画炫酷的K线图
- [参考]C# JSON字符串序列化与反序列化
- 修复 Rancher 2.5.x 内部证书过期导致无法启动的顽疾