3.4 泰山学院毕业论文 下载本文

泰山学院本科毕业论文

DBConn.close(conn); } String[] idStringArray = allIds.toString().split(\for(int i=0;i

学生模块主要界面如图4-5所示:

图4-5 学生主界面

学生主界面上半部分用于显示学生信息,包括学生姓名和学生用户名。下半部分列出学生可执行的操作,包括进入考试、成绩查询和密码修改。 2、进入考试

学生进入学生主页面后,点击进入考试,进入考试列表页面,该页面中展现所有该学生能参加的考试,考试列表页面(enterExam.jsp)的代码如下: List exams = Exam.getExams(); if (exams== null) exams= new ArrayList(); <% for(int i=0;i

<% 28

泰山学院本科毕业论文

} %> enterExam.jsp引入了Exam类,通过Exam类的getExams方法获得所有的考试列表,并将数据返回enterExam.jsp页面,enterExam.jsp展现返回的考试列表的试卷名称。学生点击试卷名称列表的链接即可进入相应的考试。

考试页面是eaxm.jsp,进入该页面后,先获是考生信息和考试信息,然后通过考试信息,调用Exam类的getExamById的方法获得一个考试对象,再调用该对象的getQuestions()来获得相应的试题。这部分的主要代码如下:

int examId = Integer.parseInt(request.getParameter(\int studentId = Integer.parseInt(request.getParameter(\Exam exam = Exam.getExamById(examId); List questionList=exam.getQuestions(); session.setAttribute(\在exam类的getQuestions方法中,先通过getOnePaper的方法随机获得该考试的一张试卷,一门考试中可以有多张试卷,随机读取一张试卷分发个某个考生可以减少试卷重复,减少舞弊现象。读取出试卷后,再将这张试卷的考试返回给学生,作为学生考试内容。

随机获得一张试卷代码如下:

private Paper getOnePaper(){ String[] paperIdArray = paperIds.split(\ int len = paperIdArray.length; String theId=paperIdArray[(int)(Math.random()*len)]; int intId = Integer.parseInt(theId); return Paper.getPaperById(intId); } 先获得这么考试试卷的张数,用随机函数抽取其中一张试卷。 获得一张试卷后,再调用getQuestionOfPaper,getQuestionOfPaper的实现代码如下:

private List getQuestionOfPaper(Paper paper){ List questions =new ArrayList(); String[] questionIdArray = paper.getQuestionIds().split(\ for(int i= 0 ; i

泰山学院本科毕业论文

return questions; } 先获得试卷所有考题的Id,通过Id,调用Question对象的getQuestionById方法返回一个试题对象,并将这些对象保存在List中返回给exam.jsp页面。

完成试题展现,考生就可以开始考试,考试完成后,点击交卷,即可完成考试。

学生完成考试后,系统开始计算学生成绩。计算过程是在exam.jsp页面完成的,exam.jsp先从session对象中获取到学生考试的所有题目,然后获得考生填写的所有答案,取出所有题目的答案和考试提交的答案做比较,有一道相同的话考生答对题数就加一,最后获得考生答对的题数,用答对的总题数除以考生答对的题数乘以100,得出考试成绩,并将成绩、考生信息、考试信息写入成绩表。计算学生成绩代码如下:

List ql= (List)session.getAttribute(\

int examId2 = Integer.parseInt((String)request.getParameter(\ int studentId2 = Integer.parseInt((String)request.getParameter(\ int fullMark=ql.size(); int result=0;

Question qt=null; int qId=0;

String qKey= null; String answer;

for(int n=0;n

float mark = result * 100 / fullMark ; Mark m = new Mark(); m.setMark(mark);

m.setStudentId(studentId2); m.setExamId(examId2); m.save();

30

泰山学院本科毕业论文

5 结束语

本文设计并实现了基于B/S的Java在线考试系统,首先介绍了在线考试系统的优势,然后介绍系统的设计思想、运行环境、开发工具、业务构建等,同时具体抽象出系统所涉及的对象。接着详细介绍系统的具体实现,具体模块包括数据库连接模块、登录模块、教师模块和学生模块。

本系统基于Java技术开发,具有较好的灵活性,可以运行在Tomcat、Jboss等主流服务器上。

随着各高校信息化的普及,在线考试会逐步得到普及。随着Web开发技术的成熟,考试系统的开发也越来越容易。

由于时间仓促、个人技术水平所限,该系统还存在一些不足的地方,在下一版本中将继续改进和完善。

31