Смекни!
smekni.com

Розробка програмного модулю для визначення IQ людини (стр. 2 из 7)

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

обчислюється за формулою:

(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 Вибір засобів розробки інформаційної системи