Advertisement
topkedi

Untitled

Oct 28th, 2023
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.00 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 Find(std::vector<Worker> &workers) {
  66.     std::string setting, value;
  67.     std::cout << "Выберите параметр поиска (ID, Фамилия, Номер телефона, "
  68.                  "Зарплата, Профессия): ";
  69.     std::cin >> setting;
  70.     std::cout << "Введите значение: ";
  71.     std::cin >> value;
  72.     bool flag = false;
  73.     for (auto &it : workers) {
  74.         /*std::cout << it.ID << " "<< it.Surname << " "<< it.PhoneNumber << "
  75.         "<< it.Profession << " "<< it.Salary << " " << std::endl; std::cout <<
  76.         setting << std::endl; std::cout << value << std::endl;*/
  77.         if ((setting == "ID" && std::to_string(it.ID) == value) ||
  78.             (setting == "Фамилия" && it.Surname == value) ||
  79.             (setting == "Номер телефона" &&
  80.              std::to_string(it.PhoneNumber) == value) ||
  81.             (setting == "Зарплата" && std::to_string(it.Salary) == value) ||
  82.             (setting == "Профессия" && it.Profession == value)) {
  83.             std::cout << "ID: " << it.ID << ", Фамилия: " << it.Surname
  84.                       << ", Номер телефона: " << it.PhoneNumber
  85.                       << ", Зарплата: " << it.Salary
  86.                       << ", Профессия: " << it.Profession << std::endl;
  87.             flag = true;
  88.         }
  89.     }
  90.     if (!flag) {
  91.         std::cout << "К сожалению, данная запись отсутствует." << std::endl;
  92.     }
  93. }
  94.  
  95. void FindDel(std::vector<Worker> &workers, int id) {
  96.     bool flag = false;
  97.     for (int i = 0; i < workers.size(); ++i) {
  98.         if (i == id - 1) {
  99.             flag = true;
  100.             workers.erase(workers.begin() + i);
  101.             std::cout << "Запись №" << i + 1 << " удалена из базы данных."
  102.                       << std::endl;
  103.             for (int j = i; j < workers.size(); ++j) {
  104.                 workers[j].ID -= 1;
  105.             }
  106.             break;
  107.         }
  108.     }
  109.     if (!flag) {
  110.         std::cout << "Запись с данным ID не найдена." << std::endl;
  111.     }
  112. }
  113.  
  114. int main() {
  115.     SetConsoleOutputCP(CP_UTF8);
  116.     std::vector<Worker> workers;
  117.     std::ofstream out;
  118.     out.open("database.txt");
  119.     out << "Список всех сотрудников:" << std::endl;
  120.     out.close();
  121.     int Num = 0;
  122.     while (Num != -1) {
  123.         std::cout << "1)Добавить информацию о новом сотруднике." << std::endl;
  124.         std::cout << "2)Вывести базу данных в консоль." << std::endl;
  125.         std::cout << "3)Вывести базу данных в файле." << std::endl;
  126.         std::cout << "4)Найти сотрудника по определенному параметру."
  127.                   << std::endl;
  128.         std::cout << "5) Удалить информацию о сотруднике." << std::endl;
  129.         std::cout << "Для завершения работы введите '-1'." << std::endl;
  130.         std::cout << "Введите номер опции: ";
  131.         std::cin >> Num;
  132.  
  133.         if (Num == 1) {
  134.             Add(workers);
  135.             std::cout << std::endl;
  136.         } else if (Num == 2) {
  137.             Display(workers);
  138.             std::cout << std::endl;
  139.         } else if (Num == 3) {
  140.             // DisplayFile(workers);
  141.             std::cout << std::endl;
  142.         } else if (Num == 4) {
  143.             Find(workers);
  144.             std::cout << std::endl;
  145.         } else if (Num == 5) {
  146.             std::cout << "Введите ID сотрудника: ";
  147.             int id;
  148.             std::cin >> id;
  149.             FindDel(workers, id);
  150.             std::cout << std::endl;
  151.         } else if (Num == -1) {
  152.             std::cout << "Всего наилучшего!" << std::endl;
  153.         } else
  154.             std::cout << "Введена неправильная опция. Попробуйте повторно."
  155.                       << std::endl
  156.                       << std::endl;
  157.     }
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement