Daten in .txt bearbeiten?



  • Hallo,
    ich Lerne in der Schule C++ und habe jetzt die Aufgabe ein kleines Programm zur Kunden und personal Daten verwaltung zu schreiben.
    Hier erst mal beim code:

    #include<iostream.h>
    #include<stdlib.h>
    #include<fstream.h>
    #include<string.h>
    #include<conio.h>
    
    class CPerson
    {
    protected:
    char vorname[30];
    char nachname[30];
    char Dateiname[30];
    public:
    void eingeben();
    void speichern();
    void suchen();
    };
    
    class CPersonal : public CPerson
    {
    private:
    int PersonalNr;
    public:
    void eingeben();
    void speichern();
    void ausgeben();
    CPersonal();
    };
    
    void CPerson::eingeben()
    {
    cout<<"Vorname = ";
    cin>>vorname;
    cout<<"Nachname = ";
    cin>>nachname;
    }
    
    CPersonal::CPersonal()
    {
    strcpy(Dateiname,"C:\\Personal.dat");
    }
    
    void CPersonal::eingeben()
    {
    cout<<"PersonalNmmer = ";
    cin>>PersonalNr;
    CPerson::eingeben();
    }
    
    void CPersonal::speichern()
    {
    ofstream datei;
    datei.open(Dateiname,ios::app);
    if(!datei)
    cout<<"\nDatei kann nicht geoeffnet werden";
    else
    datei<<"\n" "<<PersonalNr<<" "<<vorname<<" "<<nachname<<";
    datei.close();
    }
    
    void CPersonal::ausgeben()
    {
    char zeichen;
    ifstream datei;
    cout<<"Personaldatei\n";
    datei.open(Dateiname);
    if(!datei)
    cout<<"Fehler";
    else
    while(!datei.eof())
    {
    zeichen=datei.get();
    if(zeichen=='#')
    cout<<endl;
    else
    cout.put(zeichen);
    }
    datei.close();
    }
    
    void CPerson::suchen()
    {
    char suchname[30],zeichenkette[30];
    int i=0;
    bool vorhanden=false;
    ifstream datei;
    cout<<"Suchname = ";
    cin>>suchname;
    datei.open(Dateiname);
    while(!datei.eof())
    {
    zeichenkette=datei.get();
    if (zeichenkette!=' ')
    i++;
    else
    {
    zeichenkette='\0';
    if(strcmp(zeichenkette,suchname)==0)
    vorhanden=true;
    i=0;
    }
    }
    datei.close();
    if(vorhanden==true)
    cout<<endl<<suchname<<" ist in der Datei vorhanden"<<endl;
    else
    cout<<endl<<suchname<<" ist in der nicht Datei vorhanden"<<endl;
    getch();
    }
    
    class CKunde : public CPerson
    {
    private:
    int KundenNr;
    public:
    void eingeben();
    void speichern();
    void ausgeben();
    void suchen();
    CKunde();
    };
    
    CKunde::CKunde()
    {
    strcpy(Dateiname,"C:\\Kunde.dat");
    }
    
    void CKunde::eingeben()
    {
    
    cout<<"Kundennummer = ";
    cin>>KundenNr;
    CPerson::eingeben();
    }
    
    void CKunde::speichern()
    {
    ofstream datei;
    datei.open(Dateiname,ios::app);
    if(!datei)
    cout<<"\nDatei kann nicht geoeffnet werden";
    else
    datei<<"\n" "<<KundenNr<<" "<<vorname<<" "<<nachname<<";
    datei.close();
    }
    
    void CKunde::ausgeben()
    {
    char zeichen;
    ifstream datei;
    cout<<"Kundendatei\n";
    datei.open(Dateiname);
    if(!datei)
    cout<<"Fehler";
    else
    while(!datei.eof())
    {
    zeichen=datei.get();
    if(zeichen=='#')
    cout<<endl;
    else
    cout.put(zeichen);
    }
    datei.close();
    }
    
    void CKunde::suchen()
    {
    char suchname[30],zeichenkette[30];
    int i=0;
    bool vorhanden=false;
    ifstream datei;
    cout<<"Suchname = ";
    cin>>suchname;
    datei.open(Dateiname);
    while(!datei.eof())
    {
    zeichenkette=datei.get();
    if (zeichenkette!=' ')
    i++;
    else
    {
    zeichenkette='\0';
    if(strcmp(zeichenkette,suchname)==0)
    vorhanden=true;
    i=0;
    }
    }
    datei.close();
    if(vorhanden==true)
    cout<<endl<<suchname<<" ist in der Datei vorhanden"<<endl;
    else
    cout<<endl<<suchname<<" ist in der nicht Datei vorhanden"<<endl;
    getch();
    }
    
    void menue()
    {
    char auswahl;
    system("cls");
    cout<<"\nDateiverwaltung .............";
    cout<<"\nKundendaten ................k";
    cout<<"\nPersonaldaten ..............p";
    cout<<"\nEnde .......................q";
    cout<<"\nIhre Wahl = ";
    cin>>auswahl;
    if(auswahl=='p'||auswahl=='P')
    {
    cout<<"\n\nPersonaldaten ..............";
    cout<<"\nNeueingabe von Daten ........n";
    cout<<"\nSpeichern von Daten .........s";
    cout<<"\nAusgabe aller Daten .........a";
    cout<<"\nSuchen einzelner Daten ......f";
    cout<<"\nEnde ........................q";
    cout<<"\nIhre Wahl = ";
    cin>>auswahl;
    CPersonal meinPersonal;
    switch(auswahl)
    {
    case 'n':
    case 'N': meinPersonal.eingeben(); break;
    case 's':
    case 'S': meinPersonal.speichern(); break;
    case 'a':
    case 'A': meinPersonal.ausgeben(); break;
    case 'f':
    case 'F': meinPersonal.suchen(); break;
    case 'q':
    case 'Q': exit(-1); break;
    }
    }
    if(auswahl=='k'||auswahl=='K')
    {
    cout<<"\n\nKundendaten ................";
    cout<<"\nNeueingabe von Daten ........n";
    cout<<"\nSpeichern von Daten .........s";
    cout<<"\nAusgabe aller Daten .........a";
    cout<<"\nSuchen einzelner Daten ......f";
    cout<<"\nEnde ........................q";
    cout<<"\nIhre Wahl = ";
    cin>>auswahl;
    CKunde meinKunde;
    switch(auswahl)
    {
    case 'n':
    case 'N': meinKunde.eingeben(); break;
    case 's':
    case 'S': meinKunde.speichern(); break;
    case 'a':
    case 'A': meinKunde.ausgeben(); break;
    case 'f':
    case 'F': meinKunde.suchen(); break;
    case 'q': 
    case 'Q' :exit(-1); break;
    }
    }
    if(auswahl=='q'||auswahl=='Q')
    exit(-1);
    menue();
    }
    
    void main()
    {
    menue();
    }
    

    Das eingeben von Daten ist kein Problem.
    Die Daten werden in einer Datei Gespeichern. Jeder Datensatz in einer zeile. Jetzt soll ich eine Datensatz bearbeiten. Leider weiß ich nicht wie ich das machen soll?? Unser Lehrer hat uns auch kein beispiel gegeben, daher hoffe ich jetzt auf eure hilfe!

    Philipp



  • Zum Verständnis:

    Du willst Datensätze aus einer Textdatei lesen und die dann bearbeiten?
    Das heisst also z.B. nen Vornamen ändern.
    Ist das richtig?
    Wenn dies richtig ist, musst du doch nur die neu eingegebenen Daten durch klick auf einen Speicherbutton abspeichern.
    Oder wie hast du dir das vorgestellt?



  • alle Datensätze auslesen -> den richtigen suchen -> bearbeiten -> speichern


Anmelden zum Antworten