ГЛАВА 4 СХЕМЫ АЛГОРИТМОВ РАБОТЫ ПРИЛОЖЕНИЯ  Выше представлена схема функции поиска отдела по количеству работников в нем. Код данной функции: void searchByNumberOfWorkers(department *head) { system("cls"); printf("ПОИСК ОТДЕЛА ПО КОЛИЧЕСТВУ РАБОТНИКОВ\n"); int numberOfWorkers; printf("Введите количество работников: "); scanf("%d", &numberOfWorkers); department *tempPtr = head; system("cls"); printTableD(); while (tempPtr != NULL) { if (tempPtr->numberOfWorkers == numberOfWorkers) { printDepartment(tempPtr); } tempPtr = tempPtr->next; } system("pause"); return; } Где функция void printTableD() создает шапку таблицы данных. Код данной функции : void printTableD() { for (int i = 0; i < 90; ++i) printf("-"); printf("\n|Название отдела"); for (int i = 0; i < 9; i++) printf(" "); printf("|Количество работников"); for (int i = 0; i < 8; i++) printf(" "); printf("|id отдела"); for (int i = 0; i < 19; i++) printf(" "); printf("|\n"); for (int i = 0; i < 90; ++i) printf("-"); printf("\n"); }  Выше представлена схема функции поиска работника по его фамилии и отделу, в котором он числится. Код данной функции: void searchBySurnameDept(department *head) { system("cls"); printf("ПОИСК РАБОТНИКА ПО ФАМИЛИИ И ОТДЕЛУ\n"); char surname[20], Department[20]; printf("Введите фамилию: "); scanf("%s", &surname); printf("Введите отдел: "); scanf("%s", &Department); department *tempDept = head; worker *tempW; system("cls"); printTableW(); while (tempDept != NULL) { if (strcmp(tempDept->departmentName, Department) == 0) { tempW = tempDept->workers; while (tempW != NULL) { if (strcmp(tempW->workerSurname, surname) == 0) { printWorker(tempDept, tempW); } tempW = tempW->next; } } tempDept = tempDept->next; } system("pause"); return; }  Схема функции основного меню Выше представлена схема функции основного меню. Код данной функции: int main() { SetConsoleOutputCP(1251); SetConsoleCP(1251); char a, b; department *head = NULL; mainMenu(head); return 0; } void mainMenu(department *head) { while (true) { switch (menu(1)) { case 1: if (checkAdmin() == false) { printf("Данные аутентификации были введены не верно.\n"); system("pause"); } else adminMenu(head); break; case 2: if (checkUser() == false) { printf("Данные аутентификации были введены не верно.\n"); system("pause"); } else userMenu(head); break; case 0: return; default: printf("Ошибка ввода.\n"); system("pause"); break; } } } bool checkAdmin() { FILE *adminFile; char login[20], password[20], rightLogin[20], rightPassword[20]; system("cls"); adminFile = fopen("adminData.txt", "r+"); printf("Введите логин: "); scanf("%s", &login); printf("Введите пароль: "); scanf("%s", &password); fscanf(adminFile, "%s ", &rightLogin); fscanf(adminFile, "%s", &rightPassword); if (strcmp(login, rightLogin) == 0 && strcmp(password, rightPassword) == 0) { fclose(adminFile); return true; } fclose(adminFile); return false; } bool checkUser() { users *usersPtr = NULL; readUsers(&usersPtr); char login[20], password[20]; system("cls"); printf("Введите ваш логин: "); scanf("%s", &login); printf("Введите ваш пароль: "); scanf("%s", &password); while (usersPtr != NULL) { if (strcmp(usersPtr->login, login) == 0 && strcmp(usersPtr->password, password) == 0) return true; else usersPtr = usersPtr->next; } return false; } |