Ecco il codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXCHARCOD 8
void mainmenu();
void inseriscipreventivo(int *numeroclienti,int *numeropreventivi);
int controllacodfiscale(char cf[MAXCHARCOD],int numeroclienti);
void visualizzapreventivi(int numeropreventivi);
void visualizzazioneclienti(int numeroclienti);
struct cliente{
char codfiscale[MAXCHARCOD];
char nome[MAXCHARCOD];
char cognome[MAXCHARCOD];
char indirizzo[MAXCHARCOD];
}clienti[50];
struct preventivo{
int id;
char data[MAXCHARCOD];
char codicefiscale[MAXCHARCOD];
int sconto[MAXCHARCOD];
char nomemobile[MAXCHARCOD];
char tipologiamobile[MAXCHARCOD];
int prezzomobile[MAXCHARCOD];
}preventivi[50];
int main()
{
mainmenu();
return 0;
}
void mainmenu(){
char azione;
int numeropreventivi=0;
int numeroclienti=0;
do {
printf("Gestione mobilificio \n\n");
printf("1 - Inserisci nuovo preventivo\n");
printf("2 - visualizzazione preventivi\n");
printf("3 - Visualizzazione clienti\n");
printf("0 - Esci\n");
printf("Inserisci la scelta -> ");
scanf("%d", &azione);
//Controllo scelta
switch (azione) {
case 0:
printf("Arrivederci!");
break;
case 1:
system("cls");
inseriscipreventivo(&numeroclienti,&numeropreventivi);
break;
case 3:
system("cls");
visualizzapreventivi(numeropreventivi);
break;
case 4:
system("cls");
visualizzazioneclienti(numeroclienti);
break;
default:
printf("Azione non valida");
}
} while (azione != 0);
}
void inseriscipreventivo(int *numeroclienti,int *numeropreventivi){
char cf[MAXCHARCOD];
int check;
char azione;
fflush(stdin);
printf("Inserisci preventivo\n\n");
do {
printf("Codice fiscale (%d caratteri) -> ", MAXCHARCOD);
gets(cf);
//Controllo del codiceprodotto se gi? ? stato inserito
check = controllacodfiscale(cf, *numeroclienti);
if (check == 1) {
printf("Codice Fiscale gia' presente!\n\n");
}
} while (check == 1);
fflush(stdin);
printf("il cliente non e' presente in elenco.continuare? Y o N -> ");
scanf("%c",&azione);
if(azione=='y' || azione=='Y'){
strcpy(clienti[*numeroclienti].codfiscale,cf);
printf("inserisci nome cliente %s (max %i caratteri)",MAXCHARCOD);
gets(clienti[*numeroclienti].nome);
printf("inserisci cognome cliente %s (max %i caratteri)",MAXCHARCOD);
gets(clienti[*numeroclienti].cognome);
printf("inserisci indirizzo cliente %s (max %i caratteri)",MAXCHARCOD);
gets(clienti[*numeroclienti].indirizzo);
preventivi[*numeropreventivi].id=*numeropreventivi;
printf("numero preventivo %d",preventivi[*numeropreventivi].id);
printf("inserisci data (max %i caratteri)",MAXCHARCOD);
gets(preventivi[*numeropreventivi].data);
printf("inserisci codicefiscale cliente (max %i caratteri)",MAXCHARCOD);
gets(preventivi[*numeropreventivi].codicefiscale);
printf("inserisci nome mobile (max %i caratteri)",MAXCHARCOD);
gets(preventivi[*numeropreventivi].nomemobile);
printf("inserisci tipologia mobile (max %i caratteri)",MAXCHARCOD);
gets(preventivi[*numeropreventivi].tipologiamobile);
printf("preventivo inserito correttamente!");
*numeropreventivi+=1;
*numeroclienti+=1;
system("PAUSE");
system("cls");
} else if (azione == 'n' || azione == 'N') {
printf("\nPreventivo non associato!!\n\n");
system("PAUSE");
system("cls");
} else {
printf("ERRORE! Carattere non ammesso");
system("PAUSE");
system("cls");
}
}
int controllacodfiscale(char cf[MAXCHARCOD],int numeroclienti){
int i;
for (i = 0; i < numeroclienti; i++) {
// se ? verificata l'uguaglianza -> codiceprodotto gi? esistente
if (strcmp(cf, clienti.codfiscale) == 0) {
return 1;
}
}
//codiceprodotto non presente
return 0;
}
void visualizzazioneclienti(int numeroclienti){
int i;
for(i=0;i<numeroclienti;i++){
printf("%s,%s,%s",clienti.codfiscale,clienti.cognome,clienti.nome);
}
}
void visualizzapreventivi(int numeropreventivi){
char cf[MAXCHARCOD];
int i;
printf("inserisci codice fiscale cliente (%d caratteri max) -> ",MAXCHARCOD);
gets(cf);
for(i=0;i<numeropreventivi;i++){
if(strcmp(cf,preventivi.codicefiscale)==0){
printf("%d,%s,%s,%s,%s",preventivi.id,preventivi.data,preventivi.codicefiscale,preventivi.nomemobile,preventivi.tipologiamobile);
}
}
}