eRaSeR!
08.09.2009, 22:58
Hey ich hab die Aufgabe bekommen ein Adressbuch Programm zu machen.
Es soll Infos über die Person(en) abfragen. Diese können auch gelöscht oder geändert werden. Außerdem soll man die Einträge speichern und laden können. Hier ist das Problem. Speichern funktioniert. Es erstellt eine Textdatei und schreibt die Daten untereinander. Beim laden hab ich jedoch probleme mit dem übergeben der Werte aus der Funktion als Pointer.
Außerdem sollte ich es so machen, dass man sich selber einen Dateinamen aussuchen kann. Das funktioniert auch nicht ganz, hab deshalb als Name "test.txt" festgelegt.
Wer sich auskennt, Zeit hat und mir helfen will: Die "laden" Funktion ist die die verbessert werden muss. Die speichern Funktion ist auch direkt darunter.
Der Quellcode:
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct eintrag
{
string Name;
string Vorname;
string Adresse;
string Ort;
string PLZ;
string Tel;
string Email;
};
void speichern(string dateiname,eintrag *liste,int zaehler);
void laden(eintrag *liste);
void eingeben();
void aendern(int nr);
void loeschen(int nr);
void eintraganzeigen(int nr);
void anzeigen();
void auswahl();
eintrag liste[100];
int zaehler=0;
int main(int argc, char *argv[])
{
auswahl();
return EXIT_SUCCESS;
}
void auswahl()
{
int a=1;
while(a==1)
{
system("cls");
cout<<" 1 - Neuer Eintrag\n 2 - Eintrag anzeigen\n 3 - Speichern\n 4 - Laden";
cout<<"\n\nWaehlen Sie aus: ";
int eingabe;
cin>>eingabe;
switch (eingabe)
{
case 1:
eingeben();
break;
case 2:
anzeigen();
break;
case 3:
cout<<"Lege den Dateinamen fest: ";
char dateiname[50];
cin>>dateiname;
speichern(dateiname,liste,zaehler);
break;
case 4:
laden(liste);
break;
default:
a=0;
}
}
}
void laden(eintrag *liste)
{
int i=0,a=0;
string zeile;
ifstream datei ("test.txt");
while (! datei.eof())
{
getline (datei,zeile);
switch(i)
{
case 0:
liste[a].Name=zeile;
break;
case 1:
liste[a].Vorname=zeile;
break;
case 2:
liste[a].Adresse=zeile;
break;
case 3:
liste[a].Ort=zeile;
break;
case 4:
liste[a].PLZ=zeile;
break;
case 5:
liste[a].Tel=zeile;
break;
case 6:
liste[a].Email=zeile;
break;
}
i++;
if(i==7)
{
i=0;
a++;
}
}
}
void speichern(string dateiname,eintrag liste[100],int zaehler)
{
ofstream datei;
datei.open ("test.txt");
for(int a=0;a<zaehler;a++)
{
datei<<liste[a].Name<<endl;
datei<<liste[a].Vorname<<endl;
datei<<liste[a].Adresse<<endl;
datei<<liste[a].Ort<<endl;
datei<<liste[a].PLZ<<endl;
datei<<liste[a].Tel<<endl;
datei<<liste[a].Email<<endl;
}
datei.close();
}
void eingeben()
{
system("cls");
eintrag Adr;
cout<<"Name: ";
cin>>Adr.Name;
cout<<"Vornamen: ";
cin>>Adr.Vorname;
cout<<"Adresse: ";
cin>>Adr.Adresse;
cout<<"Ort: ";
cin>>Adr.Ort;
cout<<"PLZ: ";
cin>>Adr.PLZ;
cout<<"Tel: ";
cin>>Adr.Tel;
cout<<"Email: ";
cin>>Adr.Email;
liste[zaehler]=Adr;
zaehler++;
}
void aendern(int nr)
{
system("cls");
cout<<"Name: "<<liste[nr].Name<<endl;
cout<<"Neuer Name: ";
cin>>liste[nr].Name;
cout<<"Vorname: "<<liste[nr].Vorname<<endl;
cout<<"Neuer Vorname: ";
cin>>liste[nr].Vorname;
cout<<"Adresse: "<<liste[nr].Adresse<<endl;
cout<<"Neue Adresse: ";
cin>>liste[nr].Adresse;
cout<<"Ort: "<<liste[nr].Ort<<endl;
cout<<"Neuer Ort: ";
cin>>liste[nr].Ort;
cout<<"PLZ: "<<liste[nr].PLZ<<endl;
cout<<"Neue PLZ: ";
cin>>liste[nr].PLZ;
cout<<"Tel: "<<liste[nr].Tel<<endl;
cout<<"Neue Tel: ";
cin>>liste[nr].Tel;
cout<<"Email: "<<liste[nr].Email<<endl;
cout<<"Neue Email: ";
cin>>liste[nr].Email;
cout<<"\n\n Eintrag geaendert\n\n";
system("PAUSE");
}
void loeschen(int nr)
{
while(nr<zaehler)
{
liste[nr].Name=liste[nr+1].Name;
liste[nr].Vorname=liste[nr+1].Vorname;
liste[nr].Adresse=liste[nr+1].Adresse;
liste[nr].Ort=liste[nr+1].Ort;
liste[nr].PLZ=liste[nr+1].PLZ;
liste[nr].Tel=liste[nr+1].Tel;
liste[nr].Email=liste[nr+1].Email;
nr++;
}
zaehler--;
}
void eintraganzeigen(int nr)
{
int a=1;
while(a==1)
{
system("cls");
cout<<"Name: "<<liste[nr].Name<<endl;
cout<<"Vorname: "<<liste[nr].Vorname<<endl;
cout<<"Adresse: "<<liste[nr].Adresse<<endl;
cout<<"Ort: "<<liste[nr].Ort<<endl;
cout<<"PLZ: "<<liste[nr].PLZ<<endl;
cout<<"Tel: "<<liste[nr].Tel<<endl;
cout<<"Email: "<<liste[nr].Email<<endl;
cout<<"\n\n1 - Aendern\n";
cout<<"2 - Loeschen\n";
cout<<"3 - Zurueck\n";
int eingabe;
cin>>eingabe;
switch(eingabe)
{
case 1:
aendern(nr);
break;
case 2:
loeschen(nr);
a=0;
break;
default:
a=0;
}
}
}
void anzeigen()
{
int a=1;
while(a==1)
{
system("cls");
eintrag Adr;
for(int b=0;b<zaehler;b++)
{
Adr=liste[b];
cout<<b+1<<" - "<<Adr.Name<<","<<Adr.Vorname<<endl;
}
cout<<endl<<endl<<zaehler+1<<" - Zurueck"<<endl;
int eingabe;
cout<<"Waehlen Sie aus(1-"<<zaehler+1<<")";
cin>>eingabe;
if(eingabe>=zaehler+1||eingabe<1)
{
a=0;
}
else
{
eintraganzeigen(eingabe-1);
}
}
}
Ty schonmal
mfg, eRaSeR
Es soll Infos über die Person(en) abfragen. Diese können auch gelöscht oder geändert werden. Außerdem soll man die Einträge speichern und laden können. Hier ist das Problem. Speichern funktioniert. Es erstellt eine Textdatei und schreibt die Daten untereinander. Beim laden hab ich jedoch probleme mit dem übergeben der Werte aus der Funktion als Pointer.
Außerdem sollte ich es so machen, dass man sich selber einen Dateinamen aussuchen kann. Das funktioniert auch nicht ganz, hab deshalb als Name "test.txt" festgelegt.
Wer sich auskennt, Zeit hat und mir helfen will: Die "laden" Funktion ist die die verbessert werden muss. Die speichern Funktion ist auch direkt darunter.
Der Quellcode:
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct eintrag
{
string Name;
string Vorname;
string Adresse;
string Ort;
string PLZ;
string Tel;
string Email;
};
void speichern(string dateiname,eintrag *liste,int zaehler);
void laden(eintrag *liste);
void eingeben();
void aendern(int nr);
void loeschen(int nr);
void eintraganzeigen(int nr);
void anzeigen();
void auswahl();
eintrag liste[100];
int zaehler=0;
int main(int argc, char *argv[])
{
auswahl();
return EXIT_SUCCESS;
}
void auswahl()
{
int a=1;
while(a==1)
{
system("cls");
cout<<" 1 - Neuer Eintrag\n 2 - Eintrag anzeigen\n 3 - Speichern\n 4 - Laden";
cout<<"\n\nWaehlen Sie aus: ";
int eingabe;
cin>>eingabe;
switch (eingabe)
{
case 1:
eingeben();
break;
case 2:
anzeigen();
break;
case 3:
cout<<"Lege den Dateinamen fest: ";
char dateiname[50];
cin>>dateiname;
speichern(dateiname,liste,zaehler);
break;
case 4:
laden(liste);
break;
default:
a=0;
}
}
}
void laden(eintrag *liste)
{
int i=0,a=0;
string zeile;
ifstream datei ("test.txt");
while (! datei.eof())
{
getline (datei,zeile);
switch(i)
{
case 0:
liste[a].Name=zeile;
break;
case 1:
liste[a].Vorname=zeile;
break;
case 2:
liste[a].Adresse=zeile;
break;
case 3:
liste[a].Ort=zeile;
break;
case 4:
liste[a].PLZ=zeile;
break;
case 5:
liste[a].Tel=zeile;
break;
case 6:
liste[a].Email=zeile;
break;
}
i++;
if(i==7)
{
i=0;
a++;
}
}
}
void speichern(string dateiname,eintrag liste[100],int zaehler)
{
ofstream datei;
datei.open ("test.txt");
for(int a=0;a<zaehler;a++)
{
datei<<liste[a].Name<<endl;
datei<<liste[a].Vorname<<endl;
datei<<liste[a].Adresse<<endl;
datei<<liste[a].Ort<<endl;
datei<<liste[a].PLZ<<endl;
datei<<liste[a].Tel<<endl;
datei<<liste[a].Email<<endl;
}
datei.close();
}
void eingeben()
{
system("cls");
eintrag Adr;
cout<<"Name: ";
cin>>Adr.Name;
cout<<"Vornamen: ";
cin>>Adr.Vorname;
cout<<"Adresse: ";
cin>>Adr.Adresse;
cout<<"Ort: ";
cin>>Adr.Ort;
cout<<"PLZ: ";
cin>>Adr.PLZ;
cout<<"Tel: ";
cin>>Adr.Tel;
cout<<"Email: ";
cin>>Adr.Email;
liste[zaehler]=Adr;
zaehler++;
}
void aendern(int nr)
{
system("cls");
cout<<"Name: "<<liste[nr].Name<<endl;
cout<<"Neuer Name: ";
cin>>liste[nr].Name;
cout<<"Vorname: "<<liste[nr].Vorname<<endl;
cout<<"Neuer Vorname: ";
cin>>liste[nr].Vorname;
cout<<"Adresse: "<<liste[nr].Adresse<<endl;
cout<<"Neue Adresse: ";
cin>>liste[nr].Adresse;
cout<<"Ort: "<<liste[nr].Ort<<endl;
cout<<"Neuer Ort: ";
cin>>liste[nr].Ort;
cout<<"PLZ: "<<liste[nr].PLZ<<endl;
cout<<"Neue PLZ: ";
cin>>liste[nr].PLZ;
cout<<"Tel: "<<liste[nr].Tel<<endl;
cout<<"Neue Tel: ";
cin>>liste[nr].Tel;
cout<<"Email: "<<liste[nr].Email<<endl;
cout<<"Neue Email: ";
cin>>liste[nr].Email;
cout<<"\n\n Eintrag geaendert\n\n";
system("PAUSE");
}
void loeschen(int nr)
{
while(nr<zaehler)
{
liste[nr].Name=liste[nr+1].Name;
liste[nr].Vorname=liste[nr+1].Vorname;
liste[nr].Adresse=liste[nr+1].Adresse;
liste[nr].Ort=liste[nr+1].Ort;
liste[nr].PLZ=liste[nr+1].PLZ;
liste[nr].Tel=liste[nr+1].Tel;
liste[nr].Email=liste[nr+1].Email;
nr++;
}
zaehler--;
}
void eintraganzeigen(int nr)
{
int a=1;
while(a==1)
{
system("cls");
cout<<"Name: "<<liste[nr].Name<<endl;
cout<<"Vorname: "<<liste[nr].Vorname<<endl;
cout<<"Adresse: "<<liste[nr].Adresse<<endl;
cout<<"Ort: "<<liste[nr].Ort<<endl;
cout<<"PLZ: "<<liste[nr].PLZ<<endl;
cout<<"Tel: "<<liste[nr].Tel<<endl;
cout<<"Email: "<<liste[nr].Email<<endl;
cout<<"\n\n1 - Aendern\n";
cout<<"2 - Loeschen\n";
cout<<"3 - Zurueck\n";
int eingabe;
cin>>eingabe;
switch(eingabe)
{
case 1:
aendern(nr);
break;
case 2:
loeschen(nr);
a=0;
break;
default:
a=0;
}
}
}
void anzeigen()
{
int a=1;
while(a==1)
{
system("cls");
eintrag Adr;
for(int b=0;b<zaehler;b++)
{
Adr=liste[b];
cout<<b+1<<" - "<<Adr.Name<<","<<Adr.Vorname<<endl;
}
cout<<endl<<endl<<zaehler+1<<" - Zurueck"<<endl;
int eingabe;
cout<<"Waehlen Sie aus(1-"<<zaehler+1<<")";
cin>>eingabe;
if(eingabe>=zaehler+1||eingabe<1)
{
a=0;
}
else
{
eintraganzeigen(eingabe-1);
}
}
}
Ty schonmal
mfg, eRaSeR