для організації роботи програми
Функція boolauthorize (char * rights) необхідна для авторизації користувачів в системі. Як параметр приймає інформацію про права користувача. Для роботи створює структуру, що описує користувача, виробляє початкову ініціалізацію, викликає методи введення логіна і пароля користувача, описані в пункті 3.3. Далі відкривається файл для читання даних про користувачів, шукається необхідний запис. Якщо вона є і права активовані, то файл закривається, а функція повертає true, що означає, що користувач може авторизуватися. Якщо записи з такими даними немає або права заблоковані, то файл закривається, а функція повертає false, що означає, що користувач не може авторизуватися.
Функція voidmenu_rule_users () дозволяє працювати з наявним списком користувачів. Для цього відкривається файл з даними, які зберігаються в список користувачів. На екран виводиться меню для вибору дії над наявним списком. Якщо користувач вибирає «Додати користувача», то йому пропонує визначити, чи буде новий користувач адміністратором або звичайним користувачем, а також ввести логін і пароль. Далі можна вибрати «Видалити користувача», в такому випадку необхідно ввести індекс користувача для видалення. Пункт меню «Забанити користувача» дозволяє міняти його права, знаючи індекс користувача в списку. Також можна переглянути всіх наявних користувачів або вийти з меню.
Функція void menu_admin () являє собою меню для адміністратора. Воно передбачає наступні можливості: вибрати файл для роботи з даними, додати запис, відредагувати запис, видалити запис, подивитися всі записи, пошук і фільтрація даних, управління користувачами, вихід з облікового запису.
Функція void menu_user () є меню для звичайного користувача і надає наступні можливості: вибрати файл для роботи з даними, переглянути всі записи, виконати завдання, пошук і фільтрація даних, вихід з облікового запису. Як видно, меню користувача схоже меню адміністратора, однак припускає менший спектр функціональних можливостей.
Функція char * choose_file () дає користувачеві можливість вибрати файл для роботи. Для цього користувач вводить ім'я файл (не більше 25 символів). Якщо файлу з такою назвою не існує на даний момент, то він створюється.
Функція voidread_file (char * filename) необхідна для читання даних з файлу, ім'я якого приходить як параметр функції. При цьому дані з файлу заносяться в список.
Функція voidwrite_file (char * filename) призначена для запису даних у файл. При цьому записи послідовно витягуються зі списку і переносяться в файл.
Функція void add_student () додає інформація про студента, попередньо введену користувачем, в кінець списку студентів.
Функція void change_student () редагує інформація про студентів. Робиться це таким чином: спершу на екран виводяться всі записи про студентів, а потім користувачеві пропонується ввести індекс студента, інформацію про який треба відредагувати. При цьому викликає функція редагування для списку студентів.
Функція void delete_student () дозволяє видаляти студентів зі списку по введеному користувачем індексом. Принцип аналогічний до попередньої функції.
Функція void print_student () виводить інформацію про всіх наявних з списку студентах.
4. СХЕМИ АЛГОРИТМІВ РОБОТИ ДОДАТКИ
.1Алгорітм додавання інформації про студентів в початок двусвязного списку
код лістинг інформація додаток
Даний алгоритм реалізується у вигляді функції void add_front (student pdata).
void add_front (student pdata) {(size == 0) {= new node (); gt; data=pdata; gt; next=NULL; gt; prev=NULL;=first; + +;
} {* temp=new node (); gt; data=pdata; gt; next=first; gt; prev=NULL; gt; prev=temp;
first=temp; ++;
};
}
Розглянемо даний алгоритм подробней.
Спершу йде перевірка на розмірність списку: залежно від того, порожній список чи ні, необхідно по-різному діяти. Якщо список порожній, то виконуються наступні дії:
виділяється пам'ять під перший вузол списку;
в дані цього вузла заносяться дані, введені користувачем;
для першого вузла покажчик на наступний вузол прирівнюється NULL;
для першого вузла покажчик на попередній вузол прирівнюється NULL;
покажчик на останній вузол прирівнюється вказівником на перший вузол;
розмір списку інкрементується на одиницю.
<...