Finał projektu: pętla główna
Część sekcji Programowanie obiektowe ścieżki C w Coddy. Lekcja 27 z 61.
Wyzwanie
ŁatwyGratulacje: udało Ci się stworzyć kompletną bibliotekę kont bankowych! Teraz czas zamienić się rolami. Zamiast tworzyć bibliotekę, zostaniesz jej użytkownikiem. Twoim zadaniem jest napisanie programu głównego, który przetestuje Twój moduł Account.
Wyobraź sobie klienta, który wchodzi do banku i wykonuje serię transakcji. Utworzysz konto, wpłacisz i wypłacisz pieniądze, po drodze sprawdzisz saldo, a na koniec zamkniesz konto.
Będziesz pracować z trzema plikami:
account.h: kompletny plik nagłówkowy z nieprzezroczystym typemAccounti wszystkimi prototypami funkcji:create_account,destroy_account,deposit,withdraworazget_balance.account.c: kompletna implementacja z ukrytą strukturą zawierającąidibalance, a także wszystkimi implementacjami funkcji, które utworzyłeś(-aś) w trakcie tego projektu.main.c: tutaj możesz zabłysnąć! Napisz program, który pokaże pełny cykl życia konta bankowego, wykonując realistyczną sekwencję transakcji.
Otrzymasz pięć danych wejściowych: identyfikator konta (liczbę całkowitą), pierwszą wpłatę, wypłatę, drugą wpłatę oraz próbę wypłaty ponad stan (wypłatę, która powinna się nie powieść z powodu niewystarczających środków).
Twój program główny powinien opowiedzieć historię tego konta:
- Utwórz konto i poinformuj o tym
- Wyświetl początkowe saldo
- Wykonaj pierwszą wpłatę i wyświetl nowe saldo
- Wypłać część środków i wyświetl zaktualizowane saldo
- Wykonaj kolejną wpłatę i wyświetl saldo
- Spróbuj wypłacić kwotę przekraczającą saldo. Ta próba powinna się nie powieść
- Wyświetl końcowe saldo (niezmienione po nieudanej wypłacie)
- Zamknij konto
Wyświetl wynik w tym formacie:
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 closedWartość 2001 to identyfikator konta, a kwoty odpowiadają danym wejściowym. Formatuj wszystkie kwoty z dokładnością do dwóch miejsc po przecinku, używając %.2f. Komunikat o nieudanej wypłacie powinien zostać wyświetlony, gdy withdraw zwróci 0.
To zadanie podsumowujące pokazuje wszystko, czego nauczyłeś(-aś) się o enkapsulacji. Twój program główny korzysta z Account wyłącznie za pośrednictwem publicznego interfejsu i nigdy nie odwołuje się bezpośrednio do ukrytych danych wewnętrznych.
Spróbuj swoich sił
#include <stdio.h>
#include "account.h"
int main() {
// TODO: Wczytaj account_id, deposit1, withdraw_amount, deposit2 i overdraft z wejścia
// TODO: Utwórz konto i wypisz "Account <id> created"
// TODO: Wypisz saldo początkowe
// TODO: Wpłać pierwszą kwotę, wypisz "Deposited <amount>" i nowe saldo
// TODO: Wypłać środki, wypisz "Withdrew <amount>" i zaktualizowane saldo
// TODO: Wpłać drugą kwotę, wypisz "Deposited <amount>" i nowe saldo
// TODO: Spróbuj wypłacić kwotę przekraczającą saldo; jeśli się nie uda, wypisz "Withdrawal failed: insufficient funds"
// TODO: Wypisz saldo końcowe
// TODO: Wypisz "Account <id> closed" i usuń konto
return 0;
}
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania modularnego
Pliki nagłówkoweZabezpieczenia przed wielokrotnym dołączeniemPliki źródłoweFunkcje statycznePodsumowanie: kalkulator modularny4Enkapsulacja
Koncepcja niejawnych wskaźnikówDefiniowanie niejawnych strukturGettery i setteryWalidacja w setterachPowtórka: tajemnicze pudełko2Obiekty i metody
Struktury jako obiektyWskaźnik „self”Poprawność constWskaźnik czy wartośćMetody pomocniczePodsumowanie: menedżer punktów5Projekt: Proste konto bankowe
Konfiguracja projektuImplementacja konta8Polimorfizm
Wskaźniki do funkcji w strukturachSymulowanie metodKoncepcja interfejsuImplementowanie interfejsówIteracja polimorficznaPodsumowanie: Greeter11Wzorce projektowe w C
Wzorzec SingletonWzorzec fabrykiWzorzec iteratoraPodsumowanie: fabryka loggera3Cykl życia obiektu
Wzorzec konstruktoraWzorzec destruktoraInicjalizacja na stosieKopia głębokaPodsumowanie: klasa opakowująca ciąg znaków6Dziedziczenie przez kompozycję
Osadzanie strukturZasada pierwszego elementuDostęp do elementów klasy nadrzędnejKonwersja w górę hierarchiiPodsumowanie: hierarchia kształtów9Projekt: Rysownik kształtów
Przegląd projektuImplementacja kołaImplementacja prostokątaZastosowanie polimorfizmuKontener kształtówPoćwicz samodzielnie: Kompilator C online