Розробка програмного модулю для визначення IQ людини

Зміст



Вступ

1 Характеристика предметної області і постановка задачі

1.1 Аналіз предметної області

1.2 Аналіз наявного програмно – технічного забезпечення предметної області

1.3 Постановка задачі

2 Проектування структури інформаційної системи

2.1 Аналіз та автоматизація обробки інформаційних потоків

2.2 Розробка структури інформаційної системи

2.3 Вибір засобів розробки інформаційної системи

2.3.1 Веб-сервер Apache

2.3.2 СКБД MySQL

2.3.3 Мова розмітки гіпертексту HTML

2.3.4 Таблиці каскадних стилів CSS

2.3.5 Мова програмування JavaScript

2.3.6 Мова програмування PHP

3 Реалізація програмного продукту

3.1 Структура і функціональне призначення модулів системи, їх взаємозв’язок

3.2 Розробка програмних модулів

3.3 Інструкція користувача

3.4 Вимоги до технічних засобів

Висновки

Перелік посилань


Вступ



В нашому житті інформація відіграє дуже важливу роль. З розвитком науково-технічного прогресу інформації стає все більше і більше. Поява персональних комп’ютерів відкрила великі можливості для створення і застосування різноманітних автоматизованих інформаційних систем. Ці системи найрізноманітніші – від простих інформаційних систем до складних автоматизованих інформаційних систем, які об’єднують великі бази даних. Зараз просто не можливо уявити діяльність багатьох підприємств, організацій, фірм і установ без зберігання інформації. Для обробки і зберігання інформації почали використовувати інформаційні системи, обов’язковою складовою яких є комп’ютерні бази даних. Вони дозволяють у зручній формі здійснювати зберігання, обробку інформації.

Також, на сьогоднішній час, з розвитком мережевих технологій та мережі Internet, постала потреба швидко і конфіденційно обмінюватись збереженою інформацією в базах даних. Так як Internet став невід’ємною частиною життя більшості людей, люди почали заробляти через мережу, замовляти і купувати товари, шукати потрібну інформацію, спілкуватись з іншими, проходити тестування або просто розважатися; з’явилась потреба в створенні додатків, які б працювали з базами даних і через мережу. Ці додатки, або як їх точніше називають веб-додатки, стали досить актуальними, так як вони не прив’язані до робочого місця користувача, до конкретної операційної системи, а всі дані зберігаються на сервері.

Останнім часом в мережі Internet стали популярним тести IQ, які дозволяють людям дізнатись свій рівень IQ, або коефіцієнт інтелекту. Але окрім цього такі тести мають ще інше застосування: їх проводять деякі компанії при наборі працівників на роботу, вони є засобом рекламних компаній, а також слугують як комерційні проекти, які покликані приносити дохід.

Відповідно до цього, метою написання кваліфікаційної роботи бакалавра є створення веб-додатку для визначення рівня інтелекту людини. Дана тема є актуальною на сьогодні і повинна знайти своє практичне застосування.

Для створення веб-додатку було обрано мову програмування PHP, з використанням JavaScript, а для роботи з базою даних додаток буде використовувати систему керування базами даних MySQL.

Веб-додаток складатиметься з двох функціональних частин:

клієнтська частина, де кожен користувач може пройти тест, отримати результат, а також переглянути рейтинг учасників;

засоби адміністрування, за допомогою яких авторизований адміністратор може керувати веб-додатком, вносити зміни до тесту, керувати учасниками.




1 Характеристика предметної області і постановка задачі



1.1 Аналіз предметної області



Предметною областю даного програмного продукту є створення веб-додатку (IQ тесту), для визначення коефіцієнта інтелекту людини.

Для того, щоб оцінити рівень інтелекту людини було введено поняття «коефіцієнт інтелекту». Коефіцієнт інтелекту (IQ – intelligence quotient) – це кількісна оцінка рівня інтелекту людини. Цей коефіцієнт визначається за допомогою спеціальних тестів. Тести IQ розраховані на оцінку міркувальних здібностей, а не рівня знань (ерудиції) [1].

Поняття «коефіцієнт інтелекту» ввів Вільям Штерн у 1912 році. Він спрямував увагу на серйозні недоліки розумового віку, як показаника в шкалах Біне. Штерн запропонував використовувати у якості показника інтелекту частки від ділення розумового віку на хронологічний. IQ вперше був використований у шкалі інтелекту Стенфорда-Біне у 1916 році [2].

У наш час тести IQ стали дуже популярними, через що з'явилася велика кількість різних необґрунтованих шкал. Тому порівнювати результати різних тестів дуже важко і саме число IQ втратило інформативну цінність.

Розроблений програмний продукт надасть змогу швидко, і без великих зусиль зберігати інформацію про запитання і відповіді для тестування, вести облік зареєстрованих користувачів (учасників), переглядати рейтинг учасників, а також обчислювати коефіцієнт інтелекту людини.

Реєстрація учасників включає в себе збереження наступних даних:

прізвище, ім’я користувача;

пароль, email для авторизації;

телефон користувача.

Після проходження тестування користувач отримує результат, що містить:

прізвище, ім’я користувача;

коефіцієнт інтелекту;

дату проходження тесту;

час проходження тесту.



1.2 Аналіз наявного програмно – технічного забезпечення предметної області



На сьогоднішній день існує багато різних версій «IQ-тестів». Причиною цьому стала поява великої кількості необґрунтованих шкал, так як в наш час інтерес до тестів IQ виріс в багато разів.

Також існує багато різних реалізацій тестів IQ. Від локальних версій, написаних як додаток до операційної системи, до так званих веб-версій. Усі вони створенні для визначення рівня інтелекту людини (або коефіцієнта інтелекту). Але водночас вони суттєво відрізняються, так як при їх розробці використовуються різні технології. Основними з яких є: Flash, Windows-додатки, веб-додатки.

Flash – продукт компанії «Macromedia» (з 2005 року – один з підрозділів «Adobe»), що дозволяє розробляти інтерактивні мультимедійні програми. Сфера використання Flash є різною, це можуть бути ігри, веб-сайти, презентації, банери і просто мультфільми. При створенні продукту можна використовувати медіа, звукові та графічні файли. В основі Flash лежить векторний морфінг – технологія комп'ютерної графіки, що створює плавний перехід з одного ключового кадру в інший. Це дозволяє робити досить складні мультиплікаційні сцени, задаючи лише кілька ключових кадрів для кожного персонажа.

Іншою перевагою технології Flash є повна програмованість. Flash використовує мову програмування ActionScript, яка по синтаксису є схожою із JavaScript. Остання версія мови (ActionScript 3.0) є повноцінною об'єктно-орієнтованою мовою [3].

Серед цих переваг існують також і ряд особливостей, які можна віднести до мінусів Flash технології. Наприклад, для того щоб переглянути проект, створений на Flash, користувачу необхідно додатково встановити Flash-плеєр. Також такий проект, написаний на Flash, є статичним, тобто вміст програмного продукту користувач вже не змінить, без втручання в сам код.

До Windows-додатків можна віднести додатки написані на таких мовах програмування як: C++, Visual Basic, Delphi, C# та інші. З допомогою такої технології можна не тільки розробити проект, а й створити панель управління для нього, де адміністратор зміг би змінювати вміст проекту. Але не дивлячись на переваги і засоби, які надають ці мови програмування, все ж таки користувачу необхідно буде встановити додаткове програмне забезпечення. Наприклад, для роботи з додатком написаним на С# необхідно встановити платформу .NET Framework.

