/* 2. Die persönlichen Daten von n Vereinsmitgliedern ( Name, Vorname, Geburts-
datum) sind einzugeben.
a) Nach dem letzten Mitglied ist das Tagesdatum einzugeben und es soll eine
Liste der Mitglieder ausgegeben werden, die an diesem Tag Geburtstag haben.
b) Das Geburtsdatum zu einem Namen, der einzulesen ist, soll ausgegeben werden!
Hinweis: strcmp() zum Vergleich von Strings
c) Schreiben Sie ein Menü mit den Funktionen 'einlesen', 'liste' und 'datum',
das die oben beschriebenen Aktionen wiederholt anbietet und mit Hilfe der
Funktionen realisiert!
------------------------------------------------------------------------------*/
#include <stdlib.h>
#include <stdio.h>
struct datum_typ
{  int t, m, j;
};
struct mg_typ
{ char name[10], vorname[10]; struct datum_typ gd;
};
void einlesen( char dateiname[] )
{ FILE * datei;
  struct mg_typ m;
  datei= fopen( dateiname, "a");
  if( datei==NULL) printf("\n Datei konnte nicht geoeffnet werden! \n");
  else
  {  printf("\n Name: ");   scanf(" %s", &m.name);
     printf(" Vorname: ");  scanf("%s", &m.vorname);
     do{ printf(" Geburtsdatum: Tag: ");
         scanf("%i", &m.gd.t);
     }while( m.gd.t>31 || m.gd.t<1);
     do{ printf(" Geburtsdatum: Monat: ");
         scanf("%i", &m.gd.m);
     }while( m.gd.m>12 || m.gd.m<1);
     do{ printf(" Geburtsdatum:Jahr: ");
         scanf("%i", &m.gd.j);
     }while( m.gd.j>2008 || m.gd.j<1908);
     fprintf( datei, "%s %s %i %i %i\n", m.name, m.vorname, m.gd.t, m.gd.m, m.gd.j);
     fclose( datei);
  }
}
void tabelle( char dateiname[] )
{ FILE * datei;
  struct mg_typ m;
  datei= fopen( dateiname, "r");
  printf("\n Mitglieder: \n");
  if( datei==NULL) printf("\n Datei konnte nicht geoeffnet werden! \n");
  else
  {  while( fscanf( datei, "%s %s %i %i %i\n",
                          m.name, m.vorname, &m.gd.t, &m.gd.m, &m.gd.j)==5 )
     printf("%-10s %-10s, geb. am %2i.%2i.%4i\n", m.name, m.vorname, m.gd.t, m.gd.m, m.gd.j);
     fclose( datei);
  }
  printf("\n\n");
}
void gebkinder( char dateiname[] )
{
}
void gebtag( char dateiname[] )
{ FILE * datei;
  struct mg_typ m;   char gesucht[10]; int j;

  printf("\n Geburtstag von: \n");
  scanf("%s", gesucht);
  datei= fopen( dateiname, "r");
  if( datei==NULL) printf("\n Datei konnte nicht geoeffnet werden! \n");
  else
  {  while( fscanf( datei, "%s %s %i %i %i\n",
                          m.name, m.vorname, &m.gd.t, &m.gd.m, &m.gd.j)==5 )
     { j= strcmp( gesucht, m.name);
       if( j==0)printf("%-10s %-10s, geb. am %2i.%2i.%4i\n", m.name, m.vorname,
                                                        m.gd.t, m.gd.m, m.gd.j);
     }
     fclose( datei);
  }
  printf("\n\n");
}
int main()
{ char dname[]="s:/mitglieder.dat";
  int menue;
  do{ printf("\n - 1 - einlesen\n - 2 - Tabelle\n - 3 - Gebtag von"
             "\n - 4 - Geburtstagskinder am\t\t: ");
      scanf("%i", &menue);
      switch( menue)
      { case 1: einlesen( dname); break;
        case 2: tabelle ( dname); break;
        case 3: gebtag ( dname);  break;
        case 4: gebkinder( dname); break;
        default: printf("\n Falsche Eingabe!\n");
      }
  }while( menue!=0);

  return 0;
}
