/* 7. Ein Student erfaßt von jedem seiner Videos Autor, Titel und Preis in einer
Datei. Hinweis: Leerzeichen im Titel als Unterstriche schreiben!
a) Schreiben Sie ein Programm, das n Videos hinzufügt (n einlesen), alle Videos
   auflistet und den Gesamtwert ausgibt!
b) Schreiben Sie ein Menü: einlesen, anzeigen, ende und die dazu geeigneten
Funktionen.
------------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>

void hinzu( char dateiname[] )
{ char autor[10], titel[30];
  float preis;
  int n, i;
  FILE * datei;
  datei= fopen( dateiname, "a");
  if( datei==NULL )printf("\n Datei konnte nicht geoeffnet werden!\n");
  else{ printf("\n Wieviele Videos? ");
        scanf("%i", &n);
        for( i=0; i<n; i++)
        { printf("\n Titel: "); scanf("%s", titel);
          printf(" Autor: ");   scanf("%s", autor);
          printf(" Preis: ");   scanf("%f", &preis);
          fprintf( datei, "%s %s %f ", titel, autor, preis);
        }
        fclose( datei);
  }
}
void tabelle( char dateiname[] )
{ char autor[10], titel[30];
  float preis;
  FILE * datei;
  float wert=0;
  datei= fopen( dateiname, "r");
  if( datei==NULL )printf("\n Datei konnte nicht geoeffnet werden!\n");
  else{  while( fscanf( datei, "%s %s %f ", titel, autor, &preis)==3)
         {       printf("\n %-15s %-15s %6.2f ", titel, autor, preis);
                 wert= wert + preis;
         }
         fclose( datei);
         printf("\n Gesamtwert: %.2f\n\n", wert );
  }
}
void aendern( char dateiname[] )
{ char autor[10], titel[30];    char dneu[]="s:\\neu.dat";
  float preis;
  FILE * datei, *neu;
  datei= fopen( dateiname, "r");
  neu  = fopen( dneu, "w");
  if( datei==NULL )printf("\n Datei alt konnte nicht geoeffnet werden!\n");
  else{  if( neu==NULL )printf("\n Datei  neu konnte nicht geoeffnet werden!\n");
         else  while( fscanf( datei, "%s %s %f ", titel, autor, &preis)==3)
               {  printf("\n %-15s %-15s %6.2f ", titel, autor, preis);
                  if( preis<30)fprintf( neu, "%s %s %f ", titel, autor, preis);
               }
         }
         fclose( datei); fclose( neu);
         remove( dateiname);
         rename( dneu, dateiname);
}
int main()
{  char dname[]="s:\\videos.dat";
   int menue;
   do{  printf("\n - 0 - Ende\n - 1 - hinzufuegen\n - 2 - Tabelle "
               "\n - 3 - Aendern     : ");
        scanf("%i", &menue);
        switch( menue )
        { case 1: hinzu( dname);   break;
          case 2: tabelle( dname); break;
          case 3: aendern( dname); break;
          default: printf("\n Falsche Eingabe!\n");
        }
   }while( menue!=0);

   return 0;
}
