Предмет: Информатика, автор: Аноним

с++Розробка програм створення та обробки файлів

Програма створює на диску базу даних, у якій зберігається інформація про співробітників підрозділу: табельний номер, прізвище та ініціали, посада, місце народження, рік народження. Вивести список працівників, що народилися в заданому році.

Ответы

Автор ответа: vayvy8285
1

Ответ:

Объяснение:

#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;

}

Похожие вопросы