codice:
//archivio di un negozio con relativa vendita del prodotto
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
typedef enum{LIB_T, MAG_T}tipo;
typedef struct{
char codice[8];
double prezzo;
tipo t;
int quantita;
union{
struct{
char titolo [30];
char autore [15];
int pagine;
}libro;
struct{
char motivo [30];
char colore [10];
enum{S,M,L,XL,XXL} taglia;
}maglietta;
}prodotto;
}archivio;
archivio articolo [50];
unsigned int num_cod=0;
int n=0; //contatore
int vendita=0; //contatore delle vendite
double denaro=0; // contatore incassi
int num_lib,num_mag;
void inserire_articolo(void);
void ricerca_articolo();
void visualizza_articolo(void);
void compra_articolo (void);
void visualizza_vendite (void);
int main (void){
int scelta;
do{
printf("Menu archivio negozio\n");
printf("\t 1.Inserisci un nuovo articolo\n");
printf("\t 2.Ricerca articolo per codice\n");
printf("\t 3.Visualizza articoli in magazzino\n");
printf("\t 4.Compra online\n");
printf("\t 5.Visualizza rendiconto vendite\n");
printf("\t 6.Esci\n");
scanf("%d",&scelta);
system("cls");
fflush(stdin);
switch(scelta){
case 1:
printf("-Aggiunta prodotto\n");
printf("Inserici il tipo di articolo da aggiungere:\n");
printf("0- LIBRO\n");
printf("1- MAGLIETTA\n");
printf("\nScelta: ");
scanf("%d", &articolo[n].t);
inserire_articolo();
break;
case 2: ricerca_articolo();
break;
case 3: visualizza_articolo();
break;
case 4: compra_articolo ();
break;
case 5: visualizza_vendite();
break;
case 6:
break;
default:
printf("operazione non consentita\n");
}
}
while(scelta!=6);
system ("pause");
return 0;
}
void inserire_articolo(){
if(articolo[n].t==LIB_T){
num_lib=num_lib+1;
printf("Inserisci dati libro\n");
printf("inserisci il prezzo\n");
scanf("%lf",&articolo[n].prezzo);
printf("inserisci la quantita disponibile\n");
scanf("%d",&articolo[n].quantita);
printf("Inserisci il titolo del libro\n");
fflush(stdin);
gets(articolo[n].prodotto.libro.titolo);
printf("Inserisci l'autore del libro\n");
gets(articolo[n].prodotto.libro.autore);
printf("Inserisci il numero delle pagine del libro\n");
scanf("%d",&articolo[n].prodotto.libro.pagine);
itoa(10000000+n,articolo[n].codice,10);
printf("Libro inserito con successo codiceID %s",articolo[n].codice);
printf("\n");
}
else{
num_mag=num_mag+1;
printf("inserisci dati maglietta\n");
printf("inserisci il prezzo\n");
scanf("%lf",&articolo[n].prezzo);
printf("inserisci la quantita disponibile\n");
scanf("%d",&articolo[n].quantita);
fflush(stdin);
printf("Inserisci motivo maglietta\n");
gets(articolo[n].prodotto.maglietta.motivo);
printf("Inserisci colore maglietta\n");
gets(articolo[n].prodotto.maglietta.colore);
printf("Inserisci taglia maglietta:S=0,M=1,L=2,XL=3,XXL=4\n");
scanf("%d",&articolo[n].prodotto.maglietta.taglia);
itoa(10000000+n,articolo[n].codice,10);
printf("\nMaglietta inserito con successo codice ID:%s",articolo[n].codice);
printf("\n");
}
n++;
}
void ricerca_articolo(){
int i;
char codice[8];
if(num_mag==0&&num_lib==0)
printf("nessun prodotto presente in magazzino.\nPremi per ritornare al menu\n");
else
printf("inserisci il codice dell'articolo da ricercare\n");
scanf("%s",codice);
for(i=0;i<n;i++){
if(strcmp(codice,articolo[i].codice)==0){
printf("prodotto presente in magazzino\n");
if(articolo[i].t==LIB_T){
printf("\tTitolo: %s\n",articolo[i].prodotto.libro.titolo);
printf("\tAutore: %s\n",articolo[i].prodotto.libro.autore);
printf("\tNumero pagine: %d\n",articolo[i].prodotto.libro.pagine);
printf("\tPrezzo: %.2lf E\n",articolo[i].prezzo);
printf("\tQuantita': %d\n",articolo[i].quantita);
}
else{
printf("\tMotivo: %s\n", articolo[i].prodotto.maglietta.motivo);
printf("\tColore: %s\n", articolo[i].prodotto.maglietta.colore);
printf("\tTaglia: %d\n",articolo[i].prodotto.maglietta.taglia);
printf("\tPrezzo: %.2lf E\n",articolo[i].prezzo);
printf("\tQuantita': %d\n", articolo[i].quantita);
}
}
else printf("Prodotto non presente in magazzino\n");
}
}
void visualizza_articolo(){
int i;
if(num_mag==0&&num_lib==0)
printf("nessun prodotto presente in magazzino.\nPremi per ritornare al menu\n");
else
printf("Visualizzo articoli in magazzino\n");
for(i=0;i<n;i++){
if(articolo[i].t==LIB_T){
printf("Dati libro\n");
printf("\tTitolo: %s\n",articolo[i].prodotto.libro.titolo);
printf("\tAutore: %s\n",articolo[i].prodotto.libro.autore);
printf("\tNumero pagine: %d\n",articolo[i].prodotto.libro.pagine);
printf("\tPrezzo: %.2lf E\n",articolo[i].prezzo);
printf("\tQuantita': %d\n",articolo[i].quantita);
}
else{
printf("dati maglietta\n");
printf("\tMotivo: %s\n", articolo[i].prodotto.maglietta.motivo);
printf("\tColore: %s\n", articolo[i].prodotto.maglietta.colore);
printf("\tTaglia: %d\n",articolo[i].prodotto.maglietta.taglia);
printf("\tPrezzo: %.lf E\n",articolo[i].prezzo);
printf("\tQuantita': %d\n", articolo[i].quantita);
}
}
}
void compra_articolo(){
int tipo,quant, i;
char titolo[30];
printf("Cosa desideri acquistare? premi 0 per libro o 1 per maglietta\n");
scanf("%d",&tipo);
for(i=0;i<n;i++){
if(tipo==0){
if(num_lib==0) printf("Nessun libro presente in magazzino\n");
else{
printf("Quale libro vuoi acquistare?\n");
printf("inserisci il titolo\n");
fflush(stdin);
gets(titolo);
if(strcmp(titolo,articolo[i].prodotto.libro.titolo)==0){
printf("Libro presente in magazzino, inserisci la quantita desiderata per l'acquisto\n");
scanf("%d",&quant);
if(quant>articolo[i].quantita)
printf("La quantita richiesta non è al momento disponibile\n");
else{
printf("acquisto effettuato con successo!\n");
articolo[i].quantita-=quant;
vendita=quant;
denaro=quant*articolo[i].prezzo;
}
}
else printf("il libro richiesto non è presente in magazzino\n");
}
}
else if(tipo==1){
if(num_mag==0) printf("Nessuna maglietta presente in magazzino\n");
else{
printf("Quante magliette vuoi acquistare\n");
scanf("%d",&quant);
if(quant>articolo[i].quantita)
printf("La quantita richiesta non è al momento disponibile\n");
else{
printf("acquisto effettuato con successo!\n");
articolo[i].quantita-=quant;
vendita=quant;
denaro=quant*articolo[i].prezzo;
}
}
}
}
}
void visualizza_vendite(){
printf("il numero degli articoli venduti è %d, con un incasso totale di %.2lf E\n",vendita,denaro);
}