Advertisement
topkedi

Untitled

Oct 28th, 2023
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.37 KB | None | 0 0
  1. #include <windows.h>
  2. #include <algorithm>
  3. #include <fstream>
  4. #include <iostream>
  5. #include <utility>
  6. #include <vector>
  7.  
  8. class Worker {
  9. public:
  10.     static int NextID;
  11.     int ID;
  12.     std::string Surname;
  13.     long long PhoneNumber;
  14.     int Salary;
  15.     std::string Profession;
  16.  
  17.     Worker(
  18.         std::string Surname,
  19.         long long PhoneNumber,
  20.         int Salary,
  21.         std::string Profession
  22.     )
  23.         : ID(NextID++),
  24.           Surname(std::move(Surname)),
  25.           PhoneNumber(PhoneNumber),
  26.           Salary(Salary),
  27.           Profession(std::move(Profession)) {
  28.     }
  29. };
  30.  
  31. int Worker::NextID = 1;
  32.  
  33. void Add(std::vector<Worker> &workers) {
  34.     std::string Surname;
  35.     long long PhoneNumber;
  36.     int Salary;
  37.     std::string Profession;
  38.     std::cout << "Введите фамилию сотрудника: ";
  39.     std::cin >> Surname;
  40.     std::cout << "Введите номер телефона сотрудника: ";
  41.     std::cin >> PhoneNumber;
  42.     std::cout << "Введите з/п сотрудника: ";
  43.     std::cin >> Salary;
  44.     std::cout << "Введите профессию сотрудника: ";
  45.     std::cin >> Profession;
  46.     workers.emplace_back(Surname, PhoneNumber, Salary, Profession);
  47.     std::cout << "Информация о новом сотруднике успешно добавлена."
  48.               << std::endl;
  49. }
  50.  
  51. void Display(std::vector<Worker> &workers) {
  52.     std::cout << "Список всех сотрудников:" << std::endl;
  53.     if (workers.end() - workers.begin() == 0)
  54.         std::cout << "База данных пуста." << std::endl;
  55.     else {
  56.         for (auto &it : workers) {
  57.             std::cout << "ID: " << it.ID << " Фамилия: " << it.Surname
  58.                       << " Телефон: " << it.PhoneNumber
  59.                       << " Зарплата: " << it.Salary
  60.                       << " Профессия: " << it.Profession << std::endl;
  61.         }
  62.     }
  63. }
  64.  
  65. /*void Print(std::vector<Worker> &workers) {
  66.     for (auto &it : workers) {
  67.         std::cout << "ID: " << it.ID << ", Фамилия: " << it.Surname
  68.                   << ", Номер телефона: " << it.PhoneNumber
  69.                   << ", Зарплата: " << it.Salary
  70.                   << ", Профессия: " << it.Profession << std::endl;
  71.     }
  72. }*/
  73.  
  74. void Find(std::vector<Worker> &workers) {
  75.     std::string setting, value;
  76.     std::cout << "Выберите параметр поиска (ID, Фамилия, Номер телефона, "
  77.                  "Зарплата, Профессия): ";
  78.     std::cin >> setting;
  79.     std::cout << "Введите значение: ";
  80.     std::cin >> value;
  81.     bool flag = false;
  82.     for (auto &it : workers) {
  83.         /*std::cout << it.ID << " "<< it.Surname << " "<< it.PhoneNumber << "
  84.         "<< it.Profession << " "<< it.Salary << " " << std::endl; std::cout <<
  85.         setting << std::endl; std::cout << value << std::endl;*/
  86.         if (setting == "ID" && std::to_string(it.ID) == value) {
  87.             flag = true;
  88.         } else if (setting == "Фамилия" && it.Surname == value) {
  89.             flag = true;
  90.         } else if (setting == "Номер телефона" && std::to_string(it.PhoneNumber) == value) {
  91.             flag = true;
  92.         } else if (setting == "Зарплата" && std::to_string(it.Salary) == value) {
  93.             flag = true;
  94.         } else if (setting == "Профессия" && it.Profession == value) {
  95.             flag = true;
  96.         }
  97.     }
  98.     if (!flag) std::cout << "К сожалению, данная запись отсутствует." << std::endl;
  99.     //я пока чет не понял как написать функцию принта, поэтому судя по тому, что флаг не меняется, эта параша не воркает
  100. }
  101.  
  102. void FindDel(std::vector<Worker> &workers, int id) {
  103.     bool flag = false;
  104.     for (int i = 0; i < workers.size(); ++i) {
  105.         if (i == id - 1) {
  106.             flag = true;
  107.             workers.erase(workers.begin() + i);
  108.             std::cout << "Запись №" << i + 1 << " удалена из базы данных."
  109.                       << std::endl;
  110.             for (int j = i; j < workers.size(); ++j) {
  111.                 workers[j].ID -= 1;
  112.             }
  113.             break;
  114.         }
  115.     }
  116.     if (!flag) {
  117.         std::cout << "Запись с данным ID не найдена." << std::endl;
  118.     }
  119. }
  120.  
  121. int main() {
  122.     SetConsoleOutputCP(CP_UTF8);
  123.     std::vector<Worker> workers;
  124.     std::ofstream out;
  125.     out.open("database.txt");
  126.     out << "Список всех сотрудников:" << std::endl;
  127.     out.close();
  128.     int Num = 0;
  129.     while (Num != -1) {
  130.         std::cout << "1)Добавить информацию о новом сотруднике." << std::endl;
  131.         std::cout << "2)Вывести базу данных в консоль." << std::endl;
  132.         std::cout << "3)Вывести базу данных в файле." << std::endl;
  133.         std::cout << "4)Найти сотрудника по определенному параметру."
  134.                   << std::endl;
  135.         std::cout << "5) Удалить информацию о сотруднике." << std::endl;
  136.         std::cout << "Для завершения работы введите '-1'." << std::endl;
  137.         std::cout << "Введите номер опции: ";
  138.         std::cin >> Num;
  139.  
  140.         if (Num == 1) {
  141.             Add(workers);
  142.             std::cout << std::endl;
  143.         } else if (Num == 2) {
  144.             Display(workers);
  145.             std::cout << std::endl;
  146.         } else if (Num == 3) {
  147.             // DisplayFile(workers);
  148.             std::cout << std::endl;
  149.         } else if (Num == 4) {
  150.             Find(workers);
  151.             std::cout << std::endl;
  152.         } else if (Num == 5) {
  153.             std::cout << "Введите ID сотрудника: ";
  154.             int id;
  155.             std::cin >> id;
  156.             FindDel(workers, id);
  157.             std::cout << std::endl;
  158.         } else if (Num == -1) {
  159.             std::cout << "Всего наилучшего!" << std::endl;
  160.         } else
  161.             std::cout << "Введена неправильная опция. Попробуйте повторно."
  162.                       << std::endl
  163.                       << std::endl;
  164.     }
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement