Guest User

magazzino

a guest
Jan 4th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std ;
  5.  
  6. const int N_MAX = 10;
  7. const char NOMEFILE[] = "magazzino.txt";
  8. struct prodotti_t
  9. {
  10.     bool check;
  11.     int indice;
  12.     int lunghezza;
  13.     char * codice;
  14.     float prezzo;
  15. }; 
  16.  
  17.  
  18. void inizializza ( prodotti_t &modello )
  19. {
  20.     modello.check = false;
  21.     modello.indice = -1;
  22.     modello.codice = NULL;
  23.     modello.prezzo = 0;
  24. }
  25.  
  26. void modifica_modello ( prodotti_t &modello )
  27. {
  28.     if ( modello.check == false )
  29.     {
  30.         cout<<"Prima modifica a modello corrente:"<<endl;
  31.     }
  32.  
  33. /*  if ( modello.check == true )
  34.     {
  35.         cout<<"Modello precedente sovrascritto!"<<endl;
  36.         delete [] modello.codice;
  37.     }
  38. */
  39.     cout<<"Lunghezza massima codice prodotto modello corrente:"<<endl;
  40.     cin>>modello.lunghezza;
  41.  
  42.     modello.codice = new char[modello.lunghezza];
  43.  
  44.     cout<<"Inserisci codice modello corrente di lunghezza "<<modello.lunghezza<<" :"<<endl;
  45.     cin>>modello.codice;
  46.  
  47.     cout<<"Prezzo modello corrente:"<<endl;
  48.     cin>>modello.prezzo;
  49.  
  50.     modello.check = true;
  51. }
  52.  
  53. void stampa_modello ( prodotti_t &modello )
  54. {
  55.     if ( modello.check == false )
  56.     {
  57.         cout<<"Modello corrente non ancora inserito !"<<endl;
  58.         return;
  59.     }
  60.     if ( modello.check == true )
  61.     {
  62.         cout<<"Modello corrente :"<<endl;
  63.     }
  64.    
  65.     cout<<modello.codice<<" "<<modello.prezzo<<endl;
  66.  
  67. }
  68.  
  69. void aggiungi_prodotto ( prodotti_t magazzino[] , prodotti_t &modello )
  70. {
  71.     if ( modello.check == false )
  72.     {
  73.         cout<<"Modifica il modello per continuare!"<<endl;
  74.         return;
  75.     }
  76.  
  77.     if ( modello.indice >= N_MAX )
  78.     {
  79.         cout<<"Numero prodotti massimo superato!"<<endl;
  80.         return;
  81.     }
  82.    
  83.     if ( modello.indice == -1 )
  84.     {
  85.         modello.indice = 0;
  86.     }
  87.  
  88.     magazzino[modello.indice].codice = modello.codice;
  89.     magazzino[modello.indice].prezzo = modello.prezzo;
  90.  
  91.     modello.indice++;
  92. }
  93.  
  94. void stampa_prodotti ( prodotti_t magazzino[] , prodotti_t &modello )
  95. {
  96.     if ( modello.indice == -1 )
  97.     {
  98.         cout<<"Devi prima aggiungere un prodotto!"<<endl;
  99.         return;
  100.     }
  101.  
  102.     for ( int i = 0 ; i < modello.indice ; i++ )
  103.     {
  104.         cout<<magazzino[i].codice<<" "<<magazzino[i].prezzo<<endl;
  105.     }
  106.  
  107. }
  108.  
  109. void salva_magazzino ( prodotti_t magazzino[] , prodotti_t modello )
  110. {
  111.     if ( modello.indice == -1 )
  112.     {
  113.         cout<<"Devi prima aggiungere prodotti nel magazzino !"<<endl;
  114.         return;
  115.     }
  116.  
  117.     ofstream f ( NOMEFILE );
  118.         if ( !f ) cerr<<"Apertura fallita!"<<endl;
  119.  
  120.     f<<modello.check<<" "<<modello.indice<<" "<<modello.codice<<" "<<modello.prezzo<<" "<<modello.lunghezza<<endl;
  121.  
  122.     for ( int i = 0 ; i < modello.indice ; i++ )
  123.     {
  124.         f<<magazzino[i].codice<<" "<<magazzino[i].prezzo<<endl;
  125.     }
  126.  
  127.     f.close();
  128. }
  129.  
  130. void carica_magazzino ( prodotti_t magazzino[] , prodotti_t &modello )
  131. {
  132.     if ( modello.check == true )
  133.     {
  134.         cout<<"Il precedente contenuto andrĂ  perso!"<<endl;
  135.         delete [] modello.codice;
  136.     }
  137.  
  138.     ifstream f2 ( NOMEFILE );
  139.         if (!f2) cerr<<"Apertura fallita!"<<endl;
  140.    
  141.     f2>>modello.check>>modello.indice>>modello.codice>>modello.prezzo>>modello.lunghezza;
  142.  
  143.     modello.codice = new char[modello.lunghezza];
  144.    
  145.     for ( int i = 0 ; i < modello.indice ; i++ )
  146.     {
  147.         f2>>magazzino[i].codice>>magazzino[i].prezzo;
  148.     }
  149.  
  150.     f2.close();
  151. }
  152.  
  153. int main()
  154. {
  155.     const char menu[] =
  156.         "1. Modifica modello\n"
  157.         "2. Stampa modello\n"
  158.         "3. Aggiungi prodotto\n"
  159.         "4. Stampa prodotti\n"
  160.         "5. Salva Magazzino\n"
  161.         "6. Carica magazzino\n"
  162.         "7. Esci\n" ;
  163.    
  164.     prodotti_t modello;
  165.     prodotti_t magazzino[N_MAX];
  166.  
  167.     inizializza ( modello );
  168.  
  169.     while (true) {
  170.         cout<<menu<<endl ;
  171.        
  172.         int scelta ;
  173.         cin>>scelta ;
  174.         switch(scelta) {
  175.  
  176.         case 1:
  177.             modifica_modello ( modello );
  178.            
  179.             break ;
  180.         case 2:
  181.             stampa_modello ( modello );
  182.             break ;
  183.         case 3:
  184.             aggiungi_prodotto ( magazzino , modello );
  185.             break ;
  186.         case 4:
  187.             stampa_prodotti ( magazzino , modello );
  188.             break ;
  189.         case 5:
  190.             salva_magazzino ( magazzino , modello );
  191.             break ;
  192.         case 6:
  193.             carica_magazzino ( magazzino , modello );
  194.             break;
  195.         case 7:
  196.             return 0 ;
  197.         default:
  198.             cout<<"Scelta errata"<<endl ;
  199.         }
  200.     }
  201.     return 1 ;
  202. }
Advertisement
Add Comment
Please, Sign In to add comment