My class program, need help please

#include <iostream>
#include <string>
#include <stdlib.h>
#include <iomanip>

using namespace std;

const double MIN_SALARY = 50000;
const double MAX_SALARY = 250000;
const int MAX_DEPENDENTS = 10;
const int MIN_DEPENDENTS = 0;
const char DEFAULT_GENDER = 'N'; //N stands for not identified
const int NUMBER_WEEKS = 52;

class Benefit
{
private:
string healthInsurance;
double lifeInsurance;
int vacation;

public:
Benefit()
{
this->healthInsurance = "not provided";
this->lifeInsurance = 0;
this->vacation = 14;
}
Benefit(string healthInsurance, double lifeInsurance, int vacation)
{
this->healthInsurance = healthInsurance;
this->lifeInsurance = lifeInsurance;
this->vacation = vacation;
}
Benefit(Benefit &mybenefit)
{
this->healthInsurance = mybenefit.healthInsurance;
this->lifeInsurance = mybenefit.lifeInsurance;
this->vacation = mybenefit.vacation;
}
string getHealthInsurance()
{
return healthInsurance;
}
void setHealthInsurance(string healthInsurance)
{
this->healthInsurance = healthInsurance;
}
double getLifeInsurance()
{
return lifeInsurance;
}
void setLifeInsurance(double lifeInsurance)
{
this->lifeInsurance = lifeInsurance;
}
int getVacation()
{
return vacation;
}
void setVacation(int vacation)
{
this->vacation = vacation;
}
void displayBenefits()
{
cout<<"\nBenefit Information\n";
cout<<"____________________________________________________________\n";
cout<<"Health Insurance:\t" << healthInsurance << "\n";
cout<<"Life Insurance:\t\t" << lifeInsurance << "\n";
cout<<"Vacation:\t\t" << vacation << " days\n";

}

};

class Employee
{ //declare static variable accessible, which is accessible by all objects of the class
static int numEmployees;

protected:
string firstName;
string lastName;
char gender;
int dependents;
double annualSalary;

//declare a benefits object
Benefit benefits;

public:

Employee();
Employee(string, string, char, int, double);
double calculatePay();
void displayEmployee();
string getFirstName();
void setFirstName(string);
string getLastName();
void setLastName(string);
char getGender();
void setGender(char);
int getDependents();
void setDependents(int);
double getAnnualSalary();
void setAnnualSalary(double);
Benefit getBenefit();
void setBenefit(Benefit);

Employee():benefits()//default constructor
{
firstName = "";
lastName = "";
gender = 'N';
dependents = 0;
annualSalary = 50000;
//each time a constructor is called, increment the the class level numEmployees variable
this->numEmployees += 1;
//Instantiate the Benefits object
//benefits();
}
//create a parameterized construct, not required and shown only for demonstration
Employee(string firstName, string lastName, char gender, int dependents, double salary, Benefit mybenefits):benefits(mybenefits)
{
//use the THIS keyword to distinguish between the class attributes and the parameters
this->firstName = firstName;
this->lastName = lastName;
this->gender = gender;
this->dependents = dependents;
this->annualSalary = salary;
//each time a constructor is called, increment the the class level numEmployees variable
this->numEmployees += 1;

}

//create the accessors and mutators for the benefit object
Benefit getBenefits()
{
return benefits;
}
void setBenefits(Benefit benefits)
{
this->benefits = benefits;
}

//a static method that returns the number of employee object that are created
static int getNumberEmployees()
{
return numEmployees;
}

//Accessors and mutators, one for each class attribute
string getFirstName()
{
return firstName;
}
void setFirstName(string name)
{
firstName = name;
}
string getLastName()
{
return lastName;
}
void setLastName(string name)
{
lastName = name;
}
char getGender()
{
return gender;
}
void setGender(char gen)
{
switch (gen)
{
case 'f':case 'F': case 'M':case 'm':
gender = gen;
break;
default:
gender = DEFAULT_GENDER;
}
}
int getDependents()
{
return dependents;
}
void setDependents(int dep)
{
if (dep >= MIN_DEPENDENTS && dep <= MAX_DEPENDENTS)
{
dependents = dep;
}
else if (dep < MIN_DEPENDENTS)
{
dep = MIN_DEPENDENTS;
}
else
{
dependents = MAX_DEPENDENTS;
}
}
double getAnnualSalary()
{
return annualSalary;
}
void setAnnualSalary(double salary)
{
if (salary >= MIN_SALARY && salary <= MAX_SALARY)
{
annualSalary = salary;
}
else if (salary < MIN_SALARY)
{
annualSalary = MIN_SALARY;
}
else
{
annualSalary = MAX_SALARY;
}
}
double calculatePay()
{
return annualSalary/NUMBER_WEEKS;
}

void displayEmployee()
{
cout<<"Employee Information\n";
cout<<"____________________________________________________________\n";
cout<<"Name: \t\t" <<firstName << " " << lastName << "\n";
cout<<"Gender:\t\t" << gender << "\n";
cout<<"Dependents: \t" << dependents << "\n";
cout<<"Annual Salary:\t" << setprecision(2)<<showpoint<<fixed<<annualSalary << "\n";
cout<<"Weekly Salary:\t" << setprecision(2)<<showpoint<<fixed<<calculatePay()<<"\n";

//show the benefits
this->benefits.displayBenefits();

}
};

