Смекни!
smekni.com

Разработка программы генерации тестов из базы данных на языке РНР (стр. 2 из 2)

Условие задания не должно никогда (ни для одного варианта ответа) принимать неопределенное значение.

Все вариантов ответов должны быть подобраны умело.

Повторяющиеся слова и словосочетания в ответах должны быть исключены и перенесены в основную часть условия.

Из ответа к одному тестовому заданию нельзя получать каким-либо образом ответ к другому заданию.

Не должен возникнуть вопрос по уточнению условия, вариантов ответов (или, точнее, подготовленному испытуемому нет необходимости задать вопрос по условию задания преподавателю, а преподаватель может не отвечать на такие вопросы).

Ни один тестируемый не должен получать преимущество перед другим на всем промежутке тестирования.

Количество тестовых заданий в тесте (длина теста) должно составить 30–40 для естественнонаучных дисциплин и примерно в два раза больше – для гуманитарных дисциплин. Впрочем, эта величина зависит от того, какова цель тестирования. Тест, состоящий из меньшего количества заданий можно вполне использовать как обучающий, мотивационный.

Спецификация (описание атрибутов теста – предмет, время разработки, автор и др.) к тесту должна содержать всю информацию, необходимую для проведения тестирования.

Нельзя предусматривать в тестовых заданиях необходимость проведения развернутых выкладок.

Количество заданий в базе данных тестовых заданий должно быть примерно в 10 раз больше усредненной длины теста (т.е. от 200-300 заданий).

Большинство заданий в тесте – закрытой формы. Закрытая форма более быстро воспринимаема и близка ежедневно решаемой человеком проблеме выбора.

Задания в тесте должны быть упорядочены по возрастанию уровня сложности, например, А - легкие, В – средние, С - сложные. Порядок предъявления заданий: все задания группы А – все задания группы В – все задания группы С.

Возможны следующие варианты предъявления тестовых заданий:

1. от легких заданий – к более сложным;

2. от средних заданий – к более легким или трудным (в зависимости от ответа);

3. от сложных заданий – к более легким и др.

Основными критериями отбора содержания теста являются:

1. соответствие гипотезе тестирования;

2. значимость;

3. правильность;

4. репрезентативность;

5. соответствие современному состоянию науки и методики;

6. сбалансированность содержания теста;

7. тематическая направленность;

8. вариативность содержания;

9. доступность;

10. соответствие уровня трудности содержанию цели тестирования.

Существуют также и другие правила разработки тестов и тестовых заданий, но мы не будем углубляться в них.


Глава 2. Практическая реализация приложения

Генератор тестов представляет собой веб-приложение, генерирующее из базы данных вопросы и ответы к ним, и представляющее их пользователю в виде тестовых заданий.

При запуске приложения, показывается название программы и кнопка-ссылка «Начать». После нажатия этой кнопки начинается сам тест.

При нажатии кнопки «Начать» открывается новая страница, на которой отображаются вопросы, выбранные из базы данных, и по четыре варианта ответа к каждому вопросу. Вопросы и ответы к ним располагаются последовательно друг под другом. Выбор варианта ответа производится кликом мыши. После выбора ответов ко всем вопросам пользователь должен нажать на кнопку «Проверить», после чего программа подсчитает количество правильных ответов и выведет результаты на экран.

В Базе данных хранится две таблицы: таблица вопросов «Vopr» и таблица ответов к ним – «Otv». Вопросы в базе данных разбиты на блоки, по три вопроса в каждом, каждый следующий блок содержит более сложные вопросы, чем предыдущий.

Таблица вопросов содержит следующие поля: ID – идентификационный номер вопроса; Vopros – формулировка самого вопроса; Block – номер блока, к которому принадлежит вопрос.

Таблица ответов содержит поля: ID – идентификационный номер ответа; Otvet – формулировка ответа; ID_vopr – номер вопроса, к которому относится ответ; Znach – значение истинности ответа, может принимать два значения: T(true) – ответ является верным, F(false) – не верный ответ.

Значения хранящиеся в таблицах можно посмотреть в приложении 1.

Веб-приложение состоит из трех html-страниц: главная, тестовая и страница проверки.

Главная страница, содержит приветственное слово и кнопку-ссылку для перехода на следующую страницу и начала теста.

Код страницы:

<html>

<head>

<title> Генератор тестов :: Главная </title>

</head>

<body bgcolor="#D9ECFF">

<div align="center">

<font size="6">Главная</font> <p>&nbsp;</p><p>&nbsp;</p>

<table border="1" width="50%" cellpadding="7" bgcolor="#BFDFFF" align="center">

<tr> <td> Приветствуем Вас в генераторе тестов.

</td></tr>

<tr> <td height="10%">

Пожалуйста, нажмите на кнопку, чтобы начать.

</td></tr>

<tr><td height="29">

<a title="Жмите, не бойтесь :)"href="index.php">

<font size="4">Начать</font></a>

</td></tr>

</table> </div>

</body>

</html>


Графическое представление (интерфейс пользователя):

Тестовая страница – страница, содержащая код на языке РНР, который непосредственно и генерирует вопросы из БД и ответы к ним, а также выводит вопросы с ответами на экран.

Рассмотрим РНР код:

<?php

ERROR_REPORTING(E_ALL & ~E_NOTICE & ~E_WARNING);

$mysql_host="localhost";

$mysql_user="tanushka";

$mysql_password="******";

$mysql_database="Gener";

/* Соединяемся, выбираем базу данных */

$link = mysql_connect("$mysql_host", "$mysql_user", "$mysql_password") or die("Could not connect:".mysql_error());

mysql_select_db("$mysql_database") or die("Could not select database");

echo "<FORM method=&bsol;"POST&bsol;" action='proverka.php'>";

