codice:
int main()
{
Prodotto prodotti[PRODOTTO];
Venditore venditori[VENDITORE];
Vendita vendite[VENDITE];
int n_vend=0;
int n_prod=0;
int n_v=0;
int input;
int anno, mese, giorno;
do
{
stampa_menu();
do
{
printf("Inserisci un codice.\n");
scanf("%d", &input);
puts("");
}while(input < 0 || input > 7);
switch (input)
{
case 1: /*AGGIUNGI UN VENDITORE*/
{
if ((aggiungi_venditore(venditori, &n_vend))==1)
{
stampa_venditori(venditori, n_vend);
}
break;
}
case 2: /*AGGIUNGI UN PRODOTTO*/
{
if ((aggiungi_prodotto(prodotti, &n_prod))==1)
{
stampa_prodotti(prodotti, n_prod);
}
break;
}
case 3: /*INSERISCI VENDITA*/
{
if((aggiungi_vendita(venditori, vendite, prodotti, n_vend, &n_v, n_prod))==1)
{
stampa_vendite(vendite, n_v);
}
break;
}
case 4: /*CLASSIFICA GLOBALE*/
{
if(n_v>0)
{
ordina_vendite_idVend(vendite,n_v);
stampa_vendite_totali_venditori(vendite, n_v);
puts("");
ordina_vendite_idProd(vendite, n_v);
stampa_vendite(vendite, n_v);
stampa_vendite_totali_prodotti(vendite,n_v);
}
break;
}
case 5: /*CLASSIFICA GIORNALIERA*/
{
if(n_v>0)
{
printf("Inserisci una data valida di vendita!!\n");
printf("inserisci la data: gg mm aaaa");
scanf("%d %d %d",&giorno, &mese, &anno);
ordina_vendite_idVend(vendite,n_v);
stampa_vendite_giornaliera_venditori(vendite,n_v,anno,mese,giorno);
}
break;
}
case 7:
{
stampa_venditori(venditori, n_vend);
break;
}
}
}while(input!=0);
return 0;
}
void stampa_menu()
{
printf("\n--------------------------------ELENCO OPERAZIONI-------------------------------\n");
printf("\t\t[1] Per aggiungere un venditore.\n");
printf("\t\t[2] Per aggiungere un prodotto.\n");
printf("\t\t[3] Per inserire una vendita.\n");
//printf("\t\t[4] Per stampare le vendite totali dei prodotti (globale).\n");
printf("\t\t[4] Per visualizzare la classifica globale.\n");
printf("\t\t[5] Per visualizzare la classifica di un giorno.\n");
//printf("[6] Classifica prodotti piu venduti in tutto il periodo.\n");
printf("\t\t[7] Per stampare l'array venditori.\n");
printf("\t\t[0] ESCI.\n\n\n");
}
/*////////////////////////////////FUNZIONI PER I VENDITORI\\\\\\\\\\\\\\\\\\\\\\*/
int aggiungi_venditore(Venditore *vend, int *n_vend)
{
int i=0;
int cod;
do
{
printf("Inserisci il codice del venditore ( maggiore di 0 ): ");
scanf("%d", &cod);
puts("");
}while(cod <=0);
for(i=0; i<(*n_vend); i++)
{
if (vend[i].cod_v == cod)
{
printf("\nEsiste gia\' un venditore con quel id.\n");
return -1;
}
}
vend[i] = leggi_venditore(cod);
(*n_vend)++; /*incremento la variabile che conta il numero dei venditori presenti nell'array*/
return 1;
}
Venditore leggi_venditore(int cod)
{
Venditore vend;
vend.cod_v=cod;
printf("\nInserisci il nome del venditore: ");
scanf("%s", vend.nome);
printf("\nInserisci il cognome del venditore: ");
scanf("%s", vend.cognome);
return vend;
}
void stampa_venditori(Venditore* vend, int n_vend)
{
int i;
for (i=0; i<n_vend; i++)
{
printf("id venditore=%d\t", vend[i].cod_v);
printf("nome = %s\t", vend[i].nome);
printf("cognome = %s\t", vend[i].cognome);
puts("");
}
}
/*//////////////FUNZIONE PER I PRODOTTI\\\\\\\\\\\\\\\\\\\\\\\\*/
int aggiungi_prodotto(Prodotto* prod, int *n_prod)
{
int i=0;
int cod;
do
{
printf("Inserisci il codice del prodotto ( maggiore di 0 ): ");
scanf("%d", &cod);
puts("");
}while(cod <=0);
for(i=0; i<(*n_prod); i++)
{
if (prod[i].cod_p == cod)
{
printf("\nEsiste gia\' un prodoto con quel id.\n");
return -1;
}
}
prod[i] = leggi_prodotto(cod);
(*n_prod)++; /*incremento la variabile che conta il numero dei prodotti presenti nell'array*/
return 1;
}
Prodotto leggi_prodotto(int cod)
{
Prodotto prod;
prod.cod_p=cod;
printf("\nInserisci il nome del prodotto: ");
scanf("%s", prod.nome);
printf("\nInserisci il prezzo del prodotto: ");
scanf("%d", &prod.prezzo);
return prod;
}
void stampa_prodotti(Prodotto* prod, int n_prod)
{
int i;
for (i=0; i<n_prod; i++)
{
printf("\nid prodotto=%d\t", prod[i].cod_p);
printf("nome = %s\t", prod[i].nome);
printf("prezzo = %d\t", prod[i].prezzo);
puts("");
}
}
/*////////////FUNZIONI GENERALI\\\\\\\\\\\\\\\\\\\\\\\\*/
int trova_venditore(Venditore *vend, int n_vend)
{
int i=0;
int cod;
do
{
printf("Inserisci il codice del venditore ( maggiore di 0 ): ");
scanf("%d", &cod);
puts("");
}while(cod <=0);
for(i=0; i<n_vend; i++)
{
if (vend[i].cod_v == cod)
{
return cod;
}
}
printf("\nNon esiste nessun venditore con quel ID.");
return -1;
}
int trova_prodotto(Prodotto *prod, int n_prod)
{
int i=0;
int cod;
do
{
printf("Inserisci il codice del prodotto ( maggiore di 0 ): ");
scanf("%d", &cod);
puts("");
}while(cod <=0);
for(i=0; i<n_prod; i++)
{
if (prod[i].cod_p == cod)
{
return cod;
}
}
printf("\nNon esiste nessun prodotto con quel ID.");
return -1;
}
/*//////////////////FUNZIONI PER LE VENDITE\\\\\\\\\\\\\\\\\\\\\\\*/
int aggiungi_vendita(Venditore *vend, Vendita *ven, Prodotto *prod, int n_vend, int *n_v, int n_prod)
{
int cod_v;
int cod_p;
cod_v=trova_venditore(vend, n_vend);
if ( cod_v != -1)
{
cod_p=trova_prodotto(prod, n_prod);
if (cod_p != -1)
{
ven[(*n_v)]=leggi_vendita(cod_v, cod_p);
(*n_v)++; /*incremento il contatore delle vendite*/
return 1;
}
}else return -1;
}
Vendita leggi_vendita(int cod_v, int cod_p)
{
Vendita ven;
ven.cod_v=cod_v;
ven.cod_p=cod_p;
printf("\nInserisci la quantita\' venduta: ");
scanf("%d", &ven.quantita);
printf("\nInserisci l'anno in cui e\' stato venduto: ");
scanf("%d", &ven.anno);
printf("\nInserisci il mese in cui e\' stato venduto: ");
scanf("%d", &ven.mese);
printf("\nInserisci il giorno in cui e\' stato venduto: ");
scanf("%d", &ven.giorno);
return ven;
}
void stampa_vendite(Vendita* ven, int n_v)
{
int i;
for (i=0; i<n_v; i++)
{
printf("\nid venditore=%d\t", ven[i].cod_v);
printf("\nid prodotto=%d\t", ven[i].cod_p);
printf("\nquantita\' = %d\t", ven[i].quantita);
printf("\nin data: %d-%d-%d\n", ven[i].giorno, ven[i].mese, ven[i].anno);
puts("");
}
}
void ordina_vendite_idProd(Vendita *vend, int n_v)/*ordino le vendite per vend.cod_p*/
{
int i=0;
int a;
Vendita v;
for(i=0; i<n_v; i++)
{
for(a=i; a<n_v-1; a++)
{
if(vend[a].cod_p>vend[a+1].cod_p)/*ordino in modo crescente*/
{
v=vend[a];
vend[a]=vend[a+1];
vend[a+1]=v;
}
}
}
}
void ordina_vendite_idVend(Vendita *vend, int n_v)/*ordino le vendite per vend.cod_v*/
{
int i=0;
int a;
Vendita v;
for(i=0; i<n_v; i++)
{
for(a=i; a<n_v-1; a++)
{
if(vend[a].cod_v>vend[a+1].cod_v)/*ordino in modo crescente*/
{
v=vend[a];
vend[a]=vend[a+1];
vend[a+1]=v;
}
}
}
}
void stampa_vendite_giornaliera_venditori(Vendita *vend, int n_v, int anno, int mese, int giorno)/*classifica venditori giornaliera*/
{
int i;
int a;
int cod_v;
int qnt;
printf("PERIODO SELEZIONATO: %d-%d-%d\n",giorno,mese,anno);
for(i=0; i<n_v;)
{
cod_v=vend[i].cod_v;
qnt=0;
while(cod_v== vend[i].cod_v && i<n_v)
{
if (vend[i].anno==anno && vend[i].mese==mese && vend[i].giorno==giorno)
{
qnt+=vend[i].quantita;
i++;
}
}
printf("cod_v: %d\tquantita\' venduta in totale: %d\n",cod_v, qnt);
}
}
void stampa_vendite_totali_venditori(Vendita *vend, int n_v)/*classifica venditori globale*/
{
int i;
int a;
int cod_v;
int qnt;
printf("\n\t\tCLASSIFICA GLOBALE VENDITORI\n");
for(i=0; i<n_v;)
{
cod_v=vend[i].cod_v;
qnt=0;
while(cod_v== vend[i].cod_v && i<n_v)
{
qnt+=vend[i].quantita;
i++;
}
printf("cod_v: %d\tquantita\' venduta in totale: %d\n",cod_v,qnt);
}
}
void stampa_vendite_totali_prodotti(Vendita *vend, int n_v)/*classifica prodotti globale*/
{
int i;
int a;
int cod_p;
int qnt;
int classifica[VENDITORE][2];/*nella prima colonna c'è il codice del prodotto, nella seconda la quantita totale venduta*/
int c=0;
printf("\n\t\tCLASSIFICA GLOBALE PRODOTTI\n");
for(i=0; i<n_v;)
{
//cod_p=vend[i].cod_p;
//qnt=0;
classifica[c][0]=vend[i].cod_p;
classifica[c][1]=0;/*quantita*/
while(classifica[c][0]== vend[i].cod_p && i<n_v)
{
//qnt+=vend[i].quantita;
classifica[c][1]+=vend[i].quantita;
i++;
}
c++;
//printf("cod_p: %d\tquantita\' venduta in totale: %d\n",classifica[i][0],qnt);
}
for (i=0; i<n_v; i++)
{
printf("i=%d cod_p: %d\tquantita\' venduta in totale: %d\n",i, classifica[i][0],classifica[i][1]);
}
int temp[1][2];
int min;
for(i=0; i<n_v-1; i++)
{
min = i;
for(a=i+1; a<n_v; a++)
{
if(classifica[a][1]<classifica[min][1])
{
min = a;
}
}
temp[0][0] =classifica[min][0];
temp[0][1] =classifica[min][1];
classifica[min][0]=classifica[i][0];
classifica[min][1]=classifica[i][1];
classifica[i][0]=temp[0][0];
classifica[i][1]=temp[0][1];
}
/* for (i=0; i<n_v; i++)
{
for(a=i+1; a<n_v-1; a++)
{
if(classifica[i][1]<classifica[a][1])
{
tmp[0][0]=classifica[a][0];
tmp[0][1]=classifica[a][1];
classifica[a][0]=classifica[i][0];
classifica[a][1]=classifica[i][1];
classifica[i][0]=tmp[0][0];
classifica[i][0]=tmp[0][1];
}
}
}*/
for (i=0; i<n_v; i++)
{
printf("i=%d cod_p: %d\tquantita\' venduta in totale: %d\n",i, classifica[i][0],classifica[i][1]);
}
}