/* Programm: datenbank Datei: filemanagement.cpp Version: 1.1 Datum: 19.02.2002 Autorenteam: Roman Österreicher Simona Rainer Paul Posch Beschreibung: liest in die personen.txt Datei ein und gibt nach einer Usereingabe den gewünschten Datensatz aus. Bei einem Umlaut wird das Zeichen umgewandelt. Weitere Datein: 1902.h main.cpp personen.txt Vorhandene Fehler: Wenn es einen 2. Vornamen gibt wird dieser als Nachname angesehen. Veränderung zu Version 1.0: Wandelt Umlaute in 2normale Zeichen um. */ #include "1902.h" person abc[1000]; void datafromfile() { FILE *stream; char infile[]="personen.txt"; char line[100]; int zeile=0,charmax=100,linemax=1000; if((stream=fopen(infile,"rt"))!=NULL) { while ((fgets(line,charmax,stream)!=NULL) && (zeile<=linemax)) { datenschreiben(zeile, line); zeile++; } } fclose(stream); } void datenschreiben(int zeile, char line[]) { int x=0,i=0; char c; while(line[x]=='\t' || line[x]==' ')x++; while((line[x]!='\0') && (line[x]!='\n') && (line[x]!=EOF) && (line[x]!='\t') && (line[x]!=' ')) { if(line[x]<0) { umlautumwandlung(zeile,i,line[x],1); i++; } else abc[zeile].vorname[i]=line[x]; x++; i++; } abc[zeile].vorname[i]='\0'; //printf("%20s",abc[zeile].vorname); while(line[x]=='\t' || line[x]==' ')x++; i=0; while((line[x]!='\0') && (line[x]!='\n') && (line[x]!=EOF) && (line[x]!='\t') && (line[x]!=' ')) { if(line[x]<0) { umlautumwandlung(zeile,i,line[x],2); i++; } else abc[zeile].nachname[i]=line[x]; i++; x++; } abc[zeile].nachname[i]='\0'; //printf("%20s",abc[zeile].nachname); while(line[x]=='\t' || line[x]==' ')x++; c=line[x]; i=c-'0'; if(line[x++]>='0' && line[x]<='9') { c=line[x]; i=(i*10)+(c-'0'); } abc[zeile].alter=i; //printf("%10d\n",abc[zeile].alter); } void usereingabe() { int i=0,j; printf("Dieses Programm wurde entwickelt von:\n\t\t\t\t\tRoman Oesterreicher \n\t\t\t\t\tSimona Rainer\n\t\t\t\t\tPaul Posch\nAbbruch bei:\n\t\teinen Buchstaben\n\t\teine Zahl ueber 1000\n\t\teine Zahl zum zweiten Mal hintereinander eingeben\n"); while(i>=0 && i<=999) { j=i; printf("\n\nGeben Sie den gewuenschten Datensatzindex ein(0-999):\n"); scanf("%d",&i); if(i>=0 && i<=999)printf("\nDatensatz Nr:%d\n\nVorname: %s\nNachname: %s\nAlter: %d\n",i,abc[i].vorname, abc[i].nachname, abc[i].alter); if(i==j)break; } } void umlautumwandlung(int zeile,int i,char c,int a) { if(a==1) { switch(c) { case 'ä': abc[zeile].vorname[i]='a'; i++; abc[zeile].vorname[i]='e'; break; case 'Ä': abc[zeile].vorname[i]='A'; i++; abc[zeile].vorname[i]='e'; break; case 'ö': abc[zeile].vorname[i]='o'; i++; abc[zeile].vorname[i]='e'; break; case 'Ö': abc[zeile].vorname[i]='O'; i++; abc[zeile].vorname[i]='e'; break; case 'ü': abc[zeile].vorname[i]='u'; i++; abc[zeile].vorname[i]='e'; break; case 'Ü': abc[zeile].vorname[i]='U'; i++; abc[zeile].vorname[i]='e'; break; case 'ß': abc[zeile].vorname[i]='s'; i++; abc[zeile].vorname[i]='s'; break; default: break;//printf("Vorname Fehler auf Zeile %d:%c\n",zeile,c); } } if(a==2) { switch(c) { case 'ä': abc[zeile].nachname[i]='a'; i++; abc[zeile].nachname[i]='e'; break; case 'Ä': abc[zeile].nachname[i]='A'; i++; abc[zeile].nachname[i]='e'; break; case 'ö': abc[zeile].nachname[i]='o'; i++; abc[zeile].nachname[i]='e'; break; case 'Ö': abc[zeile].nachname[i]='O'; i++; abc[zeile].nachname[i]='e'; break; case 'ü': abc[zeile].nachname[i]='u'; i++; abc[zeile].nachname[i]='e'; break; case 'Ü': abc[zeile].nachname[i]='U'; i++; abc[zeile].nachname[i]='e'; break; case 'ß': abc[zeile].nachname[i]='s'; i++; abc[zeile].nachname[i]='s'; break; case 'á': abc[zeile].nachname[i]='a'; i++; abc[zeile].nachname[i]='a'; default: break;//printf("Nachname Fehler auf Zeile %d: %c\n",zeile,c); } } }