Code Management and Modularity

profilezod4d8s
documents--lab_7_files.zip

Ch12_CandyMachine_VersionII/cashRegister.h

//cashRegister Header File class cashRegister { public: int getCurrentBalance() const; //Function to show the current amount in the cash //register. //Postcondition: The value of cashOnHand is returned. void acceptAmount(int amountIn); //Function to receive the amount deposited by //the customer and update the amount in the register. //Postcondition: cashOnHand = cashOnHand + amountIn; cashRegister(int cashIn = 500); //Constructor //Sets the cash in the register to a specific amount. //Postcondition: cashOnHand = cashIn; // If no value is specified when the // object is declared, the default value // assigned to cashOnHand is 500. private: int cashOnHand; //variable to store the cash //in the register };

Ch12_CandyMachine_VersionII/cashRegisterImp.cpp

Ch12_CandyMachine_VersionII/cashRegisterImp.cpp

//Implementation file cashRegisterImp.cpp 
//This file contains the definitions of the functions to 
//implement the operations of the class cashRegister

#include   < iostream >
#include   "cashRegister.h"

using   namespace  std ;

int  cashRegister :: getCurrentBalance ()   const
{
     return  cashOnHand ;
}

void  cashRegister :: acceptAmount ( int  amountIn )
{
    cashOnHand  =  cashOnHand  +  amountIn ;
}

cashRegister :: cashRegister ( int  cashIn )
{
     if   ( cashIn  >=   0 )
        cashOnHand  =  cashIn ;
     else
        cashOnHand  =   500 ;
}

Ch12_CandyMachine_VersionII/dispenserType.h

//dispenserType Header File class dispenserType { public: int getNoOfItems() const; //Function to show the number of items in the machine. //Postcondition: The value of numberOfItems is returned. int getCost() const; //Function to show the cost of the item. //Postcondition: The value of cost is returned. void makeSale(); //Function to reduce the number of items by 1. //Postcondition: numberOfItems--; dispenserType(int setNoOfItems = 50, int setCost = 50); //Constructor //Sets the cost and number of items in the dispenser //to the values specified by the user. //Postcondition: numberOfItems = setNoOfItems; // cost = setCost; // If no value is specified for a // parameter, then its default value is // assigned to the corresponding member // variable. private: int numberOfItems; //variable to store the number of //items in the dispenser int cost; //variable to store the cost of an item };

Ch12_CandyMachine_VersionII/dispenserTypeImp.cpp

Ch12_CandyMachine_VersionII/dispenserTypeImp.cpp

//Implementation file dispenserType.cpp 
//This file contains the definitions of the functions to 
//implement the operations of the class dispenserType 

#include   < iostream >
#include   "dispenserType.h"

using   namespace  std ;

int  dispenserType :: getNoOfItems ()   const
{
     return  numberOfItems ;
}

int  dispenserType :: getCost ()   const
{
     return  cost ;
}

void  dispenserType :: makeSale ()
{
    numberOfItems -- ;
}

dispenserType :: dispenserType ( int  setNoOfItems ,   int  setCost )
{
     if   ( setNoOfItems  >=   0 )
         numberOfItems  =  setNoOfItems ;
     else     
        numberOfItems  =   50 ;

     if   ( setCost  >=   0 )
        cost  =  setCost ;
     else
        cost  =   50 ;
}

Ch12_CandyMachine_VersionII/mainProgCandyMachine.cpp

Ch12_CandyMachine_VersionII/mainProgCandyMachine.cpp

// Main Program
#include   < iostream >
#include   "cashRegister.h"
#include   "dispenserType.h"

using   namespace  std ;

void  showSelection ();
void  sellProduct ( dispenserType &  product ,  
                 cashRegister &  pCounter );

int  main ()
{
    cashRegister counter ;
    dispenserType candy ( 100 ,   50 );  
    dispenserType chips ( 100 ,   65 );
    dispenserType gum ( 75 ,   45 );
    dispenserType cookies ( 100 ,   85 );

     int  choice ;    //variable to hold the selection

    showSelection ();
    cin  >>  choice ;

     while   ( choice  !=   9 )
     {
         switch   ( choice )
         {
         case   1 :  
            sellProduct ( candy ,  counter );
             break ;
         case   2 :  
            sellProduct ( chips ,  counter );
             break ;
         case   3 :  
            sellProduct ( gum ,  counter );
             break ;
         case   4 :  
            sellProduct ( cookies ,  counter );
             break ;
         default :  
            cout  <<   "Invalid selection."   <<  endl ;
         } //end switch

        showSelection ();
        cin  >>  choice ;
     } //end while

     return   0 ;
} //end main

void  showSelection ()
{
    cout  <<   "*** Welcome to Shelly's Candy Shop ***"   <<  endl ;
    cout  <<   "To select an item, enter "   <<  endl ;
    cout  <<   "1 for Candy"   <<  endl ;
    cout  <<   "2 for Chips"   <<  endl ;
    cout  <<   "3 for Gum"   <<  endl ;
    cout  <<   "4 for Cookies"   <<  endl ;
    cout  <<   "9 to exit"   <<  endl ;
} //end showSelection

void  sellProduct ( dispenserType &  product ,  
                 cashRegister &  pCounter )
{
     int  amount ;    //variable to hold the amount entered
     int  amount2 ;   //variable to hold the extra amount needed

     if   ( product . getNoOfItems ()   >   0 )   //if the dispenser is not 
                                     //empty
     {
        cout  <<   "Please deposit "   <<  product . getCost ()
              <<   " cents"   <<  endl ;
        cin  >>  amount ;

         if   ( amount  <  product . getCost ())
         {
            cout  <<   "Please deposit another "
                  <<  product . getCost () -  amount
                  <<   " cents"   <<  endl ;
            cin  >>  amount2 ;
            amount  =  amount  +  amount2 ;
        }

         if   ( amount  >=  product . getCost ())
         {
            pCounter . acceptAmount ( amount );
            product . makeSale ();
            cout  <<   "Collect your item at the bottom and "
                  <<   "enjoy."   <<  endl ;
         }
         else
            cout  <<   "The amount is not enough. "  
                  <<   "Collect what you deposited."   <<  endl ;

        cout  <<   "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"
              <<  endl  <<  endl ;
     }
     else
        cout  <<   "Sorry, this item is sold out."   <<  endl ;
} //end sellProduct