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???


Anmelden zum Antworten