Java 基础—Bank 项目—实验 4

142 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情

实验题目

将用数组实现银行与客户间的多重关系。

实验目的

在类中使用数组作为模拟集合操作。

提示

对银行来说,可添加 Bank 类。 Bank 对象跟踪自身与其客户间的关系。用 Customer 对象的数组实现这个集合化的关系。还要保持一个整数属性来跟踪 银 行当前有多少客户。

尚硅谷_Java基础实战_Bank项目_04_UML

  1. 创建 Bank 类

  2. 为 Bank 类 增 加 两 个 属 性 : customers(Customer对象的数组 ) 和 numberOfCustomers(整数,跟踪下一个 customers 数组索引)

  3. 添加公有构造器,以合适的最大尺寸(至少大于 5)初始化 customers 数组。

  4. 添加 addCustomer 方法。该方法必须依照参数(姓,名)构造一个新的 Customer 对象然后把它放到 customer 数组中。还必须把 numberOfCustomers 属性的值加 1。

  5. 添加 getNumOfCustomers 访问方法,它返回 numberofCustomers 属 性值。

  6. 添加 getCustomer方法。它返回与给出的index参数相关的客户。

  7. 编译并运行 TestBanking 程序。可以看到下列输出结果:

    Customer [1] is Simms, Jane
    Customer [2] is Bryant, Owen
    Customer [3] is Soley, Tim
    Customer [4] is Soley, Maria
    

代码

【Account.java】类

package banking;


public class Account {

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

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

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

    /**
     * 向当前余额增加金额
     * @param amt   增加金额
     * @return  返回 true(意味所有存款是成功的)
     */
    public boolean deposit(double amt){
        balance+=amt;
        return true;
    }

    /**
     * 从当前余额中减去金额
     * @param amt   提款数目
     * @return  如果 amt小于 balance, 则从余额中扣除提款数目并返回 true,否则余额不变返回 false。
     */
    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 account;

    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() {
        return account;
    }

    public void setAccount(Account acct) {
        this.account = acct;
    }
}

【Bank.java】类

package banking;

/**
 * 银行类
 */
public class Bank {

    private Customer[] customers;   //Customer对象的数组
    private int numberOfCustomer;   //整数,跟踪下一个 customers 数组索引

    /**
     * 公有构造器,以合适的最大尺寸(至少大于 5)初始化 customers 数组。
     */
    public Bank() {
        customers = new Customer[10];
    }

    /**
     *  该方法必须依照参数(姓,名)构造一个新的 Customer 对象然后把它放到 customer 数组中。还必须把 numberOfCustomers 属性的值加 1。
     * @param f 姓
     * @param l 名
     */
    public void addCustomer(String f,String l){
        customers[numberOfCustomer++]=new Customer(f,l);
    }

    /**
     * 通过下标索引获取 customer
     * @param index 下标索引
     * @return  customer
     */
    public Customer getCustomer(int index) {
        return customers[index];
    }

    public int getNumOfCustomers() {
        return numberOfCustomer;
    }
}

【TestBanking.java】类

package banking;/*
 * This class creates the program to test the banking classes.
 * It creates a new Bank, sets the Customer (with an initial balance),
 * and performs a series of transactions with the Account object.
 */

import banking.*;

public class TestBanking {

    public static void main(String[] args) {
        Bank bank = new Bank();

        // Add Customer Jane, Simms
        //code
        bank.addCustomer("Jane","Simms");

        //Add Customer Owen, Bryant
        //code
        bank.addCustomer("Owen","Bryant");

        // Add Customer Tim, Soley
        //code
        bank.addCustomer("Tim","Soley");

        // Add Customer Maria, Soley
        //code
        bank.addCustomer("Maria","Soley");

        for (int i = 0; i < bank.getNumOfCustomers(); i++) {
            Customer customer = bank.getCustomer(i);

            System.out.println("Customer [" + (i + 1) + "] is "
                    + customer.getLastName()
                    + ", " + customer.getFirstName());
        }
    }
}