ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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) )
{