AlexandrTalchuk

Untitled

Nov 20th, 2020
38
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Разработать связи между следующими классами : класс «Служащий»
  2. //(содержащий ФИО служащего), класс «Работники с почасовой оплатой»
  3. //(оплата за час, часы, отработанные за неделю), класс «Работники со сдельной
  4. //оплатой»(оплата за единицу продукции, число единиц продукции,
  5. //  произведенной за неделю).Все классы должны содержать функции
  6. //  получения и изменения всех полей.Написать программу, позволяющую
  7. //  получать сведения о служащих.Использовать конструктор с параметрами,
  8. //  конструктор без параметров, конструктор копирования.В класс добавить
  9. //  необходимый набор полей и методов(минимум два поля и два метода) на
  10. //  свое усмотрение.
  11. #include <iostream>
  12. #include <string>
  13. #include <fstream>
  14. #include<list>
  15.  
  16. using namespace std;
  17.  
  18. double In(const char* text = "") {
  19.     double res;
  20.     cout << text;
  21.     while (!(cin >> res) || cin.get() != '\n') {
  22.         cout << "Ошибка ввода! Попробуйте еще: " << endl;
  23.         cin.clear();
  24.         while (cin.get() != '\n');
  25.     }
  26.     return res;
  27. }
  28.  
  29. class Employee
  30. {
  31. protected:
  32.     string LastName, FirstName, MiddleName;
  33.     double salary;
  34.     int count;
  35. public:
  36.     Employee() {};
  37.     Employee(string LastName, string FirstName, string MiddleName)
  38.     {
  39.         this->LastName = LastName;
  40.         this->FirstName = FirstName;
  41.         this->LastName = LastName;
  42.     }
  43.  
  44.     Employee(const Employee& other)
  45.     {
  46.         this->LastName = LastName;
  47.         this->FirstName = FirstName;
  48.         this->LastName = LastName;
  49.     }
  50.  
  51.  
  52.     void getName()
  53.     {
  54.         cout << "FullName: " << LastName << FirstName << MiddleName << endl;
  55.     }
  56.  
  57.     void setName()
  58.     {
  59.         cout << "Enter Lastname: ";
  60.         cin >> LastName;
  61.         cout << "Enter FirstName: ";
  62.         cin >> FirstName;
  63.         cout << "Enter MiddleName: ";
  64.         cin >> MiddleName;
  65.     }
  66.     virtual void setWork() {};
  67.     virtual void getWork() {};
  68.  
  69. };
  70.  
  71. class WorkerWithHoursPay : public Employee
  72. {
  73.  
  74. public:
  75.     WorkerWithHoursPay() {};
  76.     WorkerWithHoursPay(string LastName, string FirstName, string MiddleName, double salary, int count) :Employee(LastName, FirstName, MiddleName)
  77.     {
  78.         this->salary = salary;
  79.         this->count = count;
  80.     }
  81.  
  82.     void setWork() override
  83.     {
  84.         cout << "Enter salary per hour: ";
  85.         cin >> salary;
  86.         cout << "Enter a count of hours per week: ";
  87.         cin >> count;
  88.     }
  89.     void getWork() override
  90.     {
  91.         cout << "Salary per one hour: " << salary << endl;;
  92.         cout << "Count of hours per week: " << count << endl;;
  93.     }
  94.  
  95. };
  96.  
  97. class WorkerWithIncentivePay :public Employee
  98. {
  99. public:
  100.     WorkerWithIncentivePay() {};
  101.     WorkerWithIncentivePay(string LastName, string FirstName, string MiddleName, double salary, int count) :Employee(LastName, FirstName, MiddleName)
  102.     {
  103.         this->salary = salary;
  104.         this->count = count;
  105.     }
  106.  
  107.     void setWork() override
  108.     {
  109.         cout << "Enter salary per one unit: ";
  110.         cin >> salary;
  111.         cout << "Enter a count of units per week: ";
  112.         cin >> count;
  113.     }
  114.     void getWork() override
  115.     {
  116.         cout << "Salary per one unit: " << salary << endl;;
  117.         cout << "Count of units per week: " << count << endl;;
  118.     }
  119. };
  120.  
  121. int main()
  122. {
  123.     int choise,size=0,choise2=1, countOfWorkers = 0;
  124.     bool f = false;
  125.     cout << "Enter count of workers" << endl;
  126.     cin >> size;
  127.     Employee* workers=new Employee[size];
  128.     WorkerWithHoursPay whp;
  129.     WorkerWithIncentivePay wip;
  130.    
  131.  
  132.     do
  133.     {
  134.         cout << "1. Enter information about workers" << endl << "2. Show information about workers" << endl << "3. Exit" << endl;
  135.         cin >> choise;
  136.         switch (choise)
  137.         {
  138.         case 1:
  139.         {
  140.             do
  141.             {
  142.                 cout << "1. Worker with hours pay" << endl;
  143.                 cout << "2. Worker with incentive pay" << endl;
  144.                 cout << "3. Exit" << endl;
  145.                 int choice2 = In("what type of worker? ");
  146.                 switch (choice2)
  147.                 {
  148.                 case 1:                
  149.                     whp.setName();
  150.                     whp.setWork();  
  151.                     workers[countOfWorkers] = whp;
  152.                     countOfWorkers++;
  153.                     break;
  154.                 case 2:
  155.                     wip.setName();
  156.                     wip.setWork();
  157.                     workers[countOfWorkers] = wip;
  158.                     countOfWorkers++;
  159.                     break;
  160.                 case 3:
  161.                     f = true;
  162.                 default:
  163.                     cout << "Try again!" << endl;
  164.                     break;
  165.                 }
  166.                
  167.             } while (f = false);
  168.         }
  169.         system("cls");
  170.         break;
  171.         case 2:
  172.             if (countOfWorkers<=size&& countOfWorkers>0)
  173.                 for (int i = 0; i < countOfWorkers; i++)
  174.                 {
  175.                     workers[i].getName();
  176.                     workers[i].getWork();
  177.                 }
  178.             else
  179.                 cout << "Enter workers and after check it" << endl;
  180.             break;
  181.         case 3:
  182.             return 0;
  183.         default:
  184.             cout << "Try again" << endl;
  185.             break;
  186.         }
  187.  
  188.     } while (true);
  189. }
RAW Paste Data