基于J2EE的在线考试系统的设计与实现

时间:2022-03-20 07:21:00

基于J2EE的在线考试系统的设计与实现

摘要:考试是教学过程中的一个重要环节,该文给出了一种基于J2EE的在线考试系统的设计与实现方案,对系统进行了模块划分,给出了数据库设计方案,讨论了自动组卷策略算法。

关键词:在线考试;B/S模式;J2EE;自动组卷

中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)29-0391-03

The Design and Implementation of Online-test System Based on J2EE

QIN Jing-xiang

(Siping Vocational College,Siping 136002,China)

Abstract: Test is an important link of the teaching process. The paper presents the design and implementation of Online-test System Based on J2EE, and divides the system based on module. Then the paper provides the design of data program, followed by a discussion of the approach of automatically producing test paper.

Key words: online-test ;B/S pattern; J2EE; automatically producing test paper

1 引言

考试作为教学测评最主要的手段,其规范性、科学性以及考试工作的组织、管理等,直接关系到教学测评的准确性和客观性,从而也影响到教学质量的好坏。

校园网为实现网络考试提供了必要的环境,如何设计一个性能优良、扩展性和安全性很好的网络考试系统已成为一种必然趋势。

本文介绍的在线考试系统采用B/S结构,即浏览器、Web服务器、数据库服务器的三层体系结构,客户端只需安装一个标准的Web浏览器,其它应用程序都存储在Web服务器上,数据库采用SQL Server2000,SQL Server2000能够提供超大型系统所需的数据库服务,具有完全的浏览器服务器体系结构,隐含的并发控制能力,可在多个用户之间有效合理地分配可用资源,它不仅是一个巨大的数据容器,还是一个非常强大的数据处理工具。

系统开发采用了J2EE架构中的多层模型,具有很强的可靠性、可用性、可扩展性、可维护性、可移植性等,服务器端程序用JSP作为主要实现手段,配合Servlet、JavaBean、Struts、Hibernate等Web实现技术,JSP作为一种基于Java的Web实现技术,它具有跨平台、效率高、安全性强等优点,完全符合考试系统所要求的实时性、安全性、保密性等要求。

2 系统设计与实现

2.1 系统体系结构

目前,Web应用程序通常采用三层模型,本系统采用基于J2EE的B/S结构,如图1所示。

1) 客户层:即浏览器层,处理相应客户操作,客户通过浏览器(Browser)请求Web页面,从Web服务器上下载静态的HTML页面或由JSP或Servlet生成的动态HTML页面,用户可以通过浏览器使用本系统。

2) 中间层:完成业务逻辑规则,负责数据库和客户程序之间的数据传递,程序的大部分功能在这一层完成。Web层与业务层一起构成了中间层。

Web层:J2EE Web层可由JSP页面、基于Web的Applets以及显示HTML页面的Servlet组成,调用Servlet或JSP页面的HTML页面在应用程序组装时与Web层打包在一起,就像客户层一样。

业务层:作为解决或满足某个特定业务领域需要的业务逻辑代码由运行在业务层的Beans组件来执行,它从客户层接收数据,对数据进行处理,再将数据发送到数据层存储,并从存储中检索数据,将数据返回给客户层程序。

3) 数据层:负责数据的永久存储,这一层由数据库管理系统组成,实现时使用的是MicroSoft SQLServer 2000。

2.2 系统功能模块设计

经过分析,系统用户可分为系统管理员、任课教师、学生三类: 分别对应管理员子系统、教师子系统和学生子系统。

系统层次结构如图2所示。

1) 管理员子系统

管理员的主要工作是系统维护,用户管理、协助教师对考试过程进行监控,也可以对试题库进行维护。

用户管理:可以增加、删除、修改用户的基本信息。

考试监控:在考试过程中,对考试情况进行监控,可以随时查看当前的考试情况,如参加考试的人数、缺考人数、正在考试的人数、已经交卷的人数等,也可以查看每个考生的当前状态。

2) 教师子系统

教师的主要工作是试题库管理、生成试卷、考试管理、评阅试卷、成绩统计和分析等。

试题管理:包括试题类型管理和试题管理两部分,可以根据需要增加新的试题类型,增加、删除修改试题。

试卷管理:有自动和手工两种生成试卷的方法,生成试卷时要先输入试卷基本信息,如试卷类型、难度、起止章节,各种类型题的数量等,自动生成试卷时系统首先对给定的各个参数判断能否生成一份试卷,然后随机抽取试题生成一份试卷;人生生成试卷时根据给定的各个参数,把试题库中符合条件的记录列出来供教师挑选,然后组成一份试卷。

考试管理:教师可以设定某次考试的考试时间、参加考试的班级、所用试卷等,也可以修改和删除考试信息。

