Program 6-14
Post date: Mar 26, 2013 8:21:45 AM
// This is a modular, menu-driven program that computes
// health club membership fees.
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
// Function prototypes
void displayMenu();
int getChoice();
void showFees(string category, double rate, int months);
int main()
{
// Constants for monthly membership rates
const double ADULT_RATE = 40.00,
SENIOR_RATE = 30.00,
CHILD_RATE = 20.00;
int choice, // Holds the user's menu choice
months; // Number of months being paid
// Set numeric output formatting
cout << fixed << showpoint << setprecision(2);
do
{ displayMenu();
choice = getChoice(); // Assign choice the value returned
// by the getChoice function
if (choice != 4) // If user does not want to quit, proceed
{
cout << "For how many months? ";
cin >> months;
switch (choice)
{
case 1: showFees("Adult", ADULT_RATE, months);
break;
case 2: showFees("Child", CHILD_RATE, months);
break;
case 3: showFees("Senior", SENIOR_RATE, months);
}
}
} while (choice != 4);
return 0;
}
/**********************************************
* displayMenu *
* This function clears the screen and then *
* displays the menu choices. *
**********************************************/
void displayMenu()
{
system("cls"); // Clear the screen.
cout << "\n Health Club Membership Menu\n\n";
cout << "1. Standard Adult Membership\n";
cout << "2. Child Membership\n";
cout << "3. Senior Citizen Membership\n";
cout << "4. Quit the Program\n\n";
}
/**************************************************
* getChoice *
* This function inputs, validates, and returns *
* the user's menu choice. *
**************************************************/
int getChoice()
{
int choice;
cin >> choice;
while (choice < 1 || choice > 4)
{ cout << "The only valid choices are 1-4. Please re-enter. ";
cin >> choice;
}
return choice;
}
/**************************************************************
* showFees *
* This function uses the membership type, monthly rate, and *
* number of months passed to it as arguments to compute and *
* display a member's total charges. It then holds the screen *
* until the user presses the ENTER key. This is necessary *
* because after returning from this function the displayMenu *
* function will be called, and it will clear the screen. *
**************************************************************/
void showFees(string memberType, double rate, int months)
{
cout << endl
<< "Membership Type : " << memberType << " "
<< "Number of months: " << months << endl
<< "Total charges : $" << (rate * months) << endl;
// Hold the screen until the user presses the ENTER key.
cout << "\nPress the Enter key to return to the menu. ";
cin.get(); // Clear the previous \n out of the input buffer
cin.get(); // Wait for the user to press ENTER
}
Program Output with Example Input Shown in Bold
Health Club Membership Menu
1. Standard Adult Membership
2. Child Membership
3. Senior Citizen Membership
4. Quit the Program
1[Enter]
For how many months? 3[Enter]
Membership Type : Adult Number of months: 3
Total charges : $120
Press the Enter key to return to the menu.