class Salaried : public Employee()
{
private:
//declare data variables
const int MIN_MANAGEMENT_LEVEL = 0;
const int MAX_MANAGEMENT_LEVEL = 3;
const double BONUS_PERCENT = .10;
int managementLevel;

public:
Salaried();
Salarried(string, string, char, int, double, Benefit, int);
double calculatePay();
void displayEmployee();
int getManagementLevel();
void setManagementLevel(int);

Salaried()
{
managementLevel = 0;
}

Salaried(string firstName, string lastName, char gender, int dependents, double salary, Benefit mybenefits):benefits(mybenefits), int manLevel) :Employee(string firstName, string lastName, char gender, int dependents, double salary, Benefit mybenefits):benefits(mybenefits) )
{
//use the THIS keyword to distinguish between the class attributes and the parameters
this->firstName = firstName;
this->lastName = lastName;
this->gender = gender;
this->dependents = dependents;
this->annualSalary = salary;
//each time a constructor is called, increment the the class level numEmployees variable
this->numEmployees += 1;

}

Salaried(double sal, int manLevel)
{
//should initialize all of the attributes using values passed in using its parameter list
}


double calculatePay()
{
return Employee::calculatePay() * (1 + (managementLevel*BONUS_PERCENT));
}

void displayEmployee()
{
cout<<"Employee Information\n";
cout<<"____________________________________________________________\n";
cout<<"Name: \t\t" <<firstName << " " << lastName << "\n";
cout<<"Gender:\t\t" << gender << "\n";
cout<<"Dependents: \t" << dependents << "\n";
cout<<"Annual Salary:\t" << setprecision(2)<<showpoint<<fixed<<annualSalary << "\n";
cout<<"Weekly Salary:\t" << setprecision(2)<<showpoint<<fixed<<calculatePay()<<"\n";
cout<<"Management Level: "<< managementLevel << endl;

//show the benefits
this->benefits.displayBenefits();

}

int getManagementLevel()
{
return managementLevel;
}

void setManamentLevel(int manLevel);
{
if manLevel = 0
{managementLevel = manLevel;}
else if manLevel = 1
{managmentLevel = manLevel;}
else if manLevel = 2
{managementLevel = manLevel;}
else if manLevel = 3
{managementLevel = manLevel;}
else
cout<<" Management Level Error" << endl;
}
};

Last edited on
class Hourly : public Employee()
{
private:
//declare data members
const double MIN_WAGE = 10;
const double MAX_WAGE = 75;
const double MIN_HOURS = 0;
const double MAX_HOURS = 50;
double wage;
double hours;
string category;

public:
Hourly();
Hourly(double, double, string);
double calculatePay();
void setAnnualSalary();
void displayEmployee();
double getWage();
void setWage(double);
double getHours();
void setHours(double);
string getCategory();
void setCategory(string);

Hourly()
{
double wage = 0.0;
double hours = 0.0;
string category = "X";
}

Hourly(double wage, double hours, string category)
{
//should initialize all of the attributes using values passed in using its parameter list
}

Hourly(string firstName, string lastName, char gender, int dependents, double salary, Benefit mybenefits):benefits(mybenefits), int manLevel) :Employee(string firstName, string lastName, char gender, int dependents, double salary, Benefit mybenefits):benefits(mybenefits) )
{
//use the THIS keyword to distinguish between the class attributes and the parameters
this->firstName = firstName;
this->lastName = lastName;
this->gender = gender;
this->dependents = dependents;
this->annualSalary = salary;
//each time a constructor is called, increment the the class level numEmployees variable
this->numEmployees += 1;

}

double calculatePay()
{
return wage * hours;
}

void setAnnualSalary(double salary)
{
salary = Employee::calculatePay() * 50;
}

void displayEmployee()
{
cout<<"Employee Information\n";
cout<<"____________________________________________________________\n";
cout<<"Name: \t\t" <<firstName << " " << lastName << "\n";
cout<<"Gender:\t\t" << gender << "\n";
cout<<"Dependents: \t" << dependents << "\n";
cout<<"Annual Salary:\t" << setprecision(2)<<showpoint<<fixed<<annualSalary << "\n";
cout<<"Weekly Salary:\t" << setprecision(2)<<showpoint<<fixed<<calculatePay()<<"\n";
cout<<"Category "<< category << endl;

//show the benefits
this->benefits.displayBenefits();
}

double getWage()
{
return wage;
}

void setWage(double wage)
{
wage = wage;
}

double getHours();
{
return hours;
}

void setHours(double hours)
{
hours = hours;
}

string getCategory()
{
return categeory;
}

void setCategory(string category)
{

if category = "temporary "
{category = category;}
else if category = "part time "
{category = category;}
else if category = "full time "
{category = category;}
else
cout<<"Category Error" << endl;
}
};

int Employee::numEmployees=0;//supply initial value to static data members

void DisplayApplicationInformation()
{ cout<<"Welcome to your Object Oriented Program--Employee Class"
<<"CIS247C, Week 5 Lab"
<<"Name: Eugene Young D03152610";
}

void DisplayDivider(string message)
{cout<<"\n*************** " + message + " *********************\n";}

string GetInput( string message)
{ string mystring;
cout<<"Please enter your "<< message;
getline(cin, mystring);
return mystring;
}

void TerminateApplication()
{ cout<<"\nThe end of the CIS247C Week4 iLab.\n";}


