zeilen auslesen und löschen in einer txt



  • Moin,

    ich hole mal etwas aus, damit man es etwas besser versteht.
    Und zwar soll ich ein Programm schreiben welches ich durch ein simples Menü durch Buchstabeneingabe bedienen kann.
    Das sieht beispielsweise so aus:

    cout<<"\n*******Dateiverwaltung*******";
            cout<<"\nKundendaten ................k";
            cout<<"\nPersonaldaten ..............p";
            cout<<"\nEnde .......................q";
            cout<<"\nIhre Wahl = ";
    

    mit switch und case wird es ausgewählt.

    In dem Programm geht es daraus eine datei mit dem Namen "kunde.txt" und "personal.txt" anzulegen. In diese Dateien soll man dann einen Datensatz eingeben können der auch "PersNr", "name" und "vorname" besteht. Dieser Eintrag wird dann in der Datei gespeichert.
    Ich kann auch gucken ob ein Eintrag in der Datei vorhanden ist und die gesamte Datei ausgeben lassen.
    Folgendes habe ich definiert:
    class CPerson -> Basisklasse CPerson
    class CPersonal:public CPerson -> abgeleitete Klasse CPerson
    class CKunde : public CPerson -> abgeleitete Klasse CKunde

    void CPerson::eingeben() -> Methode der Basisklasse CPerson
    void CPerson::ausgeben() -> Methode der Basisklasse CPerson
    void CPerson::suchen() -> Methode der Basisklasse CPerson

    CPersonal::CPersonal() -> Methode der abgeleiteten Klasse CPersonal
    void CPersonal::eingeben() -> Methode der abgeleiteten Klasse CPersonal
    void CPersonal::speichern() -> Methode der abgeleiteten Klasse CPersonal

    CKunde:CKunde -> Methode der abgeleiteten Klasse CKunde
    void CKunde::eingeben() -> Methode der abgeleiteten Klasse CKunde
    void CKunde::speichern() -> Methode der abgeleiteten Klasse CKunde

    Danach kommt dann das MEnü mit der Auswahl bzw dem Aufruf der einzelnen Klassen.

    So jetzt kommt der Auszug aus meinem Programm:

    Methoden der Basisklasse CPerson:

    void CPerson::eingeben()
    {
            cout<<"Vorname = ";
            cin>>Vorname;
            cout<<"Nachname = ";
            cin>>Nachname;
    }
    
    void CPerson::ausgeben()
    {
            char zeichen;
            ifstream datei;
            //system("clear");
            datei.open(Dateiname);
            if(!datei)
                    cout<<"Fehler";
            else
            {
                    cout<<"Personaldatei\n";
                    while(!datei.eof())
                    {
                            zeichen=datei.get();
                            if(zeichen=='#')
                                    cout<<endl;
                            else
                                    cout.put(zeichen);
                    }
                    datei.close();
            }
            //getch();
    }
    
    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[i]=datei.get();
                    if (zeichenkette[i]!=' ')
                            i++;
                    else
                    {
                            zeichenkette[i]='\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();
    }
    

    Methoden der abgeleiteten Klasse CPersonal

    CPersonal::CPersonal()
    {
            strcpy(Dateiname,"personal.txt");
    }
    
    void CPersonal::eingeben()
    {
            cout<<"Personaldaten \n";
            CPerson::eingeben();
            cout<<"Personalnummer = ";
            cin>>PersNr;
            CPersonal::speichern();
    }
    
    void CPersonal::speichern()
    {
            ofstream datei;
            datei.open(Dateiname,ios::app);
            if(!datei)
                    cout<<"\nDatei kann nicht geoeffnet werden";
            else
                    datei<< PersNr <<" "<<Vorname<<" "<<Nachname<<" # " << endl;
            datei.close();
    }
    

    So hoffe ist nachvollziehbar.
    Nun soll das Programm aber noch mehr können als die gesamte Datei ausgeben, neue Einträge anhängen und gucken ob ein bestimmter Eintrag vorhanden ist.

    Die Dateien die angelegt wurden sollen sortiert werden, man soll einzelne Zeilen bzw Einträge darauf löschen können und einzelne Einträge ändern können.

    Ich habe aber absolut keine Ahnung wie ich das machen soll. Den ersten Teil hatten wir in der Schule zusammen gemacht und der Rest sollte alleine erledigt werden.

    Vielleicht kann mir ja jemand helfen oder hat Ideen dazu.
    Wäre prima.



  • Kann mir denn wirklich niemand helfen???


Anmelden zum Antworten