Menu
Coddy logo textTech

Zusammenfassung - Bankkonto-Manager

Teil des Abschnitts Objektorientierte Programmierung der C++-Journey von Coddy. Lektion 33 von 104.

challenge icon

Aufgabe

Einfach

Lassen Sie uns einen vollständigen Bankkontomanager erstellen, der alle Konzepte für Klasseneigenschaften zusammenführt, die Sie in diesem Kapitel gelernt haben: private Member mit Gettern und Settern, const-Memberfunktionen, mutable Member, statische Variablen und Methoden sowie Friend-Funktionen.

Sie werden zwei Dateien erstellen, um Ihren Code zu organisieren:

  • BankAccount.h: Definieren Sie eine BankAccount-Klasse, die Kontodaten mit ordnungsgemäßer Kapselung verwaltet. Ihre Klasse sollte Folgendes enthalten:
    • Private Member: accountNumber (string), ownerName (string), balance (double) und ein mutable int queryCount, um zu verfolgen, wie oft der Kontostand abgefragt wurde
    • Ein privates statisches Member totalAccounts, um zu verfolgen, wie viele Konten existieren
    • Einen Konstruktor, der die Kontonummer, den Namen des Eigentümers und das Anfangsguthaben entgegennimmt. Er sollte queryCount mit 0 initialisieren und totalAccounts inkrementieren
    • Const-Getter: getAccountNumber(), getOwnerName() und getBalance() — der Getter für das Guthaben sollte queryCount bei jedem Aufruf inkrementieren
    • Ein const-Getter getQueryCount(), der zurückgibt, wie oft das Guthaben abgefragt wurde
    • Eine deposit(double amount)-Methode, die den Betrag nur dann zum Guthaben addiert, wenn der Betrag positiv ist
    • Eine withdraw(double amount)-Methode, die den Betrag nur dann vom Guthaben abzieht, wenn der Betrag positiv ist und das aktuelle Guthaben nicht übersteigt
    • Eine statische Methode getTotalAccounts(), die die Gesamtzahl der erstellten Konten zurückgibt
    • Deklarieren Sie eine Friend-Funktion transfer(BankAccount& from, BankAccount& to, double amount), die Geld zwischen Konten transferiert — sie sollte nur transferieren, wenn der Betrag positiv ist und die Quelle über ausreichende Mittel verfügt

    Definieren Sie das statische Member und die Friend-Funktion nach der Klassendefinition.

  • main.cpp: Demonstrieren Sie das Zusammenwirken all dieser Funktionen. Lesen Sie zwei Namen von Eigentümern und zwei Anfangsguthaben von der Eingabe ein (insgesamt vier Zeilen: name1, balance1, name2, balance2), dann:
    • Erstellen Sie zwei BankAccount-Objekte mit den Kontonummern "ACC001" und "ACC002"
    • Geben Sie "Total accounts: <count>" aus
    • Geben Sie "<name>: $<balance>" für das erste Konto aus
    • Geben Sie "<name>: $<balance>" für das zweite Konto aus
    • Zahlen Sie 500.0 auf das erste Konto ein
    • Geben Sie "After deposit - <name>: $<balance>" für das erste Konto aus
    • Transferieren Sie 300.0 vom ersten Konto auf das zweite unter Verwendung der Friend-Funktion
    • Geben Sie "After transfer:" aus
    • Geben Sie " <name>: $<balance>" für das erste Konto aus
    • Geben Sie " <name>: $<balance>" für das zweite Konto aus
    • Geben Sie "Query count for <name>: <count>" für das erste Konto aus

Formatieren Sie alle Guthabenwerte mit zwei Dezimalstellen unter Verwendung von std::fixed und std::setprecision(2) aus <iomanip>. Konvertieren Sie die Guthabeneingaben mit std::stod() von Strings in Doubles.

Vergessen Sie nicht die Header-Guards in Ihrer Header-Datei und binden Sie <string> sowie <iostream> dort ein, wo sie benötigt werden.

Probier es selbst

#include <iostream>
#include <string>
#include <iomanip>
#include "BankAccount.h"

int main() {
    // Eingabe lesen
    std::string name1, name2;
    std::string balance1Str, balance2Str;
    
    std::getline(std::cin, name1);
    std::getline(std::cin, balance1Str);
    std::getline(std::cin, name2);
    std::getline(std::cin, balance2Str);
    
    double balance1 = std::stod(balance1Str);
    double balance2 = std::stod(balance2Str);
    
    // Ausgabeformatierung auf 2 Dezimalstellen festlegen
    std::cout << std::fixed << std::setprecision(2);
    
    // TODO: Erstelle zwei BankAccount-Objekte mit den Kontonummern "ACC001" und "ACC002"
    
    // TODO: Gib "Total accounts: <count>" aus
    
    // TODO: Gib "<name>: $<balance>" für das erste Konto aus
    
    // TODO: Gib "<name>: $<balance>" für das zweite Konto aus
    
    // TODO: Zahle 500.0 auf das erste Konto ein
    
    // TODO: Gib "After deposit - <name>: $<balance>" für das erste Konto aus
    
    // TODO: Überweise 300.0 vom ersten auf das zweite Konto unter Verwendung der friend-Funktion
    
    // TODO: Gib "After transfer:" aus
    
    // TODO: Gib "  <name>: $<balance>" für das erste Konto aus (beachte die Einrückung um 2 Leerzeichen)
    
    // TODO: Gib "  <name>: $<balance>" für das zweite Konto aus (beachte die Einrückung um 2 Leerzeichen)
    
    // TODO: Gib "Query count for <name>: <count>" für das erste Konto aus
    
    return 0;
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-C++-Compiler