Финал проекта: Основной цикл
Часть раздела Объектно-ориентированное программирование путешествия по C на Coddy. Урок 27 из 61.
Задание
ЛегкоПоздравляем: ты создал полноценную библиотеку Bank Account! Теперь пора поменяться ролями. Вместо создателя библиотеки ты станешь пользователем библиотеки. Твоя задача — написать основную программу, которая проверит работу модуля Account.
Представь, что клиент приходит в банк и выполняет серию операций. Ты создашь счёт, внесёшь средства и снимешь их, по ходу проверишь баланс и наконец закроешь счёт, когда закончишь.
Ты будешь работать с тремя файлами:
account.h: твой полный заголовочный файл с непрозрачным типомAccountи всеми прототипами функций:create_account,destroy_account,deposit,withdrawиget_balance.account.c: твоя полная реализация со скрытой структурой, содержащейidиbalance, а также всеми реализациями функций, созданными тобой в ходе этого проекта.main.c: здесь ты сможешь проявить себя! Напиши программу, которая демонстрирует полный жизненный цикл банковского счёта с помощью реалистичной последовательности операций.
Ты получишь пять входных значений: идентификатор счёта (целое число), первое пополнение, снятие, второе пополнение и попытку овердрафта (снятие, которое должно завершиться неудачей из-за недостатка средств).
Твоя основная программа должна рассказать историю этого счёта:
- Создать счёт и сообщить об этом
- Показать starting баланс
- Выполнить первое пополнение и показать обновлённый баланс
- Снять часть средств и показать updated баланс
- Выполнить ещё одно пополнение и показать баланс
- Попытаться снять сумму, превышающую баланс. Операция должна завершиться неудачей
- Показать final баланс (не изменившийся после неудачного снятия)
- Закрыть счёт
Выведи результат в следующем формате:
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;
}
Все уроки раздела Объектно-ориентированное программирование
1Основы модульного программирования
Заголовочные файлыСтражи включенияИсходные файлыСтатические функцииПовторение: Модульный калькулятор4Инкапсуляция
Концепция непрозрачных указателейОпределение непрозрачных структурГеттеры и сеттерыВалидация в сеттерахИтоги: Секретный ящик2Объекты и методы
Структуры как объектыУказатель 'Self'Константная корректностьУказатель против значенияВспомогательные методыИтоги: Point Manager5Проект: Простой банковский счет
Настройка проектаРеализация счета3Жизненный цикл объекта
Паттерн «Конструктор»Паттерн «Деструктор»Инициализация в стекеГлубокое копированиеПовторение: String Wrapper6Наследование через композицию
Встраивание структурПравило первого элементаДоступ к элементам родителяUpcastingПовторение: Иерархия фигур9Проект: Рисование фигур
Обзор проектаРеализация кругаРеализация прямоугольникаПолиморфное использованиеКонтейнер фигурПотренируйтесь самостоятельно: Онлайн-компилятор C