//Corriere: corriere.cc #include <iostream.h> #include <stdlib.h> #include "corriere.h" /* I metodi seguenti sono tutti concettualmente uguali: * - Richiedono gli attributi per un particolare capo di * vestiario. * - Chiedono il numero di capi da inserire * - Creano tanti capi con gli attributi indicati, quanti * ne sono richiesti, aggiungendoli alla lista del corriere */ void Corriere::AddCravatta () { char Modello [30]; int i,n; cout << "Aggiungo Cravatta\nModello :"; cin.width (29); // Limita la stringa a 29 caratteri cin >> Modello; cout << "Quantita' :"; cin >> i; cin.ignore (10,'\n'); // Arriva fino all' 'a capo' for (n = 0; n < i; n ++) new Capo (cons,"Cravatta",Modello); } void Corriere::AddCintura () { char Modello [30]; char Taglia [10]; int i,n; cout << "Aggiungo Cintura\nModello :"; cin.width (29); // Limita la stringa a 29 caratteri cin >> Modello; cout << "Taglia :"; cin.width (9); // Limita la stringa a 9 caratteri cin >> Taglia; cout << "Quantita' :"; cin >> i; cin.ignore (10,'\n'); // Arriva fino all' 'a capo' for (n = 0; n < i; n ++) new Cintura (cons,"Cintura",Modello,strtol (Taglia,0,0L)); } void Corriere::AddVestiario (char *capo) { char Modello [30]; char Taglia [10]; char Colore [20]; char num [10]; int i,n; cout << "Aggiungo " << capo << endl << "Modello :"; cin.width (29); // Limita la stringa a 29 caratteri cin >> Modello; cout << "Taglia :"; cin.width (9); // Limita la stringa a 9 caratteri cin >> Taglia; cout << "Colore :"; cin.width (19); // Limita la stringa a 19 caratteri cin >> Colore; cout << "Quantita' :"; cin >> i; cin.ignore (10,'\n'); // Arriva fino all' 'a capo' for (n = 0; n < i; n ++) new Vestiario (cons,capo,Modello,strtol (Taglia,0,0L),Colore); } /* Finalmente, completata la lista del corriere, * aggiunge i capi 'arrivati' a quelli presenti in magazzino */ void Corriere::Inserisci () { mag -> Add (cons); } /* Adesso ci sono tutte le 'action' delle varie voci del menu */ /* Menu' principale del corriere. */ void MenuCorriere::action (void *par) { Corriere c ((Magazzino *)par); menu *mc = 0; int i; /* Crea le voci del menu' */ new MenuMaglione (mc,"Maglione"); new MenuCamicia (mc,"Camicia"); new MenuPantaloni (mc,"Pantaloni"); new MenuCintura (mc,"Cintura"); new MenuCravatta (mc,"Cravatta"); new MenuInserisci (mc,"Carica in magazzino"); /* Esegue il menu' finche' non viene scelto 'Carica in Magazzino' */ do { i = mc->print (1); mc->doaction (i,&c); } while (i != 1); delete mc; // Elimina il menu } /* Le seguenti 'action' non fanno altro che invocare i metodi del corriere */ void MenuMaglione::action (void *par) { ((Corriere *)par) -> AddVestiario ("Maglione"); } void MenuCamicia::action (void *par) { ((Corriere *)par) -> AddVestiario ("Camicia"); } void MenuPantaloni::action (void *par) { ((Corriere *)par) -> AddVestiario ("Pantaloni"); } void MenuCintura::action (void *par) { ((Corriere *)par) -> AddCintura (); } void MenuCravatta::action (void *par) { ((Corriere *)par) -> AddCravatta (); } void MenuInserisci::action (void *par) { ((Corriere *)par) -> Inserisci (); }