【简单智能组卷系系统设计】
操作方法
- 01
智能组卷是考试系统的核心功能之一,智能组卷就是指考试系统从题库中抽取试题,需要满足教师或学生需求的考试试卷。在当今教学环境中,教师或学生希望能够在较短的时间内组合成一份或若干份既符合需求,又具有随机性的试卷。所以智能组卷的研究的重点在于组卷算法。 一、常见的组卷算法有:随机组卷法、回溯法、遗传算法三种 1.随机法 随机法是指依据已经确定的试卷标准进行随机抽取试题,最终组合成试卷的算法,它是组卷算法中最为常见的算法。随机法是通过抽调过程的不断重复,直至组卷过程的完成或者无法抽取满足用户需求试题为止[1]。 用随机法进行组卷,其过程比较简单,但其具有不可回溯的性质,是依据当前的试卷标准来选择试题。随机算法虽然简单,但在一定的条件控制下,如题库数量较少,抽取试卷要求少就可以选择出满足需求的试卷[2],同时使用随机法进行组卷可以通过均匀选取方式体现试卷的公正性,更好的避免作弊。 2.回溯法 回溯法属于深度优先算法的一种,是对随机算法的一种改进。回溯法随机抽取第一状态,并记录下来,当搜索失败后,释放上次记录的状态类型,然后通过来回不断的回溯试探,直到组卷的完成[3]。 3.遗传算法 遗传算法是现在比较新兴和流行的一种组卷算法,遗传算法由于其自适应和良好的搜索技术得以流行开来。它是模拟生物界的自然选择和遗传变异的机制来求解复杂问题的随机搜索和优化算法[4]。遗传算法对于复杂和非线性的问题可以较好的解决,在机器学习、组合优化等方面得到了广泛的应用。由于遗传算法的核心思想也是在一定的要求下找到最佳的方案,这和智能组卷算法的本质是一样的。 在随机算法、回溯算法和遗传算法中,虽然社会上认为遗传算法是比较先进的,但通过对比在一个小型考试系统中随机算法比回溯法遗传算法更容易实现,效率也不低。这是因为随机算法成卷率高,且试卷质量相对较好。回溯算法和遗传算法是在组卷模式确定后,然后这个模式进行成卷,这样会导致对试题查找范围比较特点的问题。 二、题库设计 三、组卷要求 本单位的考试系统的组卷根据需要有标准组卷和自定义组卷两种,在设计过程中,自定义组卷的功能实际包括了标准组卷的要求,所以在这里我们只分析自定义组卷过程,在此过程中系统提供了题库中的信息,及自定义组卷的选项。包括:按教材章节、题型、难易比例、数目数量等组卷选项。 四、随机组卷算法实现 随机组卷思路: (1)用户输入自定义试卷要求:考试章节、题型数量。 (2)从题库中查询用户要求题库是否能满足。如能则继续下一步,不能给出错误提示,终止组卷。 (3)从题库中抽取所有满足第1个题型的题目ID保存到数组。 (4)从该数组中随机抽取满足要求数量的题目ID,可按试题难度比例进行筛选。 (5)将抽取的题目ID保存生成的试卷表中。 (6)重复3-5步,直到将所有题型抽取完毕。 (7)根据试卷表的题目ID从题库中抽取对应的题目,组卷完成。 五、算法的实现 这里只列出随机组卷的算法的方法,其它相关方法:如信息提示的进程略过。 public void choo(int quantity){ try{id=new int[lastline]; rrs.beforeFirst(); int n=0; while(rrs.next()){ id[n]=rrs.getInt(1); n++; } } catch(SQLException se){JOptionPane.showMessageDialog(null,”生成试卷错误!”,”错误”,JOptionPane.ERROR_MESSAGE);} int random[]=new int[quantity]; Random rn=new java.util.Random(); int quan=0; boolean other; int quan1; quan1=rn.nextInt(lastline); while(quan quan1=rn.nextInt(lastline); random[quan]=id[quan1]; for(int k=0;k if(!other){continue;} quan++;} String sql="INSERT INTO temp_test(chapters_id,test_diff,test_score,test_type,test_subject,answer_key) SELECT chapters_id,test_diff,test_score,test_type,test_subject,answer_key FROM "+Studenttest_choose.obje_student+" WHERE test_id="+random[0]; try{for(int k=0;k test_subject,answer_key FROM "+Student- test_choose.obje_student+" WHERE test_id="+random[k]); pssql.executeUpdate(); } } catch(SQLException se){JOptionPane.showMessageDialog(null,”组卷算法错误!”,”错误”,JOptionPane.ERROR_MESSAGE);} } } 六、结论 在进行系统设计时,不能盲目的进行,一定从该系统实际出发,选择适合的算法,先进的算法不一定是适合本系统的,在本系统几千道题目的题库中使用随机算法运行良好。