Menu
Coddy logo textTech

Финал проекта: Основной цикл

Часть раздела Object Oriented Programming путешествия по C на Coddy — урок 27 из 61.

challenge icon

Задание

Легко

Поздравляем — вы создали полноценную библиотеку для управления банковским счетом! Теперь пришло время сменить роль. Вместо того чтобы быть создателем библиотеки, вы станете пользователем библиотеки. Ваша задача — написать основную программу, которая проверит ваш модуль Account в деле.

Представьте, что клиент заходит в банк и совершает ряд операций. Вы создадите счет, внесете депозиты, снимете средства, будете проверять баланс по ходу дела и, наконец, закроете счет, когда закончите.

Вы будете работать с тремя файлами:

  • account.h: Ваш готовый заголовочный файл с непрозрачным типом Account и всеми прототипами функций: create_account, destroy_account, deposit, withdraw и get_balance.
  • account.c: Ваша полная реализация со скрытой структурой, содержащей id и balance, а также все реализации функций, которые вы создали в ходе этого проекта.
  • main.c: Здесь вы проявите себя! Напишите программу, которая демонстрирует полный жизненный цикл банковского счета через реалистичную последовательность транзакций.

Вы получите пять входных значений: ID счета (целое число), первый депозит, снятие средств, второй депозит и попытку овердрафта (снятие суммы, которое должно завершиться неудачей из-за нехватки средств).

Ваша основная программа должна рассказать историю жизни этого счета:

  1. Создать счет и объявить об этом
  2. Показать начальный баланс
  3. Внести первый депозит и показать новый баланс
  4. Снять часть средств и показать обновленный баланс
  5. Внести еще один депозит и показать баланс
  6. Попытаться снять сумму, превышающую баланс — это должно закончиться неудачей
  7. Показать итоговый баланс (неизменный после неудачного снятия)
  8. Закрыть счет

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

Account 2001 created
Balance: 0.00
Deposited 1000.00
Balance: 1000.00
Withdrew 250.00
Balance: 750.00
Deposited 500.00
Balance: 1250.00
Withdrawal failed: insufficient funds
Balance: 1250.00
Account 2001 closed

Где 2001 — это ID счета, а суммы соответствуют вашим входным данным. Форматируйте все денежные значения с двумя знаками после запятой, используя %.2f. Сообщение о неудачном снятии средств должно выводиться, когда withdraw возвращает 0.

Этот финал демонстрирует все, что вы узнали об инкапсуляции — ваша основная программа взаимодействует с Account исключительно через его публичный интерфейс, никогда не обращаясь к скрытым внутренним данным напрямую.

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

#include <stdio.h>
#include "account.h"

int main() {
    // TODO: Считать account_id, deposit1, withdraw_amount, deposit2 и overdraft из входных данных

    // TODO: Создать аккаунт и вывести "Account <id> created"

    // TODO: Вывести начальный баланс

    // TODO: Внести первый депозит, вывести "Deposited <amount>" и новый баланс

    // TODO: Снять средства, вывести "Withdrew <amount>" и обновленный баланс

    // TODO: Внести второй депозит, вывести "Deposited <amount>" и новый баланс

    // TODO: Попытаться выполнить снятие с овердрафтом; если не удастся, вывести "Withdrawal failed: insufficient funds"
    // TODO: Вывести итоговый баланс

    // TODO: Вывести "Account <id> closed" и удалить аккаунт

    return 0;
}

Все уроки раздела Object Oriented Programming