持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情
实验题目
将用数组实现银行与客户间的多重关系。
实验目的
在类中使用数组作为模拟集合操作。
提示
对银行来说,可添加 Bank 类。 Bank 对象跟踪自身与其客户间的关系。用 Customer 对象的数组实现这个集合化的关系。还要保持一个整数属性来跟踪 银 行当前有多少客户。
-
创建 Bank 类
-
为 Bank 类 增 加 两 个 属 性 : customers(Customer对象的数组 ) 和 numberOfCustomers(整数,跟踪下一个 customers 数组索引)
-
添加公有构造器,以合适的最大尺寸(至少大于 5)初始化 customers 数组。
-
添加 addCustomer 方法。该方法必须依照参数(姓,名)构造一个新的 Customer 对象然后把它放到 customer 数组中。还必须把 numberOfCustomers 属性的值加 1。
-
添加 getNumOfCustomers 访问方法,它返回 numberofCustomers 属 性值。
-
添加 getCustomer方法。它返回与给出的index参数相关的客户。
-
编译并运行 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());
}
}
}