int main()
{
char gender;
double lifeInsurance;
int vacation;
string str;
Benefit theBenefits;

//always provide some type of application information to the user--don't leave them cold!
DisplayApplicationInformation();

//use a utility method to keep a consistent format to the output
DisplayDivider("Employee 1");

//create a general Employee object
Employee genericEmp;
//access the employee objects members using the DOT notation
genericEmp.setFirstName(GetInput("First Name "));
genericEmp.setLastName(GetInput("Last Name "));

str = GetInput("Gender ");
gender = str.at(0);
genericEmp.setGender(gender);

genericEmp.setDependents(atoi( GetInput("Dependents ").c_str()));
genericEmp.setAnnualSalary(atof(GetInput("Annual Salary ").c_str()));

//set the benefit information
theBenefits.setHealthInsurance(GetInput("Health Insurance"));

theBenefits.setLifeInsurance(atof(GetInput("Life Insuarance").c_str()));

theBenefits.setVacation(atoi(GetInput("Vocation Days").c_str()));

//set the benefit information
genericEmp.setBenefits(theBenefits);

genericEmp.displayEmployee();

cout<<"\n--- Number of Employee Object Created ----";
cout<<"\tNumber of employees: " << Employee::getNumberEmployees();

//use a utility method to keep a consistent format to the output
DisplayDivider("Employee 2");

//create a salaried employee, using the general employee information in the constructor
Salaried salariedEmp;
//access the employee objects members using the DOT notation
salariedEmp.setFirstName(GetInput("First Name "));
salariedEmp.setLastName(GetInput("Last Name "));

str = GetInput("Gender ");
gender = str.at(0);
salariedEmp.setGender(gender);

salariedEmp.setDependents(atoi( GetInput("Dependents ").c_str()));
//salariedEmp.setAnnualSalary(atof(GetInput("Annual Salary ").c_str()));

//set the benefit information
theBenefits.setHealthInsurance(GetInput("Health Insurance"));

theBenefits.setLifeInsurance(atof(GetInput("Life Insuarance").c_str()));

theBenefits.setVacation(atoi(GetInput("Vocation Days").c_str()));

//set the benefit information
salariedEmp.setBenefits(theBenefits);
salariedEmp.setManagementLevel(3);
salariedEmp.displayEmployee();

cout<<"\n--- Number of Employee Object Created ----";
cout<<"\tNumber of employees: " << Employee::getNumberEmployees();

//use a utility method to keep a consistent format to the output
DisplayDivider("Employee 3");

//create a hourly employee, but use generic employee as a base
Hourly hourEmp(genericEmp.getFirstName(), genericEmp.getLastName(), genericEmp.getGender(),
genericEmp.getDependents(), 40.0, 50.0, genericEmp.getBenefits(), "Full Time");
//access the employee objects members using the DOT notation
hourEmp.setFirstName(GetInput("First Name "));
hourEmp.setLastName(GetInput("Last Name "));

str = GetInput("Gender ");
gender = str.at(0);
hourEmp.setGender(gender);

hourEmp.setDependents(atoi( GetInput("Dependents ").c_str()));

//set the benefit information
theBenefits.setHealthInsurance(GetInput("Health Insurance"));

theBenefits.setLifeInsurance(atof(GetInput("Life Insuarance").c_str()));

theBenefits.setVacation(atoi(GetInput("Vocation Days").c_str()));

//set the benefit information
hourEmp.setBenefits(theBenefits);
hourEmp.displayEmployee();

cout<<"\n--- Number of Employee Object Created ----";
cout<<"\tNumber of employees: " << Employee::getNumberEmployees();


TerminateApplication();
system ("pause");
return 0;

}
Oh God :D

Could you kindly explain your problem?
OMG what a program! Let me see if I can tidy it up:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
#include <iostream>
#include <string>
#include <cstdlib>
#include <iomanip>

using namespace std;

const double MIN_SALARY=50000;
const double MAX_SALARY=250000;
const int MAX_DEPENDENTS=10;
const int MIN_DEPENDENTS=0;
const char DEFAULT_GENDER='N';
const int NUMBER_WEEKS=52;

class Benefit
{
	string healthInsurance;
	double lifeInsurance;
	int vacation;
	public:
	Benefit(): healthInsurance("not provided"), lifeInsurance(0), vacation(14){}
	Benefit(string HealthInsurance, double LifeInsurance, int Vacation):
		healthInsurance(HealthInsurance), lifeInsurance(LifeInsurance),
		vacation(Vacation){}
	Benefit(Benefit &mybenefit): healthInsurance(mybenefit.healthInsurance),
		lifeInsurance(mybenefit.lifeInsurance), vacation(mybenefit.vacation){}
	string getHealthInsurance()
	{
		return healthInsurance;
	}
	void setHealthInsurance(string HealthInsurance)
	{
		healthInsurance=HealthInsurance;
	}
	double getLifeInsurance()
	{
		return lifeInsurance;
	}
	void setLifeInsurance(double LifeInsurance)
	{
		lifeInsurance=LifeInsurance;
	}
	int getVacation()
	{
		return vacation;
	}
	void setVacation(int Vacation)
	{
		vacation=Vacation;
	}
	void displayBenefits()
	{
		cout<<"\nBenefit Information\n";
		cout<<"____________________________________________________________\n";
		cout<<"Health Insurance:\t"<<healthInsurance<<"\n";
		cout<<"Life Insurance:\t\t"<<lifeInsurance<<"\n";
		cout<<"Vacation:\t\t"<<vacation<<"days\n";
	}
};

class Employee
{
	//declare static variable accessible, which is accessible by all objects of the class
	static int numEmployees;
	protected:
	string firstName;
	string lastName;
	char gender;
	int dependents;
	double annualSalary;
	//declare a benefits object
	Benefit benefits;
	public:
	Employee(): benefits() firstName(""), lastName(""), gender('N'), dependents(0),
		annualSalary(50000)
	{
		numEmployees++;
	}
	Employee(string FirstName, string LastName, char Gender, int Dependents,
		double salary, Benefit Mybenefits): benefits(Mybenefits),
		firstName(FirstName), lastName(LastName), gender(Gender),
		dependents(Dependents), annualSalary(salary)
	{
		numEmployees++;
	}
	Benefit getBenefits()
	{
		return benefits;
		}
	void setBenefits(Benefit Benefits)
	{
		benefits=Benefits;
	}
	static int getNumberEmployees()
	{
		return numEmployees;
	}
	string getFirstName()
	{
		return firstName;
	}
	void setFirstName(string name)
	{
		firstName=name;
	}
	string getLastName()
	{
		return lastName;
	}
	void setLastName(string name)
	{
		lastName=name;
	}
	char getGender()
	{
		return gender;
	}
	void setGender(char gen)
	{
		switch (gen)
		{
			case 'f':case 'F': case 'M':case 'm':
				gender=gen;
				break;
			default:
				gender=DEFAULT_GENDER;
				break;
		}
	}
	int getDependents()
	{
		return dependents;
	}
	void setDependents(int dep)
	{
		if (dep >= MIN_DEPENDENTS && dep <= MAX_DEPENDENTS) dependents=dep;
		else if (dep < MIN_DEPENDENTS) dep=MIN_DEPENDENTS;
		else dependents=MAX_DEPENDENTS;
	}
	double getAnnualSalary()
	{
		return annualSalary;
	}
	void setAnnualSalary(double salary)
	{
		if (salary >= MIN_SALARY && salary <= MAX_SALARY) annualSalary=salary;
		else if (salary < MIN_SALARY) annualSalary=MIN_SALARY;
		else annualSalary=MAX_SALARY;
	}
	double calculatePay()
	{
		return annualSalary/NUMBER_WEEKS;
	}

	void displayEmployee()
	{
		cout<<"Employee Information\n";
		cout<<"____________________________________________________________\n";
		cout<<"Name: \t\t" <<firstName<<" "<<lastName<<"\n";
		cout<<"Gender:\t\t"<<gender<<"\n";
		cout<<"Dependents: \t"<<dependents << "\n";
		cout<<"Annual Salary:\t"<<setprecision(2)<<showpoint<<fixed<<annualSalary<<"\n";
		cout<<"Weekly Salary:\t"<<calculatePay()<<"\n";
		benefits.displayBenefits();

	}
};

class Salaried : public Employee()
{
	private:
	//declare data variables
	const int MIN_MANAGEMENT_LEVEL=0;
	const int MAX_MANAGEMENT_LEVEL=3;
	const double BONUS_PERCENT=.10;
	int managementLevel;
	public:
	Salaried(): managementLevel(0){}
	Salaried(string firstName, string lastName, char gender, int dependents,
		double salary, Benefit mybenefits):benefits(mybenefits), int manLevel):
		Employee(firstName, lastName, gender, dependents, salary, mybenefits){}
	Salaried(double sal, int manLevel): annualSalary(sal), managmentLevel(manLevel){}
	double calculatePay()
	{
		return Employee::calculatePay()*(1+(managementLevel*BONUS_PERCENT));
		}
	void displayEmployee()
	{
		cout<<"Employee Information\n";
		cout<<"____________________________________________________________\n";
		cout<<"Name: \t\t"<<firstName<<" "<<lastName<<"\n";
		cout<<"Gender:\t\t"<<gender<<"\n";
		cout<<"Dependents: \t"<<dependents <<"\n";
		cout<<"Annual Salary:\t" << setprecision(2)<<showpoint<<fixed<<annualSalary<<"\n";
		cout<<"Weekly Salary:\t"<<calculatePay()<<"\n";
		cout<<"Management Level: "<<managementLevel<<endl;
	benefits.displayBenefits();
	}
	int getManagementLevel()
	{
		return managementLevel;
	}
	void setManagementLevel(int manLevel);
	{
		if (manlevel<4) managementLevel=manLevel;
		else cerr<<"Management Level Error" << endl;
	}
};

