Bài tập lập trình Java - DHTH8A
Bài Tập 1.
Ngân hàng ABC
muốn lưu trữ thông tin của mỗi tài khoản
như sau:
Số tài khoản (kiểu long),
Tên tài khoản (kiểu chuỗi),
Số tiền trong tài khoản (kiểu double).
(i) Yêu cầu cài đặt lớp tài khoản theo sơ đồ như sau:
Account
- acctNumber : long
- name : String
- balance : double
- RATE = 0.035 : final double
+ Account()
+ Account(acctNumber : long, name : String, balance : double )
+ Account(acctNumber : long, name : String )
+ deposit(amount : double ) : boolean
+ withdraw(amount : double, fee : double) : boolean
+ addInterest() : void
+ getAccountNumber() : long
+ getBalance(): double
+ toString(): String
+ transfer( acc2 : Account, amount : double, fee : double ): void
Phương thức toString để trả về chuỗi chứa toàn bộ thông tin tài khoản, yêu cầu định dạng tiền tệ (hd: dùng. NumberFormatgetCurrencyInstance())
Constructor có 2 đối số: acctNumber và name sẽ khởi tạo số tiền mặc định là 50.
deposit(amount : double): Phương thức nạp tiền vào tài khoản, cho phép gửi số tiền amount vào tài khoản, hàm trả về true nếu gởi tiền thành công (amount>0).
withdraw(amount : double, fee : double): Phương thức rút tiền, lấy số tiền hiện tại trong tài khoản – (số tiền muốn rút+phí rút tiền), hàm trả về true nếu rút tiền thành công (amount>0 và amount+fee<=balance).
addInterest():Phương thức đáo hạn tính tiền lãi, mỗi lần đến kỳ đáo hạn thì số tiền trong tài khoản = số tiền trong tài khoản + số tiền trong tài khoản * LAISUAT.
transfer(acc2 : Account, amount : double, fee : double): Phương thức chuyển khoản, chuyển một khoản tiền amount (có phí) từ account này sang account kia.
Chú ý: Mỗi thao tác phải kiểm tra số tiền nạp, rút, chuyển có hợp lệ hay không? (VD: tiền
nhập vào <0, tiền rút nhiều hơn tiền trong tài khoản thì thông báo không hợp lệ và yêu cầu nhập lại)
(ii) Test lớp Account như sau :
- Tạo 3 đối tượng acct1, acct2, acct3 với các giá trị name, acctNumber, balance lần lượt như sau: {"Ted Murphy", 72354, 102.56}; {"Jane Smith", 69713, 40.00}; {"Edward Demsey", 93757, 759.32}.
- Gởi thêm số tiền cho acct1 là 25.85, cho acct2 là 500.00.
- Rút khỏi acct2 số tiền là 430.75, mức phí 1.50.
- Tính tiền lãi cho acct3.
- Xuất thông tin của acct1, acct2, acct3. (Kiểm tra lại kết quả).
- Chuyển tiền từ acct2 sang cho acct1 số tiền là 100.00, phí chuyển là 1.00.
- Xuất thông tin của acct1, acct2. (Kiểm tra lại kết quả).
Code :
1 : Create new project name BankAccount.
create package : example : com.thanhcs.bankaccount
2: Create new Classe name Account :
Account.java
1 : Create new project name BankAccount.
create package : example : com.thanhcs.bankaccount
2: Create new Classe name Account :
Account.java
package com.thanhcs.bankaccount;
/***ThanhCS*/ import java.text.Format; import java.text.NumberFormat; public class Account { private long acctNumber; private String name ; private double balance ; private final double RATE = 0.035; public Account() { balance=50; } public Account(long acctNumber, String name, double balance) { super(); this.acctNumber = acctNumber; this.name = name; this.balance = balance; } public Account(long acctNumber, String name) { super(); this.acctNumber = acctNumber; this.name = name; } boolean deposit(double amount)throws Exception /**tien gui*/ { if(amount < 0) { throw new Exception("account must be greater than 0"); } else { balance+=amount; return true; } } boolean withdraw(double amount , double fee )throws Exception /**thu hoi, rut tien*/ { if (amount<0 || (amount+fee)>=balance) throw new Exception("Loi roi,DK rut : amount > 0 || (amount+fee)>=balance "); else { balance = balance - (amount+fee); return true; } } void transfer( Account acc2 , double amount, double fee)/**chuyen giao*/ { try { this.withdraw(amount, fee); } catch (Exception e) { // TODO Auto-generated catch block System.out.println("Loi: " + e.getMessage()); } try { acc2.deposit(amount); } catch (Exception e) { // TODO Auto-generated catch block System.out.println("Loi: " + e.getMessage()); } } void addInterest() { balance = balance + (balance*RATE); } public long getAcctNumber() { return acctNumber; } public double getBalance() { return balance; } @Override public String toString() { NumberFormat numBerFormat = NumberFormat.getCurrencyInstance(); return "Account [acctNumber=" + acctNumber + ", name=" + name + ", balance=" + numBerFormat.format(getBalance())+ ", RATE=" + RATE + "]"; } }
3: Create main class :
MainControl.java
package com.thanhcs.bankaccount; /**ThanhCS*/ public class MainControl { public static void main(String[] args) { Account acc1 = new Account(72354,"Ted Murphy", 102.56); Account acc2 = new Account( 69713,"Jane Smith", 40.00); Account acc3 = new Account( 93757,"Edward Demsey", 759.32); /*** Gởi thêm số tiền cho acct1 là 25.85, cho acct2 là 500.00.*/ // try { // acc1.deposit(25.85); // acc2.deposit(500.00); // } catch (Exception e) { // // TODO Auto-generated catch block // System.out.println("Loi: " + e.getMessage()); // } // // System.out.println(acc1); // System.out.println(acc2); /** Rút khỏi acct2 số tiền là 430.75, mức phí 1.50. */ // try { // acc2.withdraw(430.75, 1.50); // } catch (Exception e) { // // TODO Auto-generated catch block // System.out.println("Loi: " + e.getMessage()); // } // System.out.println(acc2); /**Tính tiền lãi cho acct3. */ // double temp; // temp = acc3.getBalance(); // acc3.addInterest(); // System.out.println("So tien lai acc3 :"+(acc3.getBalance() )); /**Chuyển tiền từ acct1 sang cho acct2 số tiền là 100.00, phí chuyển là 1.00. */ acc1.transfer(acc2, 100.00, 1.00); System.out.println(acc1); System.out.println(acc2); } }
Download Source Code
No comments: