iostream die zweite



  • hi habe wieder ein dummes "problem"

    system("cls") benutze ich weil ich im moment noch nichts besseres hab :>

    #include <iostream>
    #include <fstream>
    using namespace std;
    
    struct Person
    {
    	char Vorname[21];
    	char Nachname[21];
    	char Wohnort[21];
    	char Strasse[21];
    	int Alter;
    	int TelNr;
    };
    
    Person Pers;
    //----------------Main----------------//
    
    int main ( int argc , char** argv )
    {
    	fstream File("person.bat", ios::out|ios::binary);
    	int fQuit = 0;
    	while(!fQuit)
    	{
    		system("cls");
    		cout << "(1)Personen anschauen: "<<endl;
    		cout << "(2)Neue Person einfuegen: "<<endl;
    		cout << "(0)Beenden"<<endl;
    		cout << "Auswahl: ";
    		int choice;
    		cin >> choice;
    
    		switch(choice)
    		{
    			case 0:
    				break;
    			case 1: 
    				File.open("person.bat", ios::in|ios::binary);
    				if(File.is_open())
    					while(File.read((char*)&Pers, sizeof(Pers)));
    					{
    						int T;
    						system("cls");
    						cout << "Vorname:\t"		<< Pers.Vorname		<<endl;
    						cout << "Nachname:\t"		<< Pers.Nachname	<<endl;
    						cout << "Wohnort:\t"		<< Pers.Wohnort		<<endl;
    						cout << "Strasse:\t"		<< Pers.Strasse		<<endl;
    						cout << "Alter:\t\t"		<< Pers.Alter		<<endl;
    						cout << "Telefonnummer:\t"	<< Pers.TelNr		<<endl;
    						cout << "\n\nUm Fortzufahren bitte eine Zahl bestaetigen";
    						cin >> T;
    						if(!T)
    							break;
    					}
    					break;
    			case 2:
    				File.open("Person.bat", ios::out|ios::binary);
    				if(File.is_open())
    					{
    						system("cls");
    						cout << "Vorname:\t";		cin>>Pers.Vorname;		cout<<endl;
    						cout << "Nachname:\t";		cin>>Pers.Nachname;		cout<<endl;
    						cout << "Wohnort:\t";		cin>>Pers.Wohnort;		cout<<endl;
    						cout << "Strasse:\t";		cin>>Pers.Strasse;		cout<<endl;
    						cout << "Alter:\t";			cin>>Pers.Alter;		cout<<endl;
    						cout << "Telefonnummer:\t";	cin>>Pers.TelNr;		cout<<endl;
    
    						File.write((const char*)&Pers, sizeof(Pers));
    						File.close();
    					}
    				break;
    			default: break;
    		}
    		if(choice==0)
    			fQuit=1;
    	}
    	return 0;
    }
    

    Ah .. und dass mit den Bestätigeungen, es kann sein das es ab und zu abstürtzt ^^ aber zuerst will ich das andere machen.

    problem nr.1

    Wenn ich nach der Eingabe sofort ansehen auswaehle zeigt er mir die person.
    Beende ich hingegen das "Programm" und starte es wieder sind die Daten weg.
    Was muss ich machen damit die Daten nicht verschwinden ?

    problem nr.2

    Wie kann ich mehrere Personen hinzufügen ohne die alte Person überschreiben ?

    problem nr.3

    Wie kann ich eine Person aus der Liste bei bedarf gezielt löschen ?
    (Wirklich keine Idee zur Realisierung.)

    Wäre sehr dankbar für ein bisschen Code.

    -Coda



  • Ersetze

    int main ( int argc , char** argv ) 
    { 
        fstream File("person.bat", ios::out|ios::binary); 
        int fQuit = 0;
    

    durch

    int main ( int argc , char** argv ) 
    { 
        fstream File; //("person.bat", ios::out|ios::binary); 
        int fQuit = 0;
    

    und erweitere

    case 2: 
                    File.open("Person.bat", ios::out|ios::binary);
    

    mit ios::app

    case 2: 
                    File.open("Person.bat", ios::out|ios::binary|ios::app);
    

    Entferne das ; bei der Zeile

    while(File.read((char*)&Pers, sizeof(Pers)));
    

    Etwas mehr Übersicht kannst Du erreichen wenn Du

    if(File.is_open()) 
    				while(File.read((char*)&Pers, sizeof(Pers))) 
    			{...}
    

    mit

    if(!File.is_open()) 
    			    break;
    
                                while(File.read((char*)&Pers, sizeof(Pers))) 
    			{...}
    

    erreichen. Da sieht man eher was gemeint ist 🙂



  • so.. danke schonmal

    nun zeigt er mir nach dem Schließen des Programmes zwar die alten Daten an , aber wenn ich noch eine Person hinzufüge, überschreibt er mir die.
    Das andere ist, wenn dann 2 Personen vorhanden sind. Wie kann ich dann die Personen durchblättern ? und wie kann ich die dann einzeln löschen?

    Thx schonmal für Hilfe


Anmelden zum Antworten