class Hourly : public Employee()
{
	private:
	//declare data members
	const double MIN_WAGE=10;
	const double MAX_WAGE=75;
	const double MIN_HOURS=0;
	const double MAX_HOURS=50;
	double wage;
	double hours;
	string category;
	public:
	Hourly(double Wage=0, double Hours=0, string Category="X"):
		wage(Wage), hours(Hours), category(Category){}
	Hourly(string firstName, string lastName, char gender, int dependents,
		double salary, Benefit mybenefits):benefits(mybenefits), int manLevel):
		Employee(firstName, lastName, gender, dependents, salary, mybenefits)
		{}
	double calculatePay()
	{
		return wage * hours;
	}
	void setAnnualSalary(double salary)
	{
		salary=Employee::calculatePay() * 50;
	}
	void displayEmployee()
	{
		cout<<"Employee Information\n";
		cout<<"____________________________________________________________\n";
		cout<<"Name: \t\t"<<firstName<<" "<<lastName<<"\n";
		cout<<"Gender:\t\t"<<gender<<"\n";
		cout<<"Dependents: \t"<<dependents<<"\n";
		cout<<"Annual Salary:\t"<<setprecision(2)<<showpoint<<fixed<<annualSalary<<"\n";
		cout<<"Weekly Salary:\t"<<calculatePay()<<"\n";
		cout<<"Category "<<category<<endl;
		benefits.displayBenefits();
	}
	double getWage()
	{
		return wage;
	}
	void setWage(double Wage)
	{
		wage=Wage;
	}
	double getHours();
	{
		return hours;
	}
	void setHours(double Hours)
	{
		hours=Hours;
	}
	string getCategory()
	{
		return categeory;
	}
	void setCategory(string Category)
	{
	if (category=="temporary" || category=="part time" || category=="full time")
		category=Category;
	else
		cerr<<"Category Error" << endl;
	}
};
int Employee::numEmployees=0;
void DisplayApplicationInformation()
{
	cout<<"Welcome to your Object Oriented Program--Employee Class"
		<<"CIS247C, Week 5 Lab"
		<<"Name: Eugene Young D03152610";
}

void DisplayDivider(string message)
{
	cout<<"\n*************** "+message+" *********************\n";
}

string GetInput( string message)
{
	string mystring;
	cout<<"Please enter your "<<message;
	getline(cin, mystring);
	return mystring;
}

