Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const string right_login = "3151020";
- const string right_password = "1e9a228F15";
- const string retiree_age = "21.04.1959";
- // 21.04.2019
- class Worker
- {
- string name;
- string date_of_birth;
- string department_name;
- string position;
- string beginning_date;
- public:
- Worker(string name, string date_of_birth, string department_name, string position, string beginning_date)
- {
- this->name = name;
- this->date_of_birth = date_of_birth;
- this->department_name = department_name;
- this->position = position;
- this->beginning_date = beginning_date;
- }
- //Getters
- string GetName()
- {
- return this->name;
- }
- string GetDateOfBirth()
- {
- return this->date_of_birth;
- }
- string GetDepartmentName()
- {
- return this->department_name;
- }
- string GetPosition()
- {
- return this->position;
- }
- string GetBeginningDate()
- {
- return this->beginning_date;
- }
- //Setters
- void SetName(string new_name)
- {
- this->name = new_name;
- }
- void SetDateOfBirth(string new_date_of_birth)
- {
- this->date_of_birth = new_date_of_birth;
- }
- void SetDepartmentName(string new_department_name)
- {
- this->department_name = new_department_name;
- }
- void SetPosition(string new_position)
- {
- this->position = new_position;
- }
- void SetBeginningDate(string new_beginning_date)
- {
- this->beginning_date = new_beginning_date;
- }
- };
- vector<Worker> workers;
- bool role;
- string GetString(string current, int position, int symbols)
- {
- return current.substr(position, symbols);
- }
- bool CompareWorkersByDate(Worker first_worker, Worker second_worker)
- {
- string first_worker_date = first_worker.GetBeginningDate();
- string second_worker_date = second_worker.GetBeginningDate();
- string first_worker_year = GetString(first_worker_date, 6, 4);
- string second_worker_year = GetString(second_worker_date, 6, 4);
- string first_worker_month = GetString(first_worker_date, 3, 2);
- string second_worker_month = GetString(second_worker_date, 3, 2);
- string first_worker_day = GetString(first_worker_date, 0, 2);
- string second_worker_day = GetString(second_worker_date, 0, 2);
- if (first_worker_year != second_worker_year) return first_worker_year < second_worker_year;
- if (first_worker_month != second_worker_month) return first_worker_month < second_worker_month;
- return first_worker_day < second_worker_day;
- }
- bool CompareWorkersByName(Worker first_worker, Worker second_worker)
- {
- return first_worker.GetName() < second_worker.GetName();
- }
- void PrintWorker(Worker current_worker)
- {
- cout << current_worker.GetName() << ' ' << current_worker.GetDateOfBirth() << ' ' << current_worker.GetDepartmentName() << ' '
- << current_worker.GetPosition() << ' ' << current_worker.GetBeginningDate() << "\n";
- }
- void AddWorker()
- {
- cout << "Enter new worker's new name, date of birth, department name, position and beginning date : " << "\n";
- string name;
- string date_of_birth;
- string department_name;
- string position;
- string beginning_date;
- cin >> name >> date_of_birth >> department_name >> position >> beginning_date;
- Worker current_worker(name, date_of_birth, department_name, position, beginning_date);
- workers.push_back(current_worker);
- }
- void ChooseItem()
- {
- cout << "1. Name" << "\n";
- cout << "2. Date of birth" << "\n";
- cout << "3. Department name" << "\n";
- cout << "4. Position" << "\n";
- cout << "5. Beginning date" << "\n";
- }
- void EditWorker()
- {
- int edited_worker_number;
- int action;
- cout << "Enter edited worker number : " << "\n";
- cin >> edited_worker_number;
- cout << "What do you want to edit? " << "\n";
- ChooseItem();
- cin >> action;
- edited_worker_number--;
- switch(action)
- {
- case 1:
- {
- string new_name;
- cout << "Enter his new name : " << "\n";
- cin >> new_name;
- workers[edited_worker_number].SetName(new_name);
- break;
- }
- case 2:
- {
- string new_date_of_birth;
- cout << "Enter his new date of birth : " << "\n";
- cin >> new_date_of_birth;
- workers[edited_worker_number].SetDateOfBirth(new_date_of_birth);
- break;
- }
- case 3:
- {
- string new_department_name;
- cout << "Enter his new department name : " << "\n";
- cin >> new_department_name;
- workers[edited_worker_number].SetDepartmentName(new_department_name);
- break;
- }
- case 4:
- {
- string new_position;
- cout << "Enter his new position : " << "\n";
- cin >> new_position;
- workers[edited_worker_number].SetPosition(new_position);
- break;
- }
- case 5:
- {
- string new_beginning_date;
- cout << "Enter his new beginning date : " << "\n";
- cin >> new_beginning_date;
- workers[edited_worker_number].SetBeginningDate(new_beginning_date);
- break;
- }
- }
- }
- void DeleteWorker()
- {
- int deleted_worker_number;
- cout << "Enter deleted worker number: " << "\n";
- cin >> deleted_worker_number;
- deleted_worker_number--;
- workers.erase(workers.begin() + deleted_worker_number);
- }
- bool IsRetiree(string age)
- {
- if (age.substr(6, 4) != retiree_age.substr(6, 4)) return age.substr(6, 4) <= retiree_age.substr(6, 4);
- if (age.substr(3, 2) != retiree_age.substr(3, 2)) return age.substr(3, 2) <= retiree_age.substr(3, 2);
- return age.substr(0, 2) <= retiree_age.substr(0, 2);
- }
- void IndividualTask()
- {
- cout << "Retiree list : " << "\n";
- for (int i = 0; i < (int) workers.size(); i++)
- if (IsRetiree(workers[i].GetDateOfBirth()))
- cout << workers[i].GetName() << "\n";
- cout << "Experience decreasing list of workers : " << "\n";
- vector<Worker> sorted_workers = workers;
- sort(sorted_workers.begin(), sorted_workers.end(), CompareWorkersByDate);
- for (int i = 0; i < (int) sorted_workers.size(); i++)
- PrintWorker(sorted_workers[i]);
- }
- void FindWorker()
- {
- cout << "Enter what item do you want to find ?" << "\n";
- ChooseItem();
- int action;
- cin >> action;
- cout << "List of suitable people : " << "\n";
- switch(action)
- {
- case 1:
- {
- string name;
- cin >> name;
- for (int i = 0; i < (int) workers.size(); i++)
- if (workers[i].GetName() == name) PrintWorker(workers[i]);
- break;
- }
- case 2:
- {
- string date_of_birth;
- cin >> date_of_birth;
- for (int i = 0; i < (int) workers.size(); i++)
- if (workers[i].GetDateOfBirth() == date_of_birth) PrintWorker(workers[i]);
- break;
- }
- case 3:
- {
- string department_name;
- cin >> department_name;
- for (int i = 0; i < (int) workers.size(); i++)
- if (workers[i].GetDepartmentName() == department_name) PrintWorker(workers[i]);
- break;
- }
- case 4:
- {
- string position;
- cin >> position;
- for (int i = 0; i < (int) workers.size(); i++)
- if (workers[i].GetPosition() == position) PrintWorker(workers[i]);
- break;
- }
- case 5:
- {
- string beginning_date;
- cin >> beginning_date;
- for (int i = 0; i < (int) workers.size(); i++)
- if (workers[i].GetBeginningDate() == beginning_date) PrintWorker(workers[i]);
- break;
- }
- }
- }
- void SortWorkers()
- {
- cout << "Choose item : " << "\n";
- cout << "1. Sort workers by name" << "\n";
- cout << "2. Sort workers by date of birth" << "\n";
- cout << "3. Sort workers by beginning date" << "\n";
- int action;
- cin >> action;
- cout << "Sorted list of people : " << "\n";
- vector<Worker> sorted_workers = workers;
- if (action == 1) sort(sorted_workers.begin(), sorted_workers.end(), CompareWorkersByName);
- else sort(sorted_workers.rbegin(), sorted_workers.rend(), CompareWorkersByDate);
- for (int i = 0; i < (int) sorted_workers.size(); i++)
- PrintWorker(workers[i]);
- }
- void AdministratorMenu()
- {
- cout << "\t\tADMINISTRATOR MENU : " << "\n";
- cout << "1. Show workers" << "\n";
- cout << "2. Add worker" << "\n";
- cout << "3. Edit worker" << "\n";
- cout << "4. Delete worker" << "\n";
- }
- void UserMenu()
- {
- cout << "\t\tUSER MENU : " << "\n";
- cout << "1. Show workers" << "\n";
- cout << "2. Individual wask" << "\n";
- cout << "3. Find worker" << "\n";
- cout << "4. Sort workers" << "\n";
- }
- bool Authorize()
- {
- string login;
- string password;
- cout << "Enter login : " << "\n";
- cin >> login;
- cout << "Enter password : " << "\n";
- cin >> password;
- cout << "You are ";
- if (password == right_password && login == right_login) role = true;
- else role = false;
- if (role) cout << "Administrator" << "\n";
- else cout << "User" << "\n";
- if (role) AdministratorMenu();
- else UserMenu();
- }
- void ChooseAction()
- {
- cout << "Choose action : " << "\n";
- cout << "0. Authorize" << "\n";
- int action;
- if (role)
- {
- cout << "-1. Break" << "\n";
- cout << "1. Show workers (is not working) " << "\n";
- cout << "2. Add worker" << "\n";
- cout << "3. Edit worker" << "\n";
- cout << "4. Delete worker" << "\n";
- cin >> action;
- switch (action)
- {
- case -1:
- cout << "Wonderful work ! (NET) ";
- exit(0);
- case 0:
- {
- Authorize();
- return;
- break;
- }
- case 1:
- //ShowWorkers();
- case 2:
- AddWorker();
- break;
- case 3:
- EditWorker();
- break;
- case 4:
- DeleteWorker();
- break;
- }
- }
- else
- {
- cout << "-1. Break";
- cout << "1. Show workers (is not working) " << "\n";
- cout << "2. Individual task" << "\n";
- cout << "3. Find worker" << "\n";
- cout << "4. Sort workers" << "\n";
- cin >> action;
- switch (action)
- {
- case -1:
- cout << "Wonderful work ! (NET) ";
- exit(0);
- case 0:
- Authorize();
- return;
- break;
- case 1:
- //ShowWorkers();
- case 2:
- IndividualTask();
- break;
- case 3:
- FindWorker();
- break;
- case 4:
- SortWorkers();
- break;
- }
- }
- }
- void Solve()
- {
- Authorize();
- cout << "\n" "Dear Stanislav, enter everything that you wish -(^-^)- " << "\n\n";
- while (true)
- {
- cout << "\n";
- ChooseAction();
- cout << "\n";
- }
- }
- int main()
- {
- Solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement