实验题目
将用数组实现银行与客户间的多重关系。
实验目的
在类中使用数组作为模拟集合操作。
提示
对银行来说,可添加 Bank 类。 Bank 对象跟踪自身与其客户间的关系。用 Customer 对象的数组实现这个集合化的关系。还要保持一个整数属性来跟踪 银 行当前有多少客户。
- 创建 Bank 类
- 为 Bank 类 增 加 两 个 属 性 : customers(Customer对象的数组 ) 和 numberOfCustomers(整数,跟踪下一个 customers 数组索引)
- 添加公有构造器,以合适的最大尺寸(至少大于 5)初始化 customers 数组。
- 添加 addCustomer 方法。该方法必须依照参数(姓,名)构造一个新的 Customer 对象然后把它放到 customer 数组中。还必须把 numberOfCustomers 属性的值加 1。
- 添加 getNumOfCustomers 访问方法,它返回 numberofCustomers 属 性值。
- 添加 getCustomer方法。它返回与给出的index参数相关的客户。
- 编译并运行 TestBanking 程序。可以看到下列输出结果
Customer [1] isSimms, JaneCustomer [2] isBryant, OwenCustomer [3] isSoley, TimCustomer [4] isSoley, Maria
代码
【Account.java】类
packagebanking; publicclassAccount { privatedoublebalance; //银行帐户的当前(或即时)余额//公有构造器 ,这个参数为 balance 属性赋值publicAccount(doubleinit_balance) { this.balance=init_balance; } //用于获取经常余额publicdoublegetBalance() { returnbalance; } /*** 向当前余额增加金额* @param amt 增加金额* @return 返回 true(意味所有存款是成功的)*/publicbooleandeposit(doubleamt){ balance+=amt; returntrue; } /*** 从当前余额中减去金额* @param amt 提款数目* @return 如果 amt小于 balance, 则从余额中扣除提款数目并返回 true,否则余额不变返回 false。*/publicbooleanwithdraw(doubleamt){ if (amt<balance){ balance-=amt; returntrue; }else{ returnfalse; } } }
【Customer.java】类
packagebanking; publicclassCustomer { privateStringfirstName; privateStringlastName; privateAccountaccount; publicCustomer(Stringf, Stringl) { this.firstName=f; this.lastName=l; } publicStringgetFirstName() { returnfirstName; } publicStringgetLastName() { returnlastName; } publicAccountgetAccount() { returnaccount; } publicvoidsetAccount(Accountacct) { this.account=acct; } }
【Bank.java】类
packagebanking; /*** 银行类*/publicclassBank { privateCustomer[] customers; //Customer对象的数组privateintnumberOfCustomer; //整数,跟踪下一个 customers 数组索引/*** 公有构造器,以合适的最大尺寸(至少大于 5)初始化 customers 数组。*/publicBank() { customers=newCustomer[10]; } /*** 该方法必须依照参数(姓,名)构造一个新的 Customer 对象然后把它放到 customer 数组中。还必须把 numberOfCustomers 属性的值加 1。* @param f 姓* @param l 名*/publicvoidaddCustomer(Stringf,Stringl){ customers[numberOfCustomer++]=newCustomer(f,l); } /*** 通过下标索引获取 customer* @param index 下标索引* @return customer*/publicCustomergetCustomer(intindex) { returncustomers[index]; } publicintgetNumOfCustomers() { returnnumberOfCustomer; } }
【TestBanking.java】类
packagebanking;/** 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.*/importbanking.*; publicclassTestBanking { publicstaticvoidmain(String[] args) { Bankbank=newBank(); // Add Customer Jane, Simms//codebank.addCustomer("Jane","Simms"); //Add Customer Owen, Bryant//codebank.addCustomer("Owen","Bryant"); // Add Customer Tim, Soley//codebank.addCustomer("Tim","Soley"); // Add Customer Maria, Soley//codebank.addCustomer("Maria","Soley"); for (inti=0; i<bank.getNumOfCustomers(); i++) { Customercustomer=bank.getCustomer(i); System.out.println("Customer ["+ (i+1) +"] is "+customer.getLastName() +", "+customer.getFirstName()); } } }