Разработать иерархию классов

Разработать иерархию классов, которая позволит смоделировать работу системы учета сотрудников 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;
>         }
>       }
>     }

Ответы (0 шт):