Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Помогите написать простую систему тестирования!!!


Автор: zozo 15.12.2005, 23:31
Здравствуйте!
Помогите пожалуйста написать простую систему тестирования(срочно)!Очень нужно,но не понимаю как сделать-профан в Perl!Тестирование состоит из:некоторого кол-ва вопросов с вариантами ответов(HTML)-переход осуществляется при помощи кнопки Next(например)!В конце теста отображается кол-во правильных и неправильных ответов+кнопка для перехода к началу теста!Вся информация записывается в БД(Можно Access или в ячейки Excel)!Заранее благодарен!жду вашей помощи! smile

Автор: korob2001 16.12.2005, 17:28
Генерируй страницу с вопросом и возможными вариантами ответов, когда переходишь к следующему вопросу запоминаешь предидущий ответ в скрытом поле <input type="hidden" ...> и так далее. Когда отвечают на последний вопрос, отправляешь всю форму на сервер, где проверяешь полученные данные. Если всё нормально, то делаешь запись в таблицу базы данных, если же даннные не верны, выводишь сообщение об ошибке.

Автор: zozo 16.12.2005, 17:47
Спасибо за быстрый ответ!Аналитически я это понимаю и сам HTML у меня готов(вопросы с кнопками)!меня интересует скрипт на Perl по обработке!Я просто плохо знаю Перл,а мне срочно нужно код написать!Если можете привести подобный пример кода ,то буду очень благодарен!!!

Автор: BlackLFL 17.12.2005, 15:49
срочно говорите? 150$ и через полчаса у Вас будет простенький скрипт ...

Автор: zozo 17.12.2005, 17:02
Я пожалуй проингнарирую ваше сообщение BlackLFL!Спасибо за помощь!

Автор: Kiber_rat 17.12.2005, 18:03
Просто надо было честно назвать тему не "Помогите написать... " а "Напишите или дайте...". Если бы у тебя были проблемы но ты его писал, это одно, а если тебе нужен готовый скрипт, то это совсем другое, согласен? Могу посоветовать сходить и поискать на http://hotscripts.com/ там наверняка найдется то, что тебе надо.

Автор: zozo 18.12.2005, 12:29
Дело в том,что я действительно его пишу!На Java Scripte я написал само тестирование,а как в Perle обработать результат и записать его в БД не знаю!Так что не всё так плохо как вы думаете!

Автор: zozo 18.12.2005, 15:27
Подскажите пожалуйста:я написал код на JS-тест
Код

<HTML>
<HEAD>
<TITLE>Тест made by zozo!!!</TITLE>
<script language="JavaScript">
<!-- Hide JavaScript from Java-Impaired Browsers
function dataBase(test) {
     var counter=0;
     if (test.q1[1].checked) {counter++;}
     if (test.q2[3].checked) {counter++;}
     if (test.q3[2].checked) {counter++;}
     if (test.q4[0].checked) {counter++;}
     document.test.display.value = counter;
}
// End Hiding Script -->
</script>
</HEAD>
<BODY bgcolor=gray>
<center>
<form action="remove_it?subject=Answer on test questions" method="post" name="test">
<!--ENCTYPE="text/plain"-->
<H2>Тест made by zozo!!!</H2>
<HR width=75%>
<h3>Сколько будет 2+2*2?</h3><div align="left"><p style="margin-left: 100"><strong>
<input name="q1" type="radio" value="11">8<br>
<input name="q1" type="radio" value="12">6<br>
<input name="q1" type="radio" value="13">4<br>
<input name="q1" type="radio" value="14">1<br>
</strong></p>
</div><hr>
<h3>Сколько букв О в слове мОлОкО?</h3><div align="left"><p style="margin-left: 100"><strong>
<input name="q2" type="radio" value="21">1<br>
<input name="q2" type="radio" value="22">2<br>
<input name="q2" type="radio" value="23">4<br>
<input name="q2" type="radio" value="24">3<br>
</strong></p>
</div><hr>
<h3>Сколько БИТ в БАЙТЕ?</h3><div align="left"><p style="margin-left: 100"><strong>
<input name="q3" type="radio" value="31">3<br>
<input name="q3" type="radio" value="32">5<br>
<input name="q3" type="radio" value="33">8<br>
<input name="q3" type="radio" value="34">9<br>
</strong></p>
</div><hr>
<h3>Сколько часов в одних сутках?</h3><div align="left"><p style="margin-left: 100"><strong>
<input name="q4" type="radio" value="41">24<br>
<input name="q4" type="radio" value="42">23<br>
<input name="q4" type="radio" value="43">20<br>
<input name="q4" type="radio" value="44">12<br>
</strong></p>
</div><hr>
<table>
<tr>
<td colspan="3"><div align="center"><p><strong><br><hr>Нажмите на кнопку для подсчёта баллов:</strong></td></div>
</tr>
<tr align="center">
<td><strong><input name="check" onclick="dataBase(this.form)" type="button"
value=" Подсчитать баллы "></strong></td>
<td><strong><textarea cols="5" name="display" rows="1" wrap="VIRTUAL"></textarea></strong></td>
<td><strong><input type="reset" value=" Начать Снова "></strong></td>
</tr>
</table>
</form></center>
<hr align="center">
<p align=center><strong>А теперь результаты. Если Вы набрали:<br>
<ul>
<li>0 баллов Надо много ещё чего познать:)
<li>до 1 балла Статус:Начинающий:)
<li>2-3 балла Неплохо, но нужно быть внимательнее,до совершенства ещё чуток:)
<li>4 балла Отлично! Вы можете собой гордиться:)
</ul>
<br>
</strong></p>
<hr align="center">
</BODY>
</HTML>