void TerminateApplication()
{
	cout<<"\nThe end of the CIS247C Week4 iLab.\n";
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
int main()
{
	char gender;
	double lifeInsurance;
	int vacation;
	string str;
	Benefit theBenefits;
	DisplayApplicationInformation();
	DisplayDivider("Employee 1");
	Employee genericEmp;
	genericEmp.setFirstName(GetInput("First Name "));
	genericEmp.setLastName(GetInput("Last Name "));
	str=GetInput("Gender ");
	gender=str[0];
	genericEmp.setGender(gender);
	genericEmp.setDependents(atoi( GetInput("Dependents ").c_str()));
	genericEmp.setAnnualSalary(atof(GetInput("Annual Salary ").c_str()));
	theBenefits.setHealthInsurance(GetInput("Health Insurance"));
	theBenefits.setLifeInsurance(atof(GetInput("Life Insuarance").c_str()));
	theBenefits.setVacation(atoi(GetInput("Vocation Days").c_str()));
	genericEmp.setBenefits(theBenefits);
	genericEmp.displayEmployee();
	cout<<"\n--- Number of Employee Object Created ----";
	cout<<"\tNumber of employees: " << Employee::getNumberEmployees();
	DisplayDivider("Employee 2");
	Salaried salariedEmp;
	salariedEmp.setFirstName(GetInput("First Name "));
	salariedEmp.setLastName(GetInput("Last Name "));
	str=GetInput("Gender ");
	gender=str.at(0);
	salariedEmp.setGender(gender);
	salariedEmp.setDependents(atoi( GetInput("Dependents ").c_str()));
	theBenefits.setHealthInsurance(GetInput("Health Insurance"));
	theBenefits.setLifeInsurance(atof(GetInput("Life Insuarance").c_str()));
	theBenefits.setVacation(atoi(GetInput("Vocation Days").c_str()));
	salariedEmp.setBenefits(theBenefits);
	salariedEmp.setManagementLevel(3);
	salariedEmp.displayEmployee();
	cout<<"\n--- Number of Employee Object Created ----";
	cout<<"\tNumber of employees: " << Employee::getNumberEmployees();
	DisplayDivider("Employee 3");
	Hourly hourEmp(genericEmp.getFirstName(), genericEmp.getLastName(), genericEmp.getGender(),
	genericEmp.getDependents(), 40.0, 50.0, genericEmp.getBenefits(), "Full Time");
	hourEmp.setFirstName(GetInput("First Name "));
	hourEmp.setLastName(GetInput("Last Name "));
	str=GetInput("Gender ");
	gender=str.at(0);
	hourEmp.setGender(gender);
	hourEmp.setDependents(atoi( GetInput("Dependents ").c_str()));
	theBenefits.setHealthInsurance(GetInput("Health Insurance"));
	theBenefits.setLifeInsurance(atof(GetInput("Life Insuarance").c_str()));
	theBenefits.setVacation(atoi(GetInput("Vocation Days").c_str()));
	hourEmp.setBenefits(theBenefits);
	hourEmp.displayEmployee();
	cout<<"\n--- Number of Employee Object Created ----";
	cout<<"\tNumber of employees: " << Employee::getNumberEmployees();
	TerminateApplication();
}

I also fixed HOLE FREKAIN LOT of errors, so I reccoment you to read this page's tutorial on C++, ESPECIALLY if statements!
Last edited on
Thanks for all your help viliml
Do you really need a get / set function for each member variable?

1
2
3
theBenefits.setHealthInsurance(GetInput("Health Insurance"));
	theBenefits.setLifeInsurance(atof(GetInput("Life Insuarance").c_str()));
	theBenefits.setVacation(atoi(GetInput("Vocation Days").c_str()));


This could be done with one public member function that sets these private variables - that way you won't need as many get / set functions.

The problem is that all these functions are public, which defeats the idea of having private variables.

So think about how data is to be set and retrieved - if 6 things are usually set at once then make 1 function that does this with 6 args, rather than 6 set function calls. It is probably possible to not have any get / set functions at all - just functions that deal with the data in a real life way.

HTH
Some more thoughts:

If you are settings variables when the object is created then use a constructor to do it. If you want to set them after, use a member function.

What I meant about
functions that deal with the data in a real life way.
:

There would be no point in setting someone's first name but not their last or vice versa. Normally things would be set in groups like: Basic data - Date of Birth, First Name , Last Name, Role etc; then you might have Address info; and Phone info and so on.

So these could be implemented with member functions like BasicInfo, AddressInfo, PhoneInfo, all of which would take multiple args. So now you have 3 functions instead of 12 or 15 say and no set functions, because member functions have access to private or protected member variables.

Generally you need to think about what access variables need from what objects, and only provide what is necessary. The other thing is to think about how various classes interact with each other - this can be really important when you have multiple classes.

I realise that this code might be fairly early in it's development - at the moment it only cater's for 1 employee. Sure you can create more in main, but a better idea would be to have a class that contained a <vector> or <list> or <set> of Employee objects.

Take a look at this post of mine.

http://www.cplusplus.com/forum/beginner/76482/4/#msg412946


The code does an outline of a Bank and bank Accounts program. It is only an outline because I didn't want to give it all away for their assignment.

In this design the CBank class has a vector of CAccount 's , and does all the work, the CAccount class is like a database record, and has minimal functions to put info in and get it out. The getDetails function isn't right because the pointer will not give access to private members. The code is minimal - the CAccount class needs more functions in it - I left it to them to think about. The code does show a FindAcct function which should be used to retrieve a particular account. You could have a FindEmployee function.

All this has given you a bit to think about I think.

Look forward to any questions.
Topic archived. No new replies allowed.