title image


Smiley Re: zeilen auslesen und löschen in einer txt
Also das ist das was ich bisher habe...

im Mittelteil beim Auskommentierten habe ich rumprobiert mit dem löschen.

Das sortieren ist in Arbeit, hatte bloß seit gestern nicht sonderlich viel Zeit mich da ranzusetzen, da gehts gleich bei.







#include

#include

#include

#include

#include

#include



using namespace std;



// ********** Basisklasse CPerson *************************

class CPerson

{

protected:

char Vorname[30];

char Nachname[30];

char Dateiname[30];

public:

void eingeben();

void ausgeben();

void suchen();

};



// ********** Abgeleitete Klasse CPersonal ****************

class CPersonal : public CPerson

{

private:

int PersNr;

public:

void eingeben();

void speichern();

void umbenennen();

CPersonal(char*, char*, int);

CPersonal();

void gibMichAus();

void ausgeben2();

void loeschen();

};



// ********** Abgeleitete Klasse CKunde *******************

class CKunde : public CPerson

{

private:

int KundenNr;

public:

void eingeben();

void speichern();

void umbenennen();

CKunde(char*, char*, int);

CKunde();

void gibMichAus();

void ausgeben2();

};



//*****************Allgemeine Spielerein********************

void trennlinie()

{



cout << "\n------------------------------" << endl;

return;

}



// ********** 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<
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<
else

cout<
//getch();

}



// ********** Methoden der abgeleiteten Klasse CPersonal **

CPersonal::CPersonal()

{

strcpy(Dateiname,"personal.txt");

}



CPersonal::CPersonal(char *vor, char *nach, int nummer)

{

strcpy(Dateiname,"personal.txt");

strcpy(Vorname, vor);

strcpy(Nachname, nach);

PersNr = nummer;

}





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 <<" "<
datei.close();

}



void CPersonal::gibMichAus()

{

cout << PersNr <<" "<
}



void liesPersonal(vector &personal)

{



char vorname[30],nachname[30],nummerString[30];

ifstream datei("personal.txt");

while(!datei.eof())

{

// eine Zeile lesen

datei >> nummerString;

datei >> vorname;

datei >> nachname;

datei.ignore(INT_MAX, '\n'); // Zeilenende-Zeichen ignorieren

if (datei.eof()) break;

int nummer = atoi(nummerString);

// Personal erstellen und in vector legen:

CPersonal *pers = new CPersonal(vorname, nachname, nummer);

personal.push_back(pers);

}

datei.close();

}



// Eine neue Funktion, für die neuen Funktionen



void CPersonal::ausgeben2()

