考试系统中如何判断多选题是否正确?

yzflying 2004-04-02 12:18:58
多选试题的标准答案比如说是A, B, C, D

用户通过复选框提交上来的答案如何这个标准答案比较,并且记分?
...全文
748 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
pizixt 2004-04-02
  • 打赏
  • 举报
回复
<input type="checkbox" name="answer_1[]" value="A">
<input type="checkbox" name="answer_1[]" value="B">
<input type="checkbox" name="answer_1[]" value="C">
<input type="checkbox" name="answer_1[]" value="D">

<%answer_1=request("answer_1[]")%>

如果选择A、C、D ,则abswer_1的值为"A,C,D"
和标准答案比较,要看你的标准答案字符串是什么形式
fason 2004-04-02
  • 打赏
  • 举报
回复
name相同时
Request.Form("answer")是一个以,为分隔的字符串
flying310 2004-04-02
  • 打赏
  • 举报
回复
用一个数组和你的标准答案去比较。
webdevelop 2004-04-02
  • 打赏
  • 举报
回复 1
用select去比较就行了嘛。

或者在判断时先读出正确答案然后再比较。
rs(answer_true)=answer_true '正确答案
total=0 '记录总分
if answer_true=request.form("answer")%> '判断是否正确
then total+1 总分加1
end if
a_zhe_20 2004-04-02
  • 打赏
  • 举报
回复
比较方法同上,但是需要注意,从前面获取到的值中间会包含空格

即“a, b, c”这样,如果标准答案没有空格,则应先把获取到的答案中空格去掉
replace(reqanswer," ","")
efei 2004-04-02
  • 打赏
  • 举报
回复
你对多选题进行判分的时候是不是错一个就全错?如果是的话,那就整体比较好了,比如标准答案是ACD,你只要把提交上来的答案去掉中间的逗号就可以了,只要不一样就不正确啊
不过好象VBSCRIPT里没有比较字符串的函数,可以这样:
if len(str1)=len(str2) and instr(str1,str2)=1 then
sngScore=sngTotalScore
else
sngScore=0
end if
jiffer 2004-04-02
  • 打赏
  • 举报
回复
用split函数区分然后把值赋给数组,对数组进行循环,就可以
yzflying 2004-04-02
  • 打赏
  • 举报
回复
我知道提交后的答案是是一个以,为分隔的字符串,标准答案的格式是A, B, C, D也是以,号分开,就是这两个字符串如何比较的?
pizixt 2004-04-02
  • 打赏
  • 举报
回复
标准答案用"A, B, C, D"形式(中间加一个空格)可以直接比较
要注意答题页面答案编号的顺序

<input type="checkbox" name="answer_1" value="A">
<input type="checkbox" name="answer_1" value="B">
<input type="checkbox" name="answer_1" value="C">
<input type="checkbox" name="answer_1" value="D">

<%
answer_1=request("answer_1")
right_1="A, C" '标准答案
response.write answer_1=right_1
%>
qxg1123 2004-04-02
  • 打赏
  • 举报
回复
用instr比较就够了
skywatcher 2004-04-02
  • 打赏
  • 举报
回复
同意皮子,只是假如还要判断半选,还要更麻烦一些
yong1268 2004-04-02
  • 打赏
  • 举报
回复
同意皮子.
aojiankd 2004-04-02
  • 打赏
  • 举报
回复
同意皮子,你用instr函数判断
yzflying 2004-04-02
  • 打赏
  • 举报
回复
score=50
j=0
answer=replace(request("aa")," ","")
result=request("result")
u=split(answer,",")
v=split(result,",")
if ubound(u)=ubound(v) then
for i=0 to ubound(u)
if instr(result,u(i))>0 then
j=j+1
end if
next
end if
if j=ubound(v)+1 then
score=score+4
end if

自己写了,就是完全符合给分,少选不给分。

还值得完善

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