Веб-додатки – додатки, створені для роботи в серверному середовищі і написані на таких мовах програмування як: PHP, ASP, Perl, Ruby, Java та інші. Ці мови програмування надають можливість створювати повноцінні додатки, до цих додатків створювати системи управління контентом. Веб-додатки працюють тільки в серверному середовищі, тобто для роботи з такими додатками необхідно встановити сервер, так як скрипти виконуються на сервері. Але разом з тим, такі додатки можна викладати в Internet, де вже налаштований сервер, тому для роботи користувачу необхідно мати веб-браузер і вихід в Internet. Також перевагою таких додатків є те, що користувач має доступ до проекту через Internet в будь-який момент.

Тести IQ дуже поширені в мережі Internet, є багато веб-сайтів, які надають можливість пройти тест і дізнатись коефіцієнт інтелекту. Але більшість із них є платними і для отримання результату користувачу необхідно відправити платне смс повідомлення.




1.3 Постановка задачі



Призначенням даного веб-додатку є: проходження тестування і визначення рівня інтелекту людини (коефіцієнта інтелекту).

Веб-додаток повинен реалізовувати певний комплекс задач, які можна поділити на дві групи:

задачі, які будуть доступні звичайним користувачам – учасникам;

задачі, які будуть доступні адміністраторам.

До задач першої групи можна віднести:

проходження тестування;

реєстрація;

зберігання результату;

перегляд рейтингу;

відправка результату другу.

До другої групи віднесемо такі задачі:

керування зареєстрованими користувачами;

створення/редагування/видалення запитань;

створення/редагування/видалення відповідей;

налаштування тесту: кількість питань, яку необхідно показати за сеанс;

налаштування рейтингу: рейтингу лідерів та рейтингу користувачів;

керування адміністраторами.




2 Проектування структури інформаційної системи



2.1 Аналіз та автоматизація обробки інформаційних потоків





Проект призначений для визначення рівня інтелекту людини (коефіцієнта інтелекту).

Коефіцієнт інтелекту  обчислюється за формулою:



(2.1)



де  – номер поточного запитання, ;

 – кількість запитань;

 – кількість набраних балів за -те запитання.

Кількість набраних балів за -те запитання обчислюється за формулою:



(2.2)



де  – рівень складності запитання: .

За допомогою проекту ведеться облік учасників, тобто тих, хто проходить тест; додаються/видаляються питання та відповіді. В такому процесі проводиться постійний обмін даними між модулями. На рисунку 2.1 представлена схема інформаційних потоків між клієнтською частиною, веб-сервером та сервером бази даних.




Рисунок 2.1 – Схема інформаційних потоків



Клієнтська частина (браузер) відправляє дані на сервер, де дані оброблюються за допомогою php-скриптів. Після оброблення даних php-скрипти повертають результат, який відображається в браузері у вигляді веб-сторінки. За допомогою такої взаємодії клієнт не бачить код скриптів, а тільки результат, який вони повертають. На відміну від php-скриптів, javascript виконується на стороні клієнта, а не сервера. Тому клієнт має можливість бачити код цих скриптів.

За допомогою PHP-скриптів відбувається підключення до бази даних MySQL. Всі функції, що забезпечують взаємодію між PHP й MySQL, винесені в окрему бібліотеку. Послідовність кроків для підключення до бази даних і керування табличними даними традиційна – спочатку встановлюється зв'язок, потім видається запит й обробляється результат. Для підключення до бази даних потрібні три параметри: ім'я хост-вузла, ім'я користувача й пароль. Визначивши три змінні: hostname, username і password, можна відбирати потрібні дані. Порядок підключення до бази даних показано нижче в нескладному прикладі.

Приклад

public function __construct($dbinfo)

