#include <iostream.h>

// Object Oriented C++ Lab 1 Program by Jonathan LaZor

class EmpRec {
	unsigned int	idnumber;
	char			lastname[20];
	char			firstname[20];
	unsigned int	age;
	double			salary;
public:
	void get(); // get id number, last name, first name, age and salary
	void print(); // display d number, last name, first name, age and salary
};

class Database {
	EmpRec			emp_list[5];
	unsigned int	size;
public:
	Database(); //Constructor
	void insert(); //Insert a record
	void print(); //display all the records
	void clear(); //reassign the size variable to zero
	char do_menu(); //display a menu
};


//////////

void EmpRec::get() {
	cout << "Enter employee ID:";
	cin >> idnumber;
	cout << "Enter employee first name:";
	cin >> firstname;
	cout << "Enter employee last name:";
	cin >> lastname;
	cout << "Enter employee age:";
	cin >> age;
	cout << "Enter employee salary:";
	cin >> salary;
}

void EmpRec::print() {
	cout << "Employee #" << idnumber
		<< " data:\nFirst Name: " << firstname
		<< "\nLast Name:" << lastname
		<< "\nAge:" << age
		<< "\nSalary:" << salary << "\n\n";
}

Database::Database() {
	size=0;
}

void Database::insert() {
	char c = 'y';

	while(c == 'y' || c == 'Y') {
		if(size>4) {cout << "Database is full.\n\n"; return;}
		cout << "Adding employee:\n\n";
		emp_list[size++].get();
		cout << "\nEnter another? (Y/N)\n";
		cin >> c;
		cout << "\n";
	}
}

void Database::print() {
	if(size==0) {cout << "Database is empty.\n\n"; return;}
	cout << "Printing database:\n\n";
	for(unsigned int i=0; i<size; i++) {
		emp_list[i].print();
	}
}

void Database::clear() {
	cout << "Database cleared.\n\n";
	size=0;
}

char Database::do_menu() {
	char menu;

	cout << "EMPLOYEE RECORD SYSTEM\n\n\tI\tInsert\n\tP\tPrint\n\tC\tClear\n\tQ\tQuit\n\n";
	cin >> menu;
	cout << "\n";

	return menu;
}

int main() {
	Database db;
	char c;
	unsigned int q=0;

	while(!q) {
		c = db.do_menu();
		switch(c) {
			case 'i':
			case 'I':
				db.insert(); break;
			case 'p':
			case 'P':
				db.print(); break;
			case 'c':
			case 'C':
				db.clear(); break;
			case 'q':
			case 'Q':
				q=1; break;
			default:
				cout << "Invalid selection.\n\n";
		}
	}

	return 1;
}