Zwischenspeichern



  • Hallo,

    ich habe mein erstes C++ Programm geschrieben. Bin noch ziemlich frisch dabei, hatte bisher Erfahrung mit C.

    Ich habe mit Hilfe von Klassen und 3 verschiedenen Funktionen ein Kontoverwaltungssystem geschrieben. Mit diesem Programm kann ich 2 Konten (Giro- und Sparkonto verwalten).

    Struktur:

    class ....
    void girokonto ()
    void sparkonto

    void main (void)...

    In den einzelnen Fkt. für Giro- und Sparkonto sind nur eine do ... while schleife und eine switch-case-anweisung.

    Mein Problem ist:
    Ich kann die einzelen Konten aufrufen, ändern. Sobald ich aber wieder in die Hauptauswahl gehe, sind meine Werte für die einzelnen Konten weg.
    Gibt es eine einfache Möglichkeit?

    Vielen Dank



  • Poste mal den ganzen Quellcode, ich hab keine Ahnung was Du meinst!



  • Hier folgt der Quellcode:

    #include <iostream.h>
    #include <conio.h>
    #include <stdlib.h>
    
    class KONTO // Deklaration der KLASSE "KONTO"
    {
       private:
       int KONTOSTAND;
       public:
          KONTO():KONTOSTAND(0){};
       int KONTOSTAND_LESEN(void);
       void KONTOSTAND_ERHOEHEN(int);
       void KONTOSTAND_VERRINGERN(int);
    };
    
    int KONTO::KONTOSTAND_LESEN(void) // Definition der METHODE "KONTOSTAND_LESEN"
    {
       return(KONTOSTAND);
    }
    
    void KONTO::KONTOSTAND_ERHOEHEN(int add)
    {
       KONTOSTAND +=add;
    }
    
    void KONTO::KONTOSTAND_VERRINGERN(int min)
    {
       KONTOSTAND -=min;
    }
    
    void girokonto ();
    void sparkonto ();
    
    void main(void) // Hauptprogramm
    
    {
       KONTO GIROKONTO; // Definition Girokonto
       KONTO SPARKONTO; // Definition Sparkonto
       int eingabe; // Initialisierung von Variablen
    
          do
          {
          system("cls");
          cout <<"\n\t\t*********************************\n";
          cout << "\t\t* K O N T O V E R W A L T U N G *\n"; // Benutzermenü
          cout <<"\t\t*********************************\n\n";
          cout << "\t\tWelches Konto moechten Sie waehlen?\n\n"; // Eingabe Benutzerwunsch
          cout << "\t\t1 Girokonto\n\n";
          cout << "\t\t2 Sparkonto\n\n";
          cout << "\t\t0 Beenden\n\n";
          cout << "Ihre Wahl:";
          cin >> eingabe;
    
             switch(eingabe)
             {
             case 1: girokonto();
             break;
             case 2: sparkonto();
             break;
             default: cout <<"Sie haben eine falsche Eingabe gemacht !!!\n\n";
             break;
             }
          }
          while(eingabe);
    
    } // Programmende !
    
    void girokonto()
    {
       KONTO GIROKONTO;
       int add, min;
       int eingabe1;
    
          do
          {
    
          system("cls");
    
          cout <<"\n\t\t*********************\n";
          cout << "\t\t* G I R O K O N T O *\n"; // Benutzermenü
          cout <<"\t\t*********************\n\n";
          cout << "\t\tWas moechten Sie tun?\n\n";
          cout << "\t\t1 Kontostand lesen\n";
          cout << "\t\t2 Kontostand erhoehen\n";
          cout << "\t\t3 Kontostand verringern\n";
          cout << "\t\t0 Beenden\n\n";
          cin >> eingabe1;
    
             switch(eingabe1)
             {
             case 1: cout << GIROKONTO.KONTOSTAND_LESEN() << "\n\n";
             break;
             case 2: cout << "Bitte geben Sie einen Wert ein: ";
                   cin >> add;
                   GIROKONTO.KONTOSTAND_ERHOEHEN(add);
             break;
             case 3: cout << "Bitte geben Sie einen Wert ein: ";
                   cin >> min;
                   GIROKONTO.KONTOSTAND_VERRINGERN(min);
             break;
             }
    
          }
          while(eingabe1);
    
    }
    
    void sparkonto()
    {
       KONTO SPARKONTO;
       int add, min;
       int eingabe1;
    
          do
          {
    
          system("cls");
    
          cout <<"\n\t\t*********************\n";
          cout << "\t\t* S P A R K O N T O *\n"; // Benutzermenü
          cout <<"\t\t*********************\n\n";
          cout << "\t\tWas moechten Sie tun?\n\n";
          cout << "\t\t1 Kontostand lesen\n";
          cout << "\t\t2 Kontostand erhoehen\n";
          cout << "\t\t3 Kontostand verringern\n";
          cout << "\t\t0 Beenden\n\n";
          cin >> eingabe1;
    
             switch(eingabe1)
             {
    
             case 1: cout << SPARKONTO.KONTOSTAND_LESEN() << "\n\n";
             break;
             case 2: cout << "Bitte geben Sie einen Wert ein: ";
                   cin >> add;
                   SPARKONTO.KONTOSTAND_ERHOEHEN(add);
             break;
             case 3: cout << "Bitte geben Sie einen Wert ein: ";
                   cin >> min;
                   SPARKONTO.KONTOSTAND_VERRINGERN(min);
             break;
             }
    
          }
          while(eingabe1);
    }
    

    So funktioniert es ja, sobald ich aber in die Main gehe, also in die Auswahl, vergißt er alle Werte.

    [ Dieser Beitrag wurde am 03.06.2003 um 02:19 Uhr von combifreak editiert. ]

    [ Dieser Beitrag wurde am 04.06.2003 um 16:53 Uhr von HumeSikkins editiert. ]



  • Wenn du die Werte in einer funktion behalten möchtest, dann schreib ein Static in die Funktion, z.b. bei

    void girokonto()
    {
    KONTO GIROKONTO;

    bin static vor das KONTO erledigt dies.



  • Vielen Dank

    [ Dieser Beitrag wurde am 03.06.2003 um 06:04 Uhr von combifreak editiert. ]



  • Habe noch ein Problem dazu.

    Ich möchte nun noch eine Überweisung von GIRO -> SPAR und SPAR -> GIRO realisieren.

    Kann mir da auch jemand einen Tip geben?!

    2. Problem. Was muß ich bei Visual Studio 6.0 beachten, wenn ich die Variablen als float deklarieren will. Ich habe das mal probiert, bringt er dann aber Fehler.

    Danke



  • 1:
    vom einen Konto abziehen und aufs andere draufrechnen. Wenn die KONTEN static sind is das ja kein Problem mehr.
    Am besten machst du das direkt über die klassen.

    void KONTOSTAND_ERHOEHEN(int);
    void KONTOSTAND_VERRINGERN(int);

    und dann halt für die entspr. Klasse erhöhen und vermindern.

    2:
    Eigentlich garnix. Was gabs denn fürn Fehler?



  • Normal kann ich doch mit einem Float-Wert auch z.B. 20,5 eingeben. Sobald ich das aber mache, läuft das Programm endlos durch.

    Das Problem mit dem Überweisen:

    void girokonto()
    {
       static KONTO GIROKONTO;
       static KONTO SPARKONTO;
       float add, min, ueberw;
       int eingabe1;
    
          do
          {
    
          system("cls");
    
          cout <<"\n\t\t*********************\n";
          cout << "\t\t* G I R O K O N T O *\n"; // Benutzermenü
          cout <<"\t\t*********************\n\n";
          cout << "\t\tWas moechten Sie tun?\n\n";
          cout << "\t\t1 Kontostand lesen\n";
          cout << "\t\t2 Kontostand erhoehen\n";
          cout << "\t\t3 Kontostand verringern\n";
          cout << "\t\t4 Ueberweisung auf Sparkonto\n";
          cout << "\t\t0 Beenden\n\n";
          cin >> eingabe1;
    
             switch(eingabe1)
             {
             case 1: cout << GIROKONTO.KONTOSTAND_LESEN() << "\n\n";
             break;
             case 2: cout << "\nBitte geben Sie einen Wert ein: ";
                   cin >> add;
                   GIROKONTO.KONTOSTAND_ERHOEHEN(add);
             break;
             case 3: cout << "\nBitte geben Sie einen Wert ein: ";
                   cin >> min;
                   GIROKONTO.KONTOSTAND_VERRINGERN(min);
             break;
             case 4: cout <<"\nWieviel wollen Sie überweisen? ";
                   cin >> ueberw;
                   GIROKONTO.KONTOSTAND_VERRINGERN(min);
                   //SPARKONTO.KONTOSTAND_ERHOEHEN(add);
             break;
             }
    
          }
          while(eingabe1);
    

    Sobald ich einen Wert bei Überweisen eingebe, steht danach bei Kontostand z.B. für Girokonto irgendeine utopische Zahl. Was kann ich da tun?

    Bitte Code-Tags verwenden!

    [ Dieser Beitrag wurde am 04.06.2003 um 16:53 Uhr von HumeSikkins editiert. ]



  • 20.5 mit Kommapunkt



  • nochwas nebenbei (eigentlich ot hier, aber nachdem du neu bist, geb ich dir den tip)

    - kleinschreibung ist im allgemeinen besser/angenehmer zu lesen als GROßSCHREIBUNG, die verwendet man gerne bei #define's
    - mittlerweile ist es **int main (int x, char args) {} und nicht mehr das rum-ge-voide
    - auch <iostream> nicht <iostream.h>
    - void ist ein mülldatentyp, sollte man nur verwenden, wenn man sich sicher ist (nur so allgemein gesagt)
    - instanzen von klassen gelten nur innerhalb ihres blockes ( {} )
    - wenn du mal die STL verwendest, nicht ein using namespace std; oder das jeweilige std:: scope vergessen



  • Danke für die Tips.
    Aber wie kann ich das nun mit dem Überweisen realisieren? Die von mir angegebene Prozedur funktioniert leider nicht.



  • int main (int x, char **args)

    Heißt es nicht argc und argv? 😕



  • Heißt es nicht argc und argv?

    Du kannst die Parameter auch Krokodil und Schweinchen nennen. argc und argv sind nur zwei Namen, die häufig in diesem Zusammenhang verwendet werden. Genauso wie der Index einer Zählschleife fast überall i heißt. Es geht aber auch mit jedem anderen Bezeichner.


Anmelden zum Antworten