[C/C++] Hilfe beim Speichern der Eingaben

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von hi05d, 10. Januar 2007 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 10. Januar 2007
    Hilfe beim Speichern der Eingaben

    Hallo.

    Ich bin dabei ein Adressverwaltungsprogramm in C/C++ zu schreiben und bin jetzt an den Punkt gekommen das das Programm die Eingaben die man gemacht hat in einer Datei speichern soll.


    Code:
    #include <iostream.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <string.h>
    #include <stdio.h>
    using namespace std;
    
    
    
    FILE *fp1;
    char dateiname[30];
    
    struct Adress
    {
     string Name;
     string Vorname;
     float Postleitzahl;
     string Wohnort;
     string Srasse;
     float Hausnummer;
     int Telefonnummer;
     string EMailAdresse;
     string Geburtsdatum;
    
    };
    
    struct mpadressbuch
    {
     char zeichen;
     int zahl;
    };
    
    struct mpadressbuch test[4];
    
    void strukturladen();
    void neuereintrag();
    void alleszeigen();
    void strukturspeichern();
    void set_Adress(int,string*,string*,float*,string*,string*,float*,int*,string*,string*);
    void get_Adress(int,string,string,float,string,string,float,int,string,string);
    
    void main()
    
    {
     int ausw;
     do
     {
     system("cls");
     cout<< "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
     cout<< "!!!!!!!!!!!!!!!!!!!!!!!!!!! Willkommen im MP-Adressbuch !!!!!!!!!!!!!!!!!!!!!!!!!!";
     cout<< "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n"<<endl;
     cout<< "1. Adressen Laden\n"<<endl;
     cout<< "2. Neue Adresse hinzufuegen\n"<<endl;
     cout<< "3. Vorhandene Adressen anzeigen\n"<<endl;
     cout<< "4. Adressen speichern\n"<<endl;
     cout<< "5. Programm beenden\n\n"<<endl;
     cout<< "Ihre Auswahl: ";
     cin >> ausw;
    
     switch(ausw)
     {
     case 1:
     strukturladen();
     break;
     case 2:
     neuereintrag();
     break;
     case 3:
     alleszeigen();
     break;
     case 4:
     strukturspeichern();
     break;
     case 5:
     break;
     default:
     cout<<"Falsche Auswahl! Bitte korrigieren!\n"<<endl;
     cout<<"Weiter mit beliebiger Taste"<<endl;
     getch();
     }
     }
     while(ausw!=5);
    }
    
    void strukturladen()
    {
     int i;
     cout<<"\n\nBitte geben Sie den Namen einer bestehenden Datei an: --> "<<endl;
     cin >>dateiname;
     fp1 = fopen(dateiname,"r");
     if(fp1!=NULL)
     {
     for(i=0;i<=3;i++)
     {
     fread(&test[i], sizeof(Adress), 1, fp1);
     }
     fclose(fp1);
     cout<<"Lesen erfolgreich\n\n"<<endl;
     }
     else
     {
     cout<<"Fehler beim Oeffnen von: \n\n"<<dateiname<<endl;
     }
     cout<<"Weiter mit beliebiger Taste"<<endl;
     getch();
    }
    
    
    void strukturspeichern()
    {
     int i;
     cout<<"\n\nBitte geben Sie den Namen fuer die zu speichernde Datei an: "<<endl;
     cin >> dateiname;
     fp1 = fopen(dateiname,"w");
     for(i=0;i<=3;i++)
     {
     fwrite(&test[i], sizeof(Adress), 1, fp1);
     }
     fclose(fp1);
     cout<<"Schreiben erfolgreich\n\n"<<endl;
     cout<<"Weiter mit beliebiger Taste"<<endl;
     getch();
    }
    void neuereintrag()
    {
    
    
     int a, i;
     char ant;
     cout <<"Bitte geben sie die Anzahl der Personen an!!!"<<endl;
     cin >> a;
    
     const index = 1000 ;
    
     struct Adress gruppe[index];
    
     for (i = 0; i <= a - 1; i++)
     {
     set_Adress(i,&gruppe[i].Name,&gruppe[i].Vorname,&gruppe[i].Postleitzahl,&gruppe[i].Wohnort,&gruppe[i].Srasse,&gruppe[i].Hausnummer,&gruppe[i].Telefonnummer,&gruppe[i].EMailAdresse,&gruppe[i].Geburtsdatum);
     }
    
     cout<<"\n\nWeiter mit Enter"<<endl;
     getch();
    
    }
    
    
    void set_Adress(int i1,string* a,string* b,float* c,string* d,string* e,float* f,int* g,string* h,string* x)
    {
    
     cout << "Bitte geben Sie die Daten ein fuer die " << i1+1 << ". Person!" << endl;
    
     cout << "Name: ";
     cin >> *a;
     cout << "Vorname: ";
     cin >> *b;
     cout << "Postleitzahl: ";
     cin >> *c;
     cout << "Wohnort: ";
     cin >> *d;
     cout << "Strasse: ";
     cin >> *e;
     cout << "Hausnummer: ";
     cin >> *f;
     cout << "Telefon-Nummer: ";
     cin >> *g;
     cout << "E-Mail-Adresse: ";
     cin >> *h;
     cout << "Geburtsdatum: ";
     cin >> *x;
    
    }
    
    
    void get_Adress(int i2,string j,string k,float l,string m,string n,float o,int p,string q,string r)
    {
    
     cout << "Die Daten fuer die " << i2+1 << ". Person!" << endl;
    
     cout << "Name: "<<j<<endl;
     cout << "Vorname: "<<k<<endl;
     cout << "Postleitzahl: "<<l<<endl;
     cout << "Wohnort: "<<m<<endl;
     cout << "Strasse: "<<n<<endl;
     cout << "Hausnummer: "<<o<<endl;
     cout << "Telefon-Nummer: "<<p<<endl;
     cout << "E-Mail-Adresse: "<<q<<endl;
     cout << "Geburtsdatum: "<<r<<endl;
    
    }
    
    void alleszeigen()
    {
     int i, a;
     system("cls");
     const index = 1000 ;
     struct Adress gruppe[index];
     cout <<"Bitte geben sie die Anzahl der Personen an die sie sehen wollen!!!"<<endl;
     cin >> a;
     for (i = 0; i <= a - 1; i++)
     {
     get_Adress(i,gruppe[i].Name,gruppe[i].Vorname,gruppe[i].Postleitzahl,gruppe[i].Wohnort,gruppe[i].Srasse,gruppe[i].Hausnummer,gruppe[i].Telefonnummer,gruppe[i].EMailAdresse,gruppe[i].Geburtsdatum);
     }
    
     cout<<"\n\nWeiter mit Enter"<<endl;
     getch();
    }
    
    Hoffe ihr könnt mir helfen.
    Gruß
    hi05d
     
  2. 10. Januar 2007
    AW: Hilfe beim Speichern der Eingaben

    Also ich würds mit dem fstream machen... ich hab mal schnell was ähnliches wie deins programmiert.
    Wichtig ist, dass du es jeweils als "binary" speicherst/lädst, da sonst das mit der Struktur nicht funktioniert.
    Code:
    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    struct Addressen
    {
     char Vorname[50];
     char Nachname[50];
     char Strasse[50];
     int Hausnummer;
     int PLZ;
     char Stadt[50];
    };
    
    void Laden(void);
    
    int main(int argc, char *argv[])
    {
     cout << "Sollen die alten Eintraege geladen werden (1) oder wollen Sie weitere Eintraege hinzufuegen?";
     char Auswahl;
     cin >> Auswahl;
     if(Auswahl == '1')
     {
     Laden();
     system("PAUSE");
     return EXIT_SUCCESS;
     }
     else {}
     int Anzahl = 0;
     cout << "\n\nBitte geben Sie die Anzahl der Personen an, die Sie eintragen moechten: ";
     cin >> Anzahl;
     cin.ignore();
     cout << endl;
     Addressen Test[Anzahl];
     for(int i = 0; i < Anzahl; i++)
     {
     cout << "\nBitte geben Sie den Vornamen der " << i+1 << ". Person an: ";
     cin.get(Test[i].Vorname, 49);
     cin.ignore();
     cout << "Bitte geben Sie den Nachnamen der " << i+1 << ". Person an: ";
     cin.get(Test[i].Nachname, 49);
     cin.ignore();
     cout << "Bitte geben Sie die Stadt der " << i+1 << ". Person an: ";
     cin.get(Test[i].Stadt, 49);
     cin.ignore();
     // weiter hab ich jetzt grad kein Bock mehr...
     }
     for(int i = 0; i < Anzahl; i++)
     {
     cout << "\nPerson Nr. " << i+1
     << "\nName: " << Test[i].Nachname << ", " << Test[i].Vorname
     << "\nStadt: " << Test[i].Stadt << endl;
     }
     int Zugriff = 0;
     cout << "Bitte geben die Nummer der Person an, auf die Sie zugreifen moechten: ";
     cin >> Zugriff;
     cin.ignore();
     Zugriff--;
     cout << endl << Test[Zugriff].Vorname << endl;
     cout << "Jetzt erfolgt die Ausgabe, in eine Datei...";
     ofstream RausGehts ("kleneAdressenDatei.dat", ios::binary);
     RausGehts.write ((char *) &Test, sizeof(Test));
     system("PAUSE");
     return EXIT_SUCCESS;
    }
    
    void Laden(void)
    {
     int Anzahl = 0;
     cout << "Bitte geben Sie die Anzahl der Persnen an, die aus der Datei geladen werden sollen: ";
     cin >> Anzahl;
     cin.ignore();
     cout << endl;
     Addressen Test[Anzahl];
     ifstream ReinGehts ("kleneAdressenDatei.dat", ios::binary);
     ReinGehts.read((char *) &Test, sizeof(Test));
     for(int i = 0; i < Anzahl; i++)
     {
     cout << "\nPerson Nr. " << i+1
     << "\nName: " << Test[i].Nachname << ", " << Test[i].Vorname
     << "\nStadt: " << Test[i].Stadt << endl;
     }
     cout << endl << "Finish ^^!";
    }
    
    Ahja und musst gucken, dass es natürlich überhaupt ne Datei gibt, sonst gibbet wieder Fehler...

    mfg thecoolman4rr
     
  3. 11. Januar 2007
    AW: Hilfe beim Speichern der Eingaben

    Vielen Dank für deine Müh ich konnte es gut Verwenden.
    Bewertung ist raus.

    Gruß
    hi05d

    *closed*
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.