Файл: Курсовая работа. Матвиенко. Вариантk 018__.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.05.2024

Просмотров: 67

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

// Отступаю место перед выводом меню

printf ("\n\n\n\n\n\n\n\n");

}

//*********************************************************************************

// Вывод списка работодателей и средней зарплаты по профессии

void Menu6()

{

// Kolichestvo – количество структур в базе данных

// i,j – счетчики цикла

// NomProf – номер профессии (для вывода на экран)

// konec – признак конца подпрограммы

int Kolichestvo,K,i,j,NomProf=1,konec;

char Professiya[28], bufer[4];

// Spisok – список профессий с указанием количества рабочих мест (размер пока равен размеру основной базы)

// bufer – временная структура для перекладки при сортировке

Zapis Spisok[100];

Kolichestvo = ChtenieMassivaIzFayla();

gets(bufer);

while(1)

{

printf("\nВведите профессию: ");

gets(Professiya);

for (i=1, j=0; i<=Kolichestvo; i++)

if ( strcmp(Professiya,Baza[i].Professiya) == 0)

{

j++;

printf ("\n%2d |\t %-26s |\t%4.2f\t|",j, Baza[i].Rabotodatel, Baza[i].Zarplata);

}

if (j==0) printf ("\nК сожалению, данная профессия отсутствует в базе.");

// Даю возможность закончить заполнения базы по нажатию ESC

printf("\nДля продолжения нажмите любую клавишу, для окончания нажмите Ecs\n");

konec = _getch();

if (konec == 27) { printf("\n\n\n\n\n\n\n"); break; };

}

}

//*********************************************************************************

// Вывод списка профессий в порядке возрастания рабочих мест

void Menu7()

{

// Kolichestvo – количество структур в основной базе Baza

// K – количество структур во вспомогательной базе Spisok

// i,j – счетчики цикла

int Kolichestvo,K,i,j;

Kolichestvo = ChtenieMassivaIzFayla();

// Spisok – список профессий с указанием количества рабочих мест (размер пока равен размеру основной базы)

// bufer – временная структура для перекладки при сортировке


Zapis Spisok[100],bufer;

// Сортирую базу по профессиям

Sortirovka(2, Kolichestvo);

// Заполняю вспомогательную базу Spisok профессиями и количеством рабочих мест (профессии не повторяются, раб. места суммарные)

Spisok[1]=Baza[1];

for (i=2, K=1; i<=Kolichestvo; i++)

{

if ( strcmp(Baza[i].Professiya,Baza[i-1].Professiya) == 0)

Spisok[K].KolRabMest=Spisok[K].KolRabMest+Baza[i].KolRabMest;

else

{

K++;

Spisok[K]=Baza[i];

}

}

// Сортировка вспомогательной базы Spisok по количеству рабочих мест

for (i=1; i<=K; i++)

for (j=K; j>1; j--)

if ( Spisok[j].KolRabMest < Spisok[j-1].KolRabMest )

{

bufer=Spisok[j];

Spisok[j]=Spisok[j-1];

Spisok[j-1]=bufer;

};

printf ("\n\n\t\t База данных\n");

printf ("________________________________________________\n");

printf (" | | |");

printf ("\n № |\t Профессия\t | Вакансий\t|\n");

printf ("____|________________________________|__________|");

for (i=1; i<=K; i++)

{

printf ("\n | | |");

printf ("\n%3d |\t %-26s |\t %-7d|", i, Spisok[i].Professiya, Spisok[i].KolRabMest);

printf ("\n____|________________________________|__________|");

}

printf("\n\n Для продолжения нажмите любую клавишу");

_getch();

// Отступаю место перед выводом меню

printf ("\n\n\n\n\n\n\n\n");

}

//*********************************************************************************

// Вывод списка работодателей и количества рабочих мест по специальностям

void Menu8()

{

// Kolichestvo – количество структур в базе данных

// i,j – счетчики цикла

// NomProf – номер профессии (для вывода на экран)

int Kolichestvo,K,i,j,NomProf=1;

Kolichestvo = ChtenieMassivaIzFayla();

// Сортирую базу по профессиям

Sortirovka(2, Kolichestvo);

printf ("\n\n\tСписок работодателей и количества рабочих мест по специальносям\n");

printf ("________________________________________________________________________________");


printf ("\n | | | |");

printf ("\n № |\t Профессия\t |\t ФИО работодателя\t | Вакансии |");

printf ("\n____|________________________________|_______________________________|__________|");

printf ("\n | | | |");

printf ("\n%3d |\t %-26s |\t %-28s|\t%-7d\t|",NomProf, Baza[1].Professiya, Baza[1].Rabotodatel, Baza[1].KolRabMest);

printf ("\n____|________________________________|_______________________________|__________|");

for (i=2; i<=Kolichestvo; i++)

{

printf ("\n | | | |");

// Условное затирание повторяющейся профессии

if ( strcmp(Baza[i].Professiya,Baza[i-1].Professiya) == 0)

{printf ("\n |\t %-26s |\t %-28s|\t%-7d\t|", Baza[0].Professiya, Baza[i].Rabotodatel, Baza[i].KolRabMest);}

else {NomProf++; printf ("\n%3d |\t %-26s |\t %-28s|\t%-7d\t|", NomProf, Baza[i].Professiya, Baza[i].Rabotodatel, Baza[i].KolRabMest);};

printf ("\n____|________________________________|_______________________________|__________|");

}

printf("\n\n\t\t Для продолжения нажмите любую клавишу");

_getch();

// Отступаю место перед выводом меню

printf ("\n\n\n\n\n\n\n\n");

}

