s.name, stud.name) == 0) {(% 3d |% 6s |% 35s |% 3d |% 3d |% 3d | % 3s | n raquo ;, i, stud.group, stud.name, stud.mark [0], stud.mark [1] ,. mark [2], stud.social?laquo;Даraquo;:laquo;Нетraquo; );
} ++;=current- gt; next;
}(laquo;----|--------|-------------------------------------|-----|-----|-----|-----|nraquo;);
}
};
Малюнок 4.3 - Алгоритм фільтрації даних про студентів на ім'я
Спершу перевіряється, порожній список чи ні. Якщо порожній, то виводиться попередження, якщо ні, виконується наступна послідовність дій:
значенню поточного вузла присвоюється вказівник на перший вузол;
вводиться змінна i, рівна одиниці;
оголошується структура s типу student;
викликається функція для введення користувачем імені студента;
виводиться на екран шапка таблиці;
за допомогою циклу відбувається прохід за списком, якщо ім'я запису збігається з введеним, то запис потрапляє в таблицю;
нарощується лічильник i на одиницю відбувається переміщення за списком через покажчик на наступний вузол;
виводиться закінчення таблиці.
5. ОПИС ПРОГРАМИ
Насамперед, щоб розпочати роботи з системою, ми повинні виконати авторизацію. Для цього призначена функція authorize, яка приймає параметри права (користувач або адміністратор) і пропонує ввести логін і пароль. Далі звірка з даними у файлі. У випадку, якщо користувач не забанено і такі дані існують, то відкривається доступ до роботи з даними. Якщо ж ці умови не виконуються, то виводиться повідомлення про те, що дані введені неправильно. У даній програмі міститься 2 типу користувачів: звичайні користувачі і адміністратор. Надалі, все залежить від прав, користувач має можливість виконувати або набір звичайного користувацького функціоналу, наданого користувальницькою меню (вибрати файл для роботи з даними, переглянути всі записи, виконати завдання, пошук і фільтрація даних, вихід з облікового запису), або набір адміністраторського функціоналу, наданого меню адміністратора (вибрати файл для роботи з даними, додати запис, відредагувати запис, видалити запис, подивитися всі записи, пошук і фільтрація даних, управління користувачами, вихід з облікового запису).
Перше і друге меню першим пунктом пропонують вибрати файл для роботи. Для цього необхідна функція char * choose_file (), вона відкриває наявний з таким ім'ям файл або створює новий файл з вказаним ім'ям. За допомогою двох двусвязний списків, що зберігають інформацію про студентів і користувачів, відбувається взаємодія даних з файлом. За рахунок реалізованих у списках функцій є можливість додавати, видаляти, редагувати, фільтрувати записи, отримувати дані і розмір списку, очищати список та інше. Самі ж ці функції описані всередині структури, яка описує сам список.
Головним пунктом меню варто вважати пункт «Виконати завдання», оскільки саме він вирішує поставлене завдання. Для виконання цього пункту реалізована функція void complete_target (). Вона працює зі списком наявних студентів, певних ступенем активності і групою, вираховує середній бал з трьох наявних і в залежності від цього нараховує стипендію в тому чи іншому розмірі.
Логіку програми можна розділити на наступні блоки: по праву - робота адміністратора і робота користувача, за даними - робота з користувачами і робота зі студентами.
Для роботи з адміністраторами і користувачами є файл, що розмежовує їх можливості і права, а також методи, характерні для кожного з доступів.
Для роботи зі студентами та користувачами реалізовані 2 різні структури, що зберігають дані про тих і інших, і два двусвязний списку, що зберігають інформацію про наборах перших і других. Обидва списки підтримують практично однаковий набір функцій: додавання в початок, кінець, очищення, видалення, отримання даних, друк та ін.
При запуску програми користувачеві пропонується спершу пропонується три варіанти: увійти як адміністратор, увійти як користувач, вихід.
Малюнок 5.1 - Меню першого рівня
Розглянемо випадок вибору роботи в якості адміністратора. Після введення логіна і пароля в разі знаходження таких у файлі пропонується вибрати файл для роботи з даними.
Малюнок 5.2 - Вибір файлу для роботи
В результаті на екрані з'явиться меню з функціоналом, доступним адміністратору.
Малюнок 5.3 - Меню адміністратора
При ...