Разработать иерархию классов
Разработать иерархию классов, которая позволит смоделировать работу системы учета сотрудников IT – компании. Есть базовый класс - человек, и 4 дочерних. Логика работы выглядит так, что пользователь может добавлять, удалять работников и изменять их положение в компании. Возникает вопрос - куда (и как) лучше сохранять созданных работников? И как после этого организовать их удаление?
> > #include <iostream>
> #include <cstring>
> const int LEN {80};
> void printHelp();
> void recEmp(char *num);
> class Human
> {
> private:
> char name[LEN]; // employee name
> unsigned long number; // employee number
> double wage;
> int days;
> int years; // of experience
> public:
> Human() : name(), number(0), wage(0), days(0), years(0) {}
> void setdata()
> {
> std::cout << "Enter name: " ; std::cin >> name;
> std::cout << "Enter number: "; std::cin >> number;
> std::cout << "Years of experience: "; std::cin >> years;
> std::cout << "Enter the daily wage: "; std::cin >> wage;
> std::cout << "Enter the number of working days per week: "; std::cin >> days;
>
> }
> void getdata() const
> {
> std::cout << "\nName: " << name;
> std::cout << "\nNumber: " << number;
> std::cout << "\nYears of experience: " << years;
> std::cout << "\nDaily wage: " << wage;
> std::cout << "\nWorking days: " << days;
> }
>
> virtual ~Human() {}
> };
>
> class Intern : public Human
> {
> private:
> char course[LEN];
> public:
> Intern() = default;
> void setdata ()
> {
> Human::setdata();
> std::cout << "Enter course number: "; std::cin >> course;
> }
> void getdata () const
> {
> std::cout << "Intern";
> Human::getdata();
> std::cout << "Course number: " << course;
> }
>
> };
>
> class Programmer : public Human
> {
> private:
> char type[LEN];
> public:
> Programmer() = default;
> void setdata ()
> {
> std::cout << "Type of programmer: "; std::cin >> type;
> Human::setdata();
>
> }
> void getdata() const
> {
> std::cout << "\n" << type << "-programmer";
> Human::getdata();
> }
>
> };
>
> class Tester : public Human
> {
> private:
> char subTest[LEN]; // alpha/beta
> public:
> Tester() = default;
> void setdata ()
> {
> std::cout << "Type of tester: "; std::cin >> subTest;
> Human::setdata();
> }
> void getdata() const
> {
> std::cout << "\n" << subTest << "-tester";
> Human::getdata();
> }
>
> };
>
> class dHead : public Human
> {
> private:
> char subHead[LEN]; // head of what department
> public:
> dHead() = default;
> void setdata ()
> {
> std::cout << "Head of what departament?"; std::cin >> subHead;
> Human::setdata();
> }
> void getdata() const
> {
> std::cout << "\n Department Head of " << subHead;
> Human::getdata();
> }
>
> };
>
> int main(int argc, char **argv)
> {
>
> if (argc == 1)
> {
> std::cout << "Error! Too few arguments." << "\n";
> std::cout << "Enter '--help' to see more information." << "\n";
> exit(1);
> }
> if (argc == 2 && strcmp(argv[1], "--help") == 0)
> {
> printHelp();
> }
> if (argc == 3 && strcmp(argv[1], "-rec") == 0)
> {
> recEmp(argv[2]);
> }
>
> }
>
> void printHelp()
> {
> std::cout << "\t\t\tThat's help information.\n";
> std::cout << "\t\tHere are the functions that this program supports:\n";
> std::cout << "-rec [n] - enter employees, n - number of employees.\n";
>
> }
>
> void recEmp(char *num)
> {
> int m {2};
> int n {0};
> Human* h1[m];
> int i {0};
> int c {0};
> int c1 {0};
> int N = atoi(num);
> while(i < N)
> {
> std::cout << "Which employee to sign up?\n";
> std::cout << "1. Intern.\n";
> std::cout << "2. Programmer.\n";
> std::cout << "3. Tester.\n";
> std::cout << "4. Head of department.\n";
> std::cout << "Select - "; std::cin >> c;
> switch(c)
> {
> case 1: {
> h1[n] = new Intern;
> m++;
> h1[n++] -> setdata();
> break; }
> case 2:{
> h1[n] = new Programmer;
> m++;
> h1[n++] -> setdata();
> break;}
> case 3:{
> h1[n] = new Tester;
> m++;
> h1[n++] -> setdata();
> break;}
> case 4:{
> h1[n] = new dHead;
> m++;
> h1[n++] -> setdata();
> break;}
> }
> i++;
> }
>
> std::cout << "What u need?\n";
> std::cout << "6 = Show all employees.\n";
> std::cout << "7 = Exit.\n";
> std::cout << "Your choise: "; std::cin >> c1;
> switch (c1)
> {
> case 6: {
> for (int j = 0; j < N; j++)
> {
> h1[j] -> getdata();
> std::cout << "\n";
> }
> break;
> }
> case 7: {
> std::cout << "Bye.\n";
> exit(1);
> break;
> }
> }
> }