{

if (!empty($dbinfo['dbname']) and !empty($dbinfo['dbhost'])

and !empty($dbinfo['dbuser']))

{

$this->connection = @mysql_connect($dbinfo['dbhost'],

$dbinfo['dbuser'], $dbinfo['dbpwd']) or die("<center><br /><br />

<br /><h2>Извините, сайт временно не доступен!</h2><center>

<br />");

if ($dbinfo['dbprefix'] == '')

{

@mysql_select_db($dbinfo['dbname'], $this->connection)

or die("<center><br /><br /><br /><h2>Извините, сайт временно

не доступен!</h2><center><br />");

}

else if ($dbinfo['dbprefix'] != '')

{

@mysql_select_db($dbinfo['dbprefix'].$dbinfo['dbname'],

$this->connection) or die("<center><br /><br /><br /><h2>Извините,

сайт временно не доступен!</h2><center><br />");

}

else die("<center><br /><br /><br />

<h2>Извините, сайт временно не доступен!</h2><center><br />");

@mysql_query('SET names cp1251');

}

}

У функції mysql_db_query() вказуються ім'я бази даних і необхідний SQL-запит, що передається MySQL. У запиті можна використати оголошені в скрипті змінні. Строкові значення і дати, обрамляються апострофами або спеціально передбаченими в PHP позначеннями.

Результат виконання запиту повертається у змінну, однак, якщо SQL-команди записані не правильно, у цю ж змінну повертається значення (мінус) 1. Одержати значення окремих полів дозволяє функція mysql_fetch_array(), при цьому автоматично створюється масив [4].

Отримавши необхідну інформацію з бази даних завершується з’єднання з MySQL, після цього частина отриманої інформації передається до HTML-документів.

HTML Документ складається із трьох частин:

декларація типу документа (англ. Document type declaration, Doctype), на самому початку документа, в якій визначається тип документа (DTD), наприклад, HTML 4.01 Strict;

шапка HTML документа (HEAD), в якій записано загальні технічні відомості або додаткова інформація про документ, яка не відображається безпосередньо в браузері;

тіло HTML документа (BODY), в якому міститься основна інформація документа [5].

Нижче наведено приклад загальної структури HTML документа.

Приклад

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<title>

Заголовок сторінки

</title>

<!-- Можлива додаткова інформація -->

</head>

<body>

Вміст сторінки

</body>

</html>

В шапку документа, можна підключати таблиці каскадних стилів css і javascript, хоча зручністю javascript є те, що його підключають в будь-якому місці сторінки.

Приклад підключення «зовнішньої» таблиці стилів наведено нижче.

Приклад

<link rel="stylesheet" type="text/css" href="css/style.css" />

Приклад підключення файлу javascript наведено нижче.

Приклад

<script type="text/javascript" src="includes/scripts/js/

paginator3000.js"></script>



2.2 Розробка структури інформаційної системи



При проектуванні бази даних обов’язково необхідно її привести до трьох нормальних форм. Це здійснюється за допомогою нормалізації відношень.

Нормалізація – це процес декомпозиції початкового відношення на декілька простіших відношень меншої розмірності.

В результаті дослідження предметної області «Визначення рівня інтелекту людини» було отримано наступний набір полів:



Прізвище користувача

Ім’я користувача

Email користувача

Телефон користувача

Пароль доступу

Права користувача

Логін користувача

Дата входу

Запитання

Картинка до запитання

Варіант відповіді

Вага відповіді

Бал – результат тестування

Дата тестування

Час проходження тесту

Перша нормальна форма (рисунок 2.2) передбачає, щоб кожне поле таблиці було неподільним і не містило даних, що повторюються. Щоб привести відношення до першої нормальної форми, необхідно розбити предметну область на декілька простих відношень.





Рисунок 2.2 – Перша нормальна форма



Друга нормальна форма передбачає, що відношення знаходиться у першій нормальній формі і кожний рядок відношення однозначно визначається первинним ключем (рисунок 2.3).

Третя нормальна форма передбачає, що відношення знаходиться у першій та другій нормальній формі, а також щоб значення будь-якого поля, що не входить до первинного ключа не залежало від інших полів, тобто не повинно бути транзитивної залежності (рисунок 2.4).




Рисунок 2.3 – Друга нормальна форма





Рисунок 2.4 – Третя нормальна форма



Тепер опишемо властивості кожної таблиці.

Властивості таблиці «Користувачі» наведені в таблиці 2.1.


Таблиця 2.1 – Властивості таблиці «Користувачі»

Назва реквізиту

Ідентифікатор

Тип

Маска / Довжина

Ключове поле

Код користувача

adept_id

Цілі значення

11

Primary

Прізвище

adept_surname

Строкова величина

100



Ім’я

adept_name

Строкова величина

100



Email

adept_mail

Строкова величина

50



Телефон

adept_phone

Строкова величина

20



Пароль

adept_password

Строкова величина







Властивості таблиці «Запитання» наведені в таблиці 2.2.



Таблиця 2.2 – Властивості таблиці «Запитання»

Назва реквізиту

Ідентифікатор

Тип

Маска / Довжина

Ключове поле

Код запитання

quest_id

Цілі значення

11

Primary

Текст запитання

quest_question

Строкова величина





Картинка

quest_image

Строкова величина

100





Властивості таблиці «Відповіді» наведені в таблиці 2.3.



Таблиця 2.3 – Властивості таблиці «Відповіді»

Назва реквізиту

Ідентифікатор

Тип

Маска / Довжина

Ключове поле

Код відповіді

ans_id

Цілі значення

11

Primary

Варіант відповіді

ans_answer

Строкова величина

255



Вага відповіді

ans_point

Цілі значення

11



Код запитання

ans_question_id

Цілі значення

11

Secondary



Властивості таблиці «Рейтинг» наведені в таблиці 2.4.


Таблиця 2.4 – Властивості таблиці «Рейтинг»

Назва реквізиту

Ідентифікатор

Тип

Маска / Довжина

Ключове поле

Код запису

rat_id

Цілі значення

11

Primary

Бал

rat_mark

Цілі значення

11



Дата тестування

rat_date

Цілі значення

12



Час проходження тесту

rat_time

Цілі значення

12



Код користувача

rat_adept_id

Цілі значення

11

Secondary



Для авторизації та управління адміністраторами створена таблиця «Авторизація», її властивості наведені в таблиці 2.5.



Таблиця 2.5 – Властивості таблиці «Авторизація»

Назва реквізиту

Ідентифікатор

Тип

Маска / Довжина

Ключове поле

Код запису

user_id

Цілі значення

11

Primary

Ім’я

user_name

Строкова величина

100



Логін

user_login

Строкова величина

60



Пароль

user_password

Строкова величина

50



Ip адреса

user_ip

Строкова величина

25



Дата входу

user_denter

Цілі значення

12



Права

user_rule

Цілі значення

3





2.3 Вибір засобів розробки інформаційної системи



2.3.1 Веб-сервер Apache

Apache HTTP-сервер – відкритий веб-сервер Internet для UNIX-подібних, Microsoft Windows, Novell NetWare та інших операційних систем. На сьогодні є найуживанішим Веб-сервером мережі Internet.

Веб-сервер – це сервер, який приймає HTTP-запити (HTTP – протокол передачі даних, що використовується в комп'ютерних мережах. Назва скорочена від Hyper Text Transfer Protocol, протокол передачі гіпер-текстових документів) від клієнтів, зазвичай веб-браузерів (програмне забезпечення для комп'ютера або іншого електронного пристрою, як правило, під'єднаного до Internet, що дає можливість користувачеві взаємодіяти з текстом, малюнками або іншою інформацією на веб-сторінці), який видає їм HTTP-відповіді, зазвичай разом з HTML-сторінкою, зображенням, файлом, медіа-потоком або іншими даними. Веб-сервер - це основа Всесвітньої павутини [6].

Веб-сервером називають як програмне забезпечення, що виконує функції веб-сервера, так і комп'ютер, на якому це програмне забезпечення працює.

Клієнти дістають доступ до веб-сервера-сервера за URL адресою потрібної їм веб-сторінки або іншого ресурсу.

Web-сервер Apache є самостійним, некомерційним, вільно розповсюджуваним продуктом. Продукт підтримує безліч можливостей, багато з яких реалізовані як скомпільовані модулі, які розширюють основні функціональні можливості. Вони різняться від серверної підтримки мов програмування до схем аутентифікації. Існують інтерфейси для підтримки мов програмування Perl, Python і PHP.

Функції віртуального хостингу дозволяють одній інсталяції Apache обслуговувати різні веб-сайти. Наприклад, одна машина, з однією інсталяцією Apache може одночасно містити www.example.com, www.test.com, test47.test-server.test.com і т.д.

Apache перш за все використовується для передачі через HTTP статичних та динамічних веб-сторінок у всесвітній павутині. Багато веб-додатків спроектовано, зважаючи на середовище і можливості, які надає цей веб-сервер.

Продукт може працювати в якості кешувального проксі-сервера (проксі-сервер – це програма або окремий комп'ютер, який спеціалізується на обробці запитів до мережі і збереженні результатів запитів в своїй локальній кеш-пам'яті), що дозволяє істотно підвищити продуктивність роботи користувачів локальної мережі при роботі з документами, розташованими в Internet. Можна задавати такі параметри і настроювання проксі-сервера:

типи файлів, які необхідно кешувати або навпаки, не включати в кеш;

максимальний обсяг дискового простору, відведений під кеш;

періодичний перегляд і індексування бази даних кеша з метою вивільнення дискового простору шляхом видалення застарілих об'єктів.

Apache зіграв ключову роль у початковому зростанні всесвітньої павутини, і продовжує бути найпопулярнішим у світі веб-сервером, де-факто платформою, на яку орієнтуються інші веб-сервери [7].

Для розробки програмного продукту була використана збірка віртуального веб-серевера XAMPP. Тут є Apache і MySQL.



2.3.2 СКБД MySQL

MySQL – вільна система управління базами даних (СУБД). Система керування базами даних (СКБД) – комп'ютерна програма чи комплекс програм, що забезпечує користувачам можливість створення, збереження, оновлення, пошук інформації та контролю доступу в базах даних [8].

MySQL є власністю компанії MySQL AB, що здійснює розробку і підтримку додатку. Розповсюджується під GNU General Public License і під власною комерційною ліцензією, на вибір. Крім цього компанія MySQL AB розробляє функціональність за замовленням ліцензійних користувачів, саме завдяки такому замовленню майже в перших версіях з'явився механізм реплікації.

MySQL є рішенням для малих і середніх додатків. Входить в LAMP. Звичайно MySQL використовується як сервер, до якого звертаються локальні або видалені клієнти, проте в дистрибутив входить бібліотека внутрішнього сервера, що дозволяє включати MySQL в автономні програми.

Гнучкість СУБД MySQL забезпечується підтримкою великої кількості типів таблиць: користувачі можуть вибрати як таблиці типу MyISAM, що підтримують повнотекстовий пошук, так і таблиці InnoDB, що підтримують транзакції на рівні окремих записів. Більш того, СУБД MySQL поставляється із спеціальним типом таблиць EXAMPLE, що демонструє принципи створення нових типів таблиць. Завдяки відкритій архітектурі і GPL-ліцензуванню, в СУБД MySQL постійно з'являються нові типи таблиць.

MySQL виникла як спроба застосувати mSQL до власних розробок компанії: таблицям, для яких використовувалися ISAM - підпрограми низького рівня. В результаті був вироблений новий SQL-інтерфейс, але API-інтерфейс залишився в спадок від mSQL. Звідки відбувається назва "MySQL" - напевно не відомо. Розробники дають два варіанти: або тому, що практично всі напрацювання компанії починалися з префікса My, або на честь дівчинки на ім'я My, дочки Майкла Монті Віденіуса, одного з розробників системи.

MySQL має API для мов C, C++, Эйфель, Java, Лісп, Perl, PHP, Python, Ruby, Smalltalk бібліотеки для мов платформи .NET, а також забезпечує підтримку для ODBC за допомогою ODBC-драйвера MyODBC.

Для некомерційного використання MySQL є безкоштовним. Можливості сервера MySQL:

простота у встановленні та використанні;

підтримується необмежена кількість користувачів, що одночасно працюють із БД;

кількість рядків у таблицях може досягати 50 млн.;

висока швидкість виконання команд;

наявність простої і ефективної системи безпеки.

Недоліки сервера MySQL:

не реалізована підтримка транзакцій. Натомість пропонується використовувати LOCK/UNLOCK TABLE;

відсутня підтримка зовнішніх (foreign) ключів;

відсутня підтримка тригерів і збережених процедур;

відсутня підтримка представлень (VIEW).

Зазначені недоліки не є критичними при розробці малих і середніх ІС-інформаційних систем для робочих груп [9].


2.3.3 Мова розмітки гіпертексту HTML

HTML (Hypertext Markup Language – мова розмітки гіпертексту) – це стандартна мова розмітки документів у Всесвітній павутині. Всі веб-сторінки створюються за допомогою мови HTML (або XHTML) [10].

Мова розмітки – штучна мова, яка використовує набір анотацій до тексту, що надає інструкції стосовно структури тексту чи його відображення.

Мови розмітки використовувалися століттями, а в останні роки почали використовуватися в системах комп'ютерної верстки та системах обробки текстової інформації [11].

Гіпертекст (англ. Hypertext) – документ (текст), що містить гіперпосилання на інші документи, які можуть бути відображені безпосередньо з вихідного (первинного) документу, шляхом активізації гіперпосилання. Веб-оглядач переміщує користувача Internetу з одного документу на інший як тільки той вказує на гіперпосилання [12].

Гіперпосилання – активний (виділеним кольором) текст, зображення чи кнопка на веб-сторінці, натиснення на яку (активізація гіперпосилання) викликає перехід на іншу сторінку чи іншу частину поточної сторінки [13].

XHTML (розширювана мова розмітки гіпертексту) – мова розмітки, що задовольняє синтаксичним правилам XML [14].

В той час як HTML побудовано на основі правил SGML (стандартна узагальнена мова розмітки, це деяка метамова на якій можна визначати мову розмітки для документів), XHTML побудовано на основі правил XML, суворішої підмножини правил SGML. Оскільки XHTML документи мають бути коректними XML документами, їх обробку можна здійснювати стандартними інструментами обробки XML документів на відміну від HTML, який вимагає порівняно складніших, важчих і повільніших синтаксичних аналізаторів. XHTML можна розглядати як, багато в чому, перетин HTML і XML, оскільки цей стандарт є переформулюванням HTML засобами XML. XHTML 1.0 став рекомендацією консорціуму W3C 26 січня 2000 року. XHTML 1.1 став рекомендацією W3C 31 травня 2001 року.

Мова HTML інтерпретується браузером і відображається у вигляді документа, зручному для людини.

HTML є додатком SGML (стандартної узагальненої мови розмітки) і відповідає міжнародному стандарту ISO 8879.

HTML-документ є текстовим файлом розмічений за допомогою спеціальних (природно, текстових) команд. Текстовий формат представлення веб-документів був вибраний виходячи з основних вимог до веб-документу: простота, можливість безпосередньої інтерпретації в будь-якій операційній системі, мінімальний розмір файлу, зручність редагування і інтерпретації.

Мова розмітки гіпертекстових документів HTML дозволяє визначити різні типи елементів, що забезпечують функціональність документа: текстові фрагменти із заданими параметрами форматування, списки, таблиці, зображення, гіперпосилання і т.д. Елементи HTML оголошуються за допомогою команд розмітки, званих тегами (від англійського tag – ярлик). Усі HTML-теги, що зустрічаються в тексті документа інтерпретуються браузером при відображенні документа.

З 1994 року по теперішній час розробка проводиться під егідою наддержавної організації World Wide Web Consortium ( W3C ). Інформацію "з перших рук" про стандарти, рекомендації і перспективи розвитку не тільки мови HTML, але і цілого ряду інших web-технологій, можна знайти в Internetі за адресою http://www.w3.orghttp://www.w3.org. Вся документація на сайті W3C представлена на англійській мові, проте є і посилання на переклади (зокрема, на російську мову).

Основними віхами на шляху розвитку стандартів HTML можна вважати ухвалення стандартів HTML 1.2, HTML 2.0, HTML 3.2, HTML 4.0.

Версії:

RFC 1866 – HTML 2.0, схвалений як стандарт 22 вересня 1995 року;

HTML 3.2 – 14 січня 1996 року;

HTML 4.0 – 18 грудня 1997 року;

HTML 4.01 (незначні зміни) – 24 грудня 1999 року;

ISO/IEC 15445:2000 (так званий ISO HTML, заснований на HTML 4.01 Strict) 15 травня 2000 року.

Кожен стандарт, що знов приймається, надає в розпорядження web-майстра нові можливості, що дозволяють зробити HTML-документ ефективним і зовні привабливим [15].

Для розробки веб-додатку була використана змішана верстка веб-сторінок, тобто були використані і таблична (документ розміщається в таблицях) і «дівова» верстка (верстка з допомогою слоїв).



2.3.4 Таблиці каскадних стилів CSS

Cascading Style Sheets (каскадні таблиці стилів) – технологія опису зовнішнього вигляду документа, написаного мовою розмітки. CSS використовується переважно для оформлення HTML- і XHTML-документів, але іноді і для інших XML-структурованих документів.

CSS використовується творцями веб-сторінок для завдання кольорів, шрифтів, розташування і інших аспектів представлення документа. Основною метою розробки CSS було розділення вмісту (написаного на HTML або іншій мові розмітки) і представлення документа (написаного на CSS). Це розділення може збільшити доступність документа, надати велику гнучкість і можливість управління його уявленням, а також зменшити складність і повторюваність в структурному вмісті. Крім того, CSS дозволяє представляти один і той же документ в різних стилях або методах висновку, таких як екранне уявлення, друк, читання голосом (спеціальним голосовим браузером або програмою читання з екрану), або при висновку пристроями, що використовують Шрифт Брайля.

Стандарт CSS визначає пріоритети, у порядку яких застосовуються правила стилів, якщо для якогось елементу підходять деякі правила одночасно. Це називається «каскадом», в якому для правил розраховуються пріоритети або "ваги", що робить результати передбаченими.

Таблиця стилів складається з набору правил. Кожне правило, у свою чергу, складається з одного або декількох селекторів, розділених комами і блоку визначень.

До появи CSS оформлення веб-сторінок здійснювалося безпосередньо усередині вмісту документа. Проте з появою CSS стало можливим принципове розділення змісту і представлення документа. За рахунок цього нововведення стало можливим легке застосування єдиного стилю оформлення для маси схожих документів, а також швидка зміна цього оформлення.

Переваги CSS розмітки:

декілька дизайнів сторінки для різних пристроїв перегляду. Наприклад, на екрані дизайн буде розрахований на велику ширину, під час друку меню не виводитиметься, а на КПК і стільниковому телефоні меню буде слід за вмістом.

зменшення часу завантаження сторінок сайту за рахунок перенесення правил представлення даних в окремий CSS-файл. В цьому випадку браузер завантажує тільки структуру документа і дані, що зберігаються на сторінці, а представлення цих даних завантажується браузером тільки один раз і кешуються.

простота подальшої зміни дизайну. Не потрібно правити кожну сторінку, а лише змінити CSS-файл.

додаткові можливості оформлення [16].

В даному веб-додатку для оформлення веб-сторінок були використані «зовнішні» таблиці каскадних стилів, тобто стилі розміщенні в файлах стилів (файл.css) і підключені до веб-сторінок.



2.3.5 Мова програмування JavaScript

JavaScript – скриптова мова, що найчастіше використовується при створенні сценаріїв поведінки браузера, що вбудовуються у веб-сторінки.

Назва «JavaScript» є зареєстрованою торговою маркою компанії Sun Microsystems, Inc.

Розроблена компанією Netscape, мова була включена в браузер Netscape Navigator починаючи з другої версії і спочатку називалась LiveScript. Синтаксис мови брав початок від мови СІ, але, оскільки технологія Java була у той час дуже модною, LiveScript перейменували в JavaScript, одержавши відповідну ліцензію у Sun. Компанія Microsoft, побачивши успіх JavaScript, створила свою версію цієї мови під назвою JScript. Інші виробники браузеров також створили свої версії цієї мови, що робить завдання написання складного універсального (сумісного з будь-яким браузером) скрипта досить важким. Для вирішення проблем сумісності асоціація ECMA запропонувала стандарт ECMA-262. По можливостях ECMAScript приблизно відповідає JavaScript 1.1.

JavaScript має низку властивостей об'єктно-орієнтованої мови, але завдяки концепції прототипів підтримка об'єктів в нім відрізняється від традиційних мов ООП. Крім того, JavaScript має ряд властивостей, властивих функціональним мовам, — функції як об'єкти першого рівня, об'єкти як списки, каррінг (currying), анонімні функції, замикання (closures) – що додає мові додаткову гнучкість.

JavaScript має CІ-подібний синтаксис, але в порівнянні з мовою СІ має наступні корінні відмінності:

об'єкти, з можливістю інтроспекції і динамічної зміни типу через механізм прототипів;

функції як об'єкти першого класу;

обробка винятків;

автоматичне приведення типів;

автоматичне прибирання сміття;

анонімні функції.

Семантика мови схожа з семантикою мови Self.

При розробці великих і нетривіальних веб-застосувань з використанням JavaScript, критично важливим є доступ до інструментів відладки, оскільки браузери від різних виробників дещо відрізняються у поведінці.

Також існують кілька інструментів, як вільних, наприклад JSLint, інструмент перевірки якості коду, що сканує JavaScript програму, шукаючи проблеми коду, так і комерційних продуктів типу інструменту з назвою JavaScript Debugger.

Оскільки JavaScript є інтерпретатором, без строгої типизації, і може виконуватися в різних середовищах, кожне зі своїми власними особливостями сумісності, програміст має бути дуже уважним, і повинен перевіряти, що його код виконується як очікується в широкому переліку можливих конфігурацій. Дуже часто трапляються випадки, коли скріпт, що чудово працює в одному середовищі, видає некоректні результати в іншому.

Кожен блок сценарію інтерпретатор розбирає окремо. На веб-сторінках, коли треба комбінувати блоки JavaScript та HTML, синтаксичні помилки найти легше, якщо тримати функції сценарію в окремому блоці коду, або використовувати багато малих пов'язаних .js файлів. В такий спосіб синтаксична помилка не спричинятиме «падіння» цілої сторінки, і можна надати допомогу, елегантно вийшовши зі сторінки [17].



2.3.6 Мова програмування PHP

PHP («препроцесор гіпертексту») – скриптова мова програмування, створена для генерації HTML-сторінок на веб-сервері і роботи з базами даних. В даний час підтримується переважною більшістю провайдерів хостингу. Входить в LAMP – «стандартний» набір для створення веб-сайтів (Linux, Apache, MySQL, PHP (Python або Perl)) [18].

Препроцесор — програма, яка виконує попередню обробку даних, для того, щоб вони могли використовуватись іншою програмою, наприклад, такою як компілятор. Про дані на виході препроцесора говорять, що вони знаходяться в препроцесованій формі, придатній для обробки подальшими програмами (компілятор). Результат і вид обробки залежать від виду пре процесора: так, деякі препроцесори можуть тільки виконати просту текстову підстановку, інші здатні за можливостями порівнятися з мовами програмування. Найчастіший випадок використання препроцесора – обробка початкового коду перед передачею його на наступний крок компіляції. Мови програмування C/C++ і система комп'ютерної верстки використовують препроцесори, що значно розширяють їхні можливості. Назва широко поширеної скриптової мови програмування PHP є рекурсивним акронімом «PHP: Hypertext Preprocessor».

В області програмування для мережі Internet, PHP – одна з популярних скриптових мов (разом з JSP, Perl і мовами, використовуваними в ASP.NET) завдяки своїй простоті, швидкості виконання, багатій функціональності і розповсюдженню початкових кодів на основі ліцензії PHP. PHP відрізняється наявністю ядра і модулів, що підключаються, «розширень»: для роботи з базами даних, сокетами, динамічною графікою, криптографічними бібліотеками, документами формату PDF і т.п. Будь-який охочий може розробити своє власне розширення і підключити його. Існують сотні розширень, проте в стандартне постачання входить лише декілька десятків тих, що добре зарекомендували себе. Інтерпретатор PHP підключається до веб-серверу або через модуль, створений спеціально для цього сервера (наприклад, для Apache або IIS), або як CGI-додаток.

Окрім цього, він може використовуватися для вирішення адміністративних завдань в операційних системах UNIX, GNU/Linux, Microsoft Windows, Mac OS X і AmigaOS. Проте в такій якості він не набув поширення, віддаючи пальму першості Perl, Python і VBScript.

Синтаксис PHP подібний синтаксису мови Сі. Деякі елементи, такі як асоціативні масиви і цикл foreach, запозичені з Perl.

Сьогодні PHP використовується сотнями тисяч розробників. Декілька мільйонів сайтів повідомляють про роботу з PHP, що складає більш п'ятої частки доменів Internetу.

Група розробників PHP складається з безлічі людей, що добровільно працюють над ядром і розширеннями PHP, і суміжними проектами, такими, як PEAR або документація мови.

Назва PHP – рекурсивна абревіатура, що означає «PHP: Hypertext Preprocessor» (раніше акронім розшифровувався як «Personal Home Page Tools»). Спочатку PHP створювався як надбудова над Perl для полегшення розробки веб-сторінок [19].

У 1994 році данський програміст (що нині живе в Канаді) Расмус Лердорф (Rasmus Lerdorf) написав набір скриптів на Perl/CGI для висновку і обліку відвідувачів його онлайн-резюме, оброблювальний шаблони HTML-документів. Лердорф назвав набір Personal Home Page (Особиста Домашня Сторінка). Незабаром функціональності і швидкості Perl - інтерпретатора скриптів – перестало вистачати, і Лердорф написав на мові C новий інтерпретатор шаблонів PHP/FI (англ. Personal Home Page / Forms Interpreter – «Особиста Домашня Сторінка / Інтерпретатор форм». PHP/FI включав базову функціональність сьогоднішнього PHP: оформлення змінних в стилі Perl ($ім'я_змінної для виведення значення), автоматичну обробку форм і встроєний в HTML-текст і багато що інше. Новонароджена мова відрізнялася від свого прородича простішим і обмеженим синтаксисом.

У 1997 році після тривалого тестування бети вийшла друга версія обробника, написаного на C – PHP/FI 2.0. Її використовували близько 1 % (приблизно 50 тисяч) всіх Internet-доменів світу.

PHP 3.0 була першою версією, що нагадує PHP, яким ми знаємо його сьогодні. У 1997 році два ізраїльські програмісти Енді Гутманс (Andi Gutmans) і Зів Сураські (Zeev Suraski), два розробники з ізраїльського інституту технологій, переписали код з нуля: розробники визнали PHP/FI 2.0 непридатним для розробки додатку електронної комерції, над яким вони працювали для проекту Університету розташованого в Хайфі, Ізраїль. Для спільної роботи над PHP 3.0 за допомогою бази розробників PHP/FI 2.0 Енді, Расмус і Зів вирішили об'єднатися і оголосити PHP 3.0 офіційним наступником PHP/FI, розробка ж PHP/FI була практично повністю припинена.

Однією з сильних сторін PHP 3.0 була можливість розширення ядра. Згодом інтерфейс написання розширень привернув до PHP безліч сторонніх розробників, що працюють над своїми модулями, що дало PHP можливість працювати з величезною кількістю баз даних, протоколів, підтримувати велике число API.

Абсолютно нова мова програмування одержала нове ім'я. Розробники відмовилися від доповнення про персональне використання, яке було в абревіатурі PHP/FI. Мова була названа просто PHP – абревіатура, що містить рекурсивний акронім (англ. PHP: Hypertext Preprocessor – «PHP: Препроцесор Гіпертексту»).

До кінця 1998 року PHP використовувався десятками тисяч користувачів. Сотні тисяч веб-сайтів повідомляли про те, що вони працюють з використанням цієї мови. У той час PHP 3.0 був встановлений приблизно на 10 % веб-серверів Internetу.

PHP 3.0 був офіційно випущений в червні 1998 року після 9 місяців публічного тестування.

До зими 1998 року, практично відразу після офіційного виходу PHP 3.0, Енді Гутманс і Зів Сураські почали переробку ядра PHP. У завдання входило збільшення продуктивності складних додатків і поліпшення модульності базису коду PHP. Розширення дали PHP 3.0 можливість успішно працювати з набором баз даних і підтримувати велику кількість різних API і протоколів, але PHP 3.0 не мав якісної підтримки модулів і додатки працювали неефективно.

Новий «движок», названий Zend Engine (від імен творців, Зіва і Енді, також засновників Zend Technologies), успішно справлявся з поставленими завданнями і вперше був представлений у середині 1999 року. PHP 4.0, заснований на цьому движку і такий, що приніс з собою набір додаткових функцій, офіційно вийшов в травні 2000 року, майже через два роки після виходу свого попередника PHP 3.0. На додаток до поліпшення продуктивності, PHP 4.0 мав ще декілька ключових нововведень, таких як підтримка сесій, буферизація висновку, безпечніші способи обробки інформації, що вводиться користувачем, і декілька нових мовних конструкцій.

Оновлення PHP 4 випускатимуться тільки до кінця 2007 року. До цього ж часу здійснюватиметься офіційна підтримка четвертої версії. Далі до 8 серпня 2008 року в міру необхідності з'являтимуться тільки критичні оновлення безпеки. З 9 серпня четверта версія PHP пішла в історію.

П'ята версія PHP була випущена розробниками 13 липня 2004 року. Зміни включають оновлення ядра Zend (Zend Engine 2), що істотно збільшило ефективність інтерпретатора. Введена підтримка мови розмітки XML. Повністю перероблені функції ООП, які стали багато в чому схожі з моделлю, використовуваною в Java. Зокрема, введена деструкція, відкриті, закриті і захищені члени і методи, остаточні члени і методи, інтерфейси і клонування об'єктів. На даний момент найстабільнішими і часто використовуваними є саме версії 5.xx, навіть не дивлячись на те, що вже знаходиться у стадії розробки версія PHP 6, з жовтня 2006 року [20].




3 Реалізація програмного продукту



3.1 Структура і функціональне призначення модулів системи, їх взаємозв’язок



Даний програмний продукт складається з багатьох модулів, які містять класи, функції для оброблення даних та скриптів, які працюють з цими модулями. Усі класи знаходяться в різних файлах і їх назва починається з префікса «cl_». Всі класи наслідуються від головного класу, драйвера бази даних MySQL mysqldriver.php, який в свою чергу реалізує абстрактний клас abstract.dbdriver.php. Для кожного модуля існує окремий файл index.php, який працює з відповідним модулем.

Веб-додаток складається з таких модулів:

а) модуль для керування адміністраторами – admin:

1) cl_administrators.php – клас для роботи керування адміністраторами;

2) checkFIO.php – файл, де відбувається перевірка на введення ПІП;

3) checkLogin.php – файл для перевірки введеного логіна (чи доступний такий логін користувачу);

4) checkPassword.php – файл, для перевірки введення паролю та перевірки співпадання повторного паролю;

б) модуль для керування зареєстрованими користувачами – users:

1) cl_users.php – клас для роботи керування зареєстрованими користувачами;

2) cl_autorize.php – клас для авторизації зареєстрованих користувачів;

3) checkFIO.php – файл, де відбувається перевірка на введення ПІП;

4) checkLogin.php – файл для перевірки введеного логіна (чи доступний такий логін користувачу);

5) checkPassword.php – файл, для перевірки введення паролю та перевірки співпадання повторного паролю;

в) модуль для роботи з тестом – test:

1) cl_test.php – клас для роботи з тестом;

2) test_config.php – файл конфігурації тесту;

г) cl_authorization.php – клас для доступу в систему управління;

д) cl_db.php – клас, який відповідає за підключення і відключення від бази даних і підключає драйвер бази даних;

е) cl_navigation.php – клас для навігації по сторінкам;

є) модуль відправки повідомлень – mailer:

1) class.phpmailer.php – клас для відправки повідомлень;

2) FriendMail.php – клас для перевірки введених даних, який використовує клас class.phpmailer.php;

ж) модуль автоматичного тесту для розпізнавання комп’ютерів і людей – kcaptcha:

1) kcaptcha.php – клас автоматичного тесту для розпізнавання комп’ютерів і людей;

2) kcaptcha_config.php – файл конфігурації капчі для сайту;

3) kcaptcha_config_login.php – файл конфігурації капчі для системи управління;

4) 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 Розробка програмних модулів



Розробка програмного продукту починається зі створення бази даних. Для зручності створення бази було обрано менеджер бази даних phpMyAdmin. Зайшовши в менеджер бази даних, у полі «Новая база данных» потрібно вказати назву бази iq_test та натиснути кнопку «Создать» (рисунок 3.2).





Рисунок 3.2 – Створення нової бази даних



Далі починаємо створювати таблиці. Спочатку створюємо таблицю «Запитання». У відповідне поле вписуємо назву таблиці «t_question», задаємо кількість полів і натискуємо кнопку «ОК» (рисунок 3.3).




Рисунок 3.3 – Створення таблиці «Запитання»



Далі задаємо назви полів, ключі таблиці, типи, атрибути, значення за замовчуванням.

Щоб вказати, що поле є ключовим потрібно обрати опцію з іконкою , щоб вказати, що поле є унікальним – опцію з іконкою , якщо поле є індексованим – з іконкою . Описавши поля та вказавши для них атрибути натискуємо кнопку «Сохранить», після чого отримуємо повідомлення про успішне створення таблиці.

Вигляд структури таблиці «Запитання» в менеджері наведено на рисунку 3.4.





Рисунок 3.4 – Структура таблиці «Запитання»



Аналогічно створюємо таблиці «Відповіді», «Рейтинг», «Авторизація», «Користувачі».

