
Листинг программы
“Работники предприятия”
Управляющий файл программы tmp.cpp
/*.Задача 1: Создать массив структур из 10 элементов.
Задача 2:Сформировать двоичный файл, записав в него всю известную информацию о каждом сотруднике.
Задача 3:Считать из файла массив структур в динамическую память.
Задача 4:Выполнить:
a) определение молодых специалистов, чей возраст моложе 25 лет,
б) определение среднего оклада по предприятию и вывода фамилии и должности,
чей оклад меньше среднего значения,
в) определение зарплаты для каждого сотрудника, плюсуя 10% к окладу, если стаж более 10 лет, и 15% - если более 20 лет,
г) определение сотрудников, чей стаж на предприятии максимальный,
записать в текстовый файл информацию о каждом сотруднике: фамилию, должность, зарплату.
*/
//-------------------подключение библиотек------------------------
#include <windows.h>
#include <stdio.h> //функции ввода - вывода
#include <stdlib.h> //стандартные функции (для функции srand)
#include <locale.h> //для функциий знакогенерации
#include <string.h>
#include <ctype.h>
#include <time.h> //для функций, работающих со временем
//объявление подстановок для компилятора
#define vk printf_s("\n") //там, где встретится выражение vk;
//компилятор сам подставит функцию printf_s("\n");
#define n 10 //вместо символа N будет подстановка число 10
#include "fuction.h"
#include "konsol.h"
//======================================================================
int main()
{ //начало блока функции main
//установка нужной кодовой страницы (для печати русскими буквами)
setlocale(LC_ALL,"Russian");
//определить дескрипторы каналов ввода/вывода
HANDLE in, out; //ввод/вывод
in = GetStdHandle(STD_INPUT_HANDLE);
out = GetStdHandle(STD_OUTPUT_HANDLE);
//вызов функции создания консоlи
konsol(out);
//созд. меню
menu Mas_menu[6];
sdmenu(6, Mas_menu);
//показ. меню
pokazmenu(6, Mas_menu,out);
time_t t;//переменная t типа time_t, нужна для получения значения времени
srand((int)time(&t));//вызывается функция, которая возвращает календарное время.
//Это значение будет стартовой точкой для последовательности, генерируемой функцией rand()
//создаём базу данных
int N=n;
unsigned i,j; //вспомогательные переменные
char nam[n][30]={"чечета д.а.","сидоров а.с.","дуров п.п.","рычагов н.и.","романов н.и.","сапоженко н.и.","бутаков н.и.","зимакова д.с.","петров н.и.","селезнёв н.а."};
char dolzh[n][40]={"начальник","бугалтер","монтажник","монтажник","монтажник","монтажник","монтажник","монтажник","монтажник","монтажник"};
Pred vmc[n];
for(i=0; i<n; i++)
{
for(j=0; j<30; j++)
{
vmc[i].nam[j]=nam[i][j];
vmc[i].dolzh[j]=dolzh[i][j];
}
vmc[i].year=(int)(rand()%40+1950);
vmc[i].stazh=(int)(rand()%10+15);
vmc[i].oklad=(float)(rand()%10000+1000);
}
//FILE *fout;
//fopen_s(&fout,"G:\basa.bas","wb");
//if(fout==NULL)
//{
// printf_s("не откр");
// return 0;
//}
//for(i=0; i<n; i++)
// fprintf_s(fout,"%15s",vmc);
// fclose(fout);
//FILE *fin;
//fopen_s(&fout,"G:\basa.bas","rb");
// if(fin==NULL)
// {
// printf_s("не откр");
// return 0;
// }
//for(i=0; i<n; i++)
// fread(&vmc,sizeof(Pred),N,fin);
// fclose(fin);
//ввыводим меню вызова функций
WORD ch1=1;
while(ch1!=VK_F10)
{
ch1=GetVK_Symbol(in);
switch(ch1)
{
case VK_F1: vivod(vmc,N,out); break; //вызов функции определения и вывода массива структуры
case VK_F2: msp(vmc,N,out); break;//а) //вызов функции определения и вывода молодых специалистов
case VK_F3: srokl(vmc,N,out); break;//б)вызов функции определение и вывода среднего оклада по предприятию и вывода фамилии и должности,
// чей оклад меньше среднего значения
case VK_F4: zarpt(vmc,N,out); break;//в) //вызов функции определения и вывода зарплаты
case VK_F5: stazhmax(vmc,N,out); break;
default:;
}//switch
}//while
FreeConsole();
return 0;
} //конец блока функции main