Account II

URL: https://www.onlinegdb.com/classroom/Fd0aduv55

Requirements

  1. Instance variables:

  • double interestRate: a double variable indicating the monthly interest rates. For example, if the interstRate is 2, it means monthly interest rate is 2%.

  • double fee: a double variable indicating a monthly fee charged to the account, if the balance is below a threshold.

  • double threshold: a double variable indicating the minimum balance required to avoid the monthly fee.

2.Static Variable:

  • accountCount: an integer static variable to keep track of the number of Account instances created.

3.Constructors:

Since you add three instance variables, so you should modify your constructors like this:public Account(String accountHolder, String accountNumber,double balance, double interestRate, double fee, double threshold) {...}Each time an new account is created, accountAcount should increase by 1.

4.New Methods:

  • public static int getAccountCount(): returns the current value of accountCount.

  • private void applyInterest(): applies a monthly interest rate to the balance.

  • private void chargeFee(): charges a fee if the balance is below a specified threshold.

  • public void passMonth(): simulates the passage of a month. It will first apply interest to the balance of the account. If the new balance is below threshold, it will be charge a fee.

    • For example, is the current balance is 100, monthly interest rate is 10%, threshold is 200, and the fee is 5.

    • When a month passed, the balance will get interests, become 100 + 100*10%=110.0. Since it is below threshold(200), the account will be charged a ¥5 fee.

    • So the account should have ¥105.0 after the month passed.

applyInterest and chargeFee should be private, meaning they can only be called within the Account class.Hint: applyInterest() and chargeFee() is triggered monthly, so they should be only called by passMonth().

  1. 4.The following table contains a code execution sequence and the corresponding results:

Statement of Expression

Return Value

Explanation

Account a1 = new Account("John Doe", "12345678", 100, 10, 20, 200);

N/A

Create account a1 with initial balance of ¥100, 10% monthly interest, ¥20 fee, ¥200 threshold.

Account.getAccountCount();

1

Returns the total number of accounts created after a1's creation.

a1.deposit(150);

true

Deposit of ¥150 to a1.

a1.getBalance();

250.0

Balance in a1 after deposit.

a1.passMonth();

N/A

Simulate a month passing for a1.

a1.getBalance();

275.0

Balance in a1 after a month, with interest. There is no fee charged, since 275.0 is larger than 200.

a1.withdraw(130);

true

Withdraw ¥130 from a1.

a1.getBalance();

145.0

Balance in a1 after withdrawal.

a1.passMonth();

N/A

Simulate another month passing for a1.

a1.getBalance();

139.5

Balance in a1 after second month, with interest applied. There is a ¥10 fee charged, so the balance is 145*1.1-20 = 139.5。

Account a2 = new Account("Jane Smith", "87654321", 50, 20, 10, 200);

N/A

Create account a2 with initial balance of ¥50, 20% monthly interest, ¥10 fee, ¥200 threshold.

Account.getAccountCount();

2

Returns the total number of accounts created after a2's creation.

a2.deposit(50);

true

Deposit of ¥50 to a2.

a2.getBalance();

100.0

Balance in a2 after deposit.

a2.passMonth();

N/A

Simulate a month passing for a2.

a2.getBalance();

110.0

Balance in a2 after a month, with interest and fee charged. The balance is 100*1.2-10 = 110.0.

a2.withdraw(20);

true

Withdraw ¥20 from a2.

a2.getBalance();

90.0

Balance in a2 after withdrawal.

a2.passMonth();

N/A

Simulate another month passing for a2.

a2.getBalance();

98.0

Balance in a2 after second month, with interest and fee charged. The balance is 90*1.2-10 = 98.0.

FULL SCORE

  • Zhu Qixin

  • Dong Ruoxuan

  • He Yuhan

  • Jin Xuanyu

  • Lin Jiaxin

  • Luo Rui

  • Wang Jiaxi

  • Zhang Wenyuan

  • Zheng Hao

  • Zhu Yi

  • Liu Xintong

  • Zhang Tianyu

  • Ding Chengtian

  • Ni Jiachen

  • Zhang Xiaowen

ALMOST THERE

  • Wang Yueqi

  • Hu Yuqin

  • Lyu Jiajia

  • Chen Sihan

  • Li Jiakang

Last updated