Moodle多项选择题评分——全答对才给分
(2011-05-22 18:21:22)
标签:
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
}