С++
Завдання
Напишіть інформаційну систему «Співробітники». Програма має забезпечувати введення даних,
редагування даних співробітника, видалення співробітника, пошук співробітника за прізвищем, вивід інформації
про всіх співробітників зазначеного віку, або прізвище
яких починається на зазначену літеру. Організуйте можливість збереження знайденої інформації у файл. Також
весь список співробітників зберігається у файл (при
виході з програми — автоматично, у процесі виконання
програми — за командою користувача). При старті програми відбувається завантаження списку співробітників
із зазначеного користувачем файлу.
Ответы
Відповідь:
якщо правильно все зрозумів то так:
Пояснення:
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
// Клас, що представляє співробітника
class Employee {
public:
string surname;
string name;
int age;
Employee(const string& surname, const string& name, int age)
: surname(surname), name(name), age(age) {}
};
// Клас, що представляє базу даних співробітників
class EmployeeDatabase {
private:
vector<Employee> employees;
string filename;
public:
EmployeeDatabase(const string& filename)
: filename(filename) {}
// Додавання співробітника до бази даних
void addEmployee(const Employee& employee) {
employees.push_back(employee);
}
// Видалення співробітника з бази даних за прізвищем
void removeEmployee(const string& surname) {
employees.erase(remove_if(employees.begin(), employees.end(),
[&](const Employee& employee) { return employee.surname == surname; }), employees.end());
}
// Пошук співробітників за прізвищем
vector<Employee> searchBySurname(const string& surname) const {
vector<Employee> result;
for (const Employee& employee : employees) {
if (employee.surname == surname) {
result.push_back(employee);
}
}
return result;
}
// Пошук співробітників за віком
vector<Employee> searchByAge(int age) const {
vector<Employee> result;
for (const Employee& employee : employees) {
if (employee.age == age) {
result.push_back(employee);
}
}
return result;
}
// Пошук співробітників за першою літерою прізвища
vector<Employee> searchByFirstLetter(char letter) const {
vector<Employee> result;
for (const Employee& employee : employees) {
if (employee.surname[0] == letter) {
result.push_back(employee);
}
}
return result;
}
// Завантаження списку співробітників з файлу
void loadFromFile() {
ifstream file(filename);
if (file.is_open()) {
employees.clear();
string surname, name;
int age;
while (file >> surname >> name >> age) {
employees.emplace_back(surname, name, age);
}
file.close();
}
}
// Збереження списку співробітників у файл
void saveToFile() const {
ofstream file(filename);
if (file.is_open()) {
for (const Employee& employee : employees) {
file << employee.surname << " " << employee.name << " " << employee.age << endl;
}
file.close();
}
}
};
int main() {
string filename = "employees.txt";
EmployeeDatabase database(filename);
// Завантаження списку співробітників з файлу
database.loadFromFile();
int choice;
do {
cout << "=== ІНФОРМАЦІЙНА СИСТЕМА \"СПІВРОБІТНИКИ\" ===" << endl;
cout << "1. Додати співробітника" << endl;
cout << "2. Видалити співробітника" << endl;
cout << "3. Пошук за прізвищем" << endl;
cout << "4. Пошук за віком" << endl;
cout << "5. Пошук за першою літерою прізвища" << endl;
cout << "6. Зберегти список співробітників у файл" << endl;
cout << "0. Вихід" << endl;
cout << "Ваш вибір: ";
cin >> choice;
switch (choice) {
case 1: {
string surname, name;
int age;
cout << "Введіть прізвище: ";
cin >> surname;
cout << "Введіть ім'я: ";
cin >> name;
cout << "Введіть вік: ";
cin >> age;
database.addEmployee(Employee(surname, name, age));
cout << "Співробітник успішно доданий!" << endl;
break;
}
case 2: {
string surname;
cout << "Введіть прізвище співробітника, якого бажаєте видалити: ";
cin >> surname;
database.removeEmployee(surname);
cout << "Співробітник успішно видалений!" << endl;
break;
}
case 3: {
string surname;
cout << "Введіть прізвище для пошуку: ";
cin >> surname;
vector<Employee> result = database.searchBySurname(surname);
if (result.empty()) {
cout << "Співробітників з таким прізвищем не знайдено." << endl;
} else {
cout << "Результати пошуку:" << endl;
for (const Employee& employee : result) {
cout << "Прізвище: " << employee.surname << ", Ім'я: " << employee.name << ", Вік: " << employee.age << endl;
}
}
break;
}
case 4: {
int age;
cout << "Введіть вік для пошуку: ";
cin >> age;
vector<Employee> result = database.searchByAge(age);
if (result.empty()) {
cout << "Співробітників з таким віком не знайдено." << endl;
} else {
cout << "Результати пошуку:" << endl;
for (const Employee& employee : result) {
cout << "Прізвище: " << employee.surname << ", Ім'я: " << employee.name << ", Вік: " << employee.age << endl;
}
}
break;
}
case 5: {
char letter;
cout << "Введіть літеру для пошуку: ";
cin >> letter;
vector<Employee> result = database.searchByFirstLetter(letter);
if (result.empty()) {
cout << "Співробітників з прізвищами, що починаються на задану літеру, не знайдено." << endl;
} else {
cout << "Результати пошуку:" << endl;
for (const Employee& employee : result) {
cout << "Прізвище: " << employee.surname << ", Ім'я: " << employee.name << ", Вік: " << employee.age << endl;
}
}
break;
}
case 6: {
database.saveToFile();
cout << "Список співробітників успішно збережений у файл!" << endl;
break;
}
case 0:
break;
default:
cout << "Невірний вибір. Спробуйте ще раз." << endl;
break;
}
cout << endl;
} while (choice != 0);
return 0;
}