{

// Einen Vector erstellen

vector personal;

// Personal lesen

liesPersonal(personal);

// Personal ausgeben:

cout << "Personal: " << endl;

for (int i=0; i
{

personal[i]->gibMichAus();

}

// Zwei Personen vertauschen, und neu ausgeben

/* if (personal.size()>=2)

{

CPersonal *tmp = personal[0];

personal[0] = personal[1];

personal[1] = tmp;

cout << "Personal, 0 und 1 vertauscht: " << endl;

for (int i=0; i
{

personal[i]->gibMichAus();

}

}*/



}



/*void entfernen(vector personen, int position)

{

delete personen[position]; // Speicher freigeben

personen.erase(personen.begin()+position);

}



void CPersonal::loeschen()

{

char kundennummer;

char antwort;

cin>>kundennummer;



???????????????????????????????????



if (kundennummer==true)

{

cout<<"die Zeile ausgeben";

cout<<"Soll dieser Eintrag gelöscht werden? Y/N ";

cin>>antwort;

if(antwort=='Y'||antwort=='y') entfernen(kunden, zeilenNummer);

if(antwort=='N'||antwort=='n') cout << "Nicht löschen...." << endl;

}

else cout << "Diese Nummer wurde bisher nicht vergeben";

}

*/



void CPersonal::umbenennen()

{

char neuname[30];

cout<<"Geben Sie einen neuen Namen für Ihre Datei ein\n";

cin>>neuname;

rename(Dateiname , neuname);

}



// ********** Methoden der abgeleiteten Klasse CKunde *****

CKunde::CKunde()

{

strcpy(Dateiname,"kunde.txt");

}



CKunde::CKunde(char *vor, char *nach, int nummer)

{

strcpy(Dateiname,"kunde.txt");

strcpy(Vorname, vor);

strcpy(Nachname, nach);

KundenNr = nummer;

}



void CKunde::eingeben()

{

cout<<"Kundendaten \n";

CPerson::eingeben();

cout<<"Kundennummer = ";

cin>>KundenNr;

CKunde::speichern();

}



void CKunde::speichern()

{

ofstream datei;

datei.open(Dateiname,ios::app);

if(!datei)

cout<<"\nDatei kann nicht geoeffnet werden";

else

datei<
datei.close();

}



void CKunde::gibMichAus()

{

cout << KundenNr <<" "<
}



// Die liesPersonal-Funktion gehört zu keiner Klasse



void liesKunde(vector &kunde)

{

char vorname[30],nachname[30],nummerString[30];

ifstream datei("kunde.txt");

while(!datei.eof())

{

// eine Zeile lesen

datei >> nummerString;

datei >> vorname;

datei >> nachname;

datei.ignore(INT_MAX, '\n'); // Zeilenende-Zeichen ignorieren

if (datei.eof()) break;

int nummer = atoi(nummerString);

// Personal erstellen und in vector legen:

CKunde *kund = new CKunde(vorname, nachname, nummer);

kunde.push_back(kund);

}

datei.close();

}



//****Eine neue Funktion, für die neuen Funktionen



void CKunde::ausgeben2()

{

vector kunde; //einen Vektor erstellen



liesKunde(kunde); //Personal lesen



// Personal ausgeben:

cout << "Kunde: " << endl;

for (int i=0; i
{

kunde[i]->gibMichAus();

}



// Zwei Personen vertauschen, und neu ausgeben

if (kunde.size()>=2)

{

CKunde *tmp = kunde[0];

kunde[0] = kunde[1];

kunde[1] = tmp;



cout << "Kunde, 0 und 1 vertauscht: " << endl;

for (int i=0; i
{

kunde[i]->gibMichAus();

}

}



}



void CKunde::umbenennen()

{

char neuname[30];

cout<<"Geben Sie einen neuen Namen für Ihre Datei ein\n";

cin>>neuname;

rename(Dateiname , neuname);

}



// ********** Menue mit Hauptprogramm *********************

/*void menue()

{

char auswahl;

//system("clear");

cout<<"\n\n********Dateiverwaltung*******\n";

trennlinie();

cout<<"Kundendaten .................k";

cout<<"\nPersonaldaten ...............p";

cout<<"\nEnde ........................q";

trennlinie();

cout<<"\nIhre Wahl = ";

cin>>auswahl;

if(auswahl=='p'||auswahl=='P')*/

void personaldaten()

{

char auswahl;

cout<<"\n\n*********Personaldaten********\n";

trennlinie();

cout<<"Neueingabe von Daten ........n";

cout<<"\nAusgabe aller Daten .........a";

cout<<"\nSuchen einzelner Daten ......f";

cout<<"\nAusgabe aller Daten 2........b";

cout<<"\nLöschen......................l";

cout<<"\nDatei umbenennen.............u";

cout<<"\nEnde ........................q";

trennlinie();

cout<<"\nIhre Wahl = ";

cin>>auswahl;

CPersonal meinPersonal;

switch(auswahl)

{

case 'n':

case 'N': meinPersonal.eingeben(); break;

case 'a':

case 'A': meinPersonal.ausgeben(); break;

case 'f':

case 'F': meinPersonal.suchen(); break;

case 'b':

case 'B': meinPersonal.ausgeben2();break;

case 'l':

// case 'L': meinPersonal.loeschen();break;

case 'u':

case 'U': meinPersonal.umbenennen(); break;

case 'q':

case 'Q': exit(-1); break;

}

}

void kundendaten()

{

char auswahl;

cout<<"\n\n*********Kundendaten**********\n";

trennlinie();

cout<<"Neueingabe von Daten ........n";

cout<<"\nAusgabe aller Daten .........a";

cout<<"\nSuchen einzelner Daten ......f";

cout<<"\nAusgabe aller Daten 2........b";

cout<<"\nDatei umbenennen.............u";

cout<<"\nEnde ........................q";

trennlinie();

cout<<"\nIhre Wahl = ";

cin>>auswahl;

CKunde meinKunde;

switch(auswahl)

{

case 'n':

case 'N': meinKunde.eingeben(); break;

case 'a':

case 'A': meinKunde.ausgeben(); break;

case 'f':

case 'F': meinKunde.suchen(); break;

case 'b':

case 'B': meinKunde.ausgeben2();break;

case 'u':

case 'U': meinKunde.umbenennen(); break;

case 'q':

case 'Q' :exit(-1); break;

}

}



void menue()

{

char auswahl;



do{

cout<<"\n\n********Dateiverwaltung*******\n";

cout<<"Kundendaten .................k";

cout<<"\nPersonaldaten ...............p";

cout<<"\nEnde ........................q";

cout<<"\nIhre Wahl = ";

cin>>auswahl;



if(auswahl=='p'||auswahl=='P') personaldaten();

if(auswahl=='k'||auswahl=='K') kundendaten();

}

while(auswahl != 'q' && auswahl != 'Q');

}



int main()

{

menue();

return 0;

}







Also deine Vorschläge habe ich zur Kenntnis genommen, finde ich auch gut, aber ich fühle mich nicht in der Lage, bzw mein Wissen reicht noch nicht aus, um das dahingehend abändern zu können. Klingt aber logisch.

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: