Коефіцієнт інтелекту
обчислюється за формулою: (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 | |
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 |