$num = 1; // переменная, отвечающая за номер вопроса;

while ($num<=5) {

$query = "SELECT * FROM Vopr WHERE Block='$num'";

$q=@mysql_query ($query);

if(!$q) break;

while ($row=@mysql_fetch_array($q))

{$quest[]=$row;}

$current=$quest[rand(0,count($quest)-1)];

echo "<hr>";

echo $current['Vopros'];

echo "</hr>";

echo "<input type='hidden' name='q[$num]'

value='".$current['ID']."'>";

$query2= "SELECT * FROM Otv WHERE

ID_vopr='".$current['ID']."'";

$a=@mysql_query ($query2);

while ($arow=@mysql_fetch_array($a))

{ echo "<p><input type='radio' name='a[$num]' value='".$arow ['ID']."'> ".$arow ['Otvet']." </p>";

}

echo "<br><br>";

unset($quest);

$num++; // переходим к следующему вопросу

}

echo "<INPUT TYPE=submit VALUE='Отправить'>";

echo " </FORM>";

/* Закрываем соединение */

mysql_close($link);

?>

Страница проверки – страница, содержащая РНР код, сравнивающий правильный ответ с ответом пользователя, если они совпадают, пользователю начисляется балл.


РНР код:

<?

if (!isset ($_POST['q'])||!isset($_POST ['a']))

exit(0);

$q=$_POST['q'];

$a=$_POST['a'];

$ball=0;

$mysql_host="localhost";

$mysql_user="tanushka";

$mysql_password="******";

$mysql_database="Gener";

/* Соединяемся, выбираем базу данных */

$link = mysql_connect("$mysql_host", "$mysql_user", "$mysql_password") or die("Could not connect:".mysql_error());

mysql_select_db("$mysql_database") or die("Could not select database");

for ($i=1; $i<=count($q); $i++)

{$query="SELECT * FROM Otv WHERE ID_vopr='".$q[$i]."' AND

Znach='T'";

$p=@mysql_query($query);

$row=@mysql_fetch_array($p);

$answer = $row['ID'];

if($a[$i]==$answer) $ball++;

unset($query,$p,$row);

}

echo "Ваш балл ".$ball." Из ".count($q).";

?>


Заключение

В настоящее время в нашу жизнь широко внедряются информационные технологии. На сегодняшний день, наверное, не осталось такой области, где бы они ни применялись. Компьютеры является неотъемлемой частью работы людей. Они используются в школах и университетах.

В данном курсовом проекте был создан: “Генератор тестов на языке РНР”. Он представляет собой веб-приложение, которое выбирает произвольным образом 5 вопросов и ответов к ним из базы данных, выводит их на экран и проверяет, сколько правильных ответов дал пользователь.

Пользовательский интерфейс приложения делает его простым, понятным и доступным.

Данное веб-приложение может быть усовершенствовано до полноценной системы тестового контроля знаний пользователей. Его пользовательский интерфейс может быть улучшен за счет разделения списка вопросов на страницы, т.е. каждый новый вопрос выводился бы на новой странице. Также данное приложение можно сделать межпредметным, т.е. добавить возможность выбора дисциплины, по которой будет проводиться тестирование.


Список использованных источников

1. Интернет Университет Информационных Технологий – дистанционное образование [Электронный ресурс]. Режим доступа: http:// www.intuit.ru. - Загл. с экрана. Яз. Рус.

2. Википедия – свободная библиотека [Электронный ресурс]. Режим доступа: http://ru.wikipedia.org/wiki - Загл. с экрана. Яз. Рус.

3. Сайт компании “Softwerk”[Электронный ресурс]. Режим доступа: http://www.softwerk.ru - Загл. с экрана. Яз. Рус.

4. Котеров, Д.В. Самоучитель PHP4/ Д.В. Котеров – СПб.: БХВ-Петербург, 2001.

5. Кузнецов, М.В. РНР 5 на примерах / М.В. Кузнецов, И.В. Симдянов, С.В. Голышев. – СПб.: БХВ-Петербург, 2005. – 575 с.


Приложение 1.

Описание таблиц хранящихся в базе данных “Gener”:

Таблица вопросов “Vopr”

ID Vopros Block
1 2*2 1
2 3*3 1
3 4*4 1
4 7*8 2
5 9*5 2
6 5*4 2
7 11*7 3
8 15*3 3
9 16*2 3
10 44:4 4
11 42:7 4
12 56:7 4
13 512:2 5
14 1024:2 5
15 256:2 5

Таблица ответов “Otv”

ID Otvet ID_vopr Znach
1 4 1 T
2 5 1 F
3 6 1 F
4 7 1 F
5 11 2 F
6 12 2 F
7 9 2 T
8 10 2 F
9 5 3 F
10 12 3 F
11 15 3 F
12 16 3 T
13 56 4 T
14 63 4 F
15 58 4 F
16 55 4 F
17 40 5 F
18 45 5 T
19 55 5 F
20 48 5 F
21 15 6 F
22 18 6 F
23 20 6 T
24 24 6 F
25 77 7 T
26 76 7 F
27 87 7 F
28 79 7 F
29 46 8 F
30 45 8 T
31 30 8 F
32 35 8 F
33 30 9 F
34 34 9 F
35 32 9 T
36 36 9 F
37 10 10 F
38 11 10 T
39 12 10 F
40 13 10 F
41 8 11 F
42 7 11 F
43 6 11 T
44 5 11 F
45 6 12 F
46 7 12 F
47 9 12 F
48 8 12 T
49 1028 13 F
50 266 13 F
51 256 13 T
52 117 13 F
53 512 14 T
54 522 14 F
55 507 14 F
56 519 14 F
57 127 15 F
58 129 15 F
59 128 15 T
60 132 15 F