Baxram97

Untitled

Mar 1st, 2022 (edited)
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.85 KB | None | 0 0
  1. #include <iostream>
  2. char *head;
  3.  
  4. using namespace std;
  5. struct client {
  6.     char position[128];
  7.     int prior;
  8.     int date;
  9.     client *next, *prev;
  10. };
  11.  
  12. class printer {
  13.     client *head{};
  14.     client *tail{};
  15.     client *headStat{};
  16.     client *tailStat{};
  17. public:
  18.     printer() {
  19.         head = nullptr;
  20.         tail = nullptr;
  21.         headStat = nullptr;
  22.         tailStat = nullptr;
  23.     }
  24.  
  25.     printer(const printer &ob) {
  26.  
  27.     }
  28.  
  29.     void addQueque(char *s, int *prior, int time);
  30.  
  31.     void stat(char *s, int prior, int time);
  32.  
  33.     void showQueque();
  34.  
  35.     void showStat();
  36. };
  37.  
  38. void printer::addQueque(char *s, int *prior, int time) {
  39.     client tail{}, head{};
  40.     auto *tmp = new client;
  41.     strcpy(tmp->position, s);
  42.     tmp->prior = prior;
  43.     tmp->date = time;
  44.     tmp->next = nullptr;
  45.     if (head != nullptr) {
  46.         tmp->prev = tail;
  47.         tail->next = tmp;
  48.         tail = tmp;
  49.     } else {
  50.         tmp->prev = nullptr;
  51.         head = tmp;
  52.         tail = tmp;
  53.     }
  54. }
  55.  
  56. void printer::showQueque() {
  57.     client *tmp = head;
  58.     while (tmp) {
  59.         cout << " Должность : " << tmp->position << endl;
  60.         cout << " Приоритет : " << tmp->prior << endl;
  61.         cout << " Время печати(мин) : " << tmp->date << endl;
  62.         tmp = tmp->next;
  63.         cout << endl;
  64.     }
  65. }
  66.  
  67. void printer::stat(char *s, int prior, int time) {
  68.     auto *tmp = new client;
  69.     client *temp = headStat;
  70.     bool flag = false;
  71.     while (temp) {
  72.         if (strcmp(temp->position, s) == 0) {
  73.             flag = true;
  74.             temp->date += time;
  75.             break;
  76.         }
  77.         temp = temp->next;
  78.     }
  79.     if (!flag) {
  80.         strcpy(tmp->position, s);
  81.         tmp->prior = prior;
  82.         tmp->date = time;
  83.         tmp->next = nullptr;
  84.         if (headStat != nullptr) {
  85.             tmp->prev = tailStat;
  86.             tailStat->next = tmp;
  87.             tailStat = tmp;
  88.         } else {
  89.             tmp->prev = nullptr;
  90.             headStat = tmp;
  91.             tailStat = tmp;
  92.         }
  93.     }
  94. }
  95.  
  96. void printer::showStat() {
  97.     client *tmp = headStat;
  98.     while (tmp) {
  99.         cout << " Должность : " << tmp->position << endl;
  100.         cout << " Время печати(мин) : " << tmp->date << endl;
  101.         tmp = tmp->next;
  102.         cout << endl;
  103.     }
  104. }
  105.  
  106. int main() {
  107.     setlocale(0, "Rus");
  108.     int menu = 0;
  109.     char name[128];
  110.     int prior;
  111.     int date;
  112.     printer ob;
  113.     do {
  114.         system("clear"); // cls
  115.         cout << " 1 - Добавить клиента \n";
  116.         cout << " 2 - Показать всех клиентов \n";
  117.         cout << " 3 - Статистика печати \n";
  118.         cout << " 0 - Выход \n";
  119.         cout << " Ваш выбор : ";
  120.         cin >> menu;
  121.         cin.ignore();
  122.         switch (menu) {
  123.             case 1:
  124.                 cout << " Введите должность клиента ( директор, менеджер, охраник) : ";
  125.                 cin >> name;
  126.                 cout << " Введите приоритет ( 1, 2 ,3) :";
  127.                 cin >> prior;
  128.                 cout << " Введите время печати ( в минутах ) : ";
  129.                 cin >> date;
  130.                 ob.addQueque(name, prior, date);
  131.                 ob.stat(name, prior, date);
  132.                 break;
  133.             case 2:
  134.                 system("clear"); // cls
  135.                 cout << " Все клиенты:  \n";
  136.                 ob.showQueque();
  137.                 break;
  138.             case 3:
  139.                 system("clear"); // cls
  140.                 cout << " Статистика: \n";
  141.                 ob.showStat();
  142.                 break;
  143.             case 0:
  144.                 cout << " До свидания ! \n";
  145.                 break;
  146.         }
  147.  
  148.     } while (menu != 0);
  149. }
  150.  
Add Comment
Please, Sign In to add comment