#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXCHARCOD 32
void mainmenu();
void inseriscipreventivo(int *numeroclienti,int *numeropreventivi);
int controllacodfiscale(char cf[MAXCHARCOD],int numeroclienti);
void visualizzapreventivi(int numeropreventivi);
void visualizzazioneclienti(int numeroclienti);
int calcolosconto(int numeropreventivi);
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 costo;
char nomemobile[MAXCHARCOD];
char tipologiamobile[MAXCHARCOD];
}preventivi[50];
int main()
{
mainmenu();
return 0;
}
void mainmenu(){
int 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 2:
system("cls");
visualizzapreventivi(numeropreventivi);
break;
case 3:
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;
int i;
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");
for(i=0;i<numeroclienti;i++){
if(strcmp(cf, clienti[i].codfiscale)==0){
printf("%s,%s,%s",clienti[i].codfiscale,clienti[i].cognome,clienti[i].nome);
printf("\nConfermi i dati? Y o N");
scanf("%c",&azione);
if(azione=='y' || azione=='Y'){
preventivi[*numeropreventivi].id=*numeropreventivi;
printf("numero preventivo %d",preventivi[*numeropreventivi].id);
fflush(stdin);
printf("inserisci data (max %d caratteri)",MAXCHARCOD);
gets(preventivi[*numeropreventivi].data);
printf("inserisci codicefiscale cliente (max %d caratteri)",MAXCHARCOD);
gets(preventivi[*numeropreventivi].codicefiscale);
printf("inserisci nome mobile (max %d caratteri)",MAXCHARCOD);
gets(preventivi[*numeropreventivi].nomemobile);
printf("inserisci tipologia mobile (max %d caratteri)",MAXCHARCOD);
gets(preventivi[*numeropreventivi].tipologiamobile);
printf("inserisci costo mobile");
scanf("%d",&preventivi[*numeropreventivi].costo);
printf("preventivo inserito correttamente!");
*numeropreventivi+=1;
system("PAUSE");
system("cls");
// fflush(stdin);
}else if(azione=='n' || azione=='N'){
printf("\nNon hai confermato i dati\n\n");
fflush(stdin);
system("PAUSE");
system("cls");
}else{
printf("carattere non ammesso");
system("PAUSE");
system("cls");
}
}
}
//printf("\nConfermi i dati? Y o N");
//scanf("%c",&azione);
// if(azione=='y' || azione=='Y'){
// system("PAUSE");
// system("cls");
// }else if(azione=='n' || azione=='N'){
// printf("non hai confermato i dati");
// system("PAUSE");
// system("cls");
// }else{
// printf("carattere non ammesso");
// system("PAUSE");
// system("cls");
// }
}
} 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);
fflush(stdin);
printf("inserisci nome cliente (max %d caratteri)",MAXCHARCOD);
gets(clienti[*numeroclienti].nome);
printf("inserisci cognome cliente (max %d caratteri)",MAXCHARCOD);
gets(clienti[*numeroclienti].cognome);
printf("inserisci indirizzo cliente (max %d caratteri)",MAXCHARCOD);
gets(clienti[*numeroclienti].indirizzo);
preventivi[*numeropreventivi].id=*numeropreventivi;
printf("numero preventivo %d",preventivi[*numeropreventivi].id);
printf("inserisci data (max %d caratteri)",MAXCHARCOD);
gets(preventivi[*numeropreventivi].data);
printf("inserisci codicefiscale cliente (max %d caratteri)",MAXCHARCOD);
gets(preventivi[*numeropreventivi].codicefiscale);
printf("inserisci nome mobile (max %d caratteri)",MAXCHARCOD);
gets(preventivi[*numeropreventivi].nomemobile);
printf("inserisci tipologia mobile (max %d caratteri)",MAXCHARCOD);
gets(preventivi[*numeropreventivi].tipologiamobile);
printf("inserisci costo mobile");
scanf("%d",&preventivi[*numeropreventivi].costo);
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[i].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[i].codfiscale,clienti[i].cognome,clienti[i].nome);
}
printf("\n");
system("PAUSE");
system("cls");
}
void visualizzapreventivi(int numeropreventivi){
char cf[MAXCHARCOD];
int i;
fflush(stdin);
printf("inserisci codice fiscale cliente (%d caratteri max) -> ",MAXCHARCOD);
gets(cf);
for(i=0;i<numeropreventivi;i++){
if(strcmp(cf,preventivi[i].codicefiscale)==0){
printf("%d,%s,%s,%s,%s,%d,%d",preventivi[i].id,preventivi[i].data,preventivi[i].codicefiscale,preventivi[i].nomemobile,preventivi[i].tipologiamobile,preventivi[i].costo,calcolosconto(numeropreventivi));
}
printf("\n");
system("PAUSE");
system("cls");
}
}
int calcolosconto(int numeropreventivi){
int i;
int sconto;
for(i=0;i<numeropreventivi;i++){
sconto=preventivi[i].costo-50;
}
return sconto;
}