Модуль "Обучения" :: Тип вопроса "Короткий ответ"

Рейтинг: 42.3045  
На голосовании
Предложил Артём Шевцов 29.11.2011 20:18:39

Модуль "Обучения" :: Тип вопроса "Короткий ответ"

Здравствуйте, сегодня столкнулся с проблемой в модуле "Обучение". Есть понятие "Короткий ответ".

Короткий ответ: ученик должен ввести в качестве ответа слово или
фразу. Учителем может быть задано несколько вариантов правильного ответа.
Пример:
в тесте создаем вопрос вида:
"Кто друг человека? "
и поле для ввода ответа, которое ожидает строку
"собака"

Тема поднималась в 2006 году:
http://dev.1c-bitrix.ru/community/forums/messages/forum6/topic4900/message29891/#message29891

Идея!!! Разработчикам доделать модуль "Обучение"

Рейтинг: -2.0134  
Погорелый Андрей 29.11.2011 21:30:09
не, ну его нафик. пусть не отвлекаются, работают над более востребованными вещами.
Рейтинг: 0  
Артём Шевцов 29.11.2011 23:07:40
Заминусовали идею, а жаль.
Рейтинг: 1.1847  
Краснов Виктор 30.11.2011 11:30:05
А я поддерживаю идею! Мне оно нужно как воздух: дана задача, у нее конкретный числовой ответ, например, "1100". Неудобно в таком случае давать выбор варианта, лучше чтобы ответа не было вообще перед глазами, иначе можно догадаться. А у меня 50 человек, кого надо протестировать - и проверять руками - это жутко неудобно.
Рейтинг: 0.7108  
Артём Шевцов 30.11.2011 12:37:55
Вообще интересно, во всех системах обучения данная функция имеется, а в Битриксе нет, хотя Битрикс занял 5 место из 30 на саммите разработчиков электронных курсов.

В идеале хотелось получить еще следующие варианты вопросов:

Вычисляемый вопрос - можно задать формулы математические и автоматом посчитается правильность ответа.


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


Числовой вопрос - с точки зрения ученика выглядит так же, как и короткий ответ. Разница в том, что ему необходимо ввести в качестве ответа число. При этом допускается определенная погрешность при ответе, т.е. в качестве ответа принимается диапазон значений.
Рейтинг: 0.6904  
Басыров Роберт 30.11.2011 13:22:54
В ТЗ, который сейчас готовится к обсуждению на новый функционал следующей версии, есть часть этих пожеланий: короткий ответ и  числовой вопрос.
Типы вопросов "Вычисляемый вопрос" и "Вопрос на соответствие", добавлю в ТЗ.
Правда, не совсем ясен "вычисляемый вопрос". Если система будет считать, то что делает пользователь???

Рейтинг: 0.464  
Артём Шевцов 30.11.2011 14:08:51
Мое субъективное мнение, к модулю "Обучения" необходимо подходить комплексно и на базе данного модуля выпустить типовое решение "1С-Битрикс: Система дистанционнго обучения".
Сейчас многие ВУЗы используют в качестве СДО "Moodle". Многих не устраивает отсутствие коммерческой поддержки и малое количество разработчиков. Отсутствие разработчиков привело к тому, что  стоимость доработки необходимого функционала стоит сотни тысяч рублей и плюс ВУЗ жестко завязан на этого разработчика.
Модуль "Обучения" у Битрикса так же не устраивает т.к. предоставляется не большой функционал при тестировании в сравнении с Moodle.

Роберту Басырову:
Правда, не совсем ясен "вычисляемый вопрос". Если система будет считать, то что делает пользователь???
Не буду подробно описывать функционал, приведу лишь ссылку на книгу "Практика электронного обучения с использованием Moodle" стр. 90 параграф 6.4
Я думаю в данной книге вы найдете еще множество идей как дополнить модуль "Обучения".

