Overflow ha scritto:
ci sono diversi errori, ad esempio:
void dativolo (dativolo *volo);
void dataarrivo (dataarrivo *arrivo);
void datapartenza (datapartenza *partenza);
hai dichiarato queste funzioni con i nomi assegnati alle strutture. Devi rivedere un po
Ciao l'ho rivisto il programma ci ho perso 4 giorni ma questo è quello che ho fatto:
//Dichiarazione delle direttive
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//Dichiarazione delle strutture dei file
typedef struct
{
char giorno1[10];
int giornoNumero1;
char mese;
int anno;
} dataPartenza;
typedef struct {
char giorno1[10];
int giornoNumero1;
char mese1;
int anno1;
} dataArrivo;
typedef struct
{
char codiceVolo[30];
char cittaPartenza[50];
float oraPartenza;
char cittaArrivo[50];
float oraArrivo;
int postiVenduti;
int postidisponibili;
float prezzo;
dataPartenza dPartenza;
dataArrivo dArrivo;
int flag;
} prenotazioneAereo;
prenotazioneAereo viaggio;
dataPartenza dPartenza;
dataArrivo dArrivo;
FILE *fp;
//Dichiarazione dei prototipi
void inserimento();
void cancellazione();
void aggiornamento();
void prenota();
void cancella();
void ricerca();
void visualizza();
//Dichiarazione delle variabili globali
int Numero;
char codiceVolo[20];//Variabile di lavoro , servono per la ricerca di un record nelle funzioni cancellazione , cancella e aggiornamento
char cittaPartenza[20];//Variabile di lavoro , servono per la ricerca di un record nelle funzioni cancellazione , cancella e aggiornamento
char cittaArrivo[10];//Variabile di lavoro, servono per la ricerca di un record nelle funzioni cancellazione , cancella e aggiornamento
int risposta;//Variabile di lavoro , serve per contenere la risposta dell'utente
long posizione;//Variabile di lavoro , serve per la posizione del record
int trovato;//Variabile di lavoro , serve per contenere il valore di ricerca
int i;//Variabile di lavoro , indice
int ,f2,f3,f4,f5;//Variabili di lavoro , servono nella ricerca di un record da cui viene assegnato il valore dalle funzioni strcmp
int dimrec;//Variabile di lavoro
int dimfile;//Variabile di lavoro
float oraArrivo;
float oraPartenza;
int main (void){
//Inizio File
//Do-while , con lo switch dentro al do per la scelta della funzione da parte dell'utente
do
{
printf("\n Digita il numero che corrisponde alla operazione da eseguire\n\n");
printf("\n 1 : Inserimento di un nuovo record");
printf("\n 2 : Cancellazione di un record");
printf("\n 3 : Aggiornamento di un record");
printf("\n 4 : Prenota");
printf("\n 5 : Cancella");
printf("\n 6 : per uscire dal programma\n");
printf("\n\n Inserisci il numero--->");
scanf("%d", &Numero);
//Inizio Switch
switch (Numero)
{
case 1:
inserimento();//Chiamata funzione inserimento per scelta 1
break;
case 2:
cancellazione();//Chiamata funzione cancellazione per scelta 2
break;
case 3:
aggiornamento();//Chiamata funzione aggiornamento per scelta 3
break;
case 4:
prenota();//Chiamata funzione prenota per scelta 4
break;
case 5:
cancella();//Chiamata funzione cancella per scelta 5
break;
}// fine switch
}
while (Numero !=6) ; //Ripete finchè il valore della variabile numero non è 6 , fine swhile
system("PAUSE");//System Pause per fermare la schermata di output
return (0);
system("cls");//System clear screen per pulire lo schermo
//Fine File
}
//Funzione inserimento
void inserimento(){
int risposta;
do//Inizo do
{
//Acquisizione dei dati da tastiera da parte dell'utente
printf ("inserisci i dati del viaggio:\n");
printf(" Inserisci il codice del volo --> ");
scanf("%s",viaggio.codiceVolo);
printf(" Inserisci la citta di partenza --> ");
scanf("%s",viaggio.cittaPartenza);
printf("inserisci la data della Partenza : \n");
printf("Giorno in caratteri : ");
scanf("%c",&dPartenza.giorno1);
printf("Giorno in numeri : ");
scanf("%d",&dPartenza.giornoNumero1);
printf("Mese in caratteri : ");
scanf("%c",&dPartenza.mese);
printf("Anno : ");
scanf("%d",&dPartenza.anno);
printf(" Inserisci l'ora di partenza --> ");
scanf("%s",viaggio.oraPartenza);
printf(" Inserisci la citta di arrivo --> ");
scanf("%s",viaggio.cittaArrivo);
printf("inserisci la data dell'arrivo: \n");
printf("Giorno in caratteri : ");
scanf("%c",&dArrivo.giorno1);
printf("Giorno in numeri : ");
scanf("%d",&dArrivo.giornoNumero1);
printf("Mese in caratteri : ");
scanf("%c",&dArrivo.mese1);
printf("Anno : ");
scanf("%d",&dArrivo.anno1);
printf(" Inserisci l' ora di arrivo --> ");
scanf("%s",viaggio.oraArrivo);
printf(" Inserisci i posti venduti --> ");
scanf("%s",viaggio.postiVenduti);
printf(" Inserisci i posti disponibili --> ");
scanf("%s",viaggio.postidisponibili);
printf(" Inserisci il prezzo --> ");
scanf("%s",viaggio.prezzo);
viaggio.postidisponibili=0;
viaggio.flag=0;
fwrite(&viaggio ,sizeof(prenotazioneAereo),1,fp);
printf("Altri voli da inserire? ( 0=no , 1=Si : ");
scanf("%d",&risposta);
}
while(risposta !=0); //Fine primo do
fclose(fp);//Chiusura del file
} //Fine funzione inserimento
// inzio funzione cancellazione
void cancellazione()
{
fp =fopen("Aereo.dat","r+");// apre il file
if(fp==NULL) {
perror("Errore in apertura del file");
exit(1);
}
// determina la dimensione del file
fseek(fp, 0, SEEK_END);
dimfile=ftell(fp);
fclose(fp);//Chiusura del file
do//Inizio do
{
//Acquisizione dati per la ricerca del record da cancellare
printf("Cancellazione di un record\n");
printf("Inserisci il codice da eliminare:\n ");
scanf("%s",codiceVolo);
printf("inserisci il paese di partenza:\n");
scanf ("%s", cittaPartenza);
printf("inserisci il paese di arrivo:\n");
scanf ("%s", cittaPartenza);
printf("Orario di partenza: ");
scanf("%f", oraPartenza);
printf("orario di arrivo:\n");
scanf("%f", oraArrivo);
fp =fopen("Aereo.dat","r+");//Apertura file aereo.dat in modalità r+
ricerca();//Chiamata funzione ricerca
if (trovato == 0)//Inizio di un if-else annidato con un altro if
{
printf("Volo non trovato! \n\n");
system("PAUSE");
}
else
{
if (viaggio.flag == 0)
{
visualizza();
do //Inizio secondo do
{
printf("Confermi Cancellazione? ( 0=no , 1=Si : ");
scanf("%d",&risposta);
}
while((risposta !=0) && (risposta !=1)); //Fine secondo do
if (risposta == 1)
{
viaggio.flag = 1;
fseek(fp,posizione,0);
fwrite(&viaggio ,sizeof(prenotazioneAereo),1,fp);
}
}
else
{
printf("volo già cancellato! \n\n");
system("PAUSE");//Utilizzo della system pause per fermare lo schermo
}
}
fclose(fp);//Chiusura del file
printf("Altri voli da cancellare ? ( 0=no , 1=Si : ");
scanf("%d",&risposta);
}
while(risposta !=0); //Fine primo do
} //Fine funzione Cancellazione
// Inizio funzione di aggiornamento di un record
void aggiornamento()
{
fp =fopen("Aereo.dat","r+");
// apre il file aereo.dat in modalità r+
if(fp==NULL) {
perror("Errore in apertura del file");
exit(1);
}
// determina la dimensione del file
fseek(fp, 0, SEEK_END);//Utilizzo della funzione fseek
dimfile=ftell(fp);
fclose(fp);//Chiusura del file
do
{
//Acquisizione dei dati per la ricerca del record da aggiornare
printf("Aggiornamento di un record\n");
printf("Inserisci il codice da aggiornare:\n ");
scanf("%s",codiceVolo);
printf("inserisci il paese di partenza:\n");
scanf ("%s", cittaPartenza);
printf("inserisci il paese di arrivo:\n");
scanf ("%s", cittaPartenza);
printf("Orario di partenza: ");
scanf("%f", oraPartenza);
printf("orario di arrivo:\n");
scanf("%f", oraArrivo);
fp =fopen("Aereo.dat","r+");//Apertura del file aereo.dat in modalità r+
ricerca();//Chiamata della funzione ricerca
if (trovato == 0)//If per il controllo della ricerca del record , se è 0 visualizza un messaggio di errore altrimenti aggiorna il record
{
printf("volo non trovato! \n\n");
system("PAUSE");
}
else
{
if (viaggio.flag == 0)
{
visualizza();
printf(" Inserisci il codice del volo --> ");
scanf("%s",viaggio.codiceVolo);
printf(" Inserisci la citta di partenza --> ");
scanf("%s",viaggio.cittaPartenza);
printf("inserisci la data della Partenza : \n");
printf("Giorno in caratteri : ");
scanf("%c",&dPartenza.giorno1);
printf("Giorno in numeri : ");
scanf("%d",&dPartenza.giornoNumero1);
printf("Mese in caratteri : ");
scanf("%c",&dPartenza.mese);
printf("Anno : ");
scanf("%d",&dPartenza.anno);
printf(" Inserisci l'ora di partenza --> ");
scanf("%s",viaggio.oraPartenza);
printf(" Inserisci la citta di arrivo --> ");
scanf("%s",viaggio.cittaArrivo);
printf("inserisci la data dell'arrivo: \n");
printf("Giorno in caratteri : ");
scanf("%c",&dArrivo.giorno1);
printf("Giorno in numeri : ");
scanf("%d",&dArrivo.giornoNumero1);
printf("Mese in caratteri : ");
scanf("%c",&dArrivo.mese1);
printf("Anno : ");
scanf("%d",&dArrivo.anno1);
printf(" Inserisci l' ora di arrivo --> ");
scanf("%s",viaggio.oraArrivo);
do
{
printf("Nr Posti Venduti ");
scanf("%d",&viaggio.postiVenduti);
}
while((viaggio.postiVenduti > viaggio.postidisponibili));
printf(" Inserisci i posti disponibili --> ");
scanf("%s",viaggio.postidisponibili);
printf(" Inserisci il prezzo --> ");
scanf("%s",viaggio.prezzo);
printf("Prezzo: ");
scanf("%f",&viaggio.prezzo);
do
{
printf("Confermi Aggiornamento? ( 0=no , 1=Si : ");
scanf("%d",&risposta);
}
while((risposta !=0) && (risposta !=1));
if (risposta == 1)
{
fseek(fp,posizione,0);
fwrite(&viaggio ,sizeof(prenotazioneAereo),1,fp);
}
}
else
{
printf("Volo cancellato! \n\n");
system("PAUSE");
}
}
fclose(fp);
printf("Altri aggiornamenti ? ( 0=no , 1=Si : ");
scanf("%d",&risposta);
}
while(risposta !=0);
}
void prenota()
{
int posti;
int postitotali;
int postiprenotabili;
fp =fopen("Aereo.dat","r+");
/* apre il file */
if(fp==NULL) {
perror("Errore in apertura del file");
exit(1);
}
/* determina la dimensione del file */
fseek(fp, 0, SEEK_END);
dimfile=ftell(fp);
fclose(fp);
do
{
printf("Prenotazione di un volo\n");
printf("Inserisci il codice:\n ");
scanf("%s",codiceVolo);
printf("inserisci il paese di partenza:\n");
scanf ("%s", cittaPartenza);
printf("inserisci il paese di arrivo:\n");
scanf ("%s", cittaPartenza);
printf("Orario di partenza: ");
scanf("%f", oraPartenza);
printf("orario di arrivo:\n");
scanf("%f", oraArrivo);
fp =fopen("Aereo.dat","r+");
ricerca();
if (trovato == 0)
{
printf("volo non trovato! \n\n");
system("PAUSE");
}
else
{
if (viaggio.flag == 0)
{
visualizza();
postiprenotabili = viaggio.postidisponibili - viaggio.postiVenduti;
printf(" I Posti prenotabili sono : %d \n",postiprenotabili);
do
{
printf("Nr Posti da prenotare ");
scanf("%d",&posti);
}
while((posti > viaggio.postidisponibili));
viaggio.postiVenduti=viaggio.postiVenduti+posti;
viaggio.postidisponibili=viaggio.postidisponibili-posti;
do
{
printf("Confermi Prenotazione? ( 0=no , 1=Si : ");
scanf("%d",&risposta);
}
while((risposta !=0) && (risposta !=1));
if (risposta == 1)
{
fseek(fp,posizione,0);
fwrite(&viaggio ,sizeof(prenotazioneAereo),1,fp);
}
}
else
{
printf("Volo cancellato! \n\n");
system("PAUSE");
}
}
fclose(fp);
printf("Altre prenotazioni ? ( 0=no , 1=Si : ");
scanf("%d",&risposta);
}
while(risposta !=0);
}
void cancella()
{
int posti;
int postitotali;
int postiprenotabili;
fp =fopen("Aereo.dat","r+");
/* apre il file */
if(fp==NULL) {
perror("Errore in apertura del file");
exit(1);
}
/* determina la dimensione del file */
fseek(fp, 0, SEEK_END);
dimfile=ftell(fp);
fclose(fp);
do
{
printf("Cancellazione di una Prenotazione \n");
printf("Inserisci il codice:\n ");
scanf("%s",codiceVolo);
printf("inserisci il paese di partenza:\n");
scanf ("%s", cittaPartenza);
printf("inserisci il paese di arrivo:\n");
scanf ("%s", cittaPartenza);
printf("Orario di partenza: ");
scanf("%f", oraPartenza);
printf("orario di arrivo:\n");
scanf("%f", oraArrivo);
fp =fopen("Aereo.dat","r+");
ricerca();
i=1;
if (trovato == 0)
{
printf("Volo non trovato! \n\n");
system("PAUSE");
}
else
{
if (viaggio.flag == 0)
{
visualizza();
do
{
printf("Nr Posti da cancellare ");
scanf("%d",&posti);
}
while((posti > viaggio.postiVenduti));
viaggio.postiVenduti = viaggio.postiVenduti - posti;
viaggio.postidisponibili =viaggio.postidisponibili+posti;
do
{
printf("Confermi Cancellazione Prenotazione? ( 0=no , 1=Si : ");
scanf("%d",&risposta);
}
while((risposta !=0) && (risposta !=1));
if (risposta == 1)
{
fseek(fp,posizione,0);
fwrite(&viaggio ,sizeof(prenotazioneAereo),1,fp);
}
}
else
{
printf("Cinema cancellato! \n\n");
system("PAUSE");
}
}
fclose(fp);
printf("Altre cancellazioni di prenotazioni ? ( 0=no , 1=Si : ");
scanf("%d",&risposta);
}
while(risposta !=0);
}
// RICERCA RECORD
void ricerca()
{
i=1;
posizione = (i-1) * sizeof(prenotazioneAereo);
fseek(fp,posizione,0);
fread(&viaggio ,sizeof(prenotazioneAereo),1,fp);
trovato=0;
while ((posizione < dimfile) && (trovato == 0))
{
=strcmp(viaggio.codiceVolo,codiceVolo);
f2=strcmp(viaggio.oraArrivo,oraArrivo);
=strcmp(viaggio.cittaPartenza,cittaPartenza);
f4=strcmp(viaggio.cittaArrivo,cittaArrivo);
=strcmp (viaggio.oraPartenza,oraPartenza);
if ((f1==0) && (f2==0) && (f3==0) && (f4==0)&&(f5==0))
{
trovato =1;
}
else
{
i=i+1;
posizione=(i-1)* sizeof(prenotazioneAereo);
fseek(fp,posizione,0);
fread(&viaggio ,sizeof(prenotazioneAereo),1,fp);
}
}
}
// VISUALIZZA RECORD LETTO
void visualizza()
{
printf("DATI FILM LETTO \n");
printf(" %s \n",viaggio.codiceVolo);
printf("%s \n",viaggio.cittaPartenza);
printf("%s%d%s%d\n",viaggio.dPartenza.giorno1,viaggio.dPartenza.giornoNumero1,viaggio.dPartenza.mese,viaggio.dPartenza.anno);
printf(" %f \n",viaggio.oraPartenza);
printf(" %s \n",viaggio.cittaArrivo);
printf("%s%d%s%d\n",viaggio.dArrivo.giorno1,viaggio.dArrivo.giornoNumero1,viaggio.dArrivo.mese1,viaggio.dArrivo.anno1);
printf(" %f \n",viaggio.oraArrivo);
printf(" %d \n",viaggio.postiVenduti);
printf(" %d \n",viaggio.postidisponibili);
printf(" %f \n",viaggio.prezzo);
printf(" %d \n",viaggio.flag);
}
MI PUOI CORREGGERE GLI ERRORI COSI DA FAR FUNZIONARE IL PROGRAMMA GRAZIE 1000