Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
листинг программы.doc
Скачиваний:
30
Добавлен:
01.05.2025
Размер:
70 Кб
Скачать
☆

Подключаемые модули программы

Модули создания собственной консоли:

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;

}