Hi,
I am writing a C++ progrma using th following classes
class CHRAdministrator
calss Cemployee
calss CManager
class CScientist
class CForeman
class CLaborer
I am using these classes to create a Human Resource database of employees. Four types of employees are available: Manager; Scientist; Foreman; Laborer.
I need teh program to create one CHRAdministrator object that will contain the main menu plus any other submenus that may be required. The four employee type classes need to be derived from CEmployee. CEmployee will be an abstract class. The program also needs to use an array of pointers to CEmployee (the array is a member of CHRadministrator) each pointer will be used to refer to a dynamically created object of one of the employee-derived classes. Additionaly, the employee names and the employee title will be member variables of the abstract class CEmployee and will be dynamically allocated upon construction of an employee-derived object. Upon creating a new employee-derived object, the program will invoke the non-default constructor of both the base class (CEmployee) and the derived class. All program input and output should be performed from the CHRAdministrator object. Between program runs it should save the program data to a file and retrive that data on program startup.
I also need to add the following main menu in the program.
1) Add a New Employee
2)Delete an Employee
3)Show listing of all employees
4)Show listing of managers with details
5)Show listing of scientist with details
6)Show listing of foremen with details
7)Show listing of laboreres with details
8)Show number of employees
So far have have worked on
For Forman.cpp
Code:// Foreman.cpp: implementation of the Foreman class. // ////////////////////////////////////////////////////////////////////// #include "Foreman.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// Foreman::Foreman(char* fname, char* mname, char* lname, int ID, char* title) : Employee(fname, mname, lname, ID, title) { } Foreman::~Foreman() { } double Foreman::GetSalaryWR() { double salary = 0; salary = 55; return salary; } int Foreman::GetSpecialData() { return 0; }
For Main.cpp I have this:
For Employee.cpp I have thisCode:#include <iostream> #include "HRAdministrator.h" using namespace std; void main() { HRAdministrator Me; Me.Administer(); }
Code:// Employee.cpp: implementation of the Employee class. // ////////////////////////////////////////////////////////////////////// #include "Employee.h" #include "HRAdministrator.h" #include <iostream> #include <fstream> using namespace std; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// //Employee::Employee() //{ //Employee::GetName(); //} Employee::~Employee() { } Employee::Employee(char* fname, char* mname, char* lname, int ID, char* title) { //Creating memory //Must do: Delete memory in destructor m_fname = new char[50]; m_mname = new char[50]; m_lname = new char[50]; m_title = new char[50]; strcpy(m_fname, fname); strcpy(m_mname, mname); strcpy(m_lname, lname); strcpy(m_title, title); ID = m_ID; cout << m_fname << '\n'; ofstream fout("A:\\CurrentEmployees.txt", ios::app); if (!fout) { cout << "Can not open file."; exit(1); } fout << "Here I am again & again" << '\n'; fout.close(); } double Employee::GetSalaryWR() { return 0; } int Employee::GetSpecialData() { return 0; } char* Employee::GetName() { //m_lname = "Now I am here"; //cout << m_lname; return 0; } char* Employee::GetTitle() { return 0; }
For Laborer.cpp I have this
For Manager.cpp I have this:Code:// Laborer.cpp: implementation of the Laborer class. // ////////////////////////////////////////////////////////////////////// #include "Laborer.h" #include <iostream> using namespace std; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// Laborer::Laborer(char* fname, char* mname, char* lname, int ID, char* title): Employee(fname, mname, lname, ID, title) { } Laborer::~Laborer() { } double Laborer::GetSalaryWR() { double salary; double wage = 10; double hours = 40; salary = wage * hours; return salary; } int Laborer::GetSpecialData() { return 0; }
For Scientist I have this:Code:// Manager.cpp: implementation of the Manager class. // ////////////////////////////////////////////////////////////////////// #include "Manager.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// Manager::Manager(char* fname, char* mname, char* lname, int ID, char* title) : Employee(fname, mname, lname, ID, title) { } Manager::~Manager() { } double Manager::GetSalary() { double salary = 0; salary =100; return salary; } int Manager::GetSpecialData() { return 0; }
Code:// Scientist.cpp: implementation of the Scientist class. // ////////////////////////////////////////////////////////////////////// #include "Scientist.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// Scientist::Scientist(char* fname, char* mname, char* lname, int ID, char* title) : Employee(fname, mname, lname, ID, title) { } Scientist::~Scientist() { } double Scientist::GetSalary() { double salary = 0; salary = 200; return salary; } int Scientist::GetSpecialData() { return 0; }
For HRAdministrator.cpp I have this:
Code:// HRAdministrator.cpp: implementation of the HRAdministrator class. // ////////////////////////////////////////////////////////////////////// #include "HRAdministrator.h" #include "Employee.h" #include "Laborer.h" #include <iostream> #include <fstream> using namespace std; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// HRAdministrator::HRAdministrator() { } HRAdministrator::~HRAdministrator() { } void HRAdministrator::Menu() { Employee *emp = 0; int choice; system("cls"); //Main Menu cout << "Please select an option:\n"<< "<1> - Add a New Employee\n"<< "<2> - Delete an Employee\n"<< "<3> - Show Listing of all Employees\n"<< "<4> - Show Listing of Managers with Details\n"<< "<5> - Show Listing of Scientists with Details\n"<< "<6> - Show Listing of Foremen with Details\n"<< "<7> - Show Listing of Laborers with Details\n"<< "<8> - Show number of Employees\n"<< "<9> - Exit\n"; cin >> choice; while (choice != 0) { int num_employees = 0; //Employee *emp = new Employee(); switch (choice) { case 1: //Add Employee system("cls"); AddEmployee(); system ("pause"); break; case 2: //Delete Employee system("cls"); DeleteEmployee(); system ("pause"); break; case 3: //Show All Employees system("cls"); ShowAllEmployees(); system ("pause"); break; case 4: //Show Managers system("cls"); ShowManagers(); system ("pause"); break; case 5: //Show Scientists system("cls"); ShowScientists(); system ("pause"); break; case 6: //Show Foremen system("cls"); ShowForemen(); system ("pause"); break; case 7: //Show Laborers system("cls"); //emp = new Laborer(emp); cout<<emp->GetSalaryWR(); system ("pause"); break; case 8: //Show Number Of Employees system("cls"); ShowNumberOfEmployees(); system ("pause"); break; case 9: //Quit Program system("cls"); cout<<"Have A Good Day"<<"\n\n"; exit(-1); break; default: //Menu Choice Error system("cls"); cout << "INVALID ENTRY\n"; system ("pause"); Menu(); break; } Menu(); cin >> choice; } } void HRAdministrator::AddEmployee() { char fname[50]; char mname[50]; char lname[50]; int ID; char title[50]; cout << "Enter Employee's First Name: "; cin >> fname; cout << '\n' << "Enter Employee's Middle Name: "; cin >> mname; cout << '\n' << "Enter Employee's Last Name: "; cin >> lname; cout << '\n' << "Enter Employee's ID Number: "; cin >> ID; cout << '\n' << "Enter Employee's Title: "; cin >> title; cout << "\n\n" << fname << " " << mname << " " << lname << " " << ID << " " << title << "\n\n"; emp = new Employee(fname, mname, lname, ID, title); } void HRAdministrator::DeleteEmployee() { } void HRAdministrator::ShowAllEmployees() { //Employee *q; //q = new Employee(); //cout << q->GetName() << "\n\n"; } void HRAdministrator::ShowManagers() { } void HRAdministrator::ShowScientists() { } void HRAdministrator::ShowForemen() { } void HRAdministrator::ShowLaborers() { //Laborer *lab; //lab = new Laborer(); //cout << lab; } void HRAdministrator::ShowNumberOfEmployees() { } void HRAdministrator::Administer() { ifstream fin("A:\\CurrentEmployees.txt"); if (!fin) { cout << "Can not open file."; exit(1); } fin.close(); Menu(); }
This program is not functioning like it is suposed to. Please any help would be appreciated alot , if need to see the .h file let me know




Reply With Quote