物件引數傳遞——銀行賬戶的建立
阿新 • • 發佈:2018-12-12
1、寫一個名為Account的類模擬賬戶。該類的屬性和方法如下圖所示。該類包括的屬性:賬號id,餘額balance,年利率annualInterestRate;包含的方法:訪問器方法(getter和setter方法),取款方法withdraw(),存款方法deposit()。
提示:在提款方法withdraw中,需要判斷使用者餘額是否能夠滿足提款數額的要求,如果不能,應給出提示。
- 建立Customer類。
a. 宣告三個私有物件屬性:firstName、lastName和account。
b. 宣告一個公有構造器,這個構造器帶有兩個代表物件屬性的引數(f和l)
c. 宣告兩個公有存取器來訪問該物件屬性,方法getFirstName和getLastName返回相應的屬性。
d. 宣告setAccount 方法來對account屬性賦值。
e. 宣告getAccount 方法以獲取account屬性。
3.寫一個測試程式。
(1)建立一個Customer ,名字叫 Jane Smith, 他有一個賬號為1000,餘額為2000元,年利率為 1.23% 的賬戶。
(2)對Jane Smith操作。
存入 100 元,再取出960元。再取出2000元。
打印出Jane Smith 的基本資訊
成功存入 :100.0
成功取出:960.0
餘額不足,取款失敗
Customer [Smith, Jane] has a account: id is 1000, annualInterestRate is 1.23%, balance is 1140.0
/** public class Test { static View view=new View(); public static void main(String[] args){ view.start(); } public class View { Scanner sc = new Scanner(System.in); Account account = new Account(0, 0, 0); /** 初始化介面 **/ public void start() { System.out.println("歡迎來到銀行系統"); inputidname(); } /** 輸入id使用者名稱 */ public void inputidname() { System.out.println("請輸入使用者姓名:"); String name = sc.nextLine(); Customer cus1=fl(name);// 由姓,名,賬戶得到使用者物件 System.out.println("請輸入id:"); int id = sc.nextInt(); savetakemoney(); //Account acc = null; double annualInterestRate = 1.23; //acc = new Account(id, 1000, annualInterestRate);// account(id餘額年利率)返回使用者賬戶物件 System.out.println("Customer"+"["+cus1.getLastName(name)+" "+cus1.getFirstName(name)+"]has a account:");//列印存單 //成功存入 :100.0 //成功取出:960.0 //餘額不足,取款失敗 //Customer [Smith, Jane] has a account: id is 1000, annualInterestRate is 1.23%, balance is 1140.0 System.out.print("id is "+id+",annualInterestRate is "); System.out.printf("%.2f%%",annualInterestRate); System.out.print("balance is "+account.getBalance()); } /** * 取出姓和名 * */ public Customer fl(String name) { Customer cus = null; String firstname = name.substring(0, name.indexOf(" "));// 取出姓,名 String lastname = name.substring(name.indexOf(" ")+1);// 取出姓,名 cus = new Customer(firstname, lastname);// 返回物件 return cus; } /**存取款*/ public void savetakemoney() { System.out.println("請選擇操作專案:1.存款\t2.取款\t3.退出"); int cz = sc.nextInt(); switch (cz) { case 1: { System.out.println("請選擇存款金額"); int amount = sc.nextInt(); account.deposit(amount);// 存錢 System.out.println("成功存入"+amount+"\t餘額:"+account.getBalance());// 存完先看下餘額 savetakemoney();// 返回操作 break; } case 2: { System.out.println("請選擇取款金額"); int amount = sc.nextInt(); if(amount>account.getBalance()){ System.out.println("餘額不足"); savetakemoney(); }else{ account.withdraw(amount);// 把錢取出來 System.out.println("成功取出:"+amount+"\t餘額:"+account.getBalance());// 取完錢先看下餘額 savetakemoney();//返回選項 } break; } default :{ System.out.println("歡迎下次再來"); } } } } import java.util.Scanner; public class Customer{ Scanner sc=new Scanner(System.in); /** * (1)建立一個Customer ,名字叫 Jane Smith, 他有一個賬號為1000,餘額為2000元,年利率為 1.23% 的賬戶。 * //a. 宣告三個私有物件屬性:firstName、lastName和account。 * */ private String firstName; private String lastName; private Account account; /** * *b. 宣告一個公有構造器,這個構造器帶有兩個代表物件屬性的引數(f和l) * */ public Customer(String f,String l){ this.firstName=f; this.lastName=l; } /** * *c. 宣告兩個公有存取器來訪問該物件屬性,方法getFirstName和getLastName返回相應的屬性。 * */ public String getFirstName(String firstname){ return firstName; } /** * *c. 宣告兩個公有存取器來訪問該物件屬性,方法getFirstName和getLastName返回相應的屬性。 * */ public String getLastName(String lastname){ return lastName; } /** * * e. 宣告getAccount 方法以獲取account屬性。 * **/ public Account getAccount(){ return account; } /** * *d. 宣告setAccount 方法來對account屬性賦值。 * */ public void setAccount(Account account){ this.account=account; } } /***************************************/ import java.util.Scanner; public class Account { private int id; private double balance=2000; private double annualInterestRate; Scanner sc=new Scanner(System.in); /** * (1)建立一個Customer ,名字叫 Jane Smith, 他有一個賬號為1000,餘額為2000元,年利率為 1.23% 的賬戶。 * 在提款方法withdraw中,需要判斷使用者餘額是否能夠滿足提款數額的要求,如果不能,應給出提示。 * */ public Account(int id, double balance, double annualInterestRate){ getBalance(); } public int getId(){ System.out.println(id); return id; } public double getBalance(){ return balance; } public double getAnnualInterestRate(){ return annualInterestRate; } public void setId(int id){ this.id=id; } public void setBalance(double balance){ this.balance=balance;//他有一個賬號為1000,餘額為2000元 } /**年利率為 1.23% 的賬戶。*/ public void setAnnualInterestRate(double annualInterestRate){ this.annualInterestRate=annualInterestRate; } /**取錢方法*/ public void withdraw (double amount){ this.balance-=amount; } /**存款方法*/ public void deposit (double amount){ this.balance+=amount; } }