Для виконання операцій над таблицями або над базою даних можна використати головне меню менеджера (рисунок 3.5). А для того щоб працювати з потрібною таблицею її необхідно вибрати зі списку зліва (рисунок 3.6).




Рисунок 3.5 – Головне меню менеджера бази даних





Рисунок 3.6 – Список таблиць в базі даних



Після створення бази даних, приступив до написання модулів системи.

Опис модулів, що містять функції.

Файл 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() – не має параметрів, призначена для вибірки номерів записів легких запитань;

SelectAllIdM() – не має параметрів, призначена для вибірки номерів записів середніх по складності запитань;

SelectAllIdC()– не має параметрів, призначена для вибірки номерів записів тяжких по важкості запитань;

ForRead() – не має параметрів, повертає кількість питань для відображення;

SelectPoint($perem1, $perem2) – відповідає за вибірку кількості балів за відповідь, має параметри: номер питання, номер варіанта відповіді;

Calculation($perem1, $perem2) – призначена для підрахунку кількості балів за відповідь, має параметри: вага варіанта відповіді, кількість відображених запитань відповідно;

ShowSuperRatingMain() – призначена для відображення рейтингу лідерів на головній сторінці;

ShowRatingMain()– призначена для відображення рейтингу учасників на головній сторінці;

