// A program to calculate the salaries for 10 employees using functions and the 'for' loop
// File: ch4prg2.cpp

// The specifications would go here.

#include <iostream.h>

const 	int REGULAR_HOURS = 40;           // Number of hours before overtime kicks in
const	double OVERTIME_ADJUSTMENT = 1.5; // Overtime pay adjustment

const	int NUM_TIMES = 10;	             // Number of employees to work with


void DisplayIntroScreen();
/*
Purpose:	To output a introductory message

Receives:	NONE
Returns:	NONE
*/


void DisplayExitScreen();
/*
Purpose:	To output an exit message

Receives:	NONE
Returns:	NONE
*/


double GetRateOfPay();
/*
Purpose:	To get the rate of pay for an employee from a user

Receives: Nothing
Returns	 <payRate>
*/

double GetHoursWorked();
/*
Purpose:	To get the hours worked for an employee from a user

Receives: Nothing
Returns	 <hoursWrked>
*/

void OutputSalary (double salary);
/*
Purpose:    To output the salary of an employee

Receives:   <salary>, a double
Returns	    NONE
*/

void GetEmployeeInformation(double& rate, double& hours);
/*
Purpose:    To get the hours worked and rate of pay of an employee from a user
 
Receives:   NONE
Returns	   <rate> and <hours>
*/

double CalculateSalary(double rate, double hours);
/*
Purpose:	To calculate an employee's salary
 
Receives:	<hours> a double, <rate> a double
Returns:	<fullSalary>
*/

void main()
// Purpose:  to calculate salaries for 10 employees

// Receives: NONE
// Returns:  NONE
{
	double rateOfPay;
        double hoursWorked;  // can be a fraction of an hour
       	
	double salary;
	
	DisplayIntroScreen();

	for (int count = 0; count < NUM_TIMES; count++)

	{	GetEmployeeInformation(rateOfPay, hoursWorked);
		salary = CalculateSalary(rateOfPay, hoursWorked);
		OutputSalary(salary);
	}
	DisplayExitScreen();

}

double GetRateOfPay()
{	double payRate;
	cout << "Please enter an employee's rate of pay ";
	cin >> payRate;
	return payRate;
}

double GetHoursWorked()
{	double hoursWrked;
	cout << "Please enter the number of hours worked for an employee ";
	cin >> hoursWrked;
	return hoursWrked;
}

void OutputSalary (double salary)
{	cout << "The employee's salary is: " << salary << endl;
}

void GetEmployeeInformation(double& rate, double& hours)
{	rate = GetRateOfPay();
	hours = GetHoursWorked();
}

double CalculateSalary(double rate, double hours)
{	double regularSalary;
	double overtimeSalary;
	double fullSalary;
	double hoursWorked;  // can be a fraction of an hour

	
	if (hours > REGULAR_HOURS)
	{	regularSalary = REGULAR_HOURS * rate;
		overtimeRateOfPay = rate * OVERTIME_ADJUSTMENT;
		overtimeSalary = (hours - REGULAR_HOURS) *   overtimeRateOfPay; 
		fullSalary = regularSalary + overtimeSalary;
	}
	else
	{ 	fullSalary = hours* rate;
	}
	
	return fullSalary;
}

void DisplayIntroScreen();
{	cout << "Welcome to the Employee Salary Program\n";
}

void DisplayExitScreen()
{	cout << "The Employee Salary Program is now exiting\n";
}