MAGAZZINO.CPP January 2, 2008 Page 1



Похожие документы
Esercizi di programmazione in C

Esercitazione 7. Procedure e Funzioni

1: /* Nome del programma: gestione_articoli_01.cpp 2: Realizzato da: Gaetano Della Cerra 3: Data: 06/02/ III Informatica Serale I.T.I.S.

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Gestione dei File in C

RICERCA DI UN ELEMENTO

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Breve riepilogo della puntata precedente:

Compito di Fondamenti di Informatica

Prova Scritta del 19/07/10

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Gestione delle stringhe in C

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

Fondamenti di Informatica 2

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

puntatori Lab. Calc. AA 2007/08 1

Introduzione alla programmazione in C

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

Introduzione al Linguaggio C

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

Le stringhe. Le stringhe

Blocco Note Blocco Note

Esercitazione 3. Corso di Fondamenti di Informatica

RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di

Linguaggio C - Stringhe

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura

Appello di Informatica B

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

Introduzione al linguaggio C Gli array

Gestione dei File. dischi nastri cd

PROGRAMMI LINGUAGGIO C

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

La selezione binaria

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Fondamenti di Informatica T. Linguaggio C: File

Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )

Caratteri e stringhe Esercizi risolti

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp KP Cap. 6 pp

I puntatori e l allocazione dinamica di memoria

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-

Le system call: fork(), wait(), exit()

Linguaggio C - Funzioni

Sincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato.

Concetti chiave. Struct. Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture

Struttura dati FILE. Concetto di FILE

ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi terza

Verifica che una grammatica sia Context Free nel GrammaReader

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

I files in C. A cura del prof. Ghezzi

Laboratorio di programmazione

Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero

Esempio: Array di struct

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Sistemi Operativi (M. Cesati)

Esercizio 1. Esercizio 1

La struttura dati ad albero binario

Esercizi svolti durante le ore di Informatica e Sistemi automatici nelle classi del Liceo Scientifico Tecnologico del Liceo Milli di Teramo

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix-

Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009

Esercizio 2. Client e server comunicano attraverso socket TCP

Esame del 3 febbraio 2010

Politecnico di Torino

Lab 04 Istruzioni, cicli e array"

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Lab 11 Gestione file di testo"

Algoritmi di ordinamento

Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

Laboratorio di Algoritmi e Strutture Dati

Linguaggio C. Fondamenti. Struttura di un programma.

Corso di Informatica Medica Esercitazione 1I ! Alessandro A. Nacci - alessandronacci.com

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

Esercizi. La funzione swapint() primo tentativo

BOZZA. cin per la comunicazione dal dispositivo di input standard, la tastiera, al programma (stream di input standard)

SOLUZIONE ESERCIZIO 1

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

Gestione dei file. File di testo e binari

ZZZ01 Esercizi Vari. Esercizi per preparazione alla prova pratica di laboratorio

Codifica: dal diagramma a blocchi al linguaggio C++

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

CALCOLO DEL MASSIMO COMUN DIVISORE

Транскрипт:

MAGAZZINO.CPP January 2, 2008 Page 1 1 #include <conio.h> 2 #include <stdio.h> 3 #include <string.h> 4 // ==================================================================== 5 // Versione 1.1 1/1/2008 Autore prof. Vicenzi G. 6 // 7 // aggiornamenti dalla versione 1.0 8 // lettura e scrittura su file di tutti gli articoli a magazzino 9 // ======================================================================= 10 11 12 // Semplice programma per la gestione di un magazzino 13 // per componenti elettronici 14 // 15 // Analisi di massima: 16 // occorre per ogni componente 17 // - Descrizione, Es: Resistore a strato di carbone 18 // - Valore, Es: 1000 19 // - Unita di misura, Es: Ohm 20 // - quantita disponibile in magazzino 21 // - quantita minima di riordino 22 // - prezzo unitario 23 24 #define MAXARTICOLI 100 25 26 struct ArticoloMag { 27 char Desc[40]; // descrizone del componente 28 float Valore; // valore del comp. 29 char Unita[5]; // unità di misura max 4 char 30 int Quantita; // num. di componenti in magazzino 31 int QtaRio; // num. di comp. minimi al di sotto del quale si riordina 32 float Prezzo; 33 char Attivo; //'S' se attivo, 'N' se "cancellato" 34 }; 35 36 37 // funzione per l'inserimento dei dati di ogni singolo articolo Roncadi + Incerti +Piccinn i 38 struct ArticoloMag InputArticolo( ); // 39 40 // funzione per ricalcolare la quantità di riordino.. D'IORIO +Ferrari + D'Ambrosio 41 struct ArticoloMag RicalcoloRiordino(struct ArticoloMag Art ); 42 43 // funzione per stampare a video in modo ordinato l' articolo e gli altri suoi dati 44 void StampaArticolo(struct ArticoloMag Art ); // LAI + Carlotta + Venosino 45 46 // funzione per stampare a video TUTTO IL MAGAZzINO 47 void StampaMag( struct ArticoloMag *PtrArt ); // Polelli + Vannini 48 49 // funzione per aggiornare (modificare) un articolo 50 struct ArticoloMag AggiornaArticolo(struct ArticoloMag Art ); // Crocettti+Gozzi + Lape ruta 51 52 // funzione per aggiornare solo la quantità di un articolo // Flagiello +DAmoia + Mil ani 53 struct ArticoloMag AggiornaQtaArticolo(struct ArticoloMag Art,int NQuantita ); 54 55 // funzione di cancellazione articolo... // Zaccariello, Salata, Gaddi 56 struct ArticoloMag CancellaArticolo(struct ArticoloMag Art ); 57 58 //cerca una stringa in una altra 59 int StrFind( char *PtrDescrizione, char *PtrPezzo); 60 61 // stampa un messaggio a video e attende la pressione di un tasto 62 void StampaMessaggio(char *PtrS); 63 64 // legge da file tutto il magazzino 65 int LeggeDaFile (struct ArticoloMag *PtrArt ); 66 67 // salva su file tutto il magazzino

MAGAZZINO.CPP January 2, 2008 Page 2 68 int SalvaSuFile (struct ArticoloMag *PtrArt ); 69 70 71 // funzione che si occuperà di riordinare il magazzino 72 //........... 73 74 75 void main () 76 { 77 struct ArticoloMag Magazzino[MAXARTICOLI]; // vettore di 100 elementi di dati 78 // di tipo struct ArticoloMag 79 int Ch; // tasto per scelta del comando 80 int i; // indice per ircerca all'interno del magazzino 81 int NArticolo; // n. dell'articolo 82 int QuantitaNew; //nuova quantità di una articolo di magazzino 83 char StrPezzo[200]; 84 85 struct ArticoloMag ArtLetto; 86 87 LeggeDaFile (Magazzino ); 88 89 // menu' principale del programma 90 do { 91 clrscr(); 92 printf("programma SEMPLIFICATO PER LA GESTIONE DI MAGAZZINO"); 93 printf("\n--------- scegli la voce che ti interessa"); 94 printf("\n 1) - inserisci un articolo "); 95 printf("\n 2) - modifica un articolo "); 96 printf("\n 3) - modifica quantità di un articolo "); 97 printf("\n 4) - cerca un articolo in base a parte descrizione"); 98 printf("\n 5) - Cancella un articolo "); 99 printf("\n 6) - Calcola quantità di riordino "); 100 printf("\n 7) - Stampa un articolo "); 101 printf("\n 8) - Stampa tutti gli articoli "); 102 printf("\n 9) - Stampa elenco articoli da riordinare"); 103 104 printf("\n W) - scrivi tutto il magazzino su disco"); 105 printf("\n batti ESC per uscire "); 106 107 108 Ch=getch(); 109 switch (Ch) { 110 case '1' : // inserimento di un articolo 111 ArtLetto=InputArticolo( ); 112 // cerca un elemento del vettore in cui mettere l'articolo inserito 113 for (i=0; i <MAXARTICOLI; i++ ) { 114 if (Magazzino[i].Attivo!='S' ) { 115 Magazzino[i]=ArtLetto; 116 i=maxarticoli; 117 } 118 } 119 120 if (i==maxarticoli) StampaMessaggio("\nERRORE!! magazzino pieno"); 121 122 break; 123 124 case '2' : // MODIFICARE di un art. di magazzino 125 printf ("\ndigita il numero dell'articolo da modificare"); 126 fflush(stdin); 127 scanf ("%d", &NArticolo); 128 printf ("\n stai per modificare: \n"); 129 StampaArticolo(Magazzino[NArticolo]); 130 131 // se articolo attivo lo modifica, altrimenti segnala errore 132 if (Magazzino[NArticolo].Attivo=='S' ) { 133 Magazzino[NArticolo]=AggiornaArticolo(Magazzino[NArticolo]); 134 StampaMessaggio("Articolo modificato "); 135 } 136 else 137 StampaMessaggio("Articolo inesistente");

MAGAZZINO.CPP January 2, 2008 Page 3 138 139 break; 140 141 case '3' : // modifica la quantita'a magazzino di un articolo 142 printf ("\ndigita il numero dell'articolo di cui modificare la quan tita"); 143 fflush(stdin); 144 scanf ("%d", &NArticolo); 145 if (Magazzino[NArticolo].Attivo=='S' ) { 146 printf ("\ninserire la nuova quantita'per l'articolo:\n"); 147 StampaArticolo(Magazzino[NArticolo]); 148 scanf ("%d", &QuantitaNew); 149 Magazzino[NArticolo]=AggiornaQtaArticolo(Magazzino[NArticolo], Q uantitanew ); 150 } 151 else 152 StampaMessaggio("Errore!!, articolo non attivo"); 153 154 break; 155 156 case '4' : // ricerca e Stampa tutti gli articoli in base a parte della descrizi one 157 printf ("\n Digita parte della descrizione in base alla quale esegui re la ricerca \n>"); 158 gets(strpezzo); 159 printf ("\n"); 160 printf (" Descrizione... Valore Unit Qta Q.Rio Prezzo ID\n"); 161 for (i=0; i <MAXARTICOLI; i++ ) { 162 if (Magazzino[i].Attivo=='S' ) { 163 //cerca se StrPezzo è contenuto in Magazzino[i] 164 if ( StrFind(Magazzino[i].Desc, StrPezzo)!=0 ) { 165 StampaArticolo(Magazzino[i]); 166 printf ("%3d\n", i); 167 } 168 } 169 } //fine for 170 StampaMessaggio("Fine elenco degli articoli trovati"); 171 break; 172 173 case '5' : // cancella un articolo 174 printf ("\ndigita il numero dell'articolo da cancellare"); 175 fflush(stdin); 176 scanf ("%d", &NArticolo); 177 Magazzino[NArticolo]= CancellaArticolo(Magazzino[NArticolo] ); 178 break; 179 180 case '6' : // calcola qtaà di riordino 181 for (i=0; i <MAXARTICOLI; i++ ) { 182 if (Magazzino[i].Attivo=='S' ) { 183 Magazzino[i]=RicalcoloRiordino( Magazzino[i] ); 184 } 185 } 186 StampaMessaggio("ricalcolo quantita'di riordino effettuato"); 187 break; 188 189 case '7' : // Stampa un articolo 190 printf ("\ndigita il numero dell'articolo da stampare"); 191 fflush(stdin); 192 scanf ("%d", &NArticolo); 193 StampaArticolo(Magazzino[NArticolo]); 194 printf ("ID=%3d", NArticolo); 195 StampaMessaggio("... "); 196 break; 197 198 case '8' : // Stampa di tutti gli articoli 199 printf ("\n"); 200 printf (" Descrizione... Valore Unit Qta Q.Rio Prezzo ID\n"); 201 for (i=0; i <MAXARTICOLI; i++ ) {

MAGAZZINO.CPP January 2, 2008 Page 4 202 if (Magazzino[i].Attivo=='S' ) { 203 StampaArticolo(Magazzino[i]); 204 printf ("%3d\n", i); 205 } 206 } 207 StampaMessaggio("Fine elenco di tutti gli articoli "); 208 break; 209 210 case '9' : // stampa elenco di tutti gli articoli con quantità minore di quella minima di riordino 211 printf ("\n"); 212 printf (" Descrizione... Valore Unit Qta Q.Rio Prezzo ID\n"); 213 for (i=0; i <MAXARTICOLI; i++ ) { 214 if (Magazzino[i].Attivo=='S' ) { 215 if (Magazzino[i].Quantita < Magazzino[i].QtaRio) { 216 // quantità bassa.. occorre riordinare 217 StampaArticolo(Magazzino[i]); 218 printf ("%3d\n", i); 219 } 220 } 221 } 222 StampaMessaggio("Fine elenco di tutti gli articoli "); 223 224 break; 225 226 case 'w' : 227 case 'W' : // salva su disco tutto il contenuto del magazzino 228 if (SalvaSuFile(&Magazzino[0])!=NULL) 229 StampaMessaggio("Salvataggio effettuato"); 230 else 231 StampaMessaggio("ERRORE Salvataggio FILE "); 232 233 //.... 234 } // fine switch 235 236 } while (Ch!=27); // 27 e' il codice ascii del tasto ESC 237 238 getch(); 239 } // fine main 240 241 242 243 244 // funzione per l'inserimento dei dati di ogni singolo articolo 245 struct ArticoloMag InputArticolo( ) 246 { struct ArticoloMag Temp; 247 248 printf ("\n digita la descrizione (max 40 char):"); 249 fflush(stdin); 250 gets (Temp.Desc); 251 252 printf ("\n digita il valore del comp.:"); 253 fflush(stdin); 254 scanf("%f",&temp.valore); 255 256 printf ("\n digita l'unita'di misura (max 4 char):"); 257 fflush(stdin); 258 gets (Temp.Unita); 259 260 printf ("\n digita la quantità:"); 261 fflush(stdin); 262 scanf("%d",&temp.quantita); 263 264 printf ("\n digita la quantità di riordino:"); 265 fflush(stdin); 266 scanf("%d",&temp.qtario); 267 268 printf ("\n digita il prezzo :"); 269 fflush(stdin);

MAGAZZINO.CPP January 2, 2008 Page 5 270 scanf("%f",&temp.prezzo); 271 272 Temp.Attivo='S'; 273 274 return Temp; 275 } 276 277 // funzione per ricalcolare la quantità di riordino.. 278 struct ArticoloMag RicalcoloRiordino(struct ArticoloMag Art ) 279 { // se l'articolo è attivo e la qta' di riordino è zero, 280 // assegna la qtà di riordino pari al 10% della quantità attuale 281 if (( Art.Attivo=='S') &&(Art.QtaRio==0) ) 282 Art.QtaRio= Art.Quantita / 10; 283 return Art; 284 285 } //fine funzione 286 287 // funzione per stampare a video in modo ordinato l' articolo e gli altri suoi dati 288 void StampaArticolo(struct ArticoloMag Art ) 289 { 290 if (Art.Attivo=='S') { 291 printf (" %-40s ", Art.Desc); 292 printf ("%6.2f ", Art.Valore); 293 printf ("%4s ", Art.Unita); 294 printf ("%5d ", Art.Quantita); 295 printf ("%5d ", Art.QtaRio); 296 printf ("%6.2f ", Art.Prezzo); 297 } 298 } //fine funzione 299 300 301 302 // funzione per stampare a video TUTTO IL MAGAZzINO 303 void StampaMag( struct ArticoloMag *PtrArt ) 304 { 305 306 307 } //fine funzione 308 309 310 311 312 // funzione per aggiornare (modificare) un articolo 313 struct ArticoloMag AggiornaArticolo(struct ArticoloMag Art ) 314 { 315 struct ArticoloMag Temp; 316 int Ch; 317 318 printf ("\ndescrizione:(%40s)",art.desc); 319 printf ("\nbatti M per modificare, qualsiasi altro tasto per confermare"); 320 fflush(stdin); 321 Ch=getche(); 322 if (Ch== 'M' Ch=='m') { 323 printf ("\n>"); 324 gets (Temp.Desc); 325 } 326 else 327 strcpy(temp.desc,art.desc); //copia stringhe 328 329 printf ("\nvalore:(%f)",art.valore); 330 printf ("\nbatti M per modificare, qualsiasi altro tasto per confermare"); 331 fflush(stdin); 332 Ch=getche(); 333 if (Ch== 'M' Ch=='m') { 334 printf ("\n>"); 335 scanf("%f",&temp.valore); 336 } 337 else 338 Temp.Valore=Art.Valore; 339

MAGAZZINO.CPP January 2, 2008 Page 6 340 341 printf ("\nunita di misura :(%5s)",Art.Unita); 342 printf ("\nbatti M per modificare, qualsiasi altro tasto per confermare"); 343 fflush(stdin); 344 Ch=getche(); 345 if (Ch== 'M' Ch=='m') { 346 printf ("\n>"); 347 gets (Temp.Unita); 348 } 349 else 350 strcpy(temp.unita,art.unita); //copia stringhe 351 352 printf ("\nquantita:(%d)",art.quantita); 353 printf ("\nbatti M per modificare, qualsiasi altro tasto per confermare"); 354 fflush(stdin); 355 Ch=getche(); 356 if (Ch== 'M' Ch=='m') { 357 printf ("\n>"); 358 scanf("%d",&temp.quantita); 359 } 360 else 361 Temp.Quantita=Art.Quantita; 362 363 printf ("\nquantita di riordino:(%d)",art.qtario); 364 printf ("\nbatti M per modificare, qualsiasi altro tasto per confermare"); 365 fflush(stdin); 366 Ch=getche(); 367 if (Ch== 'M' Ch=='m') { 368 printf ("\n>"); 369 scanf("%d",&temp.qtario); 370 } 371 else 372 Temp.QtaRio=Art.QtaRio; 373 374 375 printf ("\nprezzo:(%f)",art.prezzo); 376 printf ("\nbatti M per modificare, qualsiasi altro tasto per confermare"); 377 fflush(stdin); 378 Ch=getche(); 379 if (Ch== 'M' Ch=='m') { 380 printf ("\n>"); 381 scanf("%f",&temp.prezzo); 382 } 383 else 384 Temp.Prezzo=Art.Prezzo; 385 386 387 Temp.Attivo='S'; 388 return Temp; 389 390 391 } //fine funzione 392 393 394 // funzione per aggiornare solo la quantità di un articolo 395 struct ArticoloMag AggiornaQtaArticolo(struct ArticoloMag Art,int NQuantita ) 396 { // se l'articolo è attivo modifica solo la quantità attuale 397 if ( Art.Attivo=='S' ) 398 Art.Quantita= NQuantita; 399 400 return Art; 401 } 402 403 404 // funzione di cancellazione articolo... 405 struct ArticoloMag CancellaArticolo(struct ArticoloMag Art ) 406 { 407 Art.Attivo='N'; 408 return Art; 409 }

MAGAZZINO.CPP January 2, 2008 Page 7 410 411 // cerca se una stringa è presente nell'altra 412 int StrFind( char *PtrDescrizione, char *PtrPezzo) 413 { 414 int Lung1, Lung2; //lunghezza delle due stringhe 415 int i; //contatore generico per ciclo for 416 char *OldPtr; // valore iniziale del puntatore 417 int NCar; // numero dei caratteri trovati uguali 418 419 Lung2=strlen(PtrDescrizione); 420 Lung1=strlen(PtrPezzo); 421 // se il pezzo è più lungo.. è impossibile che sia contenuta in descrizione 422 if (Lung1 > Lung2) return 0; 423 424 OldPtr=PtrPezzo; 425 NCar=0; 426 427 for (i=0; i< Lung2; i++ ){ 428 if (*PtrPezzo == *PtrDescrizione) { 429 // trovato almeno un carattere corrispondente e confornta i rimanenti 430 NCar++; 431 if (NCar==Lung1) return 1; //trovato prima corrispondenza 432 433 PtrPezzo++; 434 } 435 else { // diverso ricomincia confronto da capo 436 NCar=0; 437 PtrPezzo=OldPtr; // riparti con il puntatore dall'inizio stringa 438 } 439 440 PtrDescrizione++; 441 } 442 return 0; // non trovato 443 } // fine funzione 444 445 446 int LeggeDaFile (struct ArticoloMag *PtrArt ) 447 { 448 FILE *Fh; 449 int i; 450 struct ArticoloMag Art; 451 452 if ((Fh =fopen ("Magazzino.txt", "rb")) == NULL) 453 { 454 printf("cannot open input file.\n"); 455 return NULL; 456 } 457 458 for (i=0; i <MAXARTICOLI; i++ ) { 459 fread(ptrart, sizeof(art), 1, Fh); /* write struct s to file */ 460 PtrArt++; 461 } // for 462 463 fclose(fh); 464 return 123; 465 } // fine funzione 466 467 468 469 int SalvaSuFile (struct ArticoloMag *PtrArt ) 470 { 471 FILE *Fh; 472 int i; 473 474 if ((Fh =fopen ("Magazzino.txt", "wb")) == NULL) 475 { 476 printf("cannot open output file.\n"); 477 return NULL; 478 } 479

