До появи CSS, оформлення веб-сторінок здійснювалося безпосередньо усередині вмісту документа. Проте з появою CSS стало можливим розділення змісту і стилю документа. За рахунок цього нововведення стало можливим легко застосовувати єдиний стиль оформлення для схожих документів [15].
Переваги CSS розмітки:
декілька дизайнів сторінки для різних пристроїв перегляду;
зменшення часу завантаження сторінок сайту за рахунок перенесення правил представлення даних в окремий CSS-файл;
простота подальшої зміни дизайну;
додаткові можливості оформлення.
Для оформлення веб-сторінок програмного продукту будуть використані “зовнішні” таблиці каскадних стилів, тобто стилі розміщенні в файлах стилів (файл.css) і підключені до веб-сторінок. Для створення таблиці каскадних стилів програмного продукту буде використаний блокнот Notepad++. Даний блокнот має підсвітку синтаксису CSS та підказки, що спрощують написання таблиць каскадних стилів.
2.3.5 Мова програмування JavaScript
JavaScript – скриптова мова, що найчастіше використовується при створенні сценаріїв поведінки браузера, що вбудовуються у веб-сторінки.
JavaScript має низку властивостей об'єктно-орієнтованої мови, але завдяки концепції прототипів підтримка об'єктів в ньому відрізняється від традиційних мов об’єктно-орієнтованого програмування. Крім того, JavaScript має ряд властивостей, притаманних функціональним мовам:
функції як об'єкти першого рівня;
об'єкти як списки;
каррінг (currying);
анонімні функції;
замикання (closures) – що додають мові додаткову гнучкість.
JavaScript має CІ-подібний синтаксис, але в порівнянні з мовою СІ має наступні корінні відмінності:
функції як об'єкти першого класу;
об'єкти, з можливістю інтроспекції і динамічної зміни типу через механізм прототипів;
обробка винятків;
автоматичне приведення типів та “прибирання сміття”;
анонімні функції [16].
Мова JavaScript частіше використовується при розробці невеликих веб-додатків, коли потрібно виконати певні функції без перезавантаження веб-сторінки. Тому для розробки функцій програмного продукту буде використана мова JavaScript.
Будь який веб-ресурс не обходиться без програмної частини, на яку покладені усі функції ресурсу. Функції системи створюються за допомогою мови програмування. Для розробки тестової системи було обрано одну із основних мов програмування для веб-ресурсів.
PHP (“препроцесор гіпертексту”) – скриптова мова програмування, створена для генерації HTML-сторінок на веб-сервері та роботи з базами даних. В даний час підтримується переважною більшістю провайдерів хостингу. Входить в LAMP – “стандартний” набір для створення веб-сайтів (Linux, Apache, MySQL, PHP (Python або Perl)) [17].
Препроцесор – програма, яка виконує попередню обробку даних, для того, щоб вони могли використовуватись іншою програмою, наприклад, такою як компілятор.
В області програмування для мережі Internet, PHP – одна з популярних скриптових мов завдяки своїй простоті, швидкості виконання та багатій функціональності. PHP відрізняється наявністю ядра і модулів, що підключаються, так званих “розширень”: для роботи з базами даних, сокетами, динамічною графікою, криптографічними бібліотеками, документами формату PDF і т.п. Існують сотні розширень, проте в стандартне постачання входить лише декілька десятків тих, що добре зарекомендували себе. Інтерпретатор PHP підключається до веб-серверу або через модуль, створений спеціально для цього сервера, наприклад, для Apache або IIS, або як CGI-додаток.
Синтаксис PHP подібний синтаксису мови СI. Деякі елементи, такі як асоціативні масиви і цикл foreach, запозичені з Perl.
Для створення програмного продукту буде використана мова програмування PHP версії PHP 5, оскільки вона має суттєві зміни і переваги:
оновлення ядра Zend (Zend Engine 2), що істотно збільшило ефективність інтерпретатора;
введена підтримка мови розмітки XML;
повністю перероблені функції ООП, які стали багато в чому схожі з моделлю, використовуваною в Java;
введена деструкція, відкриті, закриті та захищені члени і методи, остаточні члени і методи, інтерфейси і клонування об'єктів [18].
Для створення php-скриптів буде використаний блокнот Notepad++. Даний блокнот має підсвітку синтаксису PHP та підказки, що спрощують написання програмного коду.
3 Реалізація програмного продукту
3.1 Структура і функціональне призначення модулів системи, їх взаємозв’язок
Розроблюваний програмний продукт складається з багатьох модулів, які містять класи, функції для оброблення даних та скриптів, які працюють з цими модулями. Усі класи знаходяться в різних файлах і їх назва починається з префікса «cl_». Всі класи наслідуються від головного класу, драйвера бази даних MySQL mysqldriver.php, який в свою чергу реалізує абстрактний клас abstract.dbdriver.php. Для кожного модуля існує окремий файл index.php, який працює з відповідним модулем.
Веб-додаток складається з таких модулів та класів:
а) модуль для керування адміністраторами – admin:
cl_administrators.php – клас для керування адміністраторами;
checkFIO.php – файл для перевірки введення ПІП;
checkLogin.php – файл для перевірки введеного логіна (чи доступний такий логін користувачу);
checkPassword.php – файл для перевірки введення паролю та перевірки співпадання повторного паролю;
б) модуль для керування зареєстрованими користувачами – users:
cl_users.php – клас для керування користувачами;
cl_autorize.php – клас для авторизації користувачів;
checkFIO.php – файл для перевірки введення ПІП;
checkLogin.php – файл для перевірки введеного логіна (чи доступний такий логін користувачу);
checkPassword.php – файл, для перевірки введення паролю та перевірки співпадання повторного паролю;
в) модуль для роботи з тестом – test:
cl_test.php – клас для роботи з тестом;
test_config.php – файл конфігурації тесту;
г) cl_authorization.php – клас для доступу в систему управління;
д) cl_db.php – клас, який відповідає за підключення і відключення від бази даних і підключає драйвер бази даних;
е) cl_navigation.php – клас для навігації по сторінкам;
є) модуль відправки повідомлень – mailer:
class.phpmailer.php – клас для відправки повідомлень;
FriendMail.php – клас для перевірки введених даних, який використовує клас class.phpmailer.php;
kcaptcha.php – клас для розпізнавання комп’ютерів і людей;
kcaptcha_config.php – файл конфігурації капчі для сайту;
kcaptcha_config_login.php – файл конфігурації капчі для системи управління;
font_preparer.php – файл для налаштування шрифту капчі.
Веб-додаток складається з наступних файлів:
index.php – головна сторінка веб-додатку;
test.php – сторінка тестування;
timershow.php – файл, який показує час проходження тесту;
finish.php – сторінка результату тестування;
check.php – файл для авторизації;
main.php – головна сторінка системи управління;
logout.php – файл, який видаляє дані з сесії, викликається при виході з системи управління;
config.php – файл налаштування, де зберігаються параметри доступу до бази даних;
jquery.js – бібліотека JavaScript, яка призначена для взаємодії JavaScript та HTML;
jquery.alerts.js – плагін для jquery, який задає стиль стандартним діалоговим вікнам;
style.css – таблиця стилів для сайту;
main.css – таблиця стилів для системи управління.
Наведемо схему головного меню системи управління (рисунок 3.1).
Рисунок 3.1 – Схема головного меню системи управління
3.2 Розробка програмних модулів
Опишемо функції програмних класів, які містяться в модулях тестової системи.
Файл cl_administrators.php містить наступні функції:
SelectData($table_names, $cond_names, $limit_from, $limit_count) – відповідає за вибірку інформації про адміністраторів, має параметри: назва таблиці, умова вибору даних, позиція з якої вибирати та кількість записів;
DeleteData($table_names, $list) – призначена для видалення даних про адміністраторів, має параметри: назва таблиці, масив номерів записів;
InsertData($table_names, $list_values) – відповідає за додавання записів, має параметри: назва таблиці, значення полів відповідно;
Updatedata($table_names, $list_values, $cond_names) – призначена для редагування записів про адміністраторів, має параметри: назва таблиці, значення полів, умова редагування;
Showdata($limit_from, $limit_count, $query_string) – відповідає за відображення інформації про адміністраторів, має параметри: позиція з якої показувати записи, кількість записів, рядок запиту.
Файл cl_users.php містить наступні функції:
SelectData($table_names, $cond_names, $limit_from, $limit_count) – відповідає за вибірку інформації про зареєстрованих користувачів, має параметри: назва таблиці, умова вибору даних, позиція з якої вибирати дані та кількість записів;
DeleteData($table_names, $list) – призначена для видалення даних про користувачів, має параметри: назва таблиці, масив номерів записів;
InsertData($table_names, $list_values) – відповідає за додавання записів, має параметри: назва таблиці, значення полів відповідно;
Updatedata($table_names, $list_values, $cond_names) – призначена для редагування записів про користувачів, має параметри: назва таблиці, значення полів, умова редагування;
Showdata($limit_from, $limit_count, $query_string) – відповідає за відображення інформації про зареєстрованих користувачів, має параметри: позиція з якої показувати записи, кількість записів, рядок запиту.
Файл cl_autorize.php містить наступні функції:
authorize() – не має параметрів, призначена для авторизації зареєстрованих користувачів.
Файл cl_test.php містить наступні функції:
FileRead($file) – призначена для читання з файлу, має параметр – шлях до файлу;
SelectAllId() – не має параметрів, призначена для вибірки номерів записів всіх питань;
SelectAllIdL() – не має параметрів, призначена для вибірки номерів записів легких запитань;