Подключаемые модули программы
Модули создания собственной консоли:
1.Файл konsol.Cpp
#include "konsol.h"
//функции создания консоlи
//выходных параметров нет,входной параметр - out
void konsol(HANDLE out)
{
//1.переменные - размер для будущей консоли
int kolX=79; //по ширине
int kolY=30; //по высоте
//2. освободить системную консоль
FreeConsole();
//и запросить у системы свою консоль - это ресурс
AllocConsole();
//3. Изменить название своей консольи (консольного окна)
SetConsoleTitle(L"работники предприятия");
//4. Задать размеры окна консоли
SMALL_RECT windowSize = {0, 0, kolX, kolY};
// и установить их для своей консоли
SetConsoleWindowInfo(out, TRUE, &windowSize);
//5. Задать размер координатной сетки (буфера)-
// это - максимальный размер при развертывании окна.
COORD bufferSize = {kolX+1, kolY+1};
// И изменить размер буффера консольного окна:
SetConsoleScreenBufferSize(out, bufferSize);
}
WORD GetVK_Symbol(HANDLE in)
{
WORD Wch1=0;
INPUT_RECORD InpR;
DWORD count_rec;
ReadConsoleInput(in,&InpR,1,&count_rec);
if(InpR.EventType==KEY_EVENT)
{
if(InpR.Event.KeyEvent.bKeyDown){Wch1=InpR.Event.KeyEvent.wVirtualKeyCode;}
}
return Wch1;
}
2.Файл konsol.H
#ifndef KONSOL_H
#define KONSOL_H
#include <windows.h>
void konsol(HANDLE out);
WORD GetVK_Symbol(HANDLE in);
#endif
3.Файл function.Cpp
#include "fuction.h"
#include <windows.h>
//функция создания меню
//входные параметры :кол-во переменных N,и мкассив меню menu *mn
void sdmenu(int N, menu *mn)
{
int i,shag=0;
strcpy_s(mn[0].hel,70,"F1 показать все данные\n");
strcpy_s(mn[1].hel,70,"F2 показать молодых специалистов\n");
strcpy_s(mn[2].hel,70,"F3 показать средний оклад по предприятию\n");
strcpy_s(mn[3].hel,70,"F4 показать зарплату по предприятию,в зависимости от стажа\n");
strcpy_s(mn[4].hel,70,"F5 показать сотрудника с максимальным стажем\n");
strcpy_s(mn[5].hel,70,"F10 выход из программы");
for(i=0; i<N; i++)
{
mn[i].svet=0xe9;
mn[i].x=0;
shag=shag+30;
mn[i].y=30;
}
};
//показать меню
//входные параметры :кол-во переменных N,и мкассив меню menu *mn
void pokazmenu(int N, menu *mn,HANDLE out)
{
//читска всего экрана
system("cls");
COORD XY;
int i=0;
SetConsoleTextAttribute(out,mn[i].svet);
XY.X=0;
XY.Y=25;
SetConsoleCursorPosition(out,XY);
//печать в цвете
for(int i=0; i<N; i++)
{
printf_s("%s",mn[i].hel);
}
}
//===================================== описания собственных функций =====================================
//функция вывода масссива структуры
void vivod(Pred *vmc,int kol,HANDLE out)
{
//подготовка-очистка экрана для новой записи
COORD XY;
int i=0;
SetConsoleTextAttribute(out,0);
XY.X=0;
XY.Y=5;
SetConsoleCursorPosition(out,XY);
for( i=0; i<15; i++)
for(int j=0; j<77;j++)
{
putchar(' ');
}
//вывод данной функции в цвете
i=0;
SetConsoleTextAttribute(out,0x17);
XY.X=0;
XY.Y=5;
SetConsoleCursorPosition(out,XY);
//**********************************************
//работа функции
printf_s("%15s%15s%15s%15s%15s \n","ф.и.о.","должность","год рожд.","оклад","стаж");
for( i=0; i<77; i++) putchar('='); vk;
for( i=0; i<10; i++)
{
printf_s("%15s%15s%15d%15.2f%15d \n",vmc[i].nam,vmc[i].dolzh,vmc[i].year,vmc[i].oklad,vmc[i].stazh);
}vk;vk;
}
//а)функция определения и вывода молодых специалистов
void msp(Pred *vmc,int kol,HANDLE out)
{
//подготовка-очистка экрана для новой записи
COORD XY;
int i=0;
SetConsoleTextAttribute(out,0);
XY.X=0;
XY.Y=5;
SetConsoleCursorPosition(out,XY);
for( i=0; i<15; i++)
for(int j=0; j<77;j++)
{
putchar(' ');
}
//вывод данной функции в цвете
i=0;
SetConsoleTextAttribute(out,0x17);
XY.X=0;
XY.Y=5;
SetConsoleCursorPosition(out,XY);
//**********************************************
printf_s("молодые специалисты");vk;
int voz,prizn=0;
for(int i=0; i<10; i++)
{
voz=2012-vmc[i].year;
if(voz<25)
{
printf_s("%15s",vmc[i].nam);
prizn=1;
}
}vk;
if(prizn==0) printf_s("-------- отсутствуют\n");
vk;vk;
}
//б) функция определение и вывода среднего оклада по предприятию и вывода фамилии и должности,
// чей оклад меньше среднего значения
void srokl(Pred *vmc,int kol,HANDLE out)
{
//подготовка-очистка экрана для новой записи
COORD XY;
int i=0;
SetConsoleTextAttribute(out,0);
XY.X=0;
XY.Y=5;
SetConsoleCursorPosition(out,XY);
for( i=0; i<15; i++)
for(int j=0; j<77;j++)
{
putchar(' ');
}
//вывод данной функции в цвете
i=0;
SetConsoleTextAttribute(out,0x17);
XY.X=0;
XY.Y=5;
SetConsoleCursorPosition(out,XY);
//**********************************************
float sr=0;
printf_s("определение среднего оклада по предприятию,чей оклад меньше среднего значения");
printf_s("%15s%15s%15s%15s \n","ф.и.о.","оклад","сред.оклад","должность");
for(int i=0; i<kol; i++)
{
sr= sr+vmc[i].oklad;
}
sr = sr/kol;
for(int i=0; i<kol; i++)
{
if(vmc[i].oklad < sr)
{
printf_s("%15s%15.2f%15.2f%15s \n",vmc[i].nam,vmc[i].oklad,sr,vmc[i].dolzh);
}
}vk;vk;vk;
}
//в)функция определение и вывода зарплаты сотрудников
void zarpt(Pred *vmc,int kol,HANDLE out)
{
//подготовка-очистка экрана для новой записи
COORD XY;
int i=0;
SetConsoleTextAttribute(out,0);
XY.X=0;
XY.Y=5;
SetConsoleCursorPosition(out,XY);
for( i=0; i<15; i++)
for(int j=0; j<77;j++)
{
putchar(' ');
}
//вывод данной функции в цвете
i=0;
SetConsoleTextAttribute(out,0x17);
XY.X=0;
XY.Y=5;
SetConsoleCursorPosition(out,XY);
//**********************************************
printf_s("определение зарплаты сотрудников\n");
printf_s("%15s%15s%15s%15s \n","ф.и.о.","оклад","надбавка","зарплата");
for(int i=0; i<65; i++) putchar('='); vk;
for(int i=0; i<kol; i++)
{
if(vmc[i].stazh>10 && vmc[i].stazh<20)
{
vmc[i].zarpt=vmc[i].oklad+vmc[i].oklad/100*10;
printf_s("%15s%15.1f%15.1f%15.1f\n",vmc[i].nam,vmc[i].oklad,vmc[i].oklad/100*10,vmc[i].zarpt );
}
if(vmc[i].stazh>20)
{
vmc[i].zarpt=vmc[i].oklad+vmc[i].oklad/100*15;
printf_s("%15s%15.1f%15.1f%15.1f\n",vmc[i].nam,vmc[i].oklad,vmc[i].oklad/100*15,vmc[i].zarpt );
}
}vk;vk;
}
//г)функция определение и вывода сотрудника с максимальным стажем
void stazhmax(Pred *vmc,int kol,HANDLE out)
{
//подготовка-очистка экрана для новой записи
COORD XY;
int i=0;
SetConsoleTextAttribute(out,0);
XY.X=0;
XY.Y=5;
SetConsoleCursorPosition(out,XY);
for( i=0; i<15; i++)
for(int j=0; j<77;j++)
{
putchar(' ');
}
//вывод данной функции в цвете
i=0;
SetConsoleTextAttribute(out,0x17);
XY.X=0;
XY.Y=5;
SetConsoleCursorPosition(out,XY);
//**********************************************
printf_s("определение сотрудника с максимальным стажем");vk;
int max,im=0;
max=vmc[0].stazh;
for(int i=0; i<kol; i++)
{
if(vmc[i].stazh>max)
max=vmc[i].stazh;
im=i;
}vk;
printf_s("%15s===%d",vmc[im].nam,max);
vk;vk;
}
