Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- #include <iostream>
- #include <fstream>
- #include "stdio.h"
- #include <Windows.h>
- #include "time.h"
- using namespace std;
- const unsigned short int strsize = 30;
- struct worker {
- int tabnom;
- char fio[strsize];
- char dol[strsize];
- int zp;
- int stazh;
- char birthdate[strsize];
- void out() {
- cout.setf(ios::left);
- cout.width(strsize);
- cout << tabnom;
- cout.setf(ios::left);
- cout.width(strsize);
- cout << fio;
- cout.setf(ios::left);
- cout.width(strsize);
- cout << dol;
- cout.setf(ios::left);
- cout.width(strsize);
- cout << zp;
- cout.setf(ios::left);
- cout.width(strsize);
- cout << stazh;
- cout.setf(ios::left);
- cout.width(strsize);
- cout << birthdate << endl;
- }
- };
- bool isstructequal(worker w1, worker w2) {
- return (w1.tabnom == w2.tabnom) && (!strcmp(w1.fio, w2.fio)) && (!strcmp(w1.dol, w2.dol)) && (w1.zp == w2.zp) && (w1.stazh == w2.stazh);
- }
- void main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- worker w1, w2;
- char code;
- int n = 0;
- ofstream fout("data.txt", ios::binary | ios::out | ios::trunc);
- cout << "Ввести сотрудника? y - да, любой другой символ - нет" << endl;
- cin >> code;
- while (code == 'y' || code == 'у') {
- n++;
- cout << "Введите данные " << n << " сотрудника" << endl;
- cout << "Введите табельный номер сотрудника" << endl;
- cin >> w1.tabnom;
- cout << "Введите фамилию сотрудника" << endl;
- cin >> w1.fio;
- cout << "Введите должность сотрудника" << endl;
- cin >> w1.dol;
- cout << "Введите зарплату сотрудника" << endl;
- cin >> w1.zp;
- cout << "Введите стаж сотрудника" << endl;
- cin >> w1.stazh;
- cout << "Введите дату рождения сотрудника" << endl;
- cin >> w1.birthdate;
- fout.write((char*)&w1, sizeof w1);
- //cout << endl;
- cout << "Ввести сотрудника? y - да, любой другой символ - нет" << endl;
- cin >> code;
- }
- w2 = w1;
- fout.close();
- ofstream fout2("data2.txt", ios::binary | ios::out);
- int max, prevmax = INT32_MAX;
- for (int i = 0; i < n; i++) {
- ifstream fin2("data.txt", ios::binary | ios::in);
- max = 0;
- while (fin2.read((char*)&w1, sizeof w1)) {
- if (w1.stazh > max && w1.stazh < prevmax) {
- max = w1.stazh;
- }
- }
- fin2.close();
- prevmax = max;
- ifstream fin3("data.txt", ios::binary | ios::in);
- while (fin3.read((char*)&w1, sizeof w1)) {
- if (w1.stazh == max) {
- fout2.write((char*)&w1, sizeof w1);
- }
- }
- fin3.close();
- }
- fout2.close();
- remove("data.txt");
- rename("data2.txt", "data.txt");
- cout << endl;
- cout << "Выводим отсортированный по стажу файл сотрудников" << endl;
- ifstream fin4("data.txt", ios::binary | ios::in);
- cout.setf(ios::left);
- cout.width(strsize);
- cout << "Табельный №";
- cout.setf(ios::left);
- cout.width(strsize);
- cout << "Фамилия сотрудника";
- cout.setf(ios::left);
- cout.width(strsize);
- cout << "Должность";
- cout.setf(ios::left);
- cout.width(strsize);
- cout << "Оклад";
- cout.setf(ios::left);
- cout.width(strsize);
- cout << "Стаж работы";
- cout.setf(ios::left);
- cout.width(strsize);
- cout << "Дата рождения" << endl;
- while (fin4.read((char*)&w1, sizeof w1)) {
- w1.out();
- }
- cout << endl;
- fin4.close();
- int day = 28, month = 11, year = 2017;
- char f[2], g[4];
- ifstream fin5("data.txt", ios::binary | ios::in);
- int stazh;
- cout << "Введите нужную границу стажа работы" << endl;
- cin >> stazh;
- cout << endl;
- cout << "Выводим список сотрудников пенсионного возраста с стажем работы не менее " << stazh << endl;
- cout.setf(ios::left);
- cout.width(strsize);
- cout << "Табельный №";
- cout.setf(ios::left);
- cout.width(strsize);
- cout << "Фамилия сотрудника";
- cout.setf(ios::left);
- cout.width(strsize);
- cout << "Должность";
- cout.setf(ios::left);
- cout.width(strsize);
- cout << "Оклад";
- cout.setf(ios::left);
- cout.width(strsize);
- cout << "Стаж работы";
- cout.setf(ios::left);
- cout.width(strsize);
- cout << "Дата рождения" << endl;
- int q;
- while (fin5.read((char*)&w1, sizeof w1)) {
- if (w1.stazh >= stazh) {
- g[0] = w1.birthdate[6];
- g[1] = w1.birthdate[7];
- g[2] = w1.birthdate[8];
- g[3] = w1.birthdate[9];
- q = atoi(g);
- if (year - q > 64) {
- if (q == 65) {
- f[0] = w1.birthdate[3];
- f[1] = w1.birthdate[4];
- q = atoi(f);
- if (q - month > 0) {
- w1.out();
- }
- else {
- if (q == 0) {
- f[0] = w1.birthdate[0];
- f[1] = w1.birthdate[1];
- q = atoi(f);
- if (q - day >= 0) {
- w1.out();
- }
- }
- }
- }
- else {
- w1.out();
- }
- }
- }
- }
- fin5.close();
- int oklad;
- cout << endl;
- cout << "Введите нужную границу оклада" << endl;
- cin >> oklad;
- cout << endl;
- cout << "Выводим список сотрудников, оклад которых превышает указанную величину" << endl;
- ifstream fin6("data.txt", ios::binary | ios::in);
- cout.setf(ios::left);
- cout.width(strsize);
- cout << "Фамилия сотрудника";
- cout.setf(ios::left);
- cout.width(strsize);
- cout << "Должность";
- cout.setf(ios::left);
- cout.width(strsize);
- cout << "Оклад" << endl;
- while (fin6.read((char*)&w1, sizeof w1)) {
- if (w1.zp > oklad) {
- cout.setf(ios::left);
- cout.width(strsize);
- cout << w1.fio;
- cout.setf(ios::left);
- cout.width(strsize);
- cout << w1.dol;
- cout.setf(ios::left);
- cout.width(strsize);
- cout << w1.zp << endl;
- }
- }
- system("pause");
- }
Add Comment
Please, Sign In to add comment