000
07.10.2005, 22:32 Uhr
~skizi
Gast
|
Hi, hab ne bitte. Habe dieses Programm geschrieben alles Funktioniert bis auf die Suche. Nur ich weiß nicht wie ich es ausgeben soll. Wenn er den richtigen namen gesucht hat soll man beruf und telefonnummer auch ausgeben und das versteh ich nicht.
Die Aufgabenstellung:
Schreiben Sie ein Programm, das Telefonnummern verwaltet. Von den Telefonteilnehmern werden Name (Vor- und Zuname) und Telefonnummer, sowie der Beruf angegeben. Nach Eingabe der Informationen von beliebig vielen Telefonteilnehmern in eine Datei (nur 1x durchzuführen) soll nach dem Namen gesucht werden können, wobei die Informationen dieser Person am Bildschirm ausgegeben werden sollen. Ein weiterer Menüpunkt soll den Beruf einer beliebigen Person ändern können. Ein weiterer Punkt soll die Möglichkeit bieten, eine Telefonliste auszugeben, wobei nur Name und Telefonnummer angezeigt werden sollen.
Anleitung: Zum Auslesen der Datei lesen sie so lange Personen in ein Array von Strukturen ein, so lange Personen in der Datei gespeichert sind (bis das Dateiende erreicht ist). Danach arbeiten Sie ausschließlich auf diesem Array, bis der Menüpunkt „Daten in Datei schreiben“ oder „Programm beenden“ aufgerufen wird.
Menüpunkte:
< Daten von Datei einlesen ........................................ 1 > < Telefonliste ausgeben ............................................. 2 > < Nach Daten einer Person suchen ............................ 3 > < Beruf einer Person ändern ..................................... 4 > < Daten in Datei schreiben ........................................ 5 > < Programm beenden ................................................. 6 >
Das ist der Quelltext zu diesem Programm:
C++: |
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <windows.h> //#include "ConsoleFunctions.h"
typedef struct{ char name[40]; int telenr; char beruf[40]; char suche[50]; }persondaten;
int anz(int anzahl); void eingabe(persondaten *personen, int anzahl); void lesen(persondaten *personen); void tele_out(persondaten *personen, int anzahl); void suchen(persondaten *personen, int anzahl); //void BailOut(const char *szMessage);
int main(int argc, char *argv[]){
int size=0; char hilf[50], *eptr=NULL; int menu=0; persondaten dat[50];
if(argc!=1){ //BailOut("\nError: Fehler\n"); }
size=anz(size);
eingabe(&dat[0], size);
printf("Menuepunkt(1-6): "); fflush(stdin); gets(hilf); menu=strtol(hilf,&eptr,10); if((eptr==hilf)||(*eptr!='\0')){ //BailOut("\nError: Fehler\n"); }
switch(menu){ case 1: lesen(dat); break; case 2: tele_out(dat,size); break; case 3: suchen(dat,size); break; }
return 0; }
int anz(int anzahl){
printf("Wie viele Datensaetze wollen Sie eingeben: "); scanf("%d", &anzahl); clrscr();
return anzahl;
}
void eingabe(persondaten *personen, int anzahl){
FILE *eingabe=NULL; int i=0; if((eingabe=fopen("daten.txt","wt"))==NULL){ //BailOut("\nError: Fehler\n"); } else{ for(i=0;i<anzahl;i++){ printf("Name: "); scanf("%s", personen[i].name); fprintf(eingabe,"Name: %s\n", personen[i].name); fflush(stdin); printf("Telefonnummer: "); scanf("%d", &personen[i].telenr); fprintf(eingabe,"Telefonnummer: %d\n", personen[i].telenr); fflush(stdin); printf("Beruf: "); scanf("%s", personen[i].beruf); fprintf(eingabe,"Beruf: %s\n", personen[i].beruf); } }
fclose(eingabe);
}
void lesen(persondaten *personen){
FILE *eingabe=NULL; char zeile[100];
clrscr();
if((eingabe=fopen("daten.txt","rt"))==NULL){ //BailOut("\nError: Fehler\n"); } else{ while((fgets(zeile,sizeof(zeile)-1,eingabe)!=NULL)){ printf("%s", zeile); } }
fclose(eingabe);
}
void tele_out(persondaten *personen, int anzahl){
int i=0;
clrscr();
printf("Telefonliste: \n"); for(i=0;i<anzahl;i++){ printf("Telefonnummer von %s: %d\n", personen[i].name, personen[i].telenr); }
}
void suchen(persondaten *personen, int anzahl){
int i=0; clrscr();
printf("Bitte geben Sie als Suchbegriff den Namen ein: "); gets(personen->suche);
for(i=0;i<anzahl;i++){ if(personen->suche==personen->name){ printf("Gefunden."); //Nur zum Test //Hier will ich noch Beruf , Telefonnummer ausgeben } } }
/* BailOut: Ausgabe einer Fehlermeldung und Beenden des Programmes */ /*void BailOut(const char *szMessage){ if (szMessage != (const char *) 0){ (void) fprintf(stderr,"%s\n",szMessage); } exit(EXIT_FAILURE); }*/
|
mod edit: benutze die CPP Tags selber Dieser Post wurde am 08.10.2005 um 00:30 Uhr von Pablo editiert. |