Header Ads

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:



Mỗi tài khoản chứa các thông tin:
 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ố: acctNumbername 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

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:

Powered by Blogger.