ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.05.2024
Просмотров: 79
Скачиваний: 0
if (Kolichestvo==0)
{
printf("\nБаза полностью удалена. ");
system("pause");
break;
};
while(1)
{
printf("\n\nКакую строку нужно удалить (введите номер от 1 до %d)? ", Kolichestvo);
gets(bufer);
// Проверка:
// 1) введеные символы должны быть цифрами
// 2) номер строки не должен выходить за границы базы
if ( (isdigit(bufer[0])!=0 && isdigit(bufer[1])!=0 ) || (isdigit(bufer[0])!=0 ) )
{
Nomer=atoi(bufer);
if (Nomer>Kolichestvo || Nomer==0)
printf("Данная строка не существует. Повторите ввод.");
else break;
}
else
{
printf("\nВведены неверные данные. Повторите ввод.");
};
};
for (i=Nomer; i<Kolichestvo; i++)
{
Baza[i]=Baza[i+1];
};
// Последняя структура осталась, но мы на нее не будем смотреть при заполнении файла
Kolichestvo=Kolichestvo-1;
// Даю возможность закончить заполнения базы по нажатию ESC
printf("Для продолжения нажмите любую клавишу, для окончания нажмите Ecs");
konec = _getch();
if (konec == 27) { printf("\n\n\n\n\n\n\n"); break; };
}
// Записываю обновлённый массив в файл
ZapisMassivaVFayl(Kolichestvo);
}
//*********************************************************************************
// Вывод базы данных на экран
void Menu5()
{
printf ("\n\n\t\t\t\t\t\tБаза данных\n");
printf ("_______________________________________________________________________________________________________\n");
printf (" | | | | |");
printf ("\n № |\t ФИО работодателя\t |\t Профессия\t | Вакансий\t| Зарплата\t\t |\n");
printf ("____|________________________________|_____________________________|____________|_____________________|");
// K – количество структур в базе данных
// i – порядковый номер выводимой структуры
int K,i;
K=ChtenieMassivaIzFayla();
for (i=1; i<=K; 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 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 – счётчик цикла