Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- #include <numeric>
- #include <algorithm>
- #include <fstream>
- #include <map>
- #include <iomanip>
- #include <regex>
- #include <Windows.h>
- struct employee {
- std::string full_name;
- std::string position;
- std::string department;
- std::string birth;
- double salary;
- std::string comment;
- int priority;
- int id;
- int experience;
- };
- void PrintMenu() {
- std::cout << "\n" << "Главное меню" << "\n";
- std::cout << "Выберите опцию:" << "\n";
- std::cout << "\t" << "1 - Вывести список сотрудников" << "\n";
- std::cout << "\t" << "2 - Внести изменения в кадровый список сотрудников" << "\n";
- std::cout << "\t" << "3 - Поиск сотрудников" << "\n";
- std::cout << "\t" << "4 - Выход" << "\n";
- }
- void PrintMenu1() {
- std::cout << "\n" << "Выберите опцию:" << "\n";
- std::cout << "\t" << "1 - Вернутьcя в главное меню" << "\n";
- std::cout << "\t" << "2 - Завершить работу программы" << "\n";
- }
- void PrintMenu2() {
- std::cout << "\n" << "Внесение изменений в кадровый список сотрудников" << "\n";
- std::cout << "Выберите опцию:" << "\n";
- std::cout << "\t" << "1 - Добавить сотрудника" << "\n";
- std::cout << "\t" << "2 - Удалить сотрудника" << "\n";
- std::cout << "\t" << "3 - Редактирование существующих сотрудников" << "\n";
- std::cout << "\t" << "4 - Вернутьcя в главное меню" << "\n";
- }
- void PrintMenu3() {
- std::cout << "Выберите по какому параметру удалить:" << "\n";
- std::cout << "\t" << "1 - Удалить по id" << "\n";
- std::cout << "\t" << "2 - Удалить по ФИО" << "\n";
- std::cout << "\t" << "3 - Назад" << "\n";
- }
- void PrintMenu4() {
- std::cout << "Выберите одну из опций:" << "\n";
- std::cout << "\t" << "1 - Выбрать сотрудника по id для редактирования информации" << "\n";
- std::cout << "\t" << "2 - Назад" << "\n";
- }
- void PrintMenu5() {
- std::cout << "Поиск сотрудника(ов):" << "\n";
- std::cout << "Выберите параметр по которому будет производиться поиск сотрудника(ов):" << "\n";
- std::cout << "\t" << "1 - ФИО" << "\n";
- std::cout << "\t" << "2 - должность" << "\n";
- std::cout << "\t" << "3 - отдел: " << "\n";
- std::cout << "\t" << "4 - дата рождения" << "\n";
- std::cout << "\t" << "5 - заработная плата" << "\n";
- std::cout << "\t" << "6 - комментарий" << "\n";
- std::cout << "\t" << "7 - приоритет" << "\n";
- std::cout << "\t" << "8 - id" << "\n";
- std::cout << "\t" << "9 - стаж" << "\n";
- std::cout << "\t" << "10 - вернуться в главное меню" << "\n";
- }
- std::string GetAns2(std::string ans) {
- bool IsCorrect;
- ans == "1" || ans == "2" ? IsCorrect = true : IsCorrect = false;
- while (!IsCorrect) {
- std::cout << "Ваш ответ не совпал ни с одним из вариантов. Попробуйте снова: ";
- std::cin >> ans;
- ans == "1" || ans == "2" ? IsCorrect = true : IsCorrect = false;
- }
- return ans;
- }
- std::string GetAns3(std::string ans) {
- bool IsCorrect;
- ans == "1" || ans == "2" || ans == "3" ? IsCorrect = true : IsCorrect = false;
- while (!IsCorrect) {
- std::cout << "Ваш ответ не совпал ни с одним из вариантов. Попробуйте снова: ";
- std::cin >> ans;
- ans == "1" || ans == "2" || ans == "3" ? IsCorrect = true : IsCorrect = false;
- }
- return ans;
- }
- std::string GetAns4(std::string ans) {
- bool IsCorrect;
- ans == "1" || ans == "2" || ans == "3" || ans == "4" ? IsCorrect = true : IsCorrect = false;
- while (!IsCorrect) {
- std::cout << "Ваш ответ не совпал ни с одним из вариантов. Попробуйте снова: ";
- std::cin >> ans;
- ans == "1" || ans == "2" || ans == "3" || ans == "4" ? IsCorrect = true : IsCorrect = false;
- }
- return ans;
- }
- std::string GetAns10(std::string ans) {
- bool IsCorrect;
- ans == "1" || ans == "2" || ans == "3" || ans == "4" || ans == "5" || ans == "6" || ans == "7" || ans == "8" || ans == "9" || ans == "10" ? IsCorrect = true : IsCorrect = false;
- while (!IsCorrect) {
- std::cout << "Ваш ответ не совпал ни с одним из вариантов. Попробуйте снова: ";
- std::cin >> ans;
- ans == "1" || ans == "2" || ans == "3" || ans == "4" || ans == "5" || ans == "6" || ans == "7" || ans == "8" || ans == "9" || ans == "10" ? IsCorrect = true : IsCorrect = false;
- }
- return ans;
- }
- void PrintEmployeesList() {
- std::string line;
- std::ifstream in("employees.txt");
- int i = 0;
- while (getline(in, line)) {
- std::cout << line << std::endl;
- i++;
- }
- if (i == 0)
- std::cout << "Список сотрудников пуст." << std::endl;
- in.close();
- }
- void AddEmployee(employee T) {
- std::ofstream out;
- out << std::fixed << std::setprecision(2);
- out.open("employees.txt", std::ios::app);
- out << "ФИО: " << T.full_name << std::endl;
- out << "должность: " << T.position << std::endl;
- out << "отдел: " << T.department << std::endl;
- out << "дата рождения: " << T.birth << std::endl;
- out << "заработная плата: " << T.salary << std::endl;
- out << "комментарий: " << T.comment << std::endl;
- out << "приоритет: " << T.priority << std::endl;
- out << "id: " << T.id << std::endl;
- out << "стаж: " << T.experience << std::endl << std::endl;
- out.close();
- }
- std::vector<employee> UpdateListOfEmployees() {
- std::vector<employee> Data;
- std::string line;
- std::ifstream in("employees.txt");
- employee T;
- while (!in.eof())
- {
- getline(in, line);
- if (line == "") break;
- T.full_name = line.substr(5, line.find('\n'));
- getline(in, line);
- T.position = line.substr(11, line.find('\n'));
- getline(in, line);
- T.department = line.substr(7, line.find('\n'));
- getline(in, line);
- T.birth = line.substr(15, line.find('\n'));
- getline(in, line);
- T.salary = std::stod(line.substr(18, line.find('\n')));
- getline(in, line);
- T.comment = line.substr(13, line.find('\n'));
- getline(in, line);
- T.priority = std::stoi(line.substr(11, line.find('\n')));
- getline(in, line);
- T.id = std::stoi(line.substr(4, line.find('\n')));
- getline(in, line);
- T.experience = std::stoi(line.substr(6, line.find('\n')));
- getline(in, line);
- Data.push_back(T);
- }
- return Data;
- }
- int GetID(std::vector<employee> T) {
- int id = 0;
- bool done = false;
- while (!done) {
- done = true;
- for (int i = 0; i < T.size(); ++i) {
- if (T[i].id == id) {
- id++;
- done = false;
- break;
- }
- }
- }
- return id;
- }
- void UpdateFile(std::vector<employee> T) {
- std::ofstream out;
- out.open("employees.txt");
- for (int i = 0; i < T.size(); ++i) {
- out << "ФИО: " << T[i].full_name << std::endl;
- out << "должность: " << T[i].position << std::endl;
- out << "отдел: " << T[i].department << std::endl;
- out << "дата рождения: " << T[i].birth << std::endl;
- out << "заработная плата: " << T[i].salary << std::endl;
- out << "комментарий: " << T[i].comment << std::endl;
- out << "приоритет: " << T[i].priority << std::endl;
- out << "id: " << T[i].id << std::endl;
- out << "стаж: " << T[i].experience << std::endl << std::endl;
- }
- out.close();
- }
- bool CheckID(std::vector<employee> T, int id) {
- bool res = false;
- for (int i = 0; i < T.size(); ++i) {
- if (T[i].id == id) {
- res = true;
- break;
- }
- }
- return res;
- }
- std::vector<employee> DelByID(std::vector<employee> T, int id) {
- for (int i = 0; i < T.size(); ++i) {
- if (T[i].id == id) {
- T.erase(T.begin() + i);
- break;
- }
- }
- return T;
- }
- bool CheckName(std::vector<employee> T, std::string name) {
- bool res = false;
- for (int i = 0; i < T.size(); ++i) {
- if (T[i].full_name == name) {
- res = true;
- break;
- }
- }
- return res;
- }
- bool CheckDoubleName(std::vector<employee> T, std::string name) {
- bool res = false;
- int count = 0;
- for (int i = 0; i < T.size(); ++i)
- if (T[i].full_name == name)
- count++;
- if (count > 1)
- res = true;
- return res;
- }
- std::vector<employee> DelByName(std::vector<employee> T, std::string name) {
- for (int i = 0; i < T.size(); ++i) {
- if (T[i].full_name == name) {
- T.erase(T.begin() + i);
- break;
- }
- }
- return T;
- }
- void PrintListOfEmployees(std::vector<employee> T) {
- for (int i = 0; i < T.size(); ++i) {
- std::cout << "ФИО: " << T[i].full_name << std::endl;
- std::cout << "должность: " << T[i].position << std::endl;
- std::cout << "отдел: " << T[i].department << std::endl;
- std::cout << "дата рождения: " << T[i].birth << std::endl;
- std::cout << "заработная плата: " << T[i].salary << std::endl;
- std::cout << "комментарий: " << T[i].comment << std::endl;
- std::cout << "приоритет: " << T[i].priority << std::endl;
- std::cout << "id: " << T[i].id << std::endl;
- std::cout << "стаж: " << T[i].experience << std::endl << std::endl;
- }
- }
- int main() {
- setlocale(LC_ALL, "Russian");
- SetConsoleOutputCP(1251);
- SetConsoleCP(1251);
- bool start = true;
- bool menu2 = false;
- bool checkid = false;
- bool menu3 = false;
- bool checkname = false;
- bool menu5 = false;
- std::vector<employee> employees_data;
- std::vector<employee> chosen_ones;
- std::string ans;
- int ans_i;
- int id;
- int priority, experience;
- employee newbie;
- std::string item;
- static const std::regex txt_regex("[А-я]+\\s[А-я]+\\s[А-я]+");
- static const std::regex nums_regex("[0-9]*");
- static const std::regex birth_regex("[0-9]{2}\\.[0-9]{2}\\.[0-9]{4}");
- static const std::regex salary_regex("[0-9]+\\.{0,1}[0-9]{0,2}");
- double salary;
- std::string id_s;
- std::ifstream in("employees.txt");
- while (true) {
- start = false;
- menu2 = false;
- menu3 = false;
- menu5 = false;
- system("cls");
- PrintMenu();
- std::cin >> ans;
- std::cin.ignore(32767, '\n');
- ans = GetAns4(ans);
- ans_i = std::stoi(ans);
- switch (ans_i) {
- case 1:
- system("cls");
- std::cout << "Cписок сотрудников:" << std::endl;
- PrintEmployeesList();
- PrintMenu1();
- std::cin >> ans;
- ans = GetAns4(ans);
- ans_i = std::stoi(ans);
- if (ans_i == 1) {
- start = true;
- break;
- }
- else
- return 0;
- case 2:
- menu2 = false;
- while (!menu2) {
- menu2 = true;
- system("cls");
- PrintMenu2();
- std::cin >> ans;
- ans = GetAns4(ans);
- ans_i = std::stoi(ans);
- switch (ans_i) {
- case 1:
- system("cls");
- std::cout << "Для добавления нового сотрудника введите данные (пункты отмеченные [*] обязательны для заполнения, если не хотите заполнять необязательные поля введите 'none'):" << std::endl;
- std::cout << "ФИО сотрудника*: ";
- std::cin.ignore(32767, '\n');
- std::getline(std::cin, item);
- while (!std::regex_match(item, txt_regex)) {
- std::cout << "Имя сотрудника введено неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "ФИО сотрудника*: ";
- std::getline(std::cin, item);
- }
- newbie.full_name = item;
- std::cout << "Название должности сотрудника*: ";
- std::getline(std::cin, item);
- while (std::regex_match(item, nums_regex)) {
- std::cout << "Название должности введено неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Название должности сотрудника*: ";
- std::getline(std::cin, item);
- }
- newbie.position = item;
- std::cout << "Название отдела сотрудника: ";
- std::getline(std::cin, item);
- if (item == "none")
- newbie.department = "не указано";
- else {
- while (std::regex_match(item, nums_regex)) {
- std::cout << "Название отдела введено неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Название отдела сотрудника*: ";
- std::getline(std::cin, item);
- }
- newbie.department = item;
- }
- std::cout << "Дата рождения*: ";
- std::getline(std::cin, item);
- while (!std::regex_match(item, birth_regex)) {
- std::cout << "Дата рождения введена неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Дата рождения*: ";
- std::getline(std::cin, item);
- }
- newbie.birth = item;
- std::cout << "Заработная плата: ";
- std::getline(std::cin, item);
- if (item == "none")
- newbie.salary = 0.0;
- else {
- while (!std::regex_match(item, salary_regex)) {
- std::cout << "Заработная плата введена неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Заработная плата: ";
- std::getline(std::cin, item);
- }
- newbie.salary = std::stod(item);
- }
- std::cout << "Комментарий: ";
- std::getline(std::cin, item);
- if (item == "none")
- newbie.comment = "не указан";
- else
- newbie.comment = item;
- std::cout << "Приоритет: ";
- std::getline(std::cin, item);
- if (item == "none")
- newbie.priority = 0;
- else {
- while (!std::regex_match(item, nums_regex)) {
- std::cout << "Приоритет введен неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Приоритет: ";
- std::getline(std::cin, item);
- }
- newbie.priority = std::stoi(item);
- }
- std::cout << "Стаж: ";
- std::getline(std::cin, item);
- if (item == "none")
- newbie.experience = 0;
- else {
- while (!std::regex_match(item, nums_regex)) {
- std::cout << "Стаж введен неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Стаж: ";
- std::getline(std::cin, item);
- }
- newbie.experience = std::stoi(item);
- }
- employees_data = UpdateListOfEmployees();
- newbie.id = GetID(employees_data);
- AddEmployee(newbie);
- employees_data = UpdateListOfEmployees();
- menu2 = false;
- break;
- case 2:
- system("cls");
- menu3 = false;
- while (!menu3) {
- menu3 = true;
- PrintMenu3();
- std::cin >> ans;
- ans = GetAns3(ans);
- ans_i = std::stoi(ans);
- switch (ans_i) {
- case 1:
- employees_data = UpdateListOfEmployees();
- std::cout << "Введите id: ";
- checkid = false;
- while (!checkid) {
- std::cin.ignore(32767, '\n');
- std::getline(std::cin, id_s);
- while (!std::regex_match(item, nums_regex)) {
- std::cout << "id введен неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "id: ";
- std::getline(std::cin, item);
- }
- id = std::stoi(id_s);
- employees_data = UpdateListOfEmployees();
- checkid = true;
- if (!CheckID(employees_data, id)) {
- std::cout << "сотрудника с таким id не существует, попробуйте еще раз: " << std::endl;
- std::cout << "id: ";
- checkid = false;
- }
- }
- employees_data = DelByID(employees_data, id);
- UpdateFile(employees_data);
- menu3 = true;
- break;
- case 2:
- employees_data = UpdateListOfEmployees();
- std::cout << "Введите ФИО: ";
- while (!checkname) {
- std::cin.ignore(32767, '\n');
- std::getline(std::cin, item);
- while (!std::regex_match(item, txt_regex)) {
- std::cout << "Имя сотрудника введено неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "ФИО сотрудника*: ";
- std::getline(std::cin, item);
- checkname = true;
- }
- if (!CheckName(employees_data, item)) {
- std::cout << "сотрудника с таким ФИО не существует, попробуйте еще раз: " << std::endl;
- std::cout << "ФИО: ";
- checkname = false;
- }
- if (CheckDoubleName(employees_data, item)) {
- std::cout << "есть несколько сотрудников с таким ФИО, попробуйте еще раз: " << std::endl;
- std::cout << "ФИО: ";
- checkname = false;
- }
- }
- employees_data = DelByName(employees_data, item);
- UpdateFile(employees_data);
- menu3 = true;
- break;
- case 3:
- menu2 = true;
- break;
- }
- }
- if (menu2)
- break;
- case 3:
- system("cls");
- PrintMenu4();
- std::cin >> ans;
- ans = GetAns2(ans);
- ans_i = std::stoi(ans);
- if (ans_i == 1) {
- std::cout << "Введите id: ";
- checkid = false;
- while (!checkid) {
- std::cin.ignore(32767, '\n');
- std::getline(std::cin, id_s);
- while (!std::regex_match(id_s, nums_regex)) {
- std::cout << "id введен неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "id: ";
- std::getline(std::cin, id_s);
- }
- id = std::stoi(id_s);
- employees_data = UpdateListOfEmployees();
- checkid = true;
- if (!CheckID(employees_data, id)) {
- std::cout << "сотрудника с таким id не существует, попробуйте еще раз: " << std::endl;
- std::cout << "id: ";
- checkid = false;
- }
- }
- std::cout << "Введите новые данные для этого сотрудника (его id останется прежним): " << std::endl;
- std::cout << "ФИО сотрудника*: ";
- std::cin.ignore(32767, '\n');
- std::getline(std::cin, item);
- while (!std::regex_match(item, txt_regex)) {
- std::cout << "Имя сотрудника введено неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "ФИО сотрудника*: ";
- std::getline(std::cin, item);
- }
- newbie.full_name = item;
- std::cout << "Название должности сотрудника*: ";
- std::getline(std::cin, item);
- while (std::regex_match(item, nums_regex)) {
- std::cout << "Название должности введено неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Название должности сотрудника*: ";
- std::getline(std::cin, item);
- }
- newbie.position = item;
- std::cout << "Название отдела сотрудника: ";
- std::getline(std::cin, item);
- if (item == "none")
- newbie.department = "не указано";
- else {
- while (std::regex_match(item, nums_regex)) {
- std::cout << "Название отдела введено неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Название отдела сотрудника*: ";
- std::getline(std::cin, item);
- }
- newbie.department = item;
- }
- std::cout << "Дата рождения*: ";
- std::getline(std::cin, item);
- while (!std::regex_match(item, birth_regex)) {
- std::cout << "Дата рождения введена неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Дата рождения*: ";
- std::getline(std::cin, item);
- }
- newbie.birth = item;
- std::cout << "Заработная плата: ";
- std::getline(std::cin, item);
- if (item == "none")
- newbie.salary = 0.0;
- else {
- while (!std::regex_match(item, salary_regex)) {
- std::cout << "Заработная плата введена неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Заработная плата: ";
- std::getline(std::cin, item);
- }
- newbie.salary = std::stod(item);
- }
- std::cout << "Комментарий: ";
- std::getline(std::cin, item);
- if (item == "none")
- newbie.comment = "не указан";
- else
- newbie.comment = item;
- std::cout << "Приоритет: ";
- std::getline(std::cin, item);
- if (item == "none")
- newbie.priority = 0;
- else {
- while (!std::regex_match(item, nums_regex)) {
- std::cout << "Приоритет введен неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Приоритет: ";
- std::getline(std::cin, item);
- }
- newbie.priority = std::stoi(item);
- }
- std::cout << "Стаж: ";
- std::getline(std::cin, item);
- if (item == "none")
- newbie.experience = 0;
- else {
- while (!std::regex_match(item, nums_regex)) {
- std::cout << "Стаж введен неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Стаж: ";
- std::getline(std::cin, item);
- }
- newbie.experience = std::stoi(item);
- }
- newbie.id = id;
- DelByID(employees_data, id);
- employees_data.push_back(newbie);
- UpdateFile(employees_data);
- menu2 = false;
- break;
- }
- case 4:
- start = true;
- break;
- }
- }
- if (start || menu2)
- break;
- case 3:
- if (start || menu2)
- break;
- menu5 = false;
- system("cls");
- while (!menu5) {
- menu5 = true;
- PrintMenu5();
- std::cin >> ans;
- ans = GetAns10(ans);
- ans_i = std::stoi(ans);
- employees_data = UpdateListOfEmployees();
- switch (ans_i) {
- case 1:
- system("cls");
- std::cout << "ФИО сотрудника*: ";
- std::cin.ignore(32767, '\n');
- std::getline(std::cin, item);
- while (!std::regex_match(item, txt_regex)) {
- std::cout << "Имя сотрудника введено неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "ФИО сотрудника*: ";
- std::getline(std::cin, item);
- }
- for (int i = 0; i < employees_data.size(); ++i) {
- if (employees_data[i].full_name == item)
- chosen_ones.push_back(employees_data[i]);
- }
- if (chosen_ones.size() == 0) {
- std::cout << "Сотрудников с таким ФИО не существует, попробуйте еще раз:" << std::endl;
- menu5 = false;
- break;
- }
- else {
- PrintListOfEmployees(chosen_ones);
- chosen_ones.clear();
- start = true;
- break;
- }
- case 2:
- system("cls");
- std::cout << "Название должности сотрудника*: ";
- std::cin.ignore(32767, '\n');
- std::getline(std::cin, item);
- while (std::regex_match(item, nums_regex)) {
- std::cout << "Название должности введено неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Название должности сотрудника*: ";
- std::getline(std::cin, item);
- }
- for (int i = 0; i < employees_data.size(); ++i) {
- if (employees_data[i].position == item)
- chosen_ones.push_back(employees_data[i]);
- }
- if (chosen_ones.size() == 0) {
- std::cout << "Сотрудников с такой должностью не существует, попробуйте еще раз:" << std::endl;
- menu5 = false;
- break;
- }
- else {
- PrintListOfEmployees(chosen_ones);
- chosen_ones.clear();
- start = true;
- break;
- }
- case 3:
- system("cls");
- std::cout << "Название отдела сотрудника: ";
- std::getline(std::cin, item);
- if (item == "none")
- item = "не указано";
- else {
- while (std::regex_match(item, nums_regex)) {
- std::cout << "Название отдела введено неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Название отдела сотрудника*: ";
- std::getline(std::cin, item);
- }
- }
- for (int i = 0; i < employees_data.size(); ++i) {
- if (employees_data[i].department == item)
- chosen_ones.push_back(employees_data[i]);
- }
- if (chosen_ones.size() == 0) {
- std::cout << "Сотрудников в таком отделе не существует, попробуйте еще раз:" << std::endl;
- menu5 = false;
- break;
- }
- else {
- PrintListOfEmployees(chosen_ones);
- chosen_ones.clear();
- start = true;
- break;
- }
- case 4:
- system("cls");
- std::cout << "Дата рождения*: ";
- std::cin.ignore(32767, '\n');
- std::getline(std::cin, item);
- while (!std::regex_match(item, birth_regex)) {
- std::cout << "Дата рождения введена неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Дата рождения*: ";
- std::getline(std::cin, item);
- }
- for (int i = 0; i < employees_data.size(); ++i) {
- if (employees_data[i].birth == item)
- chosen_ones.push_back(employees_data[i]);
- }
- if (chosen_ones.size() == 0) {
- std::cout << "Сотрудников с таким днем рождения не существует, попробуйте еще раз:" << std::endl;
- menu5 = false;
- break;
- }
- else {
- PrintListOfEmployees(chosen_ones);
- chosen_ones.clear();
- start = true;
- break;
- }
- case 5:
- system("cls");
- std::cout << "Заработная плата: ";
- std::cin.ignore(32767, '\n');
- std::getline(std::cin, item);
- if (item == "none")
- salary = 0.0;
- else {
- while (!std::regex_match(item, salary_regex)) {
- std::cout << "Заработная плата введена неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Заработная плата: ";
- std::getline(std::cin, item);
- }
- salary = std::stod(item);
- }
- for (int i = 0; i < employees_data.size(); ++i) {
- if (employees_data[i].salary == salary)
- chosen_ones.push_back(employees_data[i]);
- }
- if (chosen_ones.size() == 0) {
- std::cout << "Сотрудников с такой заработной платой не существует, попробуйте еще раз:" << std::endl;
- menu5 = false;
- break;
- }
- else {
- PrintListOfEmployees(chosen_ones);
- chosen_ones.clear();
- start = true;
- break;
- }
- case 6:
- system("cls");
- std::cout << "Комментарий: ";
- std::cin.ignore(32767, '\n');
- std::getline(std::cin, item);
- if (item == "none")
- item = "не указан";
- for (int i = 0; i < employees_data.size(); ++i) {
- if (employees_data[i].comment == item)
- chosen_ones.push_back(employees_data[i]);
- }
- if (chosen_ones.size() == 0) {
- std::cout << "Сотрудников с таким комментарием не существует, попробуйте еще раз:" << std::endl;
- menu5 = false;
- break;
- }
- else {
- PrintListOfEmployees(chosen_ones);
- chosen_ones.clear();
- start = true;
- break;
- }
- case 7:
- system("cls");
- std::cout << "Приоритет: ";
- std::cin.ignore(32767, '\n');
- std::getline(std::cin, item);
- if (item == "none")
- priority = 0;
- else {
- while (!std::regex_match(item, nums_regex)) {
- std::cout << "Приоритет введен неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Приоритет: ";
- std::getline(std::cin, item);
- }
- priority = std::stoi(item);
- }
- for (int i = 0; i < employees_data.size(); ++i) {
- if (employees_data[i].priority == priority)
- chosen_ones.push_back(employees_data[i]);
- }
- if (chosen_ones.size() == 0) {
- std::cout << "Сотрудников с таким приоритетом не существует, попробуйте еще раз:" << std::endl;
- menu5 = false;
- break;
- }
- else {
- PrintListOfEmployees(chosen_ones);
- chosen_ones.clear();
- start = true;
- break;
- }
- case 8:
- system("cls");
- std::cout << "Введите id: ";
- std::cin.ignore(32767, '\n');
- std::getline(std::cin, id_s);
- while (!std::regex_match(id_s, nums_regex)) {
- std::cout << "id введен неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "id: ";
- std::getline(std::cin, id_s);
- }
- id = std::stoi(id_s);
- for (int i = 0; i < employees_data.size(); ++i) {
- if (employees_data[i].id == id)
- chosen_ones.push_back(employees_data[i]);
- }
- if (chosen_ones.size() == 0) {
- std::cout << "Сотрудников с таким id не существует, попробуйте еще раз:" << std::endl;
- menu5 = false;
- break;
- }
- else {
- PrintListOfEmployees(chosen_ones);
- chosen_ones.clear();
- start = true;
- break;
- }
- case 9:
- system("cls");
- std::cout << "Стаж: ";
- std::cin.ignore(32767, '\n');
- std::getline(std::cin, item);
- if (item == "none")
- experience = 0;
- else {
- while (!std::regex_match(item, nums_regex)) {
- std::cout << "Стаж введен неправильно, попробуйте еще раз: " << std::endl;
- std::cout << "Стаж: ";
- std::getline(std::cin, item);
- }
- experience = std::stoi(item);
- }
- for (int i = 0; i < employees_data.size(); ++i) {
- if (employees_data[i].experience == experience)
- chosen_ones.push_back(employees_data[i]);
- }
- if (chosen_ones.size() == 0) {
- std::cout << "Сотрудников с таким стажем не существует, попробуйте еще раз:" << std::endl;
- menu5 = false;
- break;
- }
- else {
- PrintListOfEmployees(chosen_ones);
- chosen_ones.clear();
- start = true;
- break;
- }
- case 10:
- start = true;
- break;
- }
- }
- case 4:
- if (start || menu2)
- break;
- return 0;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement