//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 ();
}