/* 25 Fevrier 2K - v1.02 M.Lokbani correction/ajout commentaires a la fonction: piecesRetournees + correction de qcqs erreurs typographiques 20 Fevrier 2K - v1.01 M.Lokbani modifications .... 15 Fevrier 2K - v1.00 Mohamed Lokbani & xv lokbani@iro.umontreal.ca UdM, IFT1166 -TP2- Session Hiver 2K */ // pour eviter de charger plus d'une fois la classe, sinon erreur a la compilation // si c'est le premier passage, alors, on definit DB_H pour ne plus charger la classe Distributeur // lors d'un include de l'entete de ce fichier. #ifndef DB_H #define DB_H #include "produit.h" #include "monnaie.h" #include const int MAXPRODUITS = 30; // Nombre de produits Max disponibles dans le distributeur /* * class Distributeur * * Description. Cette classe contient les outils necessaires pour simuler * un distributeur de boissons. * * Le distributeur est represente par les variables suivantes: * * selections_ -- Un tableau de pointeurs, contenant des objets du type Produit mis * en vente dans le distributeur de boissons * * nProduits_ -- Le nombre de produits mis en vente * * entree_ -- Le montant entree par le consommateur (acheteur) * * Methodes: * * Distributeur -- Constructeur * ajoutProduit -- Ajouter un produit dans le distributeur de boissons * achatProduit -- Acheter un produit du distributeur de boissons * afficheProduits -- Afficher tous les produits en vente * insertPiece -- Ajouter des pieces a la monnaie deja entree dans le distributeur * piecesRetournees -- Retourner les pieces entrees dans le distributeur * */ class Distributeur { public: /* * fonction Distributeur * * Cette fonction cree un distributeurs de boissons vide. * */ Distributeur(); /* * founction ajoutProduit * * Cette fonction ajoute un produit, dans le distributeur de boissons. * Le produit est stocke (place) dans le tableau selections_ * On suppose que le nombre de produits ajoutes ne depasse pas MAXPRODUITS * */ void ajoutProduit(const Produit&); /* * fonction achatProduit * * Cette fonction simule l'achat d'un produit du distributeur de boisson * * * Description. (voir aussi l'exemple detaille dans le fichier sortie.dat) * * L'achat se fait comme suit: * * 1. Le nom du produit (boisson) est affiche sous le format suivant: * * xxxxxxxxxxxx selectionnee. * * 2. Pour le montant entre, en fonction des cas ci-dessous, on calcule la monnaie * a remettre et on l'affiche. * Puis le montant en entree est remis a zero, pour une nouvelle saisie. * * * * cas -1- montant egal: * * si on entre 65 cents, pour une boisson qui coute 65 cents, alors: * * 1 CinqCents entree(s). * 1 CinqCents 1 VingtCinqCents entree(s). * 1 CinqCents 1 DixCents 1 VingtCinqCents entree(s). * 1 CinqCents 1 DixCents 2 VingtCinqCents entree(s). * Diet Pepsi selectionnee. * Savourez votre Diet Pepsi. * * * cas -2- montant superieur: * * si on entre 1 dollar, et le produit coute que 50 cents * * 1 UnDollar entree(s). * Pepsi selectionnee. * Savourez votre Pepsi. * 1 CinquanteCents retournee(s). * * cas -3- montant inferieur: * * si on entre 10 cents, et le produit coute 50 cents * * 1 DixCents entree(s). * Diet Sprit selectionne. * Il manque des sous ... encore 40 cents! * * 1 DixCents 1 VingtCinqCents entree(s). * 1 DixCents 2 VingtCinqCents entree(s). * Diet Sprit selectionnee. * Savourez votre Diet Sprit. * 1 DixCents retournee(s). * * * * 3. Si le produit n'est plus disponible: * * 1 DixCents entree(s). * 2 DixCents entree(s). * 3 DixCents entree(s). * 4 DixCents entree(s). * Sprit selectionnee. * Desole, ce produit n'est pas disponible! * 1 CinqCents 1 DixCents 1 VingtCinqCents retournee(s). * */ Monnaie achatProduit(int); /* * fonction insertPiece * * Cette fonction incremente le montant de l'argent entree dans le distributeur. * L'argument doit avoir l'une des valeur suivantes: 1, 5, 10, 25, 50, 100, 200 cents. * * Voila un distributeur qui vous debarrassera de votre monnaie ..... * * * xx UnCent, xx CinqCents, xx DixCents, xx VingtCinqCents, xx CinquanteCents, xx UnDollar, xx DeuxDollars entree(s). * * on affiche que les valeurs non nulles. */ void insertPiece(int); /* * fonction afficheProduits * * Cette fonction affiche les produits en vente dans le distributeurs de boissons. Le format est comme * suit: * * 0. xxxxxxxxxxxxxxx 99 * 1. xxxxxxxxxxxxxxx 99 * : : : * * La premiere valeur correspond a la rangee du distributeur ou se trouve le produit. * La seconde valeur est le nom du produit. * La troisieme valeur est le prix du produit. */ void afficheProduits() const; /* * fonction piecesRetournees * * Cette fonction affiche le montant entre (donc celui retourne au consommateur) * et remet a zero, le montant en entree, pour une nouvelle operation. * * commentaire envoye sur gift1166 -------------------------------------------------------- * * la fonction "pieceRejetees" sert uniquement a retourner les pieces, si le * consommateur a change d'avis et ne veut plus obtenir une boisson du distributeur. * C'est l'equivalent de la fonction "eject". * * Cette fonction ("pieceRejetees") est differente de la fonction qui sert a * retourner la monnaie apres que le consommateur est obtenu le produit qu'il a selectionne. * * ----------------------------------------------------------------------------------------- * * L'affichage est comme suit: * * * xx UnCent, xx CinqCents, xx DixCents, xx VingtCinqCents, xx CinquanteCents, xx UnDollar, xx DeuxDollars retournee(s). * * on affiche que les valeurs non nulls. * Cette fonction n'a aucun effet si aucun montant n'a ete entre dans le distributeur. */ Monnaie piecesRetournees(); private: Produit* selections_[MAXPRODUITS]; // tableau pour contenir les produits Monnaie entree_; // somme d'argent int nProduits_; // nbre de produits }; #endif