/* 5. Ein Arzt habe folgende Informationen über jeden Patienten:
Name, Geburtsjahr und Gewicht(in kg).
Schreiben Sie ein Programm, das einen neuen Patienten in die Datei einträgt,
alle Daten anzeigt und den leichtesten Patienten ausgibt.
------------------------------------------------------------------------------*/
#include <stdio.h>
struct p_typ
{  char name[15]; int jahr; float gewicht;
};
void neuer( char dateiname[] )
{ struct p_typ p;
  FILE * datei;                   // Dateizeiger
  datei= fopen( dateiname, "a");  // a= zum Anhängen öffnen, w=zum neu Schreiben
  if( datei==NULL)printf("\n Datei konnte nicht geoeffnet werden\n");
  else
  { printf("\n Name: ");       scanf("%s", p.name);
    printf(" Geburtsjahr: ");  scanf("%i", &p.jahr);
    printf(" Gewicht: ");      scanf("%f", &p.gewicht);

    fprintf( datei, "%s %i %f\n", p.name, p.jahr, p.gewicht);
    fclose( datei);
  }
}
void tabelle( char dateiname[] )
{ struct p_typ p;
  FILE * datei;
  datei= fopen( dateiname, "r");
  printf("\n%s :", dateiname);
  if( datei==NULL)printf("\n Datei konnte nicht geoeffnet werden\n");
  else
  { while( fscanf( datei, "%s %i %f\n", p.name, &p.jahr, &p.gewicht) == 3 )
       printf("%-10s, geb.: %i, %6.1f kg.\n", p.name, p.jahr, p.gewicht);
    fclose( datei);
  }
}
void leichter( char dateiname[] )
{ struct p_typ p, min;             // Hilfsvariable min
  FILE * datei;
  datei= fopen( dateiname, "r");   // r - zum Lesen öffnen
  printf("\n");
  min.gewicht= 500;               // init
  if( datei==NULL)printf("\n Datei konnte nicht geoeffnet werden\n");
  else
  { while( fscanf( datei, "%s %i %f\n", p.name, &p.jahr, &p.gewicht) == 3 )
       if( p.gewicht < min.gewicht) min= p;
    fclose( datei);
    printf("\n Leichtester ist: %-10s, geb.: %i, %6.1f kg.\n",min.name,
                                                        min.jahr, min.gewicht);
  }
}
void andere( char dateiname[] )
{ char bname[30];

  printf("\n alter Dateiname: %s", dateiname);
  printf("\n neuer Dateiname: ");  scanf("%s", bname);
  rename( dateiname, bname);  printf("\n rename");  //umbenennen
  remove( dateiname);         printf("\n remove");  // alte löschen
  strcpy( dateiname, bname);  printf("\n strcpy %s\n", dateiname);
}
int main()
{ int m;
  char dname[]="L:/hollatz/patienten.dat";

  do{  printf("\n - 1 - Neuer Patient\n - 2 - Tabelle aller Patienten\n - 3 - "
       "Leichtester Patient  \n - 4 - andere Datei wählen\n - 0 - Ende        "
       "  : ");
       scanf("%i", &m);
       switch( m)
       {   case 1: neuer( dname);    break;
           case 2: tabelle( dname);  break;
           case 3: leichter( dname); break;
           case 4: andere( dname); printf("\n andere");  break;
           default: printf("\n Falsche Eingabe!\n");
       }
  }while( m!=0);

  return 0;
}
