Menu
Coddy logo textTech

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

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

challenge icon

Задание

Легко

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

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

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

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

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

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

  1. Создать счёт и сообщить об этом
  2. Показать starting баланс
  3. Выполнить первое пополнение и показать обновлённый баланс
  4. Снять часть средств и показать updated баланс
  5. Выполнить ещё одно пополнение и показать баланс
  6. Попытаться снять сумму, превышающую баланс. Операция должна завершиться неудачей
  7. Показать final баланс (не изменившийся после неудачного снятия)
  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 — это идентификатор счёта, а суммы соответствуют твоим входным данным. Форматируй все денежные значения с двумя десятичными знаками, используя %.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: Attempt the overdraft withdrawal; if it fails, print "Withdrawal failed: insufficient funds"
    // TODO: Выведите итоговый баланс

    // TODO: Выведите "Account <id> closed" и уничтожьте счёт

    return 0;
}

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

Потренируйтесь самостоятельно: Онлайн-компилятор C