[BCB-6]Ausgabe in Binärdatei

wedhead

Mitglied
Hi @ all !

Benutze den Borland C++ Builder 6...
Ich bin dabei ein Consolenprogramm zu schreiben das wie eine Bank aufgebaut sein soll...

Dazu will ich die verschiedenen Daten wie kontonummer, inhaber, pin, kontostand usw in eine binärdatei "konten.dat" abspeichern um sie später wieder auslesen zu können.

Ich denke das es mit fstream/iostream funktionieren müsste, habe aber keine ahnung wie ich das angehen soll.

Hoffe ihr könnt mir weiterhelfen.

greez

Weedy



Quelltext:

Code:
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
#pragma argsused
//---------------------------------------------------------------------------

//Klassendefinition
class standartk
{
  double kontostand;
  int kontonummer;
  int bankleizahl;
  char* inhaber;
  int pin;

  public:

//Konstruktoren
standartk (double startwert, int ktn, int blz, char* name, int code)
  {
    kontostand=startwert;
    kontonummer=ktn;
    bankleizahl=blz;
    inhaber=name;
    pin=code;
}


standartk ()
{
}


//Destruktor
~standartk()
{
cout<<endl<<"Kontostand = "<<kontostand<<endl;
}


//Ausgabe Kontostand
  int aus()
  {
    return kontostand;
  }

//Ausgabe Kontonummer
  int ktnummer()
  {
    return kontonummer;
  }


//Ausgabe Kontoinhaber
  char* aktinhaber()
  {
   return inhaber;
  }


//Ausgabe Pin
  int apin()
  {
  return pin;
  }


//Ausgabe BLZ
    int blzahl()
  {
    return bankleizahl;
  }


//Prozedur zum einzahlen
    int einzahlen (int ebetrag)
  {
    if (ebetrag<0)
    {
    ebetrag=0;
    cout<<"Keine negative Einzahlung möglich"<<endl;
    }
    else kontostand=kontostand+ebetrag;
   return kontostand;
  }


//Prozedur zum abheben
  int auszahlen (int abetrag)
  {
    if (abetrag<0)
    {
    abetrag=0;
    cout<<"Keine negative Auszahlung möglich"<<endl;
    }
    else if ((kontostand-abetrag)<-1000)
    {
      abetrag=(kontostand+1000);
      cout<<"Nur 1000€ Dispo"<<endl;
    }
    kontostand=(kontostand-abetrag);
  return kontostand;
  }


//Prozedur zum Pin ändern
  int paendern (int npin)
  {
  int npin1;
  int npin2;
    if (npin==pin)
    {
    cout<<endl<<"Bitte gewuenschten Pin eingeben: ";cin>>npin1;
    cout<<"Bitte gewuenschten Pin wiederholen: ";cin>>npin2;cout<<endl;
    if (npin1==npin2)
        {
        pin=npin1;
        }
    else cout<<endl<<"Pins stimmen nicht überein!"<<endl<<endl;
    }
    else cout<<endl<<"Pin-Code nicht korrekt"<<endl<<endl;
   return pin;
  }


//Prozedur zum Namen ändern
  char* naendern (char* id)
  {
  inhaber=id;
  return inhaber;
  }


};


//Anfangswerte für Konstruktor
standartk S1(500, 130049638, 54051990, "Jens Stattmueller", 1234);

//Hilfsvariablen
int ez;
int az;
int p;
char taste;
char* n;

