Projekt-Finale: Main Loop
Teil des Abschnitts Object Oriented Programming der C-Journey von Coddy — Lektion 27 von 61.
Aufgabe
EinfachHerzlichen Glückwunsch – Sie haben eine vollständige Bankkonto-Bibliothek erstellt! Jetzt ist es an der Zeit, die Rollen zu wechseln. Anstatt der Ersteller der Bibliothek zu sein, werden Sie zum Bibliotheksbenutzer. Ihre Aufgabe ist es, ein Hauptprogramm zu schreiben, das Ihr Account-Modul auf Herz und Nieren prüft.
Stellen Sie sich das wie einen Kunden vor, der eine Bank betritt und eine Reihe von Transaktionen durchführt. Sie erstellen ein Konto, tätigen Ein- und Auszahlungen, prüfen zwischendurch den Kontostand und schließen das Konto schließlich, wenn Sie fertig sind.
Sie werden mit drei Dateien arbeiten:
account.h: Ihre vollständige Header-Datei mit dem opaken TypAccountund allen Funktionsprototypen:create_account,destroy_account,deposit,withdrawundget_balance.account.c: Ihre vollständige Implementierung mit dem verborgenen Struct, dasidundbalanceenthält, sowie allen Funktionsimplementierungen, die Sie im Laufe dieses Projekts erstellt haben.main.c: Hier glänzen Sie! Schreiben Sie ein Programm, das den vollständigen Lebenszyklus eines Bankkontos durch eine realistische Abfolge von Transaktionen demonstriert.
Sie erhalten fünf Eingaben: die account ID (eine Ganzzahl), eine erste Einzahlung, eine Auszahlung, eine zweite Einzahlung und eine versuchte Überziehung (eine Auszahlung, die aufgrund unzureichender Deckung fehlschlagen sollte).
Ihr Hauptprogramm sollte die Geschichte des Lebens dieses Kontos erzählen:
- Erstellen Sie das Konto und geben Sie dies bekannt
- Zeigen Sie den Startkontostand an
- Tätigen Sie die erste Einzahlung und zeigen Sie den neuen Kontostand an
- Zahlen Sie einen Betrag aus und zeigen Sie den aktualisierten Kontostand an
- Tätigen Sie eine weitere Einzahlung und zeigen Sie den Kontostand an
- Versuchen Sie eine Auszahlung, die das Guthaben übersteigt – dies sollte fehlschlagen
- Zeigen Sie den Endkontostand an (unverändert nach der fehlgeschlagenen Auszahlung)
- Schließen Sie das Konto
Geben Sie die Ausgabe in diesem Format aus:
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 closedWobei 2001 die Konto-ID ist und die Beträge Ihre Eingaben widerspiegeln. Formatieren Sie alle Geldwerte mit zwei Dezimalstellen unter Verwendung von %.2f. Die Nachricht für die fehlgeschlagene Auszahlung sollte ausgegeben werden, wenn withdraw den Wert 0 zurückgibt.
Dieses Finale demonstriert alles, was Sie über Kapselung gelernt haben – Ihr Hauptprogramm interagiert mit dem Account ausschließlich über dessen öffentliche Schnittstelle und greift niemals direkt auf die verborgenen internen Daten zu.
Probier es selbst
#include <stdio.h>
#include "account.h"
int main() {
// TODO: account_id, deposit1, withdraw_amount, deposit2 und overdraft von der Eingabe lesen
// TODO: Das Konto erstellen und "Account <id> created" ausgeben
// TODO: Den Startkontostand ausgeben
// TODO: Die erste Einzahlung tätigen, "Deposited <amount>" und den neuen Kontostand ausgeben
// TODO: Guthaben abheben, "Withdrew <amount>" und den aktualisierten Kontostand ausgeben
// TODO: Die zweite Einzahlung tätigen, "Deposited <amount>" und den neuen Kontostand ausgeben
// TODO: Die Überhebung (overdraft) versuchen; falls dies fehlschlägt, "Withdrawal failed: insufficient funds" ausgeben
// TODO: Den endgültigen Kontostand ausgeben
// TODO: "Account <id> closed" ausgeben und das Konto löschen
return 0;
}
Alle Lektionen in Object Oriented Programming
1Grundlagen der modularen Programmierung
Header-DateienInclude GuardsQuelldateienStatische FunktionenWiederholung: Modularer Taschenrechner4Kapselung
Konzept der Opaque PointersOpaque Structs definierenGetter und SetterValidierung in SetternRückblick: Die geheime Box2Objekte und Methoden
Structs als ObjekteDer 'Self'-PointerConst-CorrectnessPointer vs. WertHilfsmethodenZusammenfassung: Point Manager5Projekt: Einfaches Bankkonto
Projekt-SetupImplementierung des Kontos3Objekt-Lebenszyklus
Konstruktor-MusterDestruktor-MusterStack-InitialisierungTiefe KopieRückblick: String-Wrapper6Vererbung durch Komposition
Struct-EinbettungDie First-Member-RegelZugriff auf Parent-MemberUpcastingRückblick: Formenhierarchie9Projekt: Formen-Zeichner
ProjektübersichtKreis-Implementierung