ShowSuperRating() – призначена для відображення рейтингу лідерів;

ShowRating() – призначена для відображення рейтингу учасників;

SaveRating($id, $mark, $date, $time) – відповідає за збереження рейтингу учасників, має параметри: код учасника, бал, дата, час.

CountRating() – не має параметрів, призначена для підрахунку записів в рейтингу;

ShowTest1($perem) – відповідає за відображення запитань і відповідей, має параметр – код запитання.

Програмний код файлу cl_test.php наведено в додатку А.

Файл cl_authorization.php містить наступні функції:

authorization_check($users,$password) – призначена для авторизації адміністраторів в систему управління, має параметри: логін і пароль.

Файл kcaptcha.php містить наступні функції:

KCAPTCHA() – призначена для генерування рядка від автоматичного відправлення повідомлень;

getKeyString() – призначена для відображення з генерованого рядка.



3.3 Інструкція користувача



Для початку розпишемо інструкцію встановлення та налаштування веб-додатку.

По-перше, весь каталог, де розміщується веб-додаток, копіюємо в потрібний каталог на веб-сервері. Далі створюємо базу даних, через sql-запити, або ж через менеджер БД phpmyadmin. Після створення бази даних необхідно експортувати таблиці із zip архіву «DB/avtoparts.sql.zip» для того, щоб не набирати їх вручну. Далі потрібно налаштувати параметри доступу до БД. Для цього необхідно відкрити файл «config/config.php» і задати параметри: тип БД (mysql), ім’я хоста (localhost), ім’я користувача (root), пароль (якщо є), назву БД, префікс БД (якщо потрібно).

Далі переходимо до інструкції експлуатації програмного продукту.

Для користувачів та адміністраторів розроблені різні сторінки доступу. Користувачу при завантажені веб-додатку доступна головна сторінка тестування, з якої він починає роботу. Програмний код головної сторінки наведено в додатку Б.

Користувач може пройти тестування і дізнатись свій коефіцієнт інтелекту без реєстрації. Тестування починається після натиснення кнопки «Начать тест», зображеної на рисунку 3.7.

Після натиснення кнопки користувач розпочинає тестування. Відповідаючи на запитання користувач повинен вибрати один із запропонованих варіантів відповіді, клацаючи по цьому варіанті (рисунок 3.8). Час на проходження тесту необмежений, а таймер призначений просто для відображення пройденого часу.

Програмний код сторінки тестування наведено в додатку В.

Після, того як користувач дав відповіді на всі запитання (їх кількість задається в системі управління), він бачить результат. Приклад результату зображений на рисунку 3.9.

Далі, якщо користувач хоче взяти участь в рейтингу учасників, йому потрібно зареєструватись (рисунок 3.10). Якщо користувач вже зареєстрований, то йому, для того щоб зберегти дані, необхідно авторизуватись (рисунок 3.11).




Рисунок 3.9 – Результат тестування





Рисунок 3.10 – Форма реєстрації




Рисунок 3.11 – Форма авторизації



Якщо виникне ситуація, коли користувач забуде свій пароль, то він може скористуватись формою для нагадування пароля, зображеної на рисунку 3.12. Новий пароль надійде користувачу на вказаний при реєстрації email.





Рисунок 3.12 – Форма нагадування паролю



Також користувач може відправити результат свого тестування другу, заповнивши необхідні дані (рисунок 3.13).




Рисунок 3.13 – Форма для відправки даних другу



Далі поговоримо про частину адміністратора.

Для початку роботи адміністратор має авторизуватись. Для цього необхідно ввести логін та пароль в форму, подану на рисунку 3.14.





Рисунок 3.14 – Форма для авторизації адміністраторів



Для керування зареєстрованими користувачами необхідно скористуватись пунктом меню «Пользователи сайта», розташованим в верхній панелі (рисунок 3.15).




Рисунок 3.15 – Керування користувачами



В даному пункті меню можна переглядати інформацію про користувачів, а також керувати ними (рисунок 3.16).





