#include<stdlib.h>
#include<stdio.h>
#include<string.h>
typedef struct{
char codiceTreno[10];
char cittaPartenza[15];
char dataPartenza[10];
char oraPartenza[10];
char cittaArrivo[15];
char dataArrivo[10];
char oraArrivo[10];
int numPostiPrenPclasse;
int numPostiLibPclasse;
float prezzo1;
int numPostiPrenSclasse;
int numPostiLibSclasse;
float prezzo2;
}tipoTreno;
int leggiRecord(tipoTreno tren);
void svuotabuffer();
int inserisciTreno(tipoTreno *tren, tipoTreno treno, FILE *alfa, FILE *temp);
int main(void)
{
int i=0; //contatore ciclo for del numero di treni
int totTreni; //numero totale di treni
tipoTreno treno; //record del treno
FILE*alfa; //file binario destinazione record treni
char nomeAlfa[]="treni.dat"; //nome del file di destinazione dei record
int controllo; //selezione del menu' iniziale
//selezione del menu' switch
printf("\n\n-----scegli tra le seguenti opzioni--------\n");
printf("1.riscrivi i treni\n2.visualizza treni\n::::");
scanf("%d",&controllo);
//inizio dello switch
switch(controllo)
{
//inserimento dei treni
case 1:
printf("quanti treni vuoi inserire?");
scanf("%d",&totTreni);
alfa=fopen(nomeAlfa,"wb");
//inizio del ciclo for per l'inserimento dei record
for(i=0;i<totTreni;i++)
{
printf("----INSERISCI IL %d TRENO----",i+1);
inserisciTreno(&nuovotreno,treno,alfa,temp);
fwrite(&treno,sizeof(tipoTreno),1,alfa);
}
fclose(alfa);
break;
//lettura dei record contenuti nel file treni.dat
case 2:
alfa=fopen(nomeAlfa,"rb");
while(!feof(alfa))
{
fread(&treno,sizeof(tipoTreno),1,alfa);
leggiRecord(treno);
}
fclose(alfa);
printf("\n\n\n");
system("PAUSE");
return(0);
}
//funzione inserimento record
int inserisciTreno(tipoTreno*tren, tipoTreno treno,FILE *alfa, FILE *temp)
{
svuotabuffer();
printf("\ninserisci il codice del treno:");
gets(tren->codiceTreno);
printf("inserisci la citta' di partenza:");
gets(tren->cittaPartenza);
printf("inserisci la data di partenza:");
gets(tren->dataPartenza);
printf("inserisci l'ora di partenza:");
gets(tren->oraPartenza);
printf("inserire la citta' di arrivo:");
gets(tren->cittaArrivo);
printf("inserisci la data di arrivo:");
gets(tren->dataArrivo);
printf("inserisci l'ora di arrivo:");
gets(tren->oraArrivo);
printf("inserisci il numero di posti prenotati in prima classe:");
scanf("%d",&tren->numPostiPrenPclasse);
printf("inserisci il numero di posti liberi in prima classe:");
scanf("%d",&tren->numPostiLibPclasse);
printf("inserire il prezzo del biglietto in prima classe:");
scanf("%f",&tren->prezzo1);
printf("inserisci il numero di posti prenotati della seconda classe:");
scanf("%d",&tren->numPostiPrenSclasse);
printf("inserire il numero di posti liberi della seconda classe:");
scanf("%d",&tren->numPostiLibSclasse);
printf("inserisci il prezzo del biglietto in seconda classe:");
scanf("%f",&tren->prezzo2);
}
//funzione lettura record
int leggiRecord(tipoTreno tren)
{
printf("\ncodice del treno:%s",tren.codiceTreno);
printf("\ncitta' di partenza:%s",tren.cittaPartenza);
printf("\ndata di partenza:%s",tren.dataPartenza);
printf("\nora di partenza:%s",tren.oraPartenza);
printf("\ncitta' di arrivo:%s",tren.cittaArrivo);
printf("\ndata di arrivo:%s",tren.dataArrivo);
printf("\nora di arrivo:%s",tren.oraArrivo);
printf("\nnumero posti prenotati prima classe:%d",tren.numPostiPrenPclasse);
printf("\nnumero di posti liberi prima classe:%d",tren.numPostiLibPclasse);
printf("\nprezzo biglietto prima classe:%f",tren.prezzo1);
printf("\nnumero posti prenotati seconda classe:%d",tren.numPostiPrenSclasse);
printf("\nnumero posti liberi seconda classe:%d",tren.numPostiLibSclasse);
printf("\nprezzi biglietto seconda classe:%f",tren.prezzo2);
}
//funzione svuotabuffer
void svuotabuffer()
{ char scarta;
do
{
scanf("%c",&scarta);
}while(scarta!='\n');}
}