求考试系统答案的比较???
做一个非常简单的考试系统,就是不知道如何比较答案,看到别人说用什么数组啊,集合啊 ,都说了太空泛了,希望各位能给出实际一点的建议。小弟在这里非常的感谢了。
create table question
(
qid int identity(1,1) primary key, --题目的编号
title varchar(60), --题目的标题
options_A varchar(30), --题目的选项
options_B varchar(30),
options_C varchar(30),
options_D varchar(30),
answer varchar(10) --题目的答案
)
create table score
(
sid int identity(1,1) primary key, --分数编号
qscore int, --题目的分数
qid int references question(qid) --连接到question表的qid字段
)
--.jsp页面
<s:iterator id="i" value="#session.quList" status="status">
<tr>
<td><s:property value="#status.count"/>.<s:property value="#select[0]" />${i.title }</td>
</tr>
<tr>
<td>
<input type="radio" name="answer${status.index}" value="A" />${i.options_A }
</td>
</tr>
<tr>
<td><input type="radio" name="answer${status.index}" value="B" />${i.options_B }</td>
</tr>
<tr>
<td><input type="radio" name="answer${status.index}" value="C" />${i.options_C }</td>
</tr>
<tr>
<td><input type="radio" name="answer${status.index}" value="D" />${i.options_D }</td>
</tr>
</s:iterator>
------解决方案-------------------- 就是一个question,score两张表???
应该还有试卷表,记录哪些question对应哪一张试卷对不
应该还有记录考生答案的表对不,
没有考生的答案的记录,拿什么东西跟比较答案呀。。。。
------解决方案-------------------- 每一道题提交以后能获得的数据是:题目编号[qid],考生答案[A/B/C/D]
到数据库查sql:select 1 from question q where q.qid = ? and q.answer=?
查询结果有记录,说明此题答对了,没记录说明答错了
------解决方案-------------------- 如果有单独的选项表,则答案应该保存的是:选项ID
其次,答案的话,可以用:indexOf()
------解决方案--------------------
上面的方法比较慢,一次比较一个题目,效率比较低
可以考虑再加一张考生答题表
student_answer{
st_id,//学生ID
qid,//题目ID
answer//答案
}
1.考生每答完一题,记录当前题目号,考生ID,答案到List
2.考生答完所有题目,将list使用批处理方式一次性insert到考生答题表
3.得到考生答对的所有题目:
SQL code
select q.*,sa.st_id from question q
join (select * from student_answer s where s.st_id = ?) sa
on (q.qid = sa.qid and q.answer = sa.answer)
------解决方案-------------------- 探讨 上面的方法比较慢,一次比较一个题目,效率比较低 可以考虑再加一张考生答题表 student_answer{ st_id,//学生ID qid,//题目ID answer//答案 } 1.考生每答完一题,记录当前题目号,考生ID,答案到List 2.考生答完所有题目,将list使用批处理方式一次性insert到考生答题表 3.得到考生答对的所有题目: ……