栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

尚硅谷 Java 基础实战—Bank 项目—实验题目 6(在5

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

尚硅谷 Java 基础实战—Bank 项目—实验题目 6(在5

实验题目

修改 Bank 类来实现单子设计模式:

实验目的

单子模式。

提示
  1. 修改 Bank 类,创建名为 getBank 的公有静态方法,它返回一个 Bank 类的实例。

  2. 单个的实例应是静态属性,且为私有。同样,Bank 构造器也应该是私有的。

创建 CustomerReport 类

  1. 在前面的银行项目练习中,“客户报告”嵌入在 TestBanking 应用程序的 main 方法中。在这个练习中,将该部分代码被改为放在banking.reports 包的 CustomerReport 类中。您的任务是修改这个类,使其使用单一银行对象。
  2. 查找标注为注释块的代码行.修改该行以检索单子银行对象。

编译并运行 TestBanking 应用程序 看到下列输入结果:

			CUSTOMERS REPORT
			================

Customer: Simms, Jane
	Savings Account: current balance is ¥500.0
	Checking Account: current balance is ¥200.0

Customer: Bryant, Owen
	Checking Account: current balance is ¥200.0

Customer: Soley, Tim
	Savings Account: current balance is ¥1500.0
	Checking Account: current balance is ¥200.0

Customer: Soley, Maria
	Checking Account: current balance is ¥200.0
	Savings Account: current balance is ¥150.0
代码 【Account.java】类
package banking;

public class Account {

    protected double balance;    //银行帐户的当前(或即时)余额

    //公有构造器 ,这个参数为 balance 属性赋值
    public Account(double init_balance) {
        this.balance = init_balance;
    }

    //用于获取经常余额
    public double getBalance() {
        return balance;
    }

    
    public boolean deposit(double amt){
        balance+=amt;
        return true;
    }

    
    public boolean withdraw(double amt){
        if (amt < balance){
            balance-=amt;
            return true;
        }else{
            return false;
        }

    }

}

【Customer.java】类
package banking;

public class Customer {

    private String  firstName;
    private String  lastName;
    private Account[] accounts = new Account[10];
    private int numOfAccounts;

    public Customer(String f, String l) {
        this.firstName = f;
        this.lastName = l;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    
    public Account getAccount(int index) {
        return accounts[index];
    }

    
    public int getNumOfAccounts() {
        return numOfAccounts;
    }

    
    public void addAccount(Account acct) {
        accounts[numOfAccounts++]=acct;
    }

}
【Bank.java】类
package banking;


public class Bank {

    private Customer[] customers;   //Customer对象的数组
    private int numberOfCustomer;   //整数,跟踪下一个 customers 数组索引
    private static Bank bankInstance = null;
    
    public static Bank getBank(){
        if(bankInstance==null){
            bankInstance = new Bank();
        }
        return bankInstance;
    }
    
    private Bank() {
        customers = new Customer[10];
    }

    
    public void addCustomer(String f,String l){
        customers[numberOfCustomer++]=new Customer(f,l);
    }

    
    public Customer getCustomer(int index) {
        return customers[index];
    }

    public int getNumOfCustomers() {
        return numberOfCustomer;
    }
}
【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);
        this.overdraftProtection = protect;
    }

    
    @Override
    public boolean withdraw(double amt){
        if (balance < amt){
            if (amt-balance>overdraftProtection) {
                return false;
            }else {
                overdraftProtection-=amt-balance;
                balance=0;
                return true;
            }
        }else {
            balance-=amt;
            return true;
        }
    }
}
【SavingsAccount.java】类
package banking;

public class SavingsAccount extends Account{

    private double interestRate;

    public SavingsAccount(double balance, double interest_Rate) {
        super(balance);
        this.interestRate = interest_Rate;
    }
}
【CustomerReport.java】类
package banking.reports;

import banking.Account;
import banking.Bank;
import banking.Customer;
import banking.SavingsAccount;

public class CustomerReport {

    
    public static void generalReport() {
        Bank bank = Bank.getBank();

        System.out.println("tttCUSTOMERS REPORT");
        System.out.println("ttt================");

        for (int cust_idx = 0; cust_idx < bank.getNumOfCustomers(); cust_idx++) {
            Customer 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 = "";

                // Determine the account type
                
                if (account instanceof SavingsAccount) {
                    account_type = "Savings Account";
                } else {
                    account_type = "Checking Account";
                }

                // Print the current balance of the account
                
                System.out.println("t" + account_type + ": current balance is ¥" + account.getBalance());
            }
        }
    }
}
【TestBanking.java】类
package banking;

import banking.reports.CustomerReport;

import java.text.NumberFormat;

public class TestBanking {

    public static void main(String[] args) {
        NumberFormat currency_format = NumberFormat.getCurrencyInstance();
        Bank bank = Bank.getBank();
        Customer customer;

        // Create several customers and their accounts
        bank.addCustomer("Jane", "Simms");
        customer = bank.getCustomer(0);
        customer.addAccount(new SavingsAccount(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 SavingsAccount(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 account
        customer.addAccount(bank.getCustomer(2).getAccount(1));
        customer.addAccount(new SavingsAccount(150.00, 0.05));

        CustomerReport.generalReport();

    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/458604.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号