Personen Editor.. wer kann helfen?
-
Aufgabenstellung:
• Nachdem die ganze PERSONEN.DAT Datei eingelesen worden ist, geben Sie nun
dem Benutzer die Möglichkeit, einen Personendatensatz zu suchen.
• Schreiben Sie hierzu eine Funktion, die den Nachnamen einer Person abfragt
und den zugehörigen Datensatz im Array sucht.
• Wenn die Person gefunden worden ist, wird sie angezeigt, sonst sollte die
Funktion eine kurze Meldung ausgeben.
• Rufen Sie diese Suchfunktion innerhalb einer Schleife auf.
• Damit der Benutzer abbrechen kann, soll er als Namen das Wort „exit“
eingeben.
• Die Funktion sucht dann nicht nach einer Person mit diesem Namen, sondern
das Programm soll beendet werden.Ich wär seeehr dankbar für Lösungsvorschläge! :xmas2:
[/cpp]
#include <cstdio>
#include <iostream>using namespace std;
struct person {
int alter;
char vorname[20];
char nachname[20];
};void eingabe(struct person *);
void einlesen(struct person *, FILE *);
void ausgabe(struct person *);
bool suchen(struct person *, short);
void bearbeiten(struct person *);const short PERSONENZAHL = 4;
int main() {
struct person personen[PERSONENZAHL];
FILE *input = fopen ("PERSONEN.DAT", "r");
if (!input) {
cout << "Konnte PERSONEN.DAT nicht oeffnen!" << endl;
return 2;
}
for (short x = 0; x < PERSONENZAHL; x++) {
einlesen(&personen[x], input);
}
while ( suchen(personen, PERSONENZAHL) )
; // nichts machen
getchar();
return 0;
}void eingabe (struct person *pp) {
printf ("\nBitte geben Sie die Daten zu einer Person ein!");
printf ("\nVorname der Person: ");
scanf ("%s",pp->vorname);
printf ("\nNachname der Person: ");
scanf ("%s",pp->nachname);
printf ("\nAlter der Person: ");
scanf ("%s", pp->alter);
}void einlesen (struct person *pp, FILE * file) {
char zeile[100];fgets(zeile, 100, file);
zeile[strlen(zeile) - 1] = '\0';
strcpy(pp->vorname, zeile);
fgets(zeile, 100, file);
zeile[strlen(zeile) - 1] = '\0';
strcpy(pp->nachname, zeile);
fgets(zeile, 100, file);
zeile[strlen(zeile) - 1] = '\0';
pp->alter = atoi(zeile);
}void ausgabe(struct person *pp) {
cout << "Vorname = " << pp->vorname << endl;
cout << "Nachname = " << pp->nachname << endl;
cout << "Alter = " << pp->alter << endl;
}bool suchen(struct person *personen, short anzahl) {
bool gefunden = false;
cout << "Geben Sie den Namen der gesuchten Person ein (exit beendet): ";
char suchname[20];
cin >> suchname;
if (strcmp(suchname, "exit") == 0)
return false; // fertig, beenden
for (short index = 0; index < anzahl; index++) {
if (strcmp(personen[index].nachname, suchname) == 0) {
gefunden = true;
ausgabe(&personen[index]);
bearbeiten(&personen[index]);
}
}
if (!gefunden)
cout << "Person mit diesem Namen existiert nicht!" << endl;
return true; // weitersuchen}
void bearbeiten(struct person *pp) {
short wahl;
do {
cout << "Wollen Sie die Daten dieser Person bearbeiten? 0=nein, 1=ja: ";
cin >> wahl;
} while (wahl < 0 || wahl > 1);
if (wahl == 1)
eingabe(pp);
}
-
[quote="xyz2007"]Ich wär seeehr dankbar für Lösungsvorschläge! :xmas2:
Wo hängts denn?
-
[quote="betman"]
xyz2007 schrieb:
Ich wär seeehr dankbar für Lösungsvorschläge! :xmas2:
Wo hängts denn?Wenn ich die Datei "PERSONEN.DAT" in denselben Ordner hinzufüge (mit Namen drin) dann kommt bei mir eine Endlosschlaufe wenn ich einen Namen richtig eingegeben habe :-S
-
Mal ne Frage: Soll das C++/C oder ein Mix von beiden sein???