//*********************************************************************************

// Вывод предложений о трудоустройстве по заработной плате

void Menu9()

{

// K – количество структур в базе данных

// i – порядковый номер выводимой структуры

int Kolichestvo, i;

Kolichestvo = ChtenieMassivaIzFayla();

Sortirovka(4, Kolichestvo);

printf ("\n\n\t\t\t\t\t\tБаза данных\n");

printf ("_______________________________________________________________________________________________________\n");

printf (" | | | | |");

printf ("\n № |\t ФИО работодателя\t |\t Профессия\t | Вакансий\t| Зарплата\t\t |\n");

printf ("____|________________________________|_____________________________|____________|_____________________|");

for (i=1; i<=Kolichestvo; i++)

{

printf ("\n | | | | |");

printf ("\n%3d |\t %-28s|\t %-26s|\t %-7d|\t%4.2f\t |", i, Baza[i].Rabotodatel, Baza[i].Professiya, Baza[i].KolRabMest, Baza[i].Zarplata);

printf ("\n____|________________________________|_____________________________|____________|_____________________|");

}


printf("\n\n\t\t\t\tДля продолжения нажмите любую клавишу");

_getch();

// Отступаю место перед выводом меню

printf ("\n\n\n\n\n\n\n\n");

}

//*********************************************************************************

void Nachalo()

{

initwindow (600, 350);

setcolor(15);

floodfill (0, 0, 2);

setbkcolor (15);

setcolor (3);

settextstyle(BOLD_FONT,0,4);

outtextxy (140, 80, "Matvienko Bogdan”);

settextstyle(BOLD_FONT,0,3);

outtextxy (220, 140, "Variant: 0018”);

setcolor (8);

settextstyle(SIMPLEX_FONT,0,1);

outtextxy (60, 250, "Dlya nachala raboti s programmoi najmite Enter...”);

getch();

closegraph();

}

//*********************************************************************************

void Vihod()

{

initwindow (600, 350);

setcolor(15);

floodfill (0, 0, 2);

setbkcolor (15);

setcolor (3);

settextstyle(SIMPLEX_FONT,0,1);

outtextxy (150, 150, "Konec raboti s programmoi...");

getch();

closegraph();

}

//*********************************************************************************

//*********************************************************************************

// Вспомогательные подпрограммы (обслуживаю основные подпрограммы)

//*********************************************************************************

// Заполнение с экрана глобальной переменной Strochka

void VvodStrockiSEkrana()

{

// bufer[29] – переменная для начального ввода всех значений (до проверки их корректности)

// dengi[6] – зарплата в текстовом формате без точки

char bufer[29], dengi[6];

// i – счётчик цикла

// kolichestvo – количество прошедших проверку символов (используется при проверке чисел)

int i, kolichestvo;

// Ввод работодателя с проверкой

while (1)

{

printf("\nРаботодатель \t\t\t- \t");

gets(bufer);

if (strlen(bufer)==0)

{

printf("Вы ничего не ввели. Повторите ввод.");


}

else

{

if (strlen(bufer)>28)

{ printf("Слишком большой текст. Сформулируйте короче.\n"); }

else

{

for (i=0; i<strlen(bufer); i++)

{

Strochka.Rabotodatel[i]=bufer[i];

}

if (strlen(bufer)<28) Strochka.Rabotodatel[strlen(bufer)]='\0';

break;

}

};

}

// Ввод профессии с проверкой

while (1)

{

printf("Профессия \t\t\t- \t");

gets(bufer);

if (strlen(bufer)==0)

{

printf("Вы ничего не ввели. Повторите ввод.\n");

}

else

{

if (strlen(bufer)>28)

{ printf("Слишком большой текст. Сформулируйте короче.\n"); }

else

{

for (i=0; i<strlen(bufer); i++)

{

Strochka.Professiya[i]=bufer[i];

}

if (strlen(bufer)<28) Strochka.Professiya[strlen(bufer)]='\0';

break;

}

};

}

// Ввод количества рабочих мест с проверкой

while (1)

{

printf("Кол-во рабочих мест \t\t- \t");

gets(bufer);

kolichestvo=0;

for (i=0; i<strlen(bufer); i++)

{

if ( isdigit(bufer[i]) == 0 )

{

printf("Вы ввели не число. Такого количества рабоих мест быть не может. Повторите ввод.\n");

break;

}

else

{ kolichestvo = kolichestvo+1; }

}

if ( strlen(bufer) > 3 && kolichestvo==strlen(bufer) )

{

printf("В стране безработица. Среди работодателей Украины нет Рокфеллера. Введите реальное число.\n");

}

if ( strlen(bufer) <= 3 && kolichestvo==strlen(bufer) )

{