#include <iostream>
#include <string.h>
#include <math.h>
#include <cstdlib>
#include "CursOOP.h"
using namespace std;
class Conpamy
{
public:
Conpamy(string nmComp_, string name_, string ID_) : nmComp(nmComp_), ID(ID_), name(name_) {}
string GetnmComp()
{
return nmComp;
}
void setnmComp(string nmComp)
{
this->nmComp = nmComp;
}
string Getname()
{
return name;
}
void setname(string new_name)
{
this->name = new_name;
}
string GetID()
{
return ID;
}
void SetID(int new_ID)
{
this->ID = new_ID;
}
void Display_Conpamy()
{
cout << "|" << "-------------------------------------" << "|" << '\n';
cout << "|" << "Name of the Company: " << nmComp << " | " << '\n';
cout << "|" << "-------------------------------------" << "|" << '\n';
}
void reg()
{
cout << "|" << "-----------------------------------" << "|" << '\n';
cout << "Введите своё имя: "; cin >> name;
cout << '\n';
while (name.size() == 0 or cin.fail())
{
if (cin.fail()) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
throw invalid_argument("Invalid field values.");
}
else {
cout << "Name size must be > 0" << endl;
cout << "Enter name" << endl;
}
}
cout << "Придумайте ID: "; cin >> ID; cout << '\n';
cout << "Введите свою должность: "; string dolj; cin >> dolj; cout << '\n';
cout << "|" << "-----------------------------------" << "|";
}
void prefer()
{
cout << "|" << "-----------------------------------" << "|" << '\n';
cout << "|" << "Введите названия комании: "; cin >> nmComp;
cout << "|" << "-----------------------------------" << "|" << '\n';
}
protected:
string nmComp;
string ID;
string name;
};
class Admin : public Conpamy
{
public:
Admin(const string& nmConp_, const string& ID_, const string& role_, string& name_) : Conpamy(nmConp_, name_, ID_), role(role_) {}
void AdminMenu() {
cout << "|" << "-----------------------------------" << "|" << '\n';
cout << "|" << "1. Зарегистрировать информацию об Администраторе" << " |" << '\n';
cout << "|" << "2. Вывести информацию об Администраторе" << " |" << '\n';
cout << "|" << "3. Назначить действия" << " |" << '\n';
cout << "|" << "-----------------------------------" << "|" << '\n';
int choice;
cin >> choice;
switch (choice) {
case 1: {
input_admin();
break;
}
case 2: {
info3();
break;
}
case 3: {
ManegerAdmin();
break;
}
default:
cout << "Вы ввели некорректное значение" << '\n';
break;
}
}
void input_admin()
{
cout << "|" << "-------------------------------------" << "|" << '\n';
cout << "|" << "Введите своё имя: "; cin >> name;
cout << "|" << '\n';
cout << "|" << "-------------------------------------" << "|" << '\n';
cout << "|" << "-------------------------------------" << "|" << '\n';
cout << "Введите ID: ";
cout << "|" << '\n';
cout << "|" << "-------------------------------------" << "|" << '\n';
}
void info3()
{
cout << "|" << "------------------------------------" << "|" << '\n';
cout << "|" << "Ниже будут предоставлены ваши данные" << "|" << '\n';
cout << "|" << "Данные: " << name << " ID: " << ID << " |" << '\n';
cout << "|" << "------------------------------------" << "|" << '\n';
}
void ManegerAdmin()
{
cout << "|" << "--------------------------------------------------------------" << "|" << '\n';
cout << "|" << "Сотрудник Администрации " << name << " Управление ролями " << role << "|" << '\n';
cout << "|" << "--------------------------------------------------------------" << "|" << '\n';
}
protected:
string role;
};
class HR : public Admin
{
public:
HR(string nmComp_, string ID_, string role_, string name_, string spez_) : Admin(nmComp_, ID_, role_, name_), spez(spez_) {}
void HRMenu() {
cout << "|" << "-----------------------------------" << "|" << '\n';
cout << "|" << "1. Зарегистрировать информацию о HR" << " |" << '\n';
cout << "|" << "2. Вывести информацию о HR" << " |" << '\n';
cout << "|" << "3. Назначить должность" << " |" << '\n';
cout << "|" << "-----------------------------------" << "|" << '\n';
int choice;
cin >> choice;
switch (choice) {
case 1: {
Input_HR();
break;
}
case 2: {
info2();
break;
}
case 3: {
Shr();
break;
}
default:
cout << "Вы ввели некорректное значение" << '\n';
break;
}
}
void Input_HR()
{
cout << "|" << "----------------------------------" << "|" << '\n';
cout << "|" << "Введите своё имя: "; setname(name); cout << "|" << '\n';
while (name.size() == 0 or cin.fail())
{
if (cin.fail()) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
throw invalid_argument("Invalid field values.");
}
else {
cout << "Name size must be > 0" << endl;
cout << "Enter Admin name" << endl;
}
cin >> name;
}
cout << "|" << "-----------------------------------" << "|" << '\n';
cout << "|" << "-----------------------------------" << "|" << '\n';
cout << "Введите ID: "; cin >> ID; cout << "|" << '\n';
cout << "|" << "-----------------------------------" << "|" << '\n';
}
void info2()
{
cout << "|" << "----------------------------------" << "|" << '\n';
cout << "|" << "Ниже будут предоставлены ваши данные." << "|" << '\n';
cout << "|" << "Данные:" << name << " " << ID << "|" << '\n';
while (name.size() == 0 or cin.fail())
{
if (cin.fail()) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
throw invalid_argument("Invalid field values.");
}
else {
cout << "Name size must be > 0" << endl;
cout << "Enter HR name" << endl;
}
cin >> name;
}
cout << "|" << "-----------------------------------" << "|" << '\n';
}
void Shr()
{
cout << "|" << "---------------------------------------------------------------------" << "|" << '\n';
cout << "|" << "Сотрудник из отдела кадров " << name << " нанимает новых сотрудников " << spez << "|" << '\n';
cout << "|" << "---------------------------------------------------------------------" << "|" << '\n';
}
protected:
string spez;
};
class work
{
void som()
{
cout << "|" << "-----------------------------" << "|" << '\n';
cout << "|" << "Level: " << "|" << '\n';
cout << "|" << "-----------------------------" << "" << '\n';
}
};
class Worker : public work, public Admin, public Engenir, public Conpamy
{
public:
Worker(string& nmComp_, string& name_, string& ID_, string task_, string role_, string spez_) : work(), Admin(nmComp_, ID_, role_, name_), Engenir(nmComp_, name_, ID_, spez_), Conpamy(nmComp_, name_, ID_), task(task_) {}
void WorkerMenu() {
cout << "|" << "-----------------------------------" << "|" << '\n';
cout << "|" << "1. Зарегистрировать информацию о Рабочем" << " |" << '\n';
cout << "|" << "2. Вывести информацию о Рабочем" << " |" << '\n';
cout << "|" << "3. Распределить обязанности" << " |" << '\n';
cout << "|" << "-----------------------------------" << "|" << '\n';
int choice;
cin >> choice;
switch (choice) {
case 1: {
Input_Worker();
break;
}
case 2: {
info1();
break;
}
case 3: {
PerfTask();
break;
}
default:
cout << "Вы ввели некорректное значение" << '\n';
break;
}
}
void Input_Worker()
{
cout << "|" << "-----------------------------------" << "|" << '\n';
cout << "|" << "Введите своё имя: ";
cin >> name;
cout << "|" << '\n';
while (name.size() == 0 or cin.fail())
{
if (cin.fail())
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
throw invalid_argument("Invalid field values.");
}
else
{
cout << "Name size must be > 0" << endl;
cout << "Enter Worker name" << endl;
}
}
cin >> Conpamy::ID;
cout << "|" << "-----------------------------------" << "|" << '\n';
}
void info1()
{
cout << "|" << "-----------------------------------" << "|" << '\n';
cout << "|" << "Ниже будут предоставлены ваши данные." << "|" << '\n';
cout << "|" << "Данные:" << name << " " << Conpamy::ID << "|" << '\n';
cout << "|" << "-----------------------------------" << "|" << '\n';
}
void PerfTask()
{
cout << "|" << "----------------------------" << "|" << '\n';
cout << "|" << "Рабочий: " << Admin::name << " выполняет задачу: " << task << "|" << '\n';
cout << "|" << "-----------------------------" << "|" << '\n';
}
protected:
string task;
string name;
};
class Engenir : public Conpamy
{
public:
Engenir(string nmComp_, string name_, string ID_, string speze_) : Conpamy(nmComp_, name_, ID_), spez1(speze_) {}
void EngenirMenu() {
cout << "|" << "-----------------------------------" << "|" << '\n';
cout << "|" << "1. Зарегистрировать информацию об Инженере" << " |" << '\n';
cout << "|" << "2. Вывести информацию об Инженере" << " |" << '\n';
cout << "|" << "3. Вывести информацию о работе над проектом" << " |" << '\n';
cout << "|" << "-----------------------------------" << "|" << '\n';
int choice;
cin >> choice;
switch (choice) {
case 1: {
Input_engenir();
break;
}
case 2: {
info();
break;
}
case 3: {
WorkOnProject();
break;
}
default:
cout << "Вы ввели некорректное значение" << '\n';
break;
}
}
void Input_engenir()
{
cout << "|" << "-----------------------------------" << "|" << '\n';
cout << "| " << "Введите своё имя: "; cin >> name; cout << "|"; cout << '\n';
cout << "|" << "------------------------------------" << "|" << '\n';
cout << "|" << "------------------------------------" << "|" << '\n';
cout << "Введите ID: "; cin >> ID; cout << '\n';
cout << "|" << "------------------------------------" << "|" << '\n';
}
void info()
{
cout << "|" << "----------------------------------" << "|" << '\n';
cout << "|" << "Ниже будут предоставлены ваши данные." << "|" << '\n';
cout << "|" << "Данные:" << name << " " << ID << "|" << '\n';
cout << "|" << "-----------------------------------" << "|" << '\n';
}
void WorkOnProject()
{
cout << "|" << "---------------------------------------------------------------" << "|" << '\n';
cout << "|" << "Инженер " << name << " работает над проектом в области " << spez1 << " |" << '\n';
cout << "|" << "---------------------------------------------------------------" << "|" << '\n';
}
void GoWork()
{
cout << "|" << "---------------------------------------------------------------" << "|" << '\n';
cout << "|" << "Инженер " << name << "время работы с 8:00-19:00" << "|" << '\n';
cout << "|" << "---------------------------------------------------------------" << "|" << '\n';
}
protected:
string spez1;
};
int main()
{
string new_name;
string h;
string dol;
string nmComp;
string name;
string role, spez_;
int che;
HR hr(nmComp, "04", "HR manager", name, "Reques new members in the company");
Admin admin(nmComp, "03", "Adminisrator", name);
Worker worker(nmComp, 'John', "02", "Creating project", role, spez_);
Engenir engenir(nmComp, name, "01", "To reque project");
Conpamy comp(nmComp, "Som", "0000");
comp.prefer();
do {
cout << "|" << "-----------------------------------" << "|" << '\n';
cout << "|" << "Выберете, что вас интересует." << " |" << '\n';
cout << "|" << "1. Регистрация пользователя" << " |" << '\n';
cout << "|" << "2. Вывод информации Администратора." << "|" << '\n';
cout << "|" << "3. Вывод информации Инженера" << " |" << '\n';
cout << "|" << "4. Вывод информации Рабочих" << " |" << '\n';
cout << "|" << "5. Вывод информации Hr" << " |" << '\n';
cout << "|" << "6. Завершение программы" << " |" << '\n';
cout << "|" << "-----------------------------------" << "|" << '\n';
cin >> h;
che = stoi(h);
if (h.size() == 1 and h >= "1" and h <= "9")
{
switch (stoi(h)) {
case 1:
{
comp.setnmComp("Ques");
comp.setname("John");
comp.SetID(123);
comp.reg();
break;
}
case 2:
{
admin.AdminMenu();
break;
}
case 3:
{
engenir.EngenirMenu();
break;
}
case 4:
{
worker.WorkerMenu();
break;
}
case 5:
{
hr.HRMenu();
break;
}
case 6:
{
cout << "|" << "--------------------------" << "|" << '\n';
cout << "|" << "Работы программы завершена" << "|" << '\n';
cout << "|" << "--------------------------" << "|" << '\n';
return 0;
}
default: cout << "Вы ввели некорректное значение" << '\n';
break;
}`введите сюда код`
}
} while (true);
}