Anfaenga
2005-01-24, 13:55:36
Ich muss ein Adressbuch für die Schule programmieren, wir haben aber noch nicht gelernt wie man eine Suchfunktion macht die muss aber dabei sein.
Bis jetzt hab ich das:
#include<iostream.h>
#include<stdio.h>
#include <string.h>
int main()
{
struct person
{
char suchname[20]; // Vergleichswert
char name[20];
char vorname[20];
int alter;
char tel[20];
char str[20];
int nr;
}mensch;
char wahl;
FILE *f;
for(int i=0;i<21;i++)
{
mensch.suchname[i]=' ';
mensch.name[i]=' ';
mensch.vorname[i]=' ';
mensch.tel[i]=' ';
mensch.str[i]=' ';
}
mensch.alter=0;
mensch.nr=0;
do
{
printf("\n* 1 -> Adressdaten eingeben *\n");
printf("* 2 -> Suchen (Nachname) *\n");
printf("* 3 -> Ins Adressbuch speichern *\n");
printf("* 4 -> Einlesen des Adressbuchs *\n");
printf("* 0 -> Beenden *\n\n");
scanf("%s" ,&wahl);
switch(wahl)
{
case '1': {
printf("\n* Hier bitte den Vornamen,Nachnamen,das Alter *\n");
printf("* die Telefonnummer,Strasse und die Hausnummer eingeben *\n\n");
printf("Vorname : ");
scanf("%s" ,&mensch.vorname);
printf("Name : ");
scanf("%s" ,&mensch.name);
printf("Alter : ");
scanf("%d" ,&mensch.alter);
printf("Telefonnummer : ");
scanf("%s" ,&mensch.tel);
printf("Strasse : ");
scanf("%s" ,&mensch.str);
printf("Hausnummer : ");
scanf("%d" ,&mensch.nr);
break;}
case '2': {printf("Suche eingeben (Nachname): ");
scanf("%s" ,&mensch.suchname);
if( strcmp( mensch.suchname, mensch.name ) == 0 )
{printf("Vorname: %s\n",mensch.vorname);
printf("Name: %s\n",mensch.name);
printf("Alter: %d\n",mensch.alter);
printf("Telefon: %s\n",mensch.tel);
printf("Strasse: %s\n",mensch.str);
printf("Hausnummer: %d\n",mensch.nr);
}
break;}
case '3': {printf("\nTabelle wird gespeichert!\n");
f=fopen("adressbuch.txt","a+");
fwrite(&mensch,sizeof(mensch),1,f);
fclose(f);
break;}
case '4': {printf("\nTabelle wird geladen!\n");
f=fopen("adressbuch.txt","r");
fread(&mensch,sizeof(mensch),3,f);
printf("Ihre angaben:\n\n");
printf("Vorname: %s\n",mensch.vorname);
printf("Name: %s\n",mensch.name);
printf("Alter: %d\n",mensch.alter);
printf("Telefon: %s\n",mensch.tel);
printf("Strasse: %s\n",mensch.str);
printf("Hausnummer: %d\n",mensch.nr);
fclose(f);
break;}
case '0': {printf("Programmende!\n");
break;}
}
}
while(wahl!='0');
return 0;
}
Das Problem ist dass ich nur ein-und denselben Eintrag suchen kann obwohl das programm anscheinend mehrer Adressen in die txt datei schreiben kann.
Bis jetzt hab ich das:
#include<iostream.h>
#include<stdio.h>
#include <string.h>
int main()
{
struct person
{
char suchname[20]; // Vergleichswert
char name[20];
char vorname[20];
int alter;
char tel[20];
char str[20];
int nr;
}mensch;
char wahl;
FILE *f;
for(int i=0;i<21;i++)
{
mensch.suchname[i]=' ';
mensch.name[i]=' ';
mensch.vorname[i]=' ';
mensch.tel[i]=' ';
mensch.str[i]=' ';
}
mensch.alter=0;
mensch.nr=0;
do
{
printf("\n* 1 -> Adressdaten eingeben *\n");
printf("* 2 -> Suchen (Nachname) *\n");
printf("* 3 -> Ins Adressbuch speichern *\n");
printf("* 4 -> Einlesen des Adressbuchs *\n");
printf("* 0 -> Beenden *\n\n");
scanf("%s" ,&wahl);
switch(wahl)
{
case '1': {
printf("\n* Hier bitte den Vornamen,Nachnamen,das Alter *\n");
printf("* die Telefonnummer,Strasse und die Hausnummer eingeben *\n\n");
printf("Vorname : ");
scanf("%s" ,&mensch.vorname);
printf("Name : ");
scanf("%s" ,&mensch.name);
printf("Alter : ");
scanf("%d" ,&mensch.alter);
printf("Telefonnummer : ");
scanf("%s" ,&mensch.tel);
printf("Strasse : ");
scanf("%s" ,&mensch.str);
printf("Hausnummer : ");
scanf("%d" ,&mensch.nr);
break;}
case '2': {printf("Suche eingeben (Nachname): ");
scanf("%s" ,&mensch.suchname);
if( strcmp( mensch.suchname, mensch.name ) == 0 )
{printf("Vorname: %s\n",mensch.vorname);
printf("Name: %s\n",mensch.name);
printf("Alter: %d\n",mensch.alter);
printf("Telefon: %s\n",mensch.tel);
printf("Strasse: %s\n",mensch.str);
printf("Hausnummer: %d\n",mensch.nr);
}
break;}
case '3': {printf("\nTabelle wird gespeichert!\n");
f=fopen("adressbuch.txt","a+");
fwrite(&mensch,sizeof(mensch),1,f);
fclose(f);
break;}
case '4': {printf("\nTabelle wird geladen!\n");
f=fopen("adressbuch.txt","r");
fread(&mensch,sizeof(mensch),3,f);
printf("Ihre angaben:\n\n");
printf("Vorname: %s\n",mensch.vorname);
printf("Name: %s\n",mensch.name);
printf("Alter: %d\n",mensch.alter);
printf("Telefon: %s\n",mensch.tel);
printf("Strasse: %s\n",mensch.str);
printf("Hausnummer: %d\n",mensch.nr);
fclose(f);
break;}
case '0': {printf("Programmende!\n");
break;}
}
}
while(wahl!='0');
return 0;
}
Das Problem ist dass ich nur ein-und denselben Eintrag suchen kann obwohl das programm anscheinend mehrer Adressen in die txt datei schreiben kann.