Материал: 3

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

}

cin.clear();

cin.ignore(cin.rdbuf()->in_avail());

cout << "Оклад: ";

cin >> this->month_salary;

while (cin.fail() || this->month_salary < 0)

{

cin.clear();

cin.ignore(cin.rdbuf()->in_avail());

cout << "Некорректный ввод\nОклад: ";

cin >> this->month_salary;

}

}

// Функция вывода одной записи в поток файла

void AddData(ostream& file)

{

file << this->name << endl;

file << this->position << endl;

file << this->birthday << endl;

file << this->experience << endl;

file << this->month_salary << endl;

}

// Функция вывода одной записи на экран

void AddData()

{

cout << " " << left << setw(10) << this->name << setw(5) << this->birthday << "Года рождения Стаж работы: " << this->experience

<< " Должность: " << this->position << " Оклад: " << this->month_salary << endl;

}

};

// Функция чтения данных из файла

void read(Employee* employees, int n)

{

ifstream readfile("Employees.txt");

for (int i = 0; i < n; i++)

employees[i].DataEntry(readfile);

readfile.close();

}

// Функция записи данных в файл

void write(Employee* employees, int n)

{

ofstream file("Employees.txt");

for (int i = 0; i < n; i++)

employees[i].AddData(file);

file.close();

}

// Функция вывода фамилий и стажа работы для всех работников института

void print_experience(Employee* employees, int n)

{

for (int i = 0; i < n; i++)

cout << i + 1 << ") Фамилия сотрудника: " << employees[i].name

<< " и его стаж работы: " << employees[i].experience << endl << endl;;

}

// Функция которая вычисляет средний стаж работы в институте

void average_exp(Employee* employees, int n)

{

double avg_exp = 0;

for (int i = 0; i < n; i++)

{

avg_exp += employees[i].experience;

}

cout << "Средний стаж работы в институте: " << avg_exp / n << endl << endl;;

}

// Функция вывода на экран фамилий работников, работающих в должности инженера

void engineers(Employee* employees, int n)

{

for (int i = 0; i < n; i++)

{

if (employees[i].position.compare("Инженер") == 0)

{

cout << employees[i].name << endl;

}

}

}

// Функция вывод на экран фамилий работников, начинающихся с заданной пользователем буквы

void worker_letter(Employee* employees, int n, char ch)

{

for (int i = 0; i < n; i++)

{

if (employees[i].name[0] == ch)

{

cout << employees[i].name << endl;

}

}

}

// Функция вывода на экран фамилий работников, у которых оклад > заданного пользователем числа

void best_salary(Employee* employees, int n, int number)

{

for (int i = 0; i < n; i++)

{

if (employees[i].month_salary > number)

{

cout << employees[i].name << endl;

}

}

}

// Функция которая производит замену фамилии у одного из сотрудников

void change_surname(Employee* employees, int n)

{

string surname;

int num;

cout << "Введите новую фамилию: ";

cin >> surname;

cout << "Введите номер сотрудника: ";

cin >> num;

employees[num - 1].name = surname;

}

// Функция вывода всех данных

void print_all(Employee* employees, int n)

{

for (int i = 0; i < n; i++)

{

cout << i + 1 << ") ";

employees[i].AddData();

cout << endl;

}

}

6. Результаты выполнения программы на наборе тестовых данных

Результаты работы программы показаны на рисунке 1-4.

Рисунок 1

Рисунок 2

Рисунок 3

Рисунок 4