Рисунок 3.16 – Панель керування користувачами



Для адміністрування тестом необхідно обрати пункт меню «Тесты». В цьому пункті можна додавати/видаляти/редагувати запитання і відповіді. На рисунку 3.17 наведений список питань.




Рисунок 3.17 –Керування запитаннями



В даному пункті меню можна переглядати інформацію про запитання, а також керувати ними (рисунок 3.18).

Для додавання/редагування запитань можна скористатись формою зображеною на рисунку 3.19.





Рисунок 3.19 –Додавання запитання

При додаванні запитання потрібно ввести текст запитання, по необхідності можна задати картинку до тесту, а також додати варіанти відповіді та рівень складності запитання. Але потрібно пам’ятати, що правильний варіант відповіді для запитання має бути один.

Для налаштування тестування необхідно скористатись пунктом меню «настройки», розташованим в верхньому меню. В даному пункті меню задаються наступні параметри: кількість запитань, які показувати за сеанс, кількість учасників в рейтингу та кількість лідерів. Дана форма зображена на рисунку 3.20.



3.4 Вимоги до технічних засобів



Вимоги до технічних засобів можна поділити на такі категорії:

а) вимоги до програмного забезпечення сервера:

1) повинен бути встановлений та налаштований сервер Apache;

2) повинен бути встановлений PHP 4.1.0 або вище;

3) підтримка сесій;

4) MySQL 3.23.32 або вище;

б) вимоги до апаратного забезпечення сервера:

1) під’єднання до локальної мережі чи мережі Internet;

2) обсяг оперативної пам'яті від 256 MB;

3) процесор не нижче Pentium III;

4) вільне місце на жорсткому диску для зберігання проекту (приблизно 7 MB);

5) вільне місце на жорсткому диску для зберігання бази даних;

в) вимоги до програмного забезпечення клієнта:

1) наявність веб-браузера;

г) вимоги до апаратного забезпечення клієнта:

1) під’єднання до локальної мережі чи мережі Internet;

2) обсяг оперативної пам'яті від 128 MB;


Висновки



В процесі виконання кваліфікаційної роботи бакалавра був розроблений веб-додаток для визначення рівня інтелекту людини (або коефіцієнта інтелекту). Даний додаток має спрощену систему управління, написаний на мові програмування PHP з використанням JavaScript, а в якості СУБД була використана MySQL.

Даний веб-додаток дозволяє користувачу перевірити свої знання (свою ерудованість) і визначити коефіцієнт інтелекту. Кількість балів за запитання залежить від кількості запитань і від ваги запитання. Всі запитання поділені на три рівня складності: легкі, середні і складні запитання. Результат залежить від рівня складності запитання, тому в програмному продукті був реалізований алгоритм, який обирає з бази різні по складності запитання: спочатку користувач відповідає на легкі запитання, потім на середні по складності, а в кінці вибираються складні запитання.

Розроблений програмний продукт має також систему управління, яка дозволяє адміністратору керувати веб-додатком: керувати зареєстрованими користувачами, додавати/видаляти/редагувати запитання і відповіді, завантажувати картинки на сайт. Система управління є захищеною, так як існує окрема форма авторизації адміністраторів, паролі шифруються, а при виході з системи інформація з сесії видаляється.

До переваг даного програмного продукту можна віднести те, що серед своїх аналогів цей тест є безкоштовним і кожний бажаючий може його пройти, а також в веб-додатку реалізована можливість відправки результату тестування другу на email.

Для покращення веб-додатку в майбутньому необхідно буде реалізувати можливість керувати вмістом сайту через систему (зараз вміст сайту статичний), додавати меню, підменю для веб-додатку.


Перелік посилань



Інтелект [Електронний ресурс] // Вікіпедія – вільна енциклопедія. –URL: http://uk.wikipedia.org/wiki/Інтелект/ (дата звернення: 13.05.2009).

Коефіцієнт інтелекту [Електронний ресурс] // Вікіпедія – вільна енциклопедія. – URL: http://uk.wikipedia.org/wiki/Коефіцієнт_інтелекту/ (дата звернення: 13.05.2009).

Flash [Електронний ресурс] // Вікіпедія – вільна енциклопедія. – URL: http://uk.wikipedia.org/wiki/Flash/ (дата звернення: 13.05.2009).

Статьи PHP [Электронный ресурс] // Портал «Форум PHP программистов». – URL: http://php.ru/ (дата обращения: 13.05.2009).

Статьи HTML [Электронный ресурс] // Портал «Учебники по HTML». – URL: http://www.htmlbook.ru/ (дата обращения: 13.05.2009).

Веб-сервер [Електронний ресурс] // Вікіпедія – вільна енциклопедія. – URL: http://uk.wikipedia.org/wiki/Веб-сервер/ (дата звернення: 13.05.2009).

Статьи Apache [Электронный ресурс] // Портал «Apache.RU». – URL: http://www.apache.ru/ (дата обращения: 14.05.2009).

Система керування базами даних [Електронний ресурс] // Вікіпедія – вільна енциклопедія. – URL: http://uk.wikipedia.org/wiki/Система_керування_базами_даних/ (дата звернення: 14.05.2009).

Статьи MySQL [Электронный ресурс] // Портал «MySQL.RU». – URL: http://www.mysql.ru/ (дата обращения: 14.05.2009).

HTML [Електронний ресурс] // Вікіпедія – вільна енциклопедія. – URL: http://uk.wikipedia.org/wiki/HTML/ (дата звернення: 14.05.2009).

Мова розмітки даних [Електронний ресурс] // Вікіпедія – вільна енциклопедія. – URL: http://uk.wikipedia.org/wiki/Мова_розмітки_даних/ (дата звернення: 14.05.2009).

Гіпертекст [Електронний ресурс] // Вікіпедія – вільна енциклопедія. – URL: http://uk.wikipedia.org/wiki/Гіпертекст/ (дата звернення: 14.05.2009).

Гіперпосилання [Електронний ресурс] // Вікіпедія – вільна енциклопедія. – URL: http://uk.wikipedia.org/wiki/Гіперпосилання/ (дата звернення: 14.05.2009).

XHTML [Електронний ресурс] // Вікіпедія – вільна енциклопедія. – URL: http://uk.wikipedia.org/wiki/XHTML/ (дата звернення: 15.05.2009).

Статьи HTML [Электронный ресурс] // Сайт «HTML справочник». – URL: http://html.manual.ru/ (дата обращения: 15.05.2009).

Статьи CSS [Электронный ресурс] // Сайт «Статьи о CSS». URL: http://www.webostudio.com/ua/stats/CSS/ (дата обращения: 15.05.2009).

Статьи JavaScript [Электронный ресурс] / Сайт «Учебники с примерами скриптов». – URL: http://javascript.ru/ (дата обращения: 15.05.2009).

PHP [Електронний ресурс] // Вікіпедія – вільна енциклопедія. – URL: http://uk.wikipedia.org/wiki/PHP/ (дата звернення: 15.05.2009).

Статьи PHP [Электронный ресурс] // Портал «PHP.COM.UA». – URL: http://www.php.com.ua/ (дата обращения: 15.05.2009).

Статьи PHP [Электронный ресурс] // Сайт «Статьи о PHP». – URL: http://www.webostudio.com/ua/stats/PHP/ (дата обращения: 15.05.2009).