В целом модуль обучения представлен слабо у компании 1С-Битрикс, хотя задел и уже имеющиеся возможности впечатляют. Идей и предложений по модулю у сообщества много надеюсь, поэтому предлагаю создать группу перенести обсуждения и пожелания уже в нее.
Рейтинг: 0.2461  
Артём Шевцов 02.12.2011 17:39:04
Так же необходимо предусмотреть возможность тестирования по вариантам. Тест один, а вариантов может быть несколько. Варианты для прохождения тестирования предоставляются в случайном порядке.
Рейтинг: 0.2461  
Артём Шевцов 08.12.2011 16:03:43
Еще было бы здорово если можно было тестирование проводить по вариантам.
Например: тестируем сотрудников по одному и тому же курсу.
В курсе есть сложные вопросы, а есть легкие.
Нужно соотв. тест поделить на варианты, и сотрудникам выдавать случайным образом ссылку на вариант.
Рейтинг: 1.4641  
Валера 25.12.2011 16:22:30
Первым делом лезем в /bitrix/modules/learning/admin/learn_question_edit.phpи убираем проверки типа ($str_QUESTION_TYPE == "T"), чтобы текстовый вопрос позволял вводить ответы.

Вторым делом делаем вопрос, задаем тип "текстовый ответ", создаем по крайней мере один ответ, делаем его правильным ответом.

Далее берем компонент learning.test - он отвечает за вывод вопроса на экран и работу по проверке ответа на вопрос.

Третье: в шаблоне прописываем вывод для текстового вопроса строки с ответом вместо textarea

<?php if ($arResult["QUESTION"]["QUESTION_TYPE"] == "T"):?>
   <?/* koi: краткий ответ на текстовой строке */?>
   <? $response = isset($arResult["QBAR"][$arResult["NAV"]["PAGE_NUMBER"]]["RESPONSE"]) ? $arResult["QBAR"][$arResult["NAV"]["PAGE_NUMBER"]]["RESPONSE"][0] : ""; ?>
   <input type="text" value="<?=$response?>" name="answer">
... 
Кстати, использование формы

<?php if():?>

вместо

<?if(){?>
 
уже достало. Все текстовые редакторы прекрасно подсвечивают открывающиеся и закрывающиеся скобки {}, что очень удобно.

Четвертое: лезем в component.php и после строки

$result = CTestResult::AddResponse($testResultID, $_REQUEST["answer"]);
 
рисуем примерно так:

$koi_rsQuestion = CLQuestion::GetByID($arTestResult["QUESTION_ID"]);
$koi_arQuestion = $koi_rsQuestion->GetNext(); 
$result = CTestResult::AddResponse($testResultID, $_REQUEST["answer"]);
   if($koi_arQuestion && ($koi_arQuestion["QUESTION_TYPE"] == "T")){
      $str_POINT = 0;
      $koi_answer = isset($_REQUEST["answer"])? $_REQUEST["answer"] : false;
      $rsAnswer = CLAnswer::GetList(Array("SORT" => "ASC"), Array("QUESTION_ID" => $koi_arQuestion["ID"]));
      while($arAnswer = $rsAnswer->GetNext()){
         if( _checkTinyStringsEqual($arAnswer['ANSWER'],$koi_answer) && ($arAnswer['CORRECT']=='Y') ){
            $str_POINT = $arAnswer['POINT'];
         }
      }
      $result = Array(
         "ANSWERED" => "Y",
         "RESPONSE" => $_REQUEST["answer"],
         "POINT"=> $str_POINT,
         "CORRECT"=> ($str_POINT == "0" ? "N" : "Y"),
      );
      $tr = new CTestResult;
      $tr->Update($testResultID, $result);
   }
 
Здесь функция _checkTinyStringsEqual - это функция сравнения ответа с эталоном. Я прописал ее в файле functions.php вот так:

if(!function_exists("_checkTinyStringsEqual")){
   function _checkTinyStringsEqual($a,$b){
      $a = trim($a);
      $b = trim($b);
      $a = mb_strtolower($a, 'UTF-8');
      $b = mb_strtolower($b, 'UTF-8');
      return ($a == $b);
   }
}
 
Получилось грубовато, но работает.

==========
Где Валера? Валера НаТропинках!
Рейтинг: 0  
Пинчук Виталий 13.02.2017 14:43:36
Господа! помогите, очень надо автоматическую проверку "ТЕКСТОВОГО ТИПА" вопросов
использую
1С-Битрикс: Управление сайтом 16.0.12.
Все прочитали, честно попробовали сделать, не заработало
совсем не программист

подскажите, куда какой костыль надо прикрутить сейчас, чтобы заработало
или последний пост актуален для моей версии и нужно использовать его?

было бы здорово поделитесь готовыми файлами, чтобы можно было сравнить.
встал на первом "уровне"
не смог добиться, чтобы при выборе ТЕКСТОВОГО ОТВЕТА
Битрикс позволил мне добавить ответ