MAGAZZINO.CPP January 2, 2008 Page 8 480 for (i=0; i <MAXARTICOLI; i++ ) { 481 if (PtrArt->Attivo=='S' ) { 482 fwrite(ptrart, sizeof(*ptrart), 1, Fh); /* write struct s to file */ 483 PtrArt++; 484 } //if 485 } // for 486 487 fclose(fh); 488 return 123; 489 } // fine funzione 490 491 492 // stampa un messaggio a video e attende un tasto 493 void StampaMessaggio(char *PtrS) 494 { 495 printf("\n"); 496 puts (PtrS); 497 printf("\n \n batti un tasto per continuare"); 498 fflush(stdin); 499 getch(); 500 } 501 502 /* Esempio di esecuzione 503 PROGRAMMA SEMPLIFICATO PER LA GESTIONE DI MAGAZZINO 504 --------- scegli la voce che ti interessa 505 1) - inserisci un articolo 506 2) - modifica un articolo 507 3) - modifica quantitó di un articolo 508 4) - cerca un articolo in base a parte descrizione 509 5) - Cancella un articolo 510 6) - Calcola quantitó di riordino 511 7) - Stampa un articolo 512 8) - Stampa tutti gli articoli 513 9) - Stampa elenco articoli da riordinare 514 W) - scrivi tutto il magazzino su disco 515 batti ESC per uscire 516 Descrizione... Valore Unit Qta Q.Rio Prezzo ID 517 aaaaa 2.00 3 4 4 2.00 0 518 bbbbbbb 4.00 45 6 45 343.00 1 519 condensatore elettrolitico 100.00 uf 100 0 12.00 2 520 con con con xx 150.00 uf 250 20 30.55 3 521 potenziometro 100.00 ohm 200 20 1.45 4 522 523 Fine elenco di tutti gli articoli 524 525 526 batti un tasto per continuare 527 528 529 */