Menu
Coddy logo textTech

Повторение — Менеджер банковских счетов

Часть раздела Объектно-ориентированное программирование путешествия по C# на Coddy — урок 18 из 70.

challenge icon

Задание

Легко

Давайте создадим полноценную систему управления банковскими счетами, которая объединит все, что вы узнали об архитектуре классов. Вы создадите класс BankAccount, который правильно разграничивает данные экземпляра (уникальные для каждого счета) и статические данные (общие для всех счетов), используя при этом валидацию для поддержания счетов в корректном состоянии.

Для организации кода вы создадите два файла:

  • BankAccount.cs: Определите класс BankAccount в пространстве имен Banking. Ваш счет должен включать:
    • Поле const с именем MinimumBalance, установленное в 100 — минимальный баланс, который должны поддерживать все счета.
    • Статическое поле InterestRate (decimal), которое начинается с 0.03m — общее для всех счетов.
    • Статическое поле TotalAccounts (int), которое отслеживает количество существующих счетов.
    • Поле readonly с именем AccountNumber (string) — устанавливается один раз при создании и никогда не меняется.
    • Закрытое резервное поле _ownerName со свойством OwnerName, которое обрезает пробелы (trim) при установке значения.
    • Закрытое резервное поле _balance со свойством Balance, которое предотвращает падение баланса ниже MinimumBalance (если кто-то попытается установить его ниже, оставьте его равным MinimumBalance).
    • Конструктор, который принимает номер счета, имя владельца и начальный баланс, и увеличивает TotalAccounts.
    • Статический метод SetInterestRate(decimal rate) для обновления общей процентной ставки.
    • Метод CalculateInterest(), который возвращает баланс, умноженный на процентную ставку.
  • Program.cs: В основном файле создайте два банковских счета, используя входные значения, обновите процентную ставку и выведите информацию о счетах вместе с общими данными банка.

Вы получите семь входных значений:

  • Номер первого счета
  • Имя первого владельца
  • Начальный баланс первого счета
  • Номер второго счета
  • Имя второго владельца
  • Начальный баланс второго счета
  • Новая процентная ставка (в виде десятичного числа, например 0.05)

Выведите результат в следующем формате:

--- 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}

Например, если входные данные: ACC001, Alice Smith , 500, ACC002, Bob Jones, 50 и 0.05, результат должен быть следующим:

--- 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

Обратите внимание, как имя Алисы очищается от лишних пробелов, а баланс Боба (50) увеличивается до минимума в 100. Проценты рассчитываются с использованием обновленной ставки 0.05, которая была установлена после создания счетов.

Попробуйте сами

using System;
using Banking;

class Program
{
    public static void Main(string[] args)
    {
        // Чтение входных данных для первого счета
        string accountNumber1 = Console.ReadLine();
        string ownerName1 = Console.ReadLine();
        decimal balance1 = Convert.ToDecimal(Console.ReadLine());
        
        // Чтение входных данных для второго счета
        string accountNumber2 = Console.ReadLine();
        string ownerName2 = Console.ReadLine();
        decimal balance2 = Convert.ToDecimal(Console.ReadLine());
        
        // Чтение новой процентной ставки
        decimal newRate = Convert.ToDecimal(Console.ReadLine());
        
        // TODO: Создайте два объекта BankAccount, используя введенные значения
        
        // TODO: Обновите процентную ставку, используя статический метод
        
        // TODO: Выведите сводку по банку в требуемом формате
        // --- 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}
    }
}

Все уроки раздела Объектно-ориентированное программирование