А дальше не знаю как в Perle его обработать!Мне нужно,чтобы Вопросы и ответы послались в БД или в Excel?Подскажите как это сделать?Я так понял при помощи Open-открытие файла и write-запись в него!Но как именно записать то,что мне надо!Заранее благодарен!Жду ответа!

Автор: Kiber_rat 18.12.2005, 19:39
Прежде чем помогать тебе с perl я тебе кой чего хочу сказать про твой тест smile Исполльзование javascript для вычисления правильных ответов не есть хорошо, потому как любой соображающий экзаменуемый, просто откроет сырцы твоей странички и увидит все правильные ответы. Т.е. это должен проверять CGI скрипт. Кстати, есть какой нить язык программирования который ты знаешь хорошо? Я к тому, что CGI для обработки ответов ты можешь написать на чем угодно, а не только на perl, особенно если планируется хостить это все под Windows.

Автор: zozo 18.12.2005, 20:33
Kiber_rat Дело в том что мне нужно CGI именно на Perle написать!Ничего с этим сделать не могу!Понимаю,что JS для обработки ответов не подходит,но не в этом суть!В данной ситуации можно оставить так!мне не преходилось сталкиваться ещё с Perl и CGI и поэтому многого не знаю!Самое главное для меня сейчас-это перенести ответы и вопросы в БД,а ещё лучше и проще в ячейки Excel!

Автор: Kiber_rat 19.12.2005, 04:49
Как работать с excel из perl я не знаю, можно сделать промежуточный вариант, сохранять данные в CSV формате который легко импортируется в excel, access и любую базу данных. Скрипт для обработки выглядел бы примерно так:
Код
#!/usr/bin/perl
#Crafted by Ku6ep :)
use strict;
use warnings;
use CGI;
my %V = CGI::Vars();
my $count;
open FH, ">>outfile.csv"  or die "Can't open file, $!\n";
print FH "$V{username};$V{q1};$V{q2};$V{q3};$V{q4}\n";
close FH;
print CGI::header(-charset => "koi8-r");
$count++ if $V{q1} == 12;
$count++ if $V{q2} == 24;
$count++ if $V{q3} == 33;
$count++ if $V{q4} == 41;
my $str = $count == 4 ? "Отлично! Вы можете собой гордиться:)" :
               $count == 1 ? "Статус:Начинающий:)" :
               ($count == 2 or $count == 3) ? "Неплохо, но нужно быть внимательнее,до совершенства ещё чуток:)"
               "Надо много ещё чего познать:)";
print "<center><b>$str</b></center>";
Назвать файл check.cgi, в форме задать его для action="check.cgi". Соответственно хорошо бы добавтить в форму на html поле для usernameб что бы записи в файле различались по юзерам, ну и вместо
Код
<td><strong><input name="check" onclick="dataBase(this.form)" type="button"    value=" Подсчитать баллы "></strong></td>
вставить
Код
<td><strong><input name="check" type="submit" value=" Подсчитать баллы "></strong></td>

Автор: zozo 20.12.2005, 21:37
Kiber_rat Спасибо за ответ и помощь!Очень благодарен!Щас попробую всё это заставить работать!Ещё раз спасибо!

Автор: sharq 24.12.2005, 12:56
Для работы с Excel необходимо юзать модули Spreadsheet::ParseExcel и Spreadsheet::WriteExcel.

Взаимодействие perl и excel уже ни раз рассматривалась в форуме, пользуйся поиском.

Если возникнут вопросы, задавай.

smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)