评阅试卷:对客观题由系统自动评分,对主观题由教师评分。

成绩分析:对某次考试成绩进行分析。

3) 学生子系统

学生的主要工作是模拟练习、在线考试、查看自己的考试成绩等。

模拟练习:学生可以根据需要,按照试题类型、难度、章节选择练习题,同时可以随时查看试题答案。

在线考试:在规定的时间里,学生可以参加某次考试,答题完毕将所答试卷提交给系统。

成绩查询:在考试结束后,学生可以查看自己的考试成绩。

2.3 主要功能模块实现

1) 用户登录模块

本系统的用户可分为三类:系统管理员、任课教师和学生,这三类用户分别有不同的权限,允许访问不同的页面。用户进入系统时首先要进行身份验证,验证通过后访问相应的页面。

用户登录模块的实现采用传统J2EE Web设计方法,分5层,自底向上分别是:数据库层(SQL Server 2000)-->ORM层(Hibernate层)-->业务逻辑层(JavaBean、Struts ActionForm)-->控制层(Struts Action)-->视图表示层(JSP)。

如图3给出了Struts的体系结构图,Struts中的四个核心组件有:

ActionServlet:主要负责将HTTP的客户请求信息组装后,根据配置文件的指定描述,转发到适当的处理器。

Action Classes:是客户请求动作和业务逻辑处理之间的一个适配器,功能是将请求与业务逻辑分开。

Action Mapping:负责将客户请求信息转发到相应的Action类中。

ActionForm Bean:负责一个应用系统的消息转移的非持久性数据存储,也可用于为当前用户保存即将被一个视图引用的中间模型状态。

2) 组卷算法分析

组卷方法是网络考试系统的重要组成部分,自动组卷是由系统根据教师提出的题型、题目难度等要求自动从试题库中抽取题目,形成一份试卷。

常见的组卷方法有随机选取算法、回溯试探算法、遗传算法等,本系统采用的是随机组卷方法。

试卷所需参数:试卷难度系数、试卷覆盖范围、各种类型题目数量。

处理流程:

①取得组卷参数:试卷难度、覆盖范围、总分、各种类型题的数量;

②计算题库中各类型题中覆盖范围、难度满足要求的试题数量;

③若某种类型试题数量不足,则组卷失败;

④计算用户输入的各类型题总分;

⑤各类型题总分和与用户要求的总分不相符,则组卷失败;

⑥取出某种类型满足要求的所有试题;

⑦依据随机函数随机定位到一个记录,并存入该试卷所对应的试题表中(保证同一试题不会重复选取),重复,直到取得该类型所要求的试题数量为止。

⑧重复⑥、⑦,直到取得所有要求的类型试题为止。

自动组卷部分代码:

Vector vector = new Vector();

for (i = 0; i < m; i++) //取得各种类型试题

{

//取得该种题型所有试题,放入向量中

st = con

prepareStatement("select * from shiti where type=? and chapter>=? and chapter

st.setInt(1, typeid[i]);

st.setInt(2, chapter_start);

st.setInt(3, chapter_end);

rs = st.executeQuery();

n = 0;

while (rs.next()) {

n++;

vector.add(new Integer(rs.getInt("stid")));

}

int random[] = new int[typenum[i]];

int j, k;

int stid;

boolean another;

for (j = 0; j < typenum[i]; j++) {

another = true;

random[j] = (int) (Math.random() * n);

for (k = 0; k < j; k++)

if (random[j] == random[k]) {

another = false;

j--;

break;

}

if (another) {stid = ((Integer) vector.get(random[j])).intValue();

st = con

.prepareStatement("insert into sjst (sjid,stid,sttype) values (?,?,?)");

st.setInt(1, sjid);

st.setInt(2, stid);

st.setString(3, typename[i]);

st.executeUpdate();

}

}

vector.removeAllElements();}

3 结束语

本文提出的基于J2EE的在线考试系统,实现了试题库的管理、自动和手工组卷、在线考试、自动阅卷、成绩查询、成绩统计分析等功能,系统功能设计全面,能够满足了几乎所有科目教学考试的需求,对改革传统的考试方式、提高工作效率和改进教学质量都有着积极的现实意义。

参考文献:

[1] 陈涛.基于Web的在线考试系统设计与实现[J].四川文理学院学报,2007(3):58-60.

[2] 赵娟.基于B/S模式的在线考试系统的设计与实现[J].天津职业院校联合学报,2008(3):64-66.

[3] 周启生,王化文.基于WWW远程考试系统的研究与设计[J].计算机工程与设计,2005,26(3):830-832.

上一篇:江苏广电网站IDC双线路网络方案浅析 下一篇:MPLS流量工程中的约束路由算法