当前位置:首页 > 完整的在线考试系统论文 - 图文
重庆科技学院本科毕业设计 3 系统设计 //获取及格人数
public int getPass(String course) //获取该课程总考试人数
public int getCount(String course) //获分数段人数
public int getCountByScore(String course,int score) //得到学生的全部成绩
public ArrayList getAll(String Uid) } }
试卷考题工具类,主要提供对试卷表考题表联合查询视图的相关操作方法 public class TestQuestionUtil { //获得试卷库中相应题型的题
public ArrayList getTest(String Uid,String course,int type) }
3.4.2在线考试模块设计
在线考试流程为:首先系统将考试信息和考生个人信息提供给考生,并要求考生核对个人信息。在考试开始时系统按照一定的算法为登陆的考生随机选取一定的试题生成考试试卷,考生在系统生成好试卷后进行答题操作。答题必须在规定的时间内进行,此时间是由管理员事先设置好的,如在规定的时间内没有完成答题,系统将强制提交学生考试试卷进。考生在试卷提交后系统自动地为客观题进行评分,并将试卷保存,供给老师查看或修改。在线考试流程图如图3.10所示。
随机抽题算法:产生一个随机整数,这个数在0和相应题型总考题数之间。从这个随机数开始抽取取试题,抽取数量为试卷设置中相应题型的个数(此数小于总题数),若取到最后一道还不满足取题数量,再从第一题开始选取,其抽题流程如图3.11如示。
17
重庆科技学院本科毕业设计 3 系统设计
开始用户登陆核对个人信息否正确?是生成试卷开始考试否时间到?是提交试卷客观题评定否保存试卷保存成功?是结束
图3.10 在线考试流程
开始得到相应题型考题总数m产生一个0-m的随机数n得到k=n%m选取数据库中相应题型的第k题,并保存为考题考题数i=i+1i>=试卷设置中相应题型总数?否n+1是结束 图3.11 选题流程
18
重庆科技学院本科毕业设计 3 系统设计
关键代码及说明
随机选题操作方法主要代码及说明,此方法位于QuestUtil中。些方法输入参数为课程名称course,需要题数count,试题类型type;输出为一个包含抽取的试题信息的集合ArrayList:
public ArrayList getQuestion(String course,int count,int type) {
ArrayList al = new ArrayList();
//得到课程名称为course,考题类型为type的考题总数 int totalCount = this.getCount(type,course); Connection conn = null;
PreparedStatement ps = null; ResultSet rs = null;
//随机产生一个0-总题数之间的随机整数
int temp = (int)(Math.random()*totalCount); try{ conn = new DBAccess.getConnection(); for(int i = 0;i int tempCount = (temp+i)%totalCount; //sql语句 String sql = \ course='\Question where qtype=\ ps = conn.prepareStatement(sql); rs = ps.executeQuery(); Question ques = new Question(); if(rs.next()) { //保存试题 ques.setId(rs.getInt(1)); ques.setType(1); ques.setQues(rs.getString(4)); ques.setKeyA(rs.getString(5)); ques.setKeyB(rs.getString(6)); ques.setKeyC(rs.getString(7)); ques.setKeyD(rs.getString(8)); ques.setAnswer(rs.getString(9)); al.add(ques); } } }catch(Exception e) { e.printStackTrace();//打印出异常信息 }finally 19 重庆科技学院本科毕业设计 3 系统设计 } { db.CloseDB(conn, ps, rs);//关闭数据库连接 return al; } 生成试卷关键代码及说明(以生成单选题为例) <% String course = (String)session.getAttribute(\ //从session中得到课程名称 String Uid = (String)session.getAttribute(\//从session中得到用户编号 String name = (String)session.getAttribute(\//得到试卷设置工具实例 TestSetUtil testUtil = new TestSetUtil(); //得到试卷设置实例 TestSet ts = testUtil.getTestSet(course.trim()); ArrayList al=null; QuestionUtil questionUtil = new QuestionUtil(); Question qs = new Question(); %> 一、单选题 (共<%=ts.getSinChCount()%>题,每题 <%=ts.getPerSinScore()%>分) <% //得到考题 al = questionUtil.getQuestion(course,ts.getSinChCount(),1); for(int i=0;i qs = (Question)al.get(i); %> <%=i+1%>.<%=qs.getQues().trim()%>
A.<%=qs.getKeyA()==null?\
B.<%=qs.getKeyB()==null?\
C.<%=qs.getKeyC()==null?\
D.<%=qs.getKeyD()==null?\
value=\null?\
20
共分享92篇相关文档