С++ Завдання
Напишіть інформаційну систему «Співробітники». Програма має забезпечувати введення даних,
редагування даних співробітника, видалення співробітника, пошук співробітника за прізвищем, вивід інформації
про всіх співробітників зазначеного віку, або прізвище
яких починається на зазначену літеру. Організуйте можливість збереження знайденої інформації у файл. Також
весь список співробітників зберігається у файл (при
виході з програми — автоматично, у процесі виконання
програми — за командою користувача). При старті програми відбувається завантаження списку співробітників
із зазначеного користувачем файлу.
Ответы на вопрос:
Відповідь:
якщо правильно все зрозумів то так:
Пояснення:
#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;
}
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
fhtyf29.01.2020 03:10
-
Zebra141131.08.2022 15:55
-
mneo9811.06.2020 00:59
-
samiragubai03.04.2022 21:43
-
nikkun8014.10.2021 06:37
-
кот155524.11.2021 10:31
-
vmyasnikova25.03.2022 21:44
-
dididididdd18.10.2022 04:19
-
yegor65501.10.2021 11:22
-
НикаиВикаСестры111003.12.2020 11:39
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.