ГЛАВА 3 ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ ПРИЛОЖЕНИЯ Ниже представлено объявление прототипов функций, используемых в данной курсовой работе. int main(); int menu(int); void mainMenu(department*); void adminMenu(department*); void addMenu(department**); void editMenu(department**); void deleteMenu(department**); void printMenu(department*); void searchMenu(department*); void workWithUsers(); bool checkUser(); bool checkAdmin(); void addDepartment(department**); void addWorker(department**); void changeSurname(department**); void changeName(department**); void changeSecondName(department**); void changePost(department**); void changeSalary(department**); void changeExperience(department**); void changeDepartmentName(department**); void changePersonnelNumber(department**); void deleteWorker(department**); void deleteDepartment(department**); void printTableD(); void printDepartments(department*); void printTableW(); void printWorkers(department*); void readUsers(users**); void writeUsers(users*); void printDepartment(department*); void printWorker(department*, worker*); void searchByNumberOfWorkers(department*); void searchByDepartmentName(department*); void searchDeptById(department*); void searchByNameSurname(department*); void searchBySurnameDept(department*); void searchByPostSurname(department*); void searchWorkerById(department*); void userMenu(department*); int choiceDepartment(department*); int choiceWorker(worker*); void makeSalaryList(department*); void writeFile(department*); void readFile(department**); void activate(users**); void ban(users**); int main(); основная функция. С нее начинается выполнение программы. При входе в программу вызывается функция void mainMenu(), которая ссылаясь на функцию menu() отображает меню: 1. Вход от имени администратора. 2. Вход от имени пользователя. 0. Выход. int menu(int); Функция, созданная для удобного доступа ко всем меню программы. Состоит из оператора ветвления switch, варианты исполнения которого содержат в себе данные из меню. void mainMenu(department*); Функция вывода на экран главного меню (1-го уровня). Функция повторяется, пока введенное значение не будет равно нулю. Осуществляется выбор между входом под администратором, пользователем или выходом. Void adminMenu(department *head) – функция вызова меню администратора. Обращаясь к функции menu() она имеет следующий вид: 1. Добавление записи 2. Редактирование записи 3. Удаление записи 4. Начисление ЗП 5. Просмотр данных 6. Поиск 7. Управление пользователями 0. Выход в предыдущее меню void addMenu(department**); - функция вывода на экран меню добавления информации и осуществления выбора между вводом нового отдела, нового работника или выходом. Функция повторяется до тех пор, пока не будет введено значение, удовлетворяющее условию. void editMenu(department**); - функция вывода на экран меню редактирования и осуществление выбора пункта редактирования. Функция повторяется до тех пор, пока не будет введено значение, удовлетворяющее условию. void deleteMenu(department**);- функция вывода на экран меню удаления и осуществления выбора между удалением отдела, удалением сотрудника или выходом. Функция повторяется до тех пор, пока не будет введено значение, удовлетворяющее условию. void printMenu(department*); - функция вывода на экран меню просмотра информации в табличном виде и осуществлении выбора между выводимыми данными или выходом. Функция повторяется до тех пор, пока не будет введено значение, удовлетворяющее условию. void searchMenu(department*); - функция вывода на экран меню поиска и осуществления выбора между удалением отдела, удалением работника или выходом. Функция повторяется до тех пор, пока не будет введено значение, удовлетворяющее условию. void workWithUsers(); - функция вывода на экран меню для работы с пользователем для администратора и выбором между активацией, блокировкой пользователя или выходом. Функция повторяется до тех пор, пока не будет введено значение, удовлетворяющее условию. bool checkUser(); - функция проверки логина и пароля пользователя. Проверка ведется до тех пор, пока указатель списка не достигнет последнего узла. В случае истинности передаёт значение true, иначе false. bool checkAdmin();функция проверки логина и пароля пользователя. Проверка ведется до тех пор, пока указатель списка не достигнет последнего узла. В случае истинности передаёт значение true, иначе false. void addDepartment(department**); - функция добавления нового отдела. Очищает консольное окно. Функция принимает указатель на начало списка. void addWorker(department**); функция добавления нового работника в отдел. Очищает консольное окно. Функция принимает указатель на начало списка. Проверяется вводимое значенин, при введении недопустимого значения, либо ввода 0, функция завершает свою работу ивозвращает нас к предыдущему меню. Функции редактирования 1-го из полей структур: void changeSurname(department**); - редактирование фамилии работника void changeName(department**); - редактирование имени работника void changeSecondName(department**); - изменение отчества работника void changePost(department**); - изменение должности void changeTariffRate(department**); - изменение размера тарифной ставки void changeExperience(department**); - изменение опыта работы void changeDepartmentName(department**); - смена названия отдела void changePersonnelNumber(department**); - смена персонального номера работника Функция принимает указатель на начало списка. Проверяется вводимое значение, при введении недопустимого значения, либо ввода 0, функция завершает свою работу и возвращает нас к предыдущему меню. Функции удаления узлов структур: void deleteWorker(department**); - удаление работника из списка void deleteDepartment(department**); - удаление отдела из списка Функция принимает указатель на начало списка. Проверяется вводимое значение, при введении недопустимого значения, либо ввода 0, функция завершает свою работу и возвращает нас к предыдущему меню. Проводится проверка на количество узлов, если оно равно нулю – функция завершается. При удалении узла, указатели соседних узлов изменяются. Функции вывода данных на экран: void printTableD();- вывод на экран шапки таблицы void printDepartments(department*); - вывод на экран списка отделов void printTableW();- вывод шапки таблицы на экран void printWorkers(department*); - вывод на экран списка работников void printDepartment(department*); - вывод информации об отделе на экран void printWorker(department*, worker*); - вывод на экран информации о работнике Выполняется проверка на наличие узлов списка, если список пуст – завершение работы функции. Для выхода в предыдущее меню необходимо нажать 0. void workWithSalary(department **); - функция начисления ЗП работникам, через установление времени, отработанного за месяц. Функция принимает указатель на начало списка. Проверяется вводимое значение, при введении недопустимого значения, либо ввода 0, функция завершает свою работу и возвращает нас к предыдущему меню. Выполняется проверка на наличие работников в отделе. void readUsers(users**); - функция чтения из файла списка пользователей. Если файл открывается, с него считывается информация. void writeUsers(users*); - функция записи списка пользователей в файл. Если файл открывается, в него записывается информация. Функции поиска: void searchByNumberOfWorkers(department*); - поиск отдела по количеству работников void searchByDepartmentName(department*); - поиск отдела по его названию void searchDeptById(department*); - поиск отдела по id void searchByNameSurname(department*); - Поиск по имени и фамилии void searchBySurnameDept(department*); - поиск по фамилии и отделу void searchByPostSurname(department*); - поиск по должности и фамилии void searchWorkerById(department*); - поиск по id Функция принимает указатель на начало списка. При обнаружении совпадений введенный данных с данными, хранящимися в структуре, они выводятся на экран в табличной форме. void userMenu(department*); - функция вывода на экран меню пользователя и осуществление выбора между просмотром данных, поиском и выходом. Функция будет выполняться до тех пор, пока не будет введено значение 0. int choiceDepartment(department*); - функция вывода списка отделов на экран. При отсутствии отделов или неверном выборе отдела указывает на это и завершает работу. int choiceWorker(worker*); - функция вывода списка работников на экран и выбор работника. При отсутствии работников или неверном выборе работник функция указывает на это и завершает работу. void writeFile(department*); - функция для записи всей информации в файл. При отсутствии файла сообщает об этом и завершает работу. void readFile(department**); - функция для чтения всей информации из файла. При отсутствии файла сообщает об этом и завершает работу. void activate(users**); - функция для активации пользователя (добавления записи в список пользователей). Производится проверка, при совпадении вводимого пользователя и уже имеющегося в базе данных на экран выводится ошибка и функция прекращает работу. void ban(users**); - функция для блокировки пользователя (удаления записи из списка пользователей). Если пользователь, которого пытаются удалить, не существует, на экран выводится соответствующая информация и функция завершает работу. |