Загрузка...

Файлы + структуры . HELP с задачей пж.

Тема в разделе C/C++ создана пользователем Cycling228 8 дек 2019. 162 просмотра

Загрузка...
  1. Cycling228
    Cycling228 Автор темы 8 дек 2019 2 9 ноя 2019
    Написать программу, которая выводит на экран информацию в отношении сотрудников частной клиники. Каждая структура содержит поля: фамилия врача, специализация, стаж работы. Определить: список врачей по специальности Х с указанием стажа работы; средний стаж сотрудников клиники. Специализация Х вводится по запросу с клавиатуры

    1. Реализовать следующие функции:
    1.1 Инициализация элементов массива:
    а) с клавиатуры;
    б) из файла;
    1.2 Вывод элементов массива на экран.
    1.3 Запись элементов массива в файл.
    1.4 Выборка записей из файла и вывод их на экран, согласно критерию (каждая выборка реализована в отдельной функции).
     
  2. openfragus
    openfragus 11 дек 2019 15 22 фев 2017
    Код
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    #include <vector>
    #include <fstream>
    #include <Windows.h>
    using namespace std;

    struct WorkerClinics{//Структура сотрудников клиники
    string surname;
    string specialization;
    int experience;
    WorkerClinics(string surname,string specialization,int experience){
    this->surname=surname;
    this->specialization=specialization;
    this->experience=experience;
    }
    };
    void OutputWorker(vector<WorkerClinics>& list){//Функция вывода сотрудников
    for(int i =0;i<list.size();i++){
    cout<<"Фамилия Сотрудника -> "<<list[i].surname<<endl;
    cout<<"Специализация Сотрудника ->"<<list[i].specialization<<endl;
    cout<<"Опыт Сотрудника -> "<<list[i].experience<<endl;
    }
    }
    void InputVectorInformation(vector<WorkerClinics>& list){//Функция инициализации елементов
    cout<<"Введите количество сотрудников частной клиники\n";
    int count;string surname,specialization;int experience;
    cin>>count;
    cout<<"Заполняем информацию о сотрудниках\n";
    for(int i =0 ;i<count;i++){
    cout<<"Введите фамилию сотрудника -> \n";
    cin>>surname;
    cout<<"Введите специализацию сотрудника ->\n";
    cin>>specialization;
    cout<<"Введите опыт сотрудника -> \n";
    cin>>experience;
    list.push_back(WorkerClinics(surname,specialization,experience));
    }
    }
    void WritetoFile(vector<WorkerClinics>& work,vector<WorkerClinics>& listWorkerSpeciality){//Функция записи списка врачей и списка врачей специальности X
    cout<<"Запись елементов в файл (списка врачей и списка по специальности X)"<<endl;
    ofstream worker_file("information.dat");
    worker_file<<"Список Работников Клиники"<<endl;
    for(int i =0 ;i<work.size();i++){
    worker_file<<"Фамилия Сотрудника: "<<work[i].surname<<endl;
    worker_file<<"Специализация Сотрудника: "<<work[i].specialization<<endl;
    worker_file<<"Стаж работы Сотрудника: "<<work[i].experience<<" лет"<<endl;
    worker_file<<"--------------------------------------"<<endl;
    }
    worker_file<<"Список Работников Клиники по Специализации X"<<endl;
    for(int i =0 ;i<listWorkerSpeciality.size();i++){
    worker_file<<"Фамилия Сотрудника: "<<listWorkerSpeciality[i].surname<<endl;
    worker_file<<"Специализация Сотрудника: "<<listWorkerSpeciality[i].specialization<<endl;
    worker_file<<"Стаж работы Сотрудника: "<<listWorkerSpeciality[i].experience<<" лет"<<endl;
    worker_file<<"--------------------------------------"<<endl;
    }
    worker_file.close();
    }
    void CreateNewList(vector<WorkerClinics>& work,vector<WorkerClinics>& listWorkerSpeciality)//Функция определения списка врачей по специальности Х с указанием стажа работы
    {
    cout<<"Определяем новый список по специализации X\n";
    cout<<"Введите специализацию Сотрудника X\n";
    string speciality;
    cin>>speciality;
    for(int i =0;i<work.size();i++){
    if(work[i].specialization==speciality) listWorkerSpeciality.push_back(work[i]);
    }
    }
    void ReadFromFile(string line,vector<WorkerClinics>& listWorker){//Читаем данные из файла
    ifstream date_worker(line);
    string information;
    cout<<"Работаем с английскими символами, проблема с кодировкой на устройствах"<<endl;
    while(!date_worker.eof()){
    int experience;string surname;string specialization;
    date_worker>>surname;
    date_worker>>specialization;
    date_worker>>experience;
    listWorker.push_back(WorkerClinics(surname,specialization,experience));
    }
    }
    int main(){
    setlocale(LC_ALL,"RUS");
    SetConsoleCP(1251); // Ввод с консоли в кодировке 1251
    SetConsoleOutputCP(1251);
    int act;
    vector<WorkerClinics> listWorker;
    vector<WorkerClinics> listWorkerspecialityx;
    cout<<"Как вы хотите заполнить вектор? \n 1 - с клавиатуры\n 2 - из файла\n";
    cin>>act;
    switch(act){
    case 1:
    {
    InputVectorInformation(listWorker);
    OutputWorker(listWorker);
    CreateNewList(listWorker,listWorkerspecialityx);
    cout<<"Новый сформированный список по специальности X\n";
    OutputWorker(listWorkerspecialityx);
    WritetoFile(listWorker,listWorkerspecialityx);
    break;
    }
    case 2:
    {
    cout<<"Заполняем данные с файла, он должен лежать рядом с файлом"<<endl;
    cout<<"Введите название файла с расширением"<<endl;
    string line;
    cin>>line;
    ReadFromFile(line,listWorker);
    OutputWorker(listWorker);
    CreateNewList(listWorker,listWorkerspecialityx);
    cout<<"Новый сформированный список по специальности X\n";
    OutputWorker(listWorkerspecialityx);
    WritetoFile(listWorker,listWorkerspecialityx);
    break;
    }
    default:{
    cout<<"Перезапустите программу еще раз, произошла ошибка\n";
    }
    }
    getchar();
    system("pause");
    return 0;
    }
    --- Сообщение объединено с предыдущим 11 дек 2019
    [IMG]
    --- Сообщение объединено с предыдущим 11 дек 2019
    [IMG]
    --- Сообщение объединено с предыдущим 11 дек 2019
    [IMG]
    --- Сообщение объединено с предыдущим 11 дек 2019
    [IMG]
    --- Сообщение объединено с предыдущим 11 дек 2019
    [IMG]
     
  3. Cycling228
    Cycling228 Автор темы 14 дек 2019 2 9 ноя 2019
    openfragus, Спасибо тебе добрый человек !!!!!Спас "жизнь"
     
Top