Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <algorithm>
- #include <fstream>
- #include <iostream>
- #include <utility>
- #include <vector>
- class Worker {
- public:
- static int NextID;
- int ID;
- std::string Surname;
- long long PhoneNumber;
- int Salary;
- std::string Profession;
- Worker(
- std::string Surname,
- long long PhoneNumber,
- int Salary,
- std::string Profession
- )
- : ID(NextID++),
- Surname(std::move(Surname)),
- PhoneNumber(PhoneNumber),
- Salary(Salary),
- Profession(std::move(Profession)) {
- }
- };
- int Worker::NextID = 1;
- void Add(std::vector<Worker> &workers) {
- std::string Surname;
- long long PhoneNumber;
- int Salary;
- std::string Profession;
- std::cout << "Введите фамилию сотрудника: ";
- std::cin >> Surname;
- std::cout << "Введите номер телефона сотрудника: ";
- std::cin >> PhoneNumber;
- std::cout << "Введите з/п сотрудника: ";
- std::cin >> Salary;
- std::cout << "Введите профессию сотрудника: ";
- std::cin >> Profession;
- workers.emplace_back(Surname, PhoneNumber, Salary, Profession);
- std::cout << "Информация о новом сотруднике успешно добавлена."
- << std::endl;
- }
- void Display(std::vector<Worker> &workers) {
- std::cout << "Список всех сотрудников:" << std::endl;
- if (workers.end() - workers.begin() == 0)
- std::cout << "База данных пуста." << std::endl;
- else {
- for (auto &it : workers) {
- std::cout << "ID: " << it.ID << " Фамилия: " << it.Surname
- << " Телефон: " << it.PhoneNumber
- << " Зарплата: " << it.Salary
- << " Профессия: " << it.Profession << std::endl;
- }
- }
- }
- /*void Print(std::vector<Worker> &workers) {
- for (auto &it : workers) {
- std::cout << "ID: " << it.ID << ", Фамилия: " << it.Surname
- << ", Номер телефона: " << it.PhoneNumber
- << ", Зарплата: " << it.Salary
- << ", Профессия: " << it.Profession << std::endl;
- }
- }*/
- void Find(std::vector<Worker> &workers) {
- std::string setting, value;
- std::cout << "Выберите параметр поиска (ID, Фамилия, Номер телефона, "
- "Зарплата, Профессия): ";
- std::cin >> setting;
- std::cout << "Введите значение: ";
- std::cin >> value;
- bool flag = false;
- for (auto &it : workers) {
- /*std::cout << it.ID << " "<< it.Surname << " "<< it.PhoneNumber << "
- "<< it.Profession << " "<< it.Salary << " " << std::endl; std::cout <<
- setting << std::endl; std::cout << value << std::endl;*/
- if (setting == "ID" && std::to_string(it.ID) == value) {
- flag = true;
- } else if (setting == "Фамилия" && it.Surname == value) {
- flag = true;
- } else if (setting == "Номер телефона" && std::to_string(it.PhoneNumber) == value) {
- flag = true;
- } else if (setting == "Зарплата" && std::to_string(it.Salary) == value) {
- flag = true;
- } else if (setting == "Профессия" && it.Profession == value) {
- flag = true;
- }
- }
- if (!flag) std::cout << "К сожалению, данная запись отсутствует." << std::endl;
- //я пока чет не понял как написать функцию принта, поэтому судя по тому, что флаг не меняется, эта параша не воркает
- }
- void FindDel(std::vector<Worker> &workers, int id) {
- bool flag = false;
- for (int i = 0; i < workers.size(); ++i) {
- if (i == id - 1) {
- flag = true;
- workers.erase(workers.begin() + i);
- std::cout << "Запись №" << i + 1 << " удалена из базы данных."
- << std::endl;
- for (int j = i; j < workers.size(); ++j) {
- workers[j].ID -= 1;
- }
- break;
- }
- }
- if (!flag) {
- std::cout << "Запись с данным ID не найдена." << std::endl;
- }
- }
- int main() {
- SetConsoleOutputCP(CP_UTF8);
- std::vector<Worker> workers;
- std::ofstream out;
- out.open("database.txt");
- out << "Список всех сотрудников:" << std::endl;
- out.close();
- int Num = 0;
- while (Num != -1) {
- std::cout << "1)Добавить информацию о новом сотруднике." << std::endl;
- std::cout << "2)Вывести базу данных в консоль." << std::endl;
- std::cout << "3)Вывести базу данных в файле." << std::endl;
- std::cout << "4)Найти сотрудника по определенному параметру."
- << std::endl;
- std::cout << "5) Удалить информацию о сотруднике." << std::endl;
- std::cout << "Для завершения работы введите '-1'." << std::endl;
- std::cout << "Введите номер опции: ";
- std::cin >> Num;
- if (Num == 1) {
- Add(workers);
- std::cout << std::endl;
- } else if (Num == 2) {
- Display(workers);
- std::cout << std::endl;
- } else if (Num == 3) {
- // DisplayFile(workers);
- std::cout << std::endl;
- } else if (Num == 4) {
- Find(workers);
- std::cout << std::endl;
- } else if (Num == 5) {
- std::cout << "Введите ID сотрудника: ";
- int id;
- std::cin >> id;
- FindDel(workers, id);
- std::cout << std::endl;
- } else if (Num == -1) {
- std::cout << "Всего наилучшего!" << std::endl;
- } else
- std::cout << "Введена неправильная опция. Попробуйте повторно."
- << std::endl
- << std::endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement