}
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;
}
}
Результаты работы программы показаны на рисунке 1-4.
Рисунок 1
Рисунок 2
Рисунок 3
Рисунок 4