1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205:
| //AUFGABE: es muss anzeigen ,ändern der daten,loeschen und speichern können... //einfache ausgabe adressverwaltung
#include <stdio.h> // Standard ein-ausgabe //#include bedeutet, hier wird etwas eingefügt //und zwar der Inhalt der Header Datei stdio.h #include <string.h> // Biblitothek für ganze Zeichenketten #include <stdlib.h> //Standard Library
static int x; //Der Quelltext "static int" besteht aus dem Speicherklassenspezifizierer //"static" und dem Typ "int". Der Speicherklassenspezifizierer //"static" legt fest, daß die Variable statisch ist, //also während der gesamten Laufzeit eines Programms existiert. //Die Deklaration "static int x;" im Klassenspezifizierer //ist nur eine Deklaration.
//
typedef struct adres { //es können neue Datentypen erzeugt werden // die allerdings auf bereits bestehende aufbauen
//eingeführte typedef Anweisung //kann auch verwendet werden, um Strukturen einzuführen char vname[20]; char nname[20]; long PLZ; char ort[20]; int matrikelnummer; }adr;
void Eingabe(int nr,struct adres neu[]) //Der Typ void* steht für einen Zeiger // auf ein Objekt beliebigen (bzw. unbekannten)
{
printf("Vorname : "); gets(neu[nr].vname); printf("Nachname : "); gets(neu[nr].nname); printf("Postleitzahl: "); scanf("%ld",&neu[nr].PLZ); fflush(stdin); printf("Wohnort : "); gets(neu[nr].ort); printf("Matrikelnummer : "); scanf("%d",&neu[nr].matrikelnummer); } //Eine Funktion, die als void deklariert wurde, //darf keinen Rückgabetyp erhalten. void Suche(struct adres search[],char buchstabe,int nr) //einfaches Sortierverfahren { int i; for(i=0; i<=nr; i++) { if(search[i].nname[0] == buchstabe) { printf("\n\nGefunden unter Buchstabe :\"%c\"\n\n",buchstabe); printf("Vorname.........:%s\n",search[i].vname); printf("Nachname........:%s\n",search[i].nname); printf("Postleitzahl....:%ld\n",search[i].PLZ); printf("Ort.............:%s\n",search[i].ort); printf("Matrikelnummer.....:%d\n",search[i].matrikelnummer); fflush(stdin); printf("\n\tWeiter mit <ENTER>\n"); getchar(); //einlesen der charakter vom tastatur } } }
void Ausgabe(struct adres all[],int nr)//Ein-/Ausgabe erfolgt durch Standardfunktionen, // die in der Header-Datei stdio.h definiert sind.
{ int i;
for(i=0; i<nr; i++) { printf("Vorname.........:%s\n",all[i].vname); printf("Nachname........:%s\n",all[i].nname); printf("Postleitzahl....:%d\n",all[i].PLZ); printf("Ort.............:%s\n",all[i].ort); printf("Matrikelnummer.....:%d\n\n",all[i].matrikelnummer);
if((!(i%2))&& i!=0) { fflush(stdin); // löscht den Arbeitsspeicher? printf("\n\tWeiter mit <Enter>\n\n"); getchar(); } } }
void Sort(struct adres sort[],int nr) // { int i,j; struct adres *temp; temp=(struct adres *)malloc(sizeof(struct adres *));
for(i=0; i<nr; i++) { for(j=i+1;j<nr;j++) { if(strcmp(sort[i].nname, sort[j].nname)>0) { *temp=sort[j]; sort[j]=sort[i]; sort[i]=*temp; } } } printf(".....Sortiert!!\n\n"); }
void speichern(adr adresse[],int nr) { int i; FILE *fp; fp=fopen("adress.txt", "r+"); // for-schleife for (i=0;i<100;i++) // Anfangswert,Endwert,Zähler { fprintf(fp,"%s\t",adresse[i].vname); fprintf(fp,"%s\t",adresse[i].nname); fprintf(fp,"%d\t",adresse[i].PLZ); fprintf(fp,"%s\t",adresse[i].ort); fprintf(fp,"%d\n",adresse[i].matrikelnummer); } fclose(fp); }
int main() //Die Funktion main ist der Anfangspunkt unseres Programmes { int i; int auswahl; char c; FILE *fp; adr adresse[100];
fp=fopen("adress.txt", "r+");
for (i=0;i<100;i++) { fprintf(fp,"*\t"); fprintf(fp,"*\t"); fprintf(fp,"0\t"); fprintf(fp,"*\t"); fprintf(fp,"0\n"); } fclose(fp);
do { printf("\n******************************************\n*"); printf("\n* Adressverwaltungs-Programm *\n*"); printf("\n******************************************"); printf("\n\n\n\n\n***** Bitte Auswaehlen ****\n"); printf("-1- Neue Adresse eingeben\n"); printf("-2- Bestimmte Adresse Ausgeben\n"); printf("-3- Alle Adressen Ausgeben\n"); printf("-4- Adressen Sortieren\n"); printf("-6- Adresse speichern\n"); printf("-7- Adresse loeschen\n"); printf("-8- Programm beenden\n");
printf("\nIhre Auswahl : "); scanf("%d",&auswahl); fflush(stdin);
switch(auswahl) { case 1 : Eingabe(x++,adresse); break; case 2 : printf("Anfangsbuchstabe d. Nachnamen :"); scanf("%c",&c); Suche(adresse,c,x); break; case 3 : Ausgabe(adresse,x); break; case 4 : Ausgabe(adresse,x); break; case 5 : Sort(adresse,x); break; case 6 : speichern(adresse,x); break; case 8 :return; default: break; } }while(auswahl <8);
return 0; } |