//hauptprogramm
int main(int argc, char* argv[])
{
//Sprungmarke 1
loop1:

//Hauptmenü
 do
  {
    cout<<endl;
    cout<<"###############################"<<endl;
    cout<<"#                             #"<<endl;
    cout<<"#      Weedys Bank v1.3.6     #"<<endl;
    cout<<"#                             #"<<endl;
    cout<<"###############################"<<endl;
    cout<<"#                             #"<<endl;
    cout<<"# Kontostand anzeigen ----> K #"<<endl;
    cout<<"# Kontodaten anzeigen ----> D #"<<endl;
    cout<<"# Auf Konto Einzahlen ----> E #"<<endl;
    cout<<"# Von Konto Abheben ------> A #"<<endl;
    cout<<"# Kontodaten aendern -----> C #"<<endl;
    cout<<"# Beenden ----------------> B #"<<endl;
    cout<<"#                             #"<<endl;
    cout<<"###############################"<<endl<<endl;
    cout<<endl<<"Was moechten Sie? ";cin>>taste;

    switch (taste)
    {

    case 'k':case 'K': cout<<"Bitte geben Sie ihren Pin ein: ";cin>>p;clrscr();if (p==S1.apin()){cout<<endl<<"Ihr Kontostand belaeuft sich auf: "<<S1.aus()<<" eur"<<endl<<endl<<endl;} else {cout<<"Pin-Code nicht korrekt!"<<endl<<endl;}break;
    case 'd':case 'D': cout<<"Bitte geben Sie ihren Pin ein: ";cin>>p;clrscr();if (p==S1.apin()){cout<<endl<<"Kontonummer: "<<S1.ktnummer()<<endl<<"Bankleizahl: "<<S1.blzahl()<<endl<<"Kontoinhaber: "<<S1.aktinhaber()<<endl<<"Pin: "<<S1.apin()<<endl<<endl<<endl;} else {cout<<"Pin-Code nicht korrekt!"<<endl<<endl;} break;
    case 'e':case 'E': cout<<endl<<"Wieviel moechten Sie einzahlen? ";cin>>ez;ez=S1.einzahlen(ez);break;
    case 'a':case 'A': cout<<"Bitte geben Sie ihren Pin ein: ";cin>>p;cout<<endl;if (p==S1.apin()){cout<<endl<<"Wieviel moechten Sie abheben? ";cin>>az;clrscr();S1.auszahlen(az);} else {cout<<"Pin-Code nicht korrekt!"<<endl<<endl;}break;
    case 'c':case 'C': cout<<"Bitte geben Sie ihren Pin ein: ";cin>>p;cout<<endl;if (p==S1.apin()){clrscr();do
  {
//Untermenü 1
    cout<<endl;
    cout<<"###############################"<<endl;
    cout<<"#                             #"<<endl;
    cout<<"#      Weedys Bank v1.3.6     #"<<endl;
    cout<<"#                             #"<<endl;
    cout<<"###############################"<<endl;
    cout<<"#     Kontodaten aendern:     #"<<endl;
    cout<<"###############################"<<endl;
    cout<<"#                             #"<<endl;
    cout<<"# Kontodaten anzeigen ----> D #"<<endl;
    cout<<"# Pin-Code aendern -------> P #"<<endl;
    cout<<"# Namen aendern ----------> N #"<<endl;
    cout<<"# Zurueck zum Hauptmenue--> Z #"<<endl;
    cout<<"# Beenden ----------------> B #"<<endl;
    cout<<"#                             #"<<endl;
    cout<<"###############################"<<endl<<endl;
    cout<<endl<<"Was moechten Sie? ";cin>>taste;

    switch (taste)
    {
    case 'd':case 'D': clrscr();cout<<endl<<"Kontonummer: "<<S1.ktnummer()<<endl<<"Bankleizahl: "<<S1.blzahl()<<endl<<"Kontoinhaber: "<<S1.aktinhaber()<<endl<<"Pin: "<<S1.apin()<<endl<<endl<<endl;break;
    case 'p':case 'P': clrscr();cout<<endl<<"Bitte aktuellen Pin eingeben: ";cin>>p;S1.paendern(p);break;
    case 'n':case 'N': clrscr();cout<<endl<<"Bitte neuen Namen eingeben: ";cin>>n;S1.naendern(n);break;
    case 'z':case 'Z': clrscr();goto loop1;
    }
  }
//Abbruchbedingung Untermenü1
  while (taste !='B' && taste !='b'); } else {cout<<"Pin-Code nicht korrekt!"<<endl<<endl;}
    }
  }
//Abbruchbedingung Hauptmenü
  while (taste !='B' && taste !='b');
        getch();
}
 
um das Prinzip der Datenkapselung zu wahren, solltest du alle Eigenschaften (inhaber etc) als private deklarieren und dann methoden im public-bereich schreiben um auf die Daten zuzugreifen... z.b Get_Konto_Info/Set_Konto_Info oder so....


@topic:

du kannst mit einem fstream-objekt arbeiten, musst halt bei der öffnung der datei angeben das du im binär-modus speichern willst...

Code:
fstream file(/*Dateiname*/,ios::out | ios::binary)
 
THX erstma, könnteste mir vlt ein beispielcode schreiben wie ich die ganzen daten in ne ninärdatei bekomm, wäre dir sehr verbunden

greez

weedy
 
Zurück