C++Banking Programm laden/speichern

Dieses Thema C++Banking Programm laden/speichern im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von Dr-Hammer, 14. Jan. 2007.

Thema: C++Banking Programm laden/speichern Hallo, ich versuche grade ein Onlinebanking Programm zu programmieren. Aber ich hänge nun irgendwie fest. ich...

  1. Hallo,
    ich versuche grade ein Onlinebanking Programm zu programmieren. Aber ich hänge nun irgendwie fest.

    ich brauche 3 konton, die sollen in einer .txt gespeichert und wieder geladen werden. aber da liegt mein problem. ich bin mit meinem latein am ende. Habe versucht es mit einer Funktion zu machen, das eventuell die Kontonanzahl unbegrenzt ist. aber ich komme nicht weiter.
    wäre für jede hilfe sehr sehr dankebar!!!
     
  2. Ich grüble schon eine Weile darüber nach, was ich Dir schreiben soll. Einerseits kennst Du ja schon viele wichtige Dinge (Variablen, Funktionen, bedingte Verzweigung, Schleifen usw.), andererseits gibt es ganz grundlegende Lücken bezüglich mindestens ebenso wichtiger Themen wie Datenstrukturen, objektorientierte Programmierung, Programmplanung etc. Zumindest bilde ich mir ein, dies an Deiner Herangehensweise ablesen zu können. Widersprich mir ruhig, wenn ich falsch liege.
    Selbst wenn man das Programm flicken und für die Verwaltung einiger bzw. (fast) beliebig viele Konten fit machen würde (z.B., indem man die Konten in einem Array, einer eigenen Liste oder einem STL-Container ablegt), wäre es immer noch nicht einmal halb-gar oder die Grundlage für einen weiteren Ausbau.
    So, wie es ist, funktioniert es gar nicht (nicht wegen der drei Konten). Eine Endlosschleife gleich ziemlich zu Beginn ... Abgesehen davon: Deine Konto-Eigentümer haben Namen, die aus einem Zeichen bestehen; globale Variablen sind keine gute Idee; es wird bei Cursor runter abgebrochen (wenn es funktionieren würde), im Menü steht jedoch 3. Beenden; Du beachtest nicht, ob ein Konto aktiv ist; es ist kein rechter Plan erkennbar, wie Du Menüs und Untermenüs handhaben willst; das Ganze ist eher C als C++ etc. pp. Richtig angesehen habe ich es mir noch nicht.

    Mein Vorschlag - wenn es nicht supereilig ist und auf Biegen und Brechen zum Laufen gebracht werden muss -:
    Lehne Dich zurück, lies ein Buch über C++ (und objektorientierte Programmierung) oder zumindest ein wenig im Internet, z.B.
    http://ladedu.com/cpp/
    http://www.volkard.de/vcppkold/inhalt.html
    http://www.parashift.com/c++-faq-lite/

    Grundlegenden Dinge (s.o.) kennst Du ja, wie gesagt, das ist schon mal eine ganze Menge. Schau' Dir noch mal Strings an, dynamische Speicherverwaltung (die ist auch schon für Dein Kontoprogramm notwendig, wenn die Anzahl der Konten vorher nicht bekannt ist), grundlegende Datenstrukturen (wie funktioniert eine Liste u.ä.) sowie Klassen und was damit zusammen hängt. Werfe früher oder später auch einen Blick oder zwei auf Templates und die STL.

    Vor allem aber plane Dein Kontoprogramm, bevor Du anfängst, Code einzugeben, auch wenn es sich um ein kleines Übungs-Projekt handelt.
    Das ist jetzt wahrscheinlich alles nicht sehr hilfreich, aber das Beste, was mir eingefallen ist. Und mögliche Lösungen des von Dir angesprochenen Problems, zumindest was mehrere Konten angeht, sind ja auch dabei. ;)
     
  3. erstmal danke für die tipps. das problem ist. das ich dieses programm nicht alleine mache. den quellcode oben muss ich leider so verwenden, daher auch meine probleme.
    der quellcode so wird nicht funktionieren, das ist klar, da die funktionalität erst durch die gui und deren quellcode gegeben wird.
    ich hatte mir vielleicht ne einfacherer lösung mit append etc vorgestellt. allerdings bin ich auch kein genie was c++ angeht. die links die du mir gegeben hast sind sehr hilfreich, dafür danke ich dir schoneinmal. das problem ist, es sollte nächste woche fertig sein, da bald meine klausuren anfangen und ich dann keine zeit bzw sehr wenig zeit für dieses programm aufbringen kann.
    ein template habe ich auch schon mal in betracht gezogen, leider habe ich noch kein passendes gefunden, da bei google eben nicht alle suchanfragen immer erfolgreich sind.
     
  4. Aha, also doch der Fall es ist eilig und muss auf Biegen und Brechen zum Laufen gebracht werden ...
    Ich würde vorschlagen, dass Du dann mehr oder weniger bei C bleibst und es möglichst einfach hältst (s.u.). Auf Kompatibilität zu anderen Compilern/Betriebssystemen musst Du sicher auch nicht achten.

    Zu den Konten und deren permanenter Speicherung: Vielleicht erst einmal in einem Array ablegen? Das bringt Dir
    natürlich keine zur Laufzeit variable Anzahl von Konten, macht aber die weitere Verarbeitung einfacher.

    Code:
    #include <cassert>
    
    const int nAccounts = 3;
    const char* fileName = accounts.txt;
    
    struct account {
      char name;
      double money;
      int pin;
      int act;
    };
    
    account accs[nAccounts];
    
    Damit sonst nichts geändert werden muss, kannst Du die Funktionen get_acc und set_acc umschreiben, so dass
    statt der Variablen acc1, acc2, acc3 das Array verwendet wird:

    Code:
    // accIdx: 1 .. nAccounts
    int get_acc(int accIdx) {
    	
      if(accIdx > nAccounts)
        return 2;
    		
      assert(accIdx > 0);
    
      accIdx -= 1;
    	
      if (accs[accIdx].act = 1) {
        act_acc.pin =   accs[accIdx].pin;
        act_acc.money = accs[accIdx].money;
        act_acc.name =  accs[accIdx].name;			
        act_acc.act =   accs[accIdx].act;
        return 1;
      } else
        return 0;
    }
    
    // accIdx: 1 .. nAccounts
    void set_acc(int accIdx) {
    
        assert(accIdx > 0 && accIdx <= nAccounts);
    
        accIdx -= 1;
    
        accs[accIdx].pin   = act_acc.pin;
        accs[accIdx].act   = act_acc.act;
        accs[accIdx].money = act_acc.money;
        accs[accIdx].name  = act_acc.name;	
    }
    
    Index von 1 .. nAccounts (also hier 3) statt wie normal von 0 .. nAccounts-1, damit es ohne Einfluss auf den Rest
    des Programms bleibt.

    Vorgegeben:
    Speichern in C-Manier kannst Du die Konten z.B., indem Du eine Datei öffnest (der Inhalt einer vorhandenen wird dabei gelöscht)

    Code:
    int store() {
    
      FILE* fh;
      if((fh = fopen(fileName, wt)) == NULL)
        return 0;
    
    ...
    
    in einer Schleife fprintf benutzt

    Code:
    // Hier 0 .. nAccounts-1, da wir direkt auf das Array zugreifen
    for(int accIdx = 0; accIdx < nAccounts; accIdx++)
      // TODO: Fehlerprüfung!
      fprintf(fh, %c\n%lf\n%d\n%d\n, accs[accIdx].name, accs[accIdx].money, accs[accIdx].pin, accs[accIdx].act);
    
    und die Datei wieder schließt

    Code:
      fclose(fh);
      return 1;
    }
    
    Lesen: Auch wieder die Datei öffnen, aber mit rt

    Code:
    int load() {
      FILE* fh;
      if((fh = fopen(fileName, rt)) == NULL)
        return 0;
    
    mit fscanf einlesen

    Code:
    for(int accIdx = 0; accIdx < nAccounts; accIdx++)
      // TODO: Fehlerprüfung!
      fscanf(fh, %c %lf %d %d , &accs[accIdx].name, &accs[accIdx].money, &accs[accIdx].pin, &accs[accIdx].act);
    
    und schließen wie oben

    Code:
      fclose(fh);
      return 1;
    }
    
    Die Datei wird so geschrieben, dass man sie in einem Texteditor einfach lesen kann (Zeilenumbrüche). Darum bitte auf die Leerzeichen im fscanf-Formatstring achten (%c %lf %d %d ), sonst wird Müll gelesen. Zumindest den Rückgabewert von fprintf und fscanf solltest Du überprüfen (in der Doku oder im Internet nachschauen, was zurückgegeben wird). Auf Dinge wie Header, Größencheck und Plausibilitätsprüfungen werden store/load wohl verzichten müssen, denke ich.

    BTW: Ausprobiert habe ich da aber nichts, auch nicht groß nach weiteren Problemen im vorhandenen Code geschaut. Da muss ohnehin noch einiges gemacht werden. Achte darauf, dass bei einer Änderung der Struktur account (z.B. Datentyp von account.name von Einzelcharakter zu Zeichenkette) u.U. nicht nur die Parameter einiger Funktionen, sondern auch store() und load() geändert werden müssen.
     
  5. Danke, läuft jetzt ;D
     
Die Seite wird geladen...

C++Banking Programm laden/speichern - Ähnliche Themen

Forum Datum
Dateien mit bestimmten Programmen öffnen, z.B. pdf oder jpg Windows 10 Forum 10. Nov. 2016
KB 958559 / Eigenständiges Windows Update-Installationsprogramm Windows 7 Forum 30. Okt. 2016
Downloads und Programme installieren verbieten Windows 10 Forum 28. Sep. 2016
Dateien mit bestimmten Programm öffnen Windows 10 Forum 27. Sep. 2016
Startpartition und Programme auf unterschiedlichen Platten Windows 10 Forum 23. Sep. 2016