日期:2014-05-17  浏览次数:20997 次

在线考试系统,请教如何自动组卷的问题~~
怎么样编写代码实现考试系统的自动组卷这一功能呢???    表示是新手,分不是很多,见谅! 谢谢啦!!!
------解决方案--------------------
组卷是什么意思?就是从题库中抽几个试题出一份试卷?  大概思路:库中有1000个选择题,要求一个试卷10个选择题。

------解决方案--------------------
引用:
组卷是什么意思?就是从题库中抽几个试题出一份试卷?  大概思路:库中有1000个选择题,要求一个试卷10个选择题。


List list = getAllOption();//获取所有的选择题
int[] arr = createArr()//产生一个随机数组,数组中所有的值在0-list.size()之间
List data = new ArrazyList();//存放组卷的试题
for(int index:arr){
data.add(list.get(index));
}


------解决方案--------------------
将题库分类:选择题,填空题,判断题,简答题,再将题库中的题进行难度划分,用随机函数在不同分类随机出题,还要进行题目冲突判断,估计就能随机出想要的难度试卷了。
------解决方案--------------------
引用:
对的,就是从题库中随机抽取若干数目的试题组成一套试卷,,,话说有木有详细一点的程序呢~~  谢谢

我给你一个简单的思路:
1.你组卷的题目类型,比如选择题、判断题、简单题,每一个类型都要定义一个集合,因为每种类型的题目数量的固定的嘛,你得到数据之后,把数据分别放到各自的集合,然后随机排序之后,再把数据放到页面显示。
2.你后台大致应是这样,通过这种SQL语句:

select * from 题目 where 题目类型=xxx

分别得到所有类型下的题目的数据,分类放到不同的List集合。
3.因为你卷子上每种类型题目的数量是固定的,比如选择题5道,判断题10道,简答题5道,这样没关系,简单一些来做,你选分别随机排序你的集合,然后循环取固定前几条就OK,不知道你明白没,举个栗子:

List chooseQuestionsResult=...(调用你的service得到数据);
List chooseQuestions=new ArrayList();  //定义一个空集合用于存放你指定数量的题目
Collections.shuffle(chooseQuestionsResult);  // 这个方法会对你的List集合的数据进行随机排序
for(int i=0;i<5;i++){    //这里就是说比如你选择题规定只有5道,你就从随机排序后的集合取5个
    chooseQuestions.add(chooseQuestionsResult.get(i));  //取出来放到上面定义的容器集合
}

然后数据就OK了,往页面上放就是了。这是一个简单版的思路,仅供参考。
------解决方案--------------------
一个试卷有n个试卷类型,一个试卷类型有n个试题,一个试题有n个选项   页面依次读取数据