с++Розробка програм створення та обробки файлів
Програма створює на диску базу даних, у якій зберігається інформація про співробітників підрозділу: табельний номер, прізвище та ініціали, посада, місце народження, рік народження. Вивести список працівників, що народилися в заданому році.
Ответы
Ответ:
Объяснение:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
// Структура для представлення інформації про співробітника
struct Employee {
int employeeId;
std::string fullName;
std::string position;
std::string birthplace;
int birthYear;
};
// Функція для збереження бази даних у файл
void saveDatabaseToFile(const std::vector<Employee>& database, const std::string& filename) {
std::ofstream file(filename);
if (file.is_open()) {
for (const Employee& employee : database) {
file << employee.employeeId << ","
<< employee.fullName << ","
<< employee.position << ","
<< employee.birthplace << ","
<< employee.birthYear << "\n";
}
std::cout << "Базу даних успішно збережено у файлі.\n";
} else {
std::cerr << "Помилка відкриття файлу для збереження бази даних.\n";
}
file.close();
}
// Функція для завантаження бази даних з файлу
void loadDatabaseFromFile(std::vector<Employee>& database, const std::string& filename) {
std::ifstream file(filename);
if (file.is_open()) {
database.clear(); // Очищаємо поточну базу даних перед завантаженням нових даних
Employee employee;
char comma;
while (file >> employee.employeeId >> comma
>> std::ws, std::getline(file, employee.fullName, ',')
>> std::ws, std::getline(file, employee.position, ',')
>> std::ws, std::getline(file, employee.birthplace, ',')
>> employee.birthYear) {
database.push_back(employee);
}
std::cout << "Базу даних успішно завантажено з файлу.\n";
} else {
std::cerr << "Помилка відкриття файлу для завантаження бази даних.\n";
}
file.close();
}
// Функція для виведення списку працівників, які народилися у заданому році
void printEmployeesBornInYear(const std::vector<Employee>& database, int targetYear) {
std::cout << "Список працівників, які народилися у " << targetYear << " році:\n";
for (const Employee& employee : database) {
if (employee.birthYear == targetYear) {
std::cout << "Табельний номер: " << employee.employeeId << "\n"
<< "ПІБ: " << employee.fullName << "\n"
<< "Посада: " << employee.position << "\n"
<< "Місце народження: " << employee.birthplace << "\n"
<< "Рік народження: " << employee.birthYear << "\n\n";
}
}
}
int main() {
std::vector<Employee> database;
// Додайте співробітників до бази даних (можете використовувати введення з клавіатури)
// Збереження бази даних у файл
saveDatabaseToFile(database, "database.txt");
// Завантаження бази даних з файлу
loadDatabaseFromFile(database, "database.txt");
// Виведення списку працівників, які народилися у заданому році
int targetYear;
std::cout << "Введіть рік: ";
std::cin >> targetYear;
printEmployeesBornInYear(database, targetYear);
return 0;
}