codice:
#include <stdio.h>
#include <stdlib.h>
int stampamenu( const char [][50] );
void inserisci();
void conto();
void menuristo();
int main(){
int i, j, scelta;
const char menu[4][50]={
{"1) Inserisci nuove pietanze nel menu"},
{"2) Fai il conto"},
{"3) Stampa a video il menu"},
{"0) Esci"}
};
scelta = stampamenu(menu);
while(scelta!=0){
switch(scelta){
case 1:
system("cls");
inserisci();
break;
case 2:
menuristo();
conto();
break;
case 3:
menuristo();
break;
default:
printf("\nScelta non corretta! Riprova!\n\n");
break;
}
scelta=stampamenu(menu);
}
return 0;
}
int stampamenu( const char menu[][50] ){
int i, select;
printf("\n\t---------------\n\tMENU OPERAZIONI\n\t---------------\n\n");
for( i=0; i<4; i++)
printf("%s\n", menu[i]);
printf("\nScegli: ");
scanf("%d", &select);
return select;
}
void inserisci(){
struct Menu{
int numero;
char nome[25];
float prezzo;
};
struct Menu menu={ 0, "", 0.0};
FILE *ptr;
int i;
if((ptr=fopen("menu.dat", "ab"))==NULL)
printf("\nImpossibile aprire il file.\n\n");
do{
printf("\n\nInserisci i dati richiesti.\nPer terminare inserisci 0 nei campi.\n");
printf("\nNumero pietanza: ");
fscanf(stdin, "%d", &menu.numero);
printf("\nNome pietanza: ");
fscanf(stdin, "%s", menu.nome);
printf("\nPrezzo pietanza: ");
fscanf(stdin, "%f", &menu.prezzo);
fwrite( &menu, sizeof(struct Menu), 1, ptr);
} while(menu.numero!=0);
fclose(ptr);
return;
}
void conto(){
struct Menu{
int numero;
char nome[25];
float prezzo;
};
struct Menu menu={ 0, "", 0.0};
float totale=0;
int number;
FILE *ptr;
printf("\nInserisci i numeri delle pietanze per fare il conto.\nInserisci zero per il totale.\n\nNumero: ");
scanf("%d", &number);
while(number!=0){
if((ptr=fopen("menu.dat", "rb"))==NULL)
printf("\n\nImpossibile aprire il file.\n\n");
while(!feof(ptr)){
fread( &menu, sizeof(struct Menu), 1, ptr);
if(number==menu.numero) totale=totale+menu.prezzo;
}
printf("\n + ");
scanf("%d", &number);
}
fclose(ptr);
printf("\n_____________________\n");
printf("\nTotale: %.2f", totale);
printf("\n\nGrazie e arrivederci!\n\n");
return;
}
void menuristo(){
struct Menu{
int numero;
char nome[25];
float prezzo;
};
FILE *ptr;
struct Menu menu = { 0, "", 0.0 };
if((ptr=fopen("menu.dat", "rb"))==NULL)
printf("\nImpossibile aprire il file cliente.dat\n\n");
else{
system("cls");
printf("\n%-15s%-16s%-11s\n", "Numero", "Nome", "Prezzo");
while(!feof(ptr)){
fread( &menu, sizeof(struct Menu), 1, ptr);
if(menu.numero!=0)
printf("%-15d%-16s%-11.2f\n", menu.numero, menu.nome, menu.prezzo);
}
fclose(ptr);
}
return;
}