Файл: Курсовая работа Web, Матвиенко. Вариант 0033.doc

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

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

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

Добавлен: 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 – счётчик цикла