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 CKundevoid CPerson::eingeben() -> Methode der Basisklasse CPerson
void CPerson::ausgeben() -> Methode der Basisklasse CPerson
void CPerson::suchen() -> Methode der Basisklasse CPersonCPersonal::CPersonal() -> Methode der abgeleiteten Klasse CPersonal
void CPersonal::eingeben() -> Methode der abgeleiteten Klasse CPersonal
void CPersonal::speichern() -> Methode der abgeleiteten Klasse CPersonalCKunde:CKunde -> Methode der abgeleiteten Klasse CKunde
void CKunde::eingeben() -> Methode der abgeleiteten Klasse CKunde
void CKunde::speichern() -> Methode der abgeleiteten Klasse CKundeDanach 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???