Menu
CoddyTech

Ôn tập: Trình quản lý tài khoản ngân hàng

Thuộc phần Lập trình hướng đối tượng trong hành trình C# của Coddy. Bài học 18 trên 70.

challenge icon

Thử thách

Dễ

Hãy xây dựng một hệ thống quản lý tài khoản ngân hàng hoàn chỉnh, kết hợp mọi điều bạn đã học về kiến trúc lớp. Bạn sẽ tạo lớp BankAccount, phân biệt đúng giữa dữ liệu của từng đối tượng (chỉ dành riêng cho mỗi tài khoản) và dữ liệu tĩnh (dùng chung cho mọi tài khoản), đồng thời dùng tính năng xác thực để đảm bảo các tài khoản luôn ở trạng thái hợp lệ.

Bạn sẽ tạo hai tệp để sắp xếp code:

  • BankAccount.cs: Định nghĩa lớp BankAccount trong không gian tên Banking. Tài khoản cần có:
    • Một trường const MinimumBalance có giá trị 100, là số dư tối thiểu mọi tài khoản phải duy trì
    • Một trường static InterestRate (số thập phân) có giá trị ban đầu là 0.03m, dùng chung cho mọi tài khoản
    • Một trường static TotalAccounts (số nguyên) để theo dõi số lượng tài khoản hiện có
    • Một trường readonly AccountNumber (chuỗi), được gán một lần khi tạo và không bao giờ thay đổi
    • Một trường riêng tư _ownerName để lưu trữ dữ liệu, cùng thuộc tính OwnerName giúp xóa khoảng trắng thừa khi gán giá trị
    • Một trường riêng tư _balance để lưu trữ dữ liệu, cùng thuộc tính Balance ngăn số dư thấp hơn MinimumBalance (nếu có người thử đặt số dư thấp hơn, hãy giữ số dư ở mức MinimumBalance)
    • Một hàm khởi tạo nhận số tài khoản, tên chủ tài khoản và số dư ban đầu, đồng thời tăng TotalAccounts
    • Một phương thức tĩnh SetInterestRate(decimal rate) để cập nhật lãi suất dùng chung
    • Một phương thức CalculateInterest() trả về tích của số dư và lãi suất
  • Program.cs: Trong tệp chính, hãy tạo hai tài khoản ngân hàng bằng các giá trị đầu vào, cập nhật lãi suất và hiển thị thông tin tài khoản cùng dữ liệu ngân hàng dùng chung.

Bạn sẽ nhận bảy giá trị đầu vào:

  • Số tài khoản thứ nhất
  • Tên chủ tài khoản thứ nhất
  • Số dư ban đầu của tài khoản thứ nhất
  • Số tài khoản thứ hai
  • Tên chủ tài khoản thứ hai
  • Số dư ban đầu của tài khoản thứ hai
  • Lãi suất mới (dạng số thập phân như 0.05)

In kết quả theo định dạng sau:

--- Bank Summary ---
Interest Rate: {InterestRate}
Minimum Balance: {MinimumBalance}
Total Accounts: {TotalAccounts}

Account: {AccountNumber}
Owner: {OwnerName}
Balance: {Balance}
Interest Earned: {interest}

Account: {AccountNumber}
Owner: {OwnerName}
Balance: {Balance}
Interest Earned: {interest}

Ví dụ: nếu các giá trị đầu vào là ACC001, Alice Smith , 500, ACC002, Bob Jones, 50 và 0.05, kết quả sẽ là:

--- Bank Summary ---
Interest Rate: 0.05
Minimum Balance: 100
Total Accounts: 2

Account: ACC001
Owner: Alice Smith
Balance: 500
Interest Earned: 25.0

Account: ACC002
Owner: Bob Jones
Balance: 100
Interest Earned: 5.0

Lưu ý tên Alice được xóa khoảng trắng thừa, còn số dư 50 của Bob được nâng lên mức tối thiểu là 100. Tiền lãi được tính bằng lãi suất mới 0.05, đã được thiết lập sau khi tạo các tài khoản.

Tự làm thử

using System;
using Banking;

class Program
{
    public static void Main(string[] args)
    {
        // Đọc đầu vào cho tài khoản thứ nhất
        string accountNumber1 = Console.ReadLine();
        string ownerName1 = Console.ReadLine();
        decimal balance1 = Convert.ToDecimal(Console.ReadLine());
        
        // Đọc đầu vào cho tài khoản thứ hai
        string accountNumber2 = Console.ReadLine();
        string ownerName2 = Console.ReadLine();
        decimal balance2 = Convert.ToDecimal(Console.ReadLine());
        
        // Đọc lãi suất mới
        decimal newRate = Convert.ToDecimal(Console.ReadLine());
        
        // TODO: Tạo hai đối tượng BankAccount bằng các giá trị đầu vào
        
        // TODO: Cập nhật lãi suất bằng phương thức tĩnh
        
        // TODO: In ra thông tin tổng hợp của ngân hàng theo định dạng yêu cầu
        // --- Bank Summary ---
        // Interest Rate: {InterestRate}
        // Minimum Balance: {MinimumBalance}
        // Total Accounts: {TotalAccounts}
        // (dòng trống)
        // Tài khoản: {AccountNumber}
        // Chủ tài khoản: {OwnerName}
        // Số dư: {Balance}
        // Interest Earned: {interest}
        // (dòng trống)
        // Tài khoản: {AccountNumber}
        // Chủ tài khoản: {OwnerName}
        // Số dư: {Balance}
        // Interest Earned: {interest}
    }
}

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch C# online