我正在製作一個java程序,並且有5個類: Account,SavingsAccount(繼承賬戶),CreditAccount(繼承賬戶),Bank,Customer。Java銀行計劃。如何讓客戶擁有多個賬戶?
該程序正在運行,但我無法弄清楚如何讓客戶擁有兩個或多個帳戶。假設一個客戶既想要一個信用賬戶,又想要一個儲蓄賬戶,或者兩個儲蓄賬戶。
任何人都可以給我一些建議嗎?謝謝
銀行類:
public class Bank {
String bankName;
private Customer[] customers = new Customer[100];
Bank(String bankName) {
this.bankName = bankName;
}
public Customer[] getCustomer() {
return customers;
}
public String getBankname() {
return bankName;
}
}
Account類:
public abstract class Account {
protected double balance = 0;
protected String accountId;
public Account() {} //Defaultkonstruktor
public Account(double bal, String id) { //Konstruktor
if (balance >= 0) {
balance = bal;
}
else {
balance = 0;
}
accountId = id;
}
public abstract void deposit(double amount);
public abstract void withdraw(double amount);
public abstract double getBalance();
public abstract String getAccountId();
public abstract void transfer(double amount, Account account);
}
SavingsAccount類:(CreditAccount類是相似的)
public class SavingsAccount extends Account{
private double interest = 2.9;
public SavingsAccount() { //Konstruktor
super();
}
public SavingsAccount(double balance, String id) { //Konstruktor
super(bal,id);
}
public void setInterest(Customer customer) {
//code
}
public void setBalance(double balance) {
//code
}
@Override
public void deposit(double amount) {
//code
}
@Override
public void withdraw(double amount) {
//code
}
@Override
public double getBalance(){
//code
}
@Override
public String getAccountId(){
//code
}
@Override
public void transfer(double amount, Account account) {
//code
}
public void setInterest(double interest){
//code
}
public double getInterest(){
//code
}
}
Customer類:
public class Customer {
private String firstName;
private String lastName;
private String number;
private SavingsAccount account = new SavingsAccount();
private CreditAccount cAccount = new CreditAccount();
Customer(String firstName, String lastName, String number, SavingsAccount account) {
this.firstName = firstName;
this.lastName = lastName;
this.number = number;
this.account = account;
}
Customer(String firstName, String lastName, String number, CreditAccount cAccount) {
this.firstName = firstName;
this.lastName = lastName;
this.number = number;
this.cAccount = cAccount;
}
public SavingsAccount getAccount() {
return account;
}
public CreditAccount getCreditAccount() {
return cAccount;
}
}
主營:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int choice;
int numberOfCustomers = 0;
boolean endProgram = false;
String bankName;
System.out.print("Name of bank: ");
bankName = input.next();
Bank bank = new Bank(bankName);
String accountId;
SavingsAccount acc = new SavingsAccount();
Customer[] customer = bank.getCustomer();
do {
System.out.println(" " + bank.getBankname() + "\n");
System.out.println(" 1. See balance ");
System.out.println(" 2. Withdraw ");
System.out.println(" 3. Deposit ");
System.out.println(" 4. Transfer ");
System.out.println(" 5. Add interest ");
System.out.println(" 6. Add new customer ");
System.out.println(" 7. Show customers ");
System.out.println(" 8. Change interest ");
System.out.println(" 0. Exit ");
choice = input.nextInt();
switch(choice) {
case 1:
//code
break;
case 2:
//code
break;
case 3:
//code
break;
case 4:
//code
break;
case 5:
//code
break;
case 6: //Add customer
System.out.println("Choose account: ");
System.out.println("1. Savings account");
System.out.println("2. Credit account");
choice = input.nextInt();
switch(choice) {
case 1: //Create savings account
System.out.print("Enter amount to deposit: ");
double amount = input.nextDouble();
System.out.println("Account number is: " + numberOfCustomers);
SavingsAccount savingsAccount = new SavingsAccount(amount, String.valueOf(numberOfCustomers));
System.out.print("First name: ");
String firstName = input.next();
System.out.print("Last name: ");
String lastName = input.next();
System.out.print("Customer number: ");
String pnumber = input.next();
Customer newCustomer = new Customer(firstName, lastName, pnumber, savingsAccount);
customer[numberOfCustomers] = newCustomer;
numberOfCustomers++;
break;
case 2: //Create credit account
System.out.print("Enter amount to deposit: ");
double amount = input.nextDouble();
System.out.println("Account number is: " + numberOfCustomers);
CreditAccount creditAccount = new CreditAccount(amount, String.valueOf(numberOfCustomers));
System.out.print("First name: ");
String firstName = input.next();
System.out.print("Last name: ");
String lastName = input.next();
System.out.print("Customer number: ");
String pnumber = input.next();
Customer newCustomer = new Customer(firstName, lastName, pnumber, creditAccount);
customer[numberOfCustomers] = newCustomer;
numberOfCustomers++;
break;
}
break;
case 7:
//code
break;
case 8:
//code
break;
case 0:
//code
break;
}
} while (!endProgram);
}
在客戶類,使用''列出的,而不是單個字段。 –
2014-09-20 18:37:44
給客戶一個帳戶集合,例如一個'ArrayList',它可以存放多個Account對象。注意,@DaveMorrissey給出了更好的響應,使類型'名單'的爲accountList變量,因爲它幾乎總是最好的「碼到接口」,而不是具體的類,但這是另一個討論的主題。 –
2014-09-20 18:38:00