【Moodle多项选择题评分——全答对才给分】
Moodle的quiz模块支持各种题型,其中的多项选择题是以设置选项的“成绩”字段来统计的。如果在答题时选择了部分正确答案,该题还是会得分。有网友提出在设置题目时,给错误的答案的“成绩”字须设置相应的负值,来达到目的,比如A:50%,B:50%,C:-50%,D:-50%;这样貌似学习者只要都做选择,即可达到目的,这个前提要在学习者都将对与错的答案都选择时才能做抵销,没有解决少选,错选问题。
官网上虽有安装新的插件来实现这种需求的问题类型(附于后),但要新建问题,对于题库中已存在的问题,或是通过其它格式(如gift)导入的问题,似乎没看到有转换的方法,可能在官网讨论区中有其解决方法。如果要在正式场合使用,请按官网上的路子走比较好一些。
最后决定直接到代码里去改动。用记事本给question_multichoice_qtype类的grade_responses方法补上了几句代码,达到Moodle测试中多项选择题多选、少选、错选、不选都不得分的问题。简记于此:
文件路径:moodle/question/type/multichoice/questiontype.php
function grade_responses(&$question, &$state, $cmoptions) {
$state->raw_grade = 0;
if($question->options->single) {
$response = reset($state->responses);
if ($response) {
$state->raw_grade = $question->options->answers[$response]->fraction;
}
} else {
//lltang:先计算该题正确答案的个数
$tmc2=0;
foreach ($question->options->answers as $answer) {
if($answer->fraction>0)$tmc2++;
}
$tmc=0;
//end lltang
foreach ($state->responses as $response) {
if ($response) {
$state->raw_grade += $question->options->answers[$response]->fraction;
//lltang:考生选择的答案中正确答案的个数
if($question->options->answers[$response]->fraction>0)$tmc++;
else $tmc=-1;
//end lltang
}
}
//lltang:如果考生选择的正确答案个数与问题的正确答案个数不符,即给0分。
if($tmc!=$tmc2)$state->raw_grade=0;
//end lltang
}
// Make sure we don’t assign negative or too high marks
$state->raw_grade = min(max((float) $state->raw_grade,
0.0), 1.0) * $question->maxgrade;
// Apply the penalty for this attempt
$state->penalty = $question->penalty * $question->maxgrade;
// mark the state as graded
$state->event = ($state->event == QUESTION_EVENTCLOSE) ? QUESTION_EVENTCLOSEANDGRADE : QUESTION_EVENTGRADE;
return true;
}
小记:虽说Moodle2在代码上做了大幅度的改动,但感觉还是很乱,不够清晰。
简单测试了一回,截图如下:
题目:
全答对:
错选:
漏选
官网上提供的解决方法:
这个问题在官网上Bug是:http://tracker.moodle.org/browse/CONTRIB/component/10704
解决方法是添加新的问题类型,叫做:All-or-nothing multiple choice,1.9之后的版本有效。地址:http://moodle.org/mod/data/view.php?d=13&rid=4014&filter=1
主要也是修改了question_multichoice_qtype类中的compare_responses,get_correct_responses,grade_responses这几个方法。
使用过程如下:
1、下载压缩包multichoiceset.zip。地址:http://download.moodle.org/plugins/question/type/multichoiceset.zip
(Moodle2.0,19.6k;moodle1.9的另见下载:http://download.moodle.org/plugins19/question/type/multichoiceset.zip)
2、将该压缩文件解压到Moodle安装目录下的question/type
3、管理员登录,进行插件的更新。
4、进入课程的题库中新建试题,可以发现有一种新的类型,叫做“All-or-Nothing Multiple Choice”。新建这种类型的问题。
5、这个问题的内容与多项选择题问题填写的内容是基本一样的,不同之处在于Grade处不是填百分比了,而只有正确/错误(incorrect/Correct)的选择。
转载请注明:徐自远的乱七八糟小站 » Moodle多项选择题评分——全答对才给分