# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <stdbool.h>
# define DIM 1500
int main(){
typedef struct{ // creazione record
int codice;
char prodotto[20];
char tipo;
float prezzo;
int quantita;
int scortaminima;
}magazzino;
magazzino articoli[DIM],articoli2[DIM],prodotto_nuovo;
int i,i1,c,disuguale,diverso,eliminato,ordini2,scelta,codice,ordine,n,codice1,codice2,j=0;
char scelta1,prodotto[20],operazioni[60][100];
bool trovato=false;
FILE *fpin,*fpout;
do{
printf("\n\tGESTIONE MAGAZZINO");
printf("\n\n");
printf("1. Inserisci nuovo prodotto");
printf("\n");
printf("2. Sfoglia catalogo");
printf("\n");
printf("3. Cercare prodotto in base al codice");
printf("\n");
printf("4. Cercare prodotto in base al nome");
printf("\n");
printf("5. Modifica dati prodotto");
printf("\n");
printf("6. Elimina prodotto");
printf("\n");
printf("7. Crea ordini");
printf("\n");
printf("0. Esci");
printf("\n\n");
printf("Digita scelta : ");
scanf("%d",&scelta);
switch(scelta){
case 1:
fpin=fopen("Magazzino.txt","r"); //apertura file in lettura
if(fpin==NULL)
puts("Errore apertuta file!");
else{
i=0;
while(!feof(fpin)){
/*lettura del file*/ fscanf(fpin,"%d %s %c %f %d %d",&articoli[i].codice,articoli[i].prodotto,&articoli[i].tipo,&articoli[i].prezzo,&articoli[i].quantita,&articoli[i].scortaminima);
i++;
}
n=i;
/*chiusura del file*/ fclose(fpin);
printf("\nInserisci codice nuovo prodotto ");
scanf("%d",&prodotto_nuovo.codice);
for(i=0;i<n;i++)
if(prodotto_nuovo.codice==articoli[i].codice){
printf("Il codice inserito e' gia' presente nel file\nReinserisci codice nuovo prodotto ");
scanf("%d",&prodotto_nuovo.codice);
}
printf("Inserisci descrizione nuovo prodotto ");
scanf("%s",prodotto_nuovo.prodotto);
printf("Inserisci tipo del nuovo prodotto ");
printf("Legenda\n\n");
printf("m=meccanica\n\n");
printf("e=elettronica\n\n");
printf("l=lavoro\n\n");
printf("s=scuola\n\n");
printf("c=cucina\n\n");
fflush(stdin);
scanf("%c",&prodotto_nuovo.tipo);
printf("Inserisci il prezzo del nuovo prodotto ");
scanf("%f",&prodotto_nuovo.prezzo);
printf("Inserisci le quantita' del nuovo prodotto ");
scanf("%d",&prodotto_nuovo.quantita);
printf("Inserisci la scorta minima del nuovo prodotto ");
scanf("%d",&prodotto_nuovo.scortaminima);
fpin=fopen("Magazzino.txt","a");//apertura file in scrittura
//scrivo nel file le informazioni acquisite dall'utente
fprintf(fpin,"\n%d %s %c %.2f %d %d",prodotto_nuovo.codice,prodotto_nuovo.prodotto,prodotto_nuovo.tipo,prodotto_nuovo.prezzo,prodotto_nuovo.quantita,prodotto_nuovo.scortaminima);
fclose(fpin);
}
fpin=fopen("Operazioni eseguite.txt","a");
fprintf(fpin,"Articolo aggiunto\n");
fclose(fpin);
break;
case 2:
fpin=fopen("Magazzino.txt","r");
if(fpin==NULL)
puts("Errore apertuta file!");
else{
printf("\nCODICE\tDESCRIZIONE\tTIPO\tPREZZO\tQUANTIA' SCORTA MINIMA\n");//impaginazione parte 1
i=0;
c=0;
while(!feof(fpin)){
fscanf(fpin,"%d %s %c %f %d %d",&articoli[i].codice,articoli[i].prodotto,&articoli[i].tipo,&articoli[i].prezzo,&articoli[i].quantita,&articoli[i].scortaminima);
if(strlen(articoli[i].prodotto)>=8)
printf("%d\t%s\t%c\t%.2f\t%d\t\t%d\n",articoli[i].codice,articoli[i].prodotto,articoli[i].tipo,articoli[i].prezzo,articoli[i].quantita,articoli[i].scortaminima);
else
printf("%d\t%s\t\t%c\t%.2f\t%d\t\t%d\n",articoli[i].codice,articoli[i].prodotto,articoli[i].tipo,articoli[i].prezzo,articoli[i].quantita,articoli[i].scortaminima);
i++;
c++;
if(c==10){ //impaginazione
system("pause");
printf("\n\n");
c=0;
}
}
fclose(fpin);
}
fpin=fopen("Operazioni eseguite.txt","a");
fprintf(fpin,"Sfoglio catalogo eseguito");
fclose(fpin);
break;
case 3:
fpin=fopen("Magazzino.txt","r");
if(fpin==NULL)
puts("Errore apertuta file!");
else{
printf("\nDigita il codice del prodotto che vuoi sapere : ");
scanf("%d",&codice);
i=0;
while(!feof(fpin)){
fscanf(fpin,"%d %s %c %f %d %d ",&articoli[i].codice,articoli[i].prodotto,&articoli[i].tipo,&articoli[i].prezzo,&articoli[i].quantita,&articoli[i].scortaminima);
i++;
}
n=i;
for(i=0,disuguale=0;i<n;i++)
if(codice==articoli[i].codice){
printf("%s\t%c\t%.2f\t%d\t%d\n",articoli[i].prodotto,articoli[i].tipo,articoli[i].prezzo,articoli[i].quantita,articoli[i].scortaminima);
disuguale=1;
}
if(disuguale==0)
printf("il codice inserito non esiste nel megazzino\n");
}
fpin=fopen("Operazioni eseguite.txt","a");
fprintf(fpin,"Ricerca del prodotto tramite codice\n");
fclose(fpin);
break;
case 4:
fpin=fopen("Magazzino.txt","r");
if(fpin==NULL)
puts("Errore apertuta file!");
else{
printf("\nDigita il nome (o una porzione di nome) del prodotto che vuoi sapere : ");
scanf("%s",prodotto);
i=0;
while(!feof(fpin)){
fscanf(fpin,"%d %s %c %f %d %d ",&articoli[i].codice,articoli[i].prodotto,&articoli[i].tipo,&articoli[i].prezzo,&articoli[i].quantita,&articoli[i].scortaminima);
i++;
}
n=i;
fclose(fpin);
for(i=0,diverso=0;i<n;i++)
if(strstr(articoli[i].prodotto,prodotto)!=NULL){
diverso=1;
printf("il prodotto cercato e' :\n");
printf("%s\t%c\t %.2f\t%d\t%d\n\n",articoli[i].prodotto,articoli[i].tipo,articoli[i].prezzo,articoli[i].quantita,articoli[i].scortaminima);
}
if(diverso==0)
printf("PRODOTTO INESISTENTE");
}
fpin=fopen("Operazioni eseguite.txt","a");
fprintf(fpin,"Ricerca del prodotto tramite nome\n");
fclose(fpin);
break;
case 5:
fpin=fopen("magazzino.txt","r");
if(fpin==NULL)
puts("Errore apertuta file!");
else{
i=0;
while(!feof(fpin)){
fscanf(fpin,"%d %s %c %f %d %d",&articoli[i].codice,articoli[i].prodotto,&articoli[i].tipo,&articoli[i].prezzo,&articoli[i].quantita,&articoli[i].scortaminima);
i++;
}
n=i;
fclose(fpin);
puts("Dammi il codice del prodotto da modificare :");
scanf("%d",&codice1);
trovato=false;
for(i=0;i<n && trovato==false;i++){
if(articoli[i].codice==codice1){
trovato=true;
printf("descrizione:\n");
printf("%d\t%s\t%c\t%.2f\t%d\t%d\n",articoli[i].codice,articoli[i].prodotto,articoli[i].tipo,articoli[i].prezzo,articoli[i].quantita,articoli[i].scortaminima);
puts("Cosa vuoi modificare");
puts("Scegli funzione: \n LEGGENDA\n d=descrizione\n t=tipo\n p=prezzo\n q=quantita'\n s=scortaminima\n");
fflush(stdin);
scanf("%c",&scelta1);
switch(scelta1){
case 'd':
printf("Inserisci la nuova descrizione:");
scanf("%s",articoli[i].prodotto);
break;
case 't':
printf("Legenda\n\n");
printf("m=meccanica\n\n");
printf("e=elettronica\n\n");
printf("l=lavoro\n\n");
printf("s=scuola\n\n");
printf("c=cucina\n\n");
printf("Inserisci la nuova categoria:\n");
fflush(stdin);
scanf("%c",&articoli[i].tipo);
break;
case 'p':
printf("Inserisci il nuovo prezzo:");
scanf("%f",&articoli[i].prezzo);
system("pause");
system("CLS");
break;
case 'q':
printf("Inserisci la nuova giacenza:");
scanf("%d",&articoli[i].quantita);
break;
case 's':
printf("Inserisci la nuova scorta_minima:");
scanf("%d",&articoli[i].scortaminima);
break;
default: puts("Scelta non valida");
}
}
}
fpin=fopen("magazzino.txt","w");
printf("\nCODICE\tDESCRIZIONE\tTIPO\tPREZZO\tQUANTIA' SCORTA MINIMA\n");
for(i=0;i<n-1;i++){
if(strlen(articoli[i].prodotto)>=8)
printf("%d\t%s\t%c\t%.2f\t%d\t\t%d\n",articoli[i].codice,articoli[i].prodotto,articoli[i].tipo,articoli[i].prezzo,articoli[i].quantita,articoli[i].scortaminima);
else
printf("%d\t%s\t\t%c\t%.2f\t%d\t\t%d\n",articoli[i].codice,articoli[i].prodotto,articoli[i].tipo,articoli[i].prezzo,articoli[i].quantita,articoli[i].scortaminima);
fprintf(fpin,"%d %s %c %.2f %d %d\n",articoli[i].codice,articoli[i].prodotto,articoli[i].tipo,articoli[i].prezzo,articoli[i].quantita,articoli[i].scortaminima);
}
fclose(fpin);
fpin=fopen("Operazioni eseguite.txt","a");
fprintf(fpin,"Modifica di un prodotto\n");
fclose(fpin);
}
break;
case 6:
fpin=fopen("Magazzino.txt","r");
if(fpin==NULL)
puts("Errore apertuta file!");
else{
printf("\nQuale prodotto vuoi cancellare? Digita il suo codice : ");
scanf("%d",&codice2);
i=0;
while(!feof(fpin)){
fscanf(fpin,"%d %s %c %f %d %d",&articoli[i].codice,articoli[i].prodotto,&articoli[i].tipo,&articoli[i].prezzo,&articoli[i].quantita,&articoli[i].scortaminima);
i++;
}
n=i;
fclose(fpin);
fpin=fopen("Magazzino.txt","w");
for(i=0,j=0;i<n;i++)
if(articoli[i].codice!=codice2){
articoli2[j]=articoli[i];
j++;
}
for(i=0;i<j;i++){
if(i!=j-1)
fprintf(fpin,"%d %s %c %.2f %d %d\n",articoli2[i].codice,articoli2[i].prodotto,articoli2[i].tipo,articoli2[i].prezzo,articoli2[i].quantita,articoli2[i].scortaminima);
else
fprintf(fpin,"%d %s %c %.2f %d %d",articoli2[i].codice,articoli2[i].prodotto,articoli2[i].tipo,articoli2[i].prezzo,articoli2[i].quantita,articoli2[i].scortaminima);
}
printf("Apri il file Magazzino per verificare la modifica\n");
fclose(fpin);
fpin=fopen("Operazioni eseguite.txt","a");
fprintf(fpin,"Eliminazione di un prodotto\n");
fclose(fpin);
}
break;
case 7:
fpin=fopen("Magazzino.txt","r");
if(fpin==NULL)
puts("Errore apertuta file!");
else{
i=0;
while(!feof(fpin)){
fscanf(fpin,"%d %s %c %f %d %d",&articoli[i].codice,articoli[i].prodotto,&articoli[i].tipo,&articoli[i].prezzo,&articoli[i].quantita,&articoli[i].scortaminima);
i++;
}
n=i;
fclose(fpin);
fpout=fopen("Ordini.txt","w");
for(i=0,ordini2=0;i<n;i++)
if(articoli[i].quantita<articoli[i].scortaminima){
ordine=(articoli[i].scortaminima-articoli[i].quantita)+((articoli[i].scortaminima*30)/100);
ordini2++;
fprintf(fpout,"%d %s %d\n",articoli[i].codice,articoli[i].prodotto,ordine);
}
fclose(fpout);
puts("Apri il file Ordini!");
fpin=fopen("Operazioni eseguite.txt","a");
fprintf(fpin,"Creazione ordini, ordini creati : %d \n",ordini2);
fclose(fpin);
}
break;
case 0:
return 0;
}
system("pause");
system ("CLS");
}while(scelta!=0);
system("pause");
return 0;
}