Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution
    Đăng nhập
    Đăng nhập

    Đề bài: Manage savings and checking bank accounts with an abstract class

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 6: Lập trình hướng đối tượng (2): kế thừa, trừu tượng, đa hình — khóa Lập trình Java

    A bank offers two kinds of accounts: savings and checking, both inheriting from an abstract class Account.

    1. Build the abstract class Account with:
      • Fields: id (String), holder (String), balance (double)
      • Abstract method double interest() — end-of-period interest
      • Method void deposit(double amount) adding amount to balance
    2. Class SavingsAccount extends Account:
      • Additional field rate (double) — annual interest rate (e.g. 0.06 = 6%)
      • interest() = balance * rate
    3. Class CheckingAccount extends Account:
      • Additional field monthlyFee (double) — monthly maintenance fee
      • interest() = balance * 0.01 - monthlyFee * 12 (may be negative)
    4. In main:
      • Line 1: N
      • Next N lines, each with type + data:
        • SAV <id> <holder> <balance> <rate>
        • CHK <id> <holder> <balance> <monthlyFee>
      • Then M deposit transactions: <id> <amount> (M ≤ N×3)
      • Finally print each account in input order: <id> <balance> <interest> formatted with 2 decimal places.
      • Last line: TOTAL_INTEREST <sum> (2 decimal places).
    • Định dạng đầu vào:
      • Line 1: N — number of accounts (1 ≤ N ≤ 100)
      • Next N lines: each account's information (format above)
      • Next line: M — number of deposit transactions (0 ≤ M ≤ 300)
      • Next M lines: <id> <amount>
    • Ràng buộc đầu vào:
      • balance, amount: non-negative real numbers ≤ 10⁹
      • rate ∈ [0, 0.2]
      • monthlyFee ∈ [0, 10⁵]
      • id is unique
    • Định dạng đầu ra:
      • N lines: <id> <balance> <interest> (2 decimal places)
      • Last line: TOTAL_INTEREST <sum> (2 decimal places)

    Ví dụ:

    Đầu vào:

    2
    SAV S001 An 1000000 0.06
    CHK C001 Binh 500000 20000
    2
    S001 200000
    C001 100000
    

    Đầu ra:

    S001 1200000.00 72000.00
    C001 600000.00 -234000.00
    TOTAL_INTEREST -162000.00
    

    Giải thích:

    Sau khi nạp: S001=1.2M, C001=600K. Lãi S001 = 1.2M × 0.06 = 72000. Lãi C001 = 600K × 0.01 − 20000×12 = 6000−240000 = −234000 (âm).

    Đầu vào:

    1
    SAV X Lan 0 0.1
    0
    

    Đầu ra:

    X 0.00 0.00
    TOTAL_INTEREST 0.00
    

    Giải thích:

    Tài khoản tiết kiệm số dư 0 → lãi = 0. Không có giao dịch nạp. TOTAL_INTEREST = 0.

    Đầu vào:

    3
    SAV A x 100 0.05
    SAV B y 200 0.1
    CHK C z 300 0
    0
    

    Đầu ra:

    A 100.00 5.00
    B 200.00 20.00
    C 300.00 3.00
    TOTAL_INTEREST 28.00
    

    Đầu vào:

    2
    CHK C1 a 1000000 50000
    CHK C2 b 2000000 100000
    3
    C1 50000
    C2 100000
    C1 50000
    

    Đầu ra:

    C1 1100000.00 -589000.00
    C2 2100000.00 -1179000.00
    TOTAL_INTEREST -1768000.00
    

    Đầu vào:

    4
    SAV s1 a 100 0.01
    SAV s2 b 200 0.02
    CHK c1 c 300 1000
    CHK c2 d 400 2000
    4
    s1 100
    s2 200
    c1 300
    c2 400
    

    Đầu ra:

    s1 200.00 2.00
    s2 400.00 8.00
    c1 600.00 -11994.00
    c2 800.00 -23992.00
    TOTAL_INTEREST -35976.00
    

    Đầu vào:

    1
    CHK C1 a 0 0
    0
    

    Đầu ra:

    C1 0.00 0.00
    TOTAL_INTEREST 0.00
    

    Giải thích:

    Edge: tài khoản thanh toán số dư 0, phí 0 → lãi = 0.

    Đầu vào:

    2
    SAV s1 a 1000000 0.2
    SAV s2 b 1000000 0
    0
    

    Đầu ra:

    s1 1000000.00 200000.00
    s2 1000000.00 0.00
    TOTAL_INTEREST 200000.00
    

    Giải thích:

    Lãi suất biên: max=0.2 và min=0.

    Chủ đề

    🧩 Lập trình hướng đối tượng☕ JavaJavaJava: OOPTất cả môn học

    Đang tải editor...