基于JSP的“实验室”题库系统的开发研究
2009-05-07傅健杨雪黄海林周淑红
傅 健 杨 雪 黄海林 周淑红
摘要:随着教育信息化的推进,实验教学中以实验报告为主要辅助依据的实验考核方法已不能满足高效、可跟踪学生学习进展等需求,本文以吉林大学“机械工程综合实验”题库系统开发为例,介绍了基于JSP的支持实验前测和后测两种测试、可跟踪学生学习情况的实验室题库系统的实现,为用于实验教学的题库系统开发提供参考。
关键词:题库 设计与开发 JSP 前测 后测
中图分类号:TP311.52 文献标识码:B 文章编号:1673-8454(2009)07-0037-03
吉林大学机械科学与工程学院学生需要参加的实验很多,学生实验考核的主要辅助依据仍多以纸质实验报告为主,过多的报告带来了评价、管理上的诸多不便,而且也造成了纸张资源及人力的浪费。教育信息化的推进,不仅要求对于学生成绩进行信息化管理,而且要求对每个学生的实验掌握程度能进行跟踪和记录:了解学生实验前的预习情况或学生第一次实验的掌握程度,以及经过反复实验后的成绩变化;能对学生进行信息化考核并存档作为评价学生成绩的部分依据。因此,结合实验教学特点针对所有机械工程等专业都需参加的综合实验,开发了实验室题库系统,区别于普通题库,该题库分成两部分:前测题库,以客观题为主,测试实验预习情况或初次实验的掌握程度:后测题库,以主观题为主,测试经过实验训练后的理解和掌握程度等。
一、比较测试系统的需求分析及功能规划
根据以上背景,结合机械工程综合实验目标、学生特点、软硬件环境等具体情况,对学生及教师的需求可做以下归纳:
1.对于实验学生
(1)学生可以查看教师发布的教学实验要求、实验组安排、考试具体要求等教学公告信息;
(2)学生可以参加两种测试:前测和后测,前后测试皆由系统随机抽题自动组卷,自动计时,考试结束后客观题即时给出答案,主观题则由教师手动评分;
(3)学生可以查询自己的考试答题情况以及具体到每个题目的教师批阅信息,教师阅卷完成后还可查询考试成绩。
通过学生角色功能需求分析,可用建模工具Power-Designer将学生UML用例图规划如图1所示。
图1注册实验学生的用例图
2.对于实验教师
(1)教师能对多个专业、班级、学生进行集中管理,其中包括对注册学生身份的审核,以防止恶意注册;
(2)教师可以维护前测和后测两套题库,支持批量添加、更新、删除试题等维护功能;
(3)教师可通过“考试控制台”设置重新测试,以使系统能重复使用,同时也可以设置个别学生的重新考核,并对考试时间进行控制;
(4)教师对于主观题可手动评分,客观题则由系统自动判分;教师还可按专业或班级等多种形式浏览考试成绩等信息,也可以查询个别学生答题情况及成绩;
(5)教师能够在后台发布实验考试要求、上机时间等教学、教务公告信息。
同样,通过以上的教师角色功能分析,可将实验教师的UML用例图规划如图2所示。
图2实验教师的用例图
二、在线测试系统的开发方案确定
对于该题库系统的开发,选择跨平台性较好的JSP为网络编程语言,MyEclipse6.0为开发平台,按照 MVC-Model2模式实现:
MVC(Model-View-Controller),即模型-视图-控制器,是起源于20世纪80年代的一种设计模式,现已成为SUN公司J2EE平台的主要设计模式,它把应用程序分成三个模块(模型、视图和控制器)来分担不同任务,从而利于组件复用和开发分工。[1] 而MVC-Model2具体是指JSP+Servlet+JavaBean的技术方案:Model层实现业务逻辑,这里使用DAO模式封装对数据的操作;View层用于与用户的界面交互,使用JSP实现;Controller层是Model层与View层之间的纽带,使用Servlet来完成控制,具体如图3所示。
图3系统开发环境及MVC-Model2模式
三、在线比较测试系统的实现
1.后台数据库的设计与连接实现
(1)后台数据的设计:学生、试题、成绩以及教务等信息都需要用后台数据库来存取,这里可选用SUN公司的MySQL做为数据库。系统涉及学生信息表、试题库表、学生成绩表等多张表,本文重点介绍试题库表的设计,为了快速生成题库表itempool,可直接使用SQL语句或调用执行SQL文件生成,SQL具体代码如下:
CREATE TABLE itempool (
Pool_Type bit,//归属于前测还是后测题库的逻辑判断
Item_ID int(10),//试题编号
Item_Style int(3),//试题“表示”风格:包括选择题、判断题和主观题(含简答、分析题等)三种
diffculty varchar(3),//试题难度
content text,//试题内容
answer text,//试题答案
value int(3),//试题分数
picture varchar(100) default NULL,//试题内容中包含图片的存储地址,默认为无图片
) ENGINE=InnoDB DEFAULT CHARSET=GBK;// 表使用innodb引擎,数据编码选择中文
(2)后台数据库的连接:应用程序访问数据库一般是通过ODBC(开发数据库连接)或程序自带的驱动,其中后者较快,JSP中的数据库连接一般使用JDBC(JAVA数据库连接)方式,它支持以上两种方式。[2] 对于该系统的开发,可通过建立ConnectionManager类来提供对数据库的连接,该类关键代码如下:
public class ConnectionManager {
String DBurl="jdbc:mysql://localhost:3306/item?user=root&password=fujian";
public static Connection getConnection() { //取得对数据库Item连接
Class.forName("com.mysql.jdbc.Driver");
Connection dbConnection = DriverManager.getConnection(DBurl);
……
}
2.关键技术及代码详解
(1)随机抽题的实现:为了保证测试的公正,系统使用随机抽题的方式为学生自动组卷(前测试卷或后测试卷),实现的关键是使用JAVA的Random对象进行随机抽题,用法示例:
<%
Random random = new Random();
int id = random.nextInt(new DAO().maxBeforeId()); //范围为[0,最大数),maxBeforeId()取前测试题最大编号
String maxid = x+1+""; //调整范围为[1,最大数],即为前测试题库编号范围
%>
(2)查看答题情况的实现:对学生的答题情况进行记录,可方便以后教师或学生自己查看,也为了解学生实验掌握程度提供依据。可使用JAVA的Split方法来取出数据库记录的答题情况:在提交测试试卷后,系统可以“A@B@C@”形式记录答题情况,在查看答题情况时,使用split方法取出答案,放进指定数组以便操作,用法示例:
<%
String str=new DAO().getAnswer(classid, userid,testtype);// 得到形如"A@B@C@"的答案
String[] answer = Str.split("@"); // 将答案保存到数组answer,分隔符若是"| "、"*"等特殊字符, split方法加\转义写成Str.split("\|")形式
……
%>
(3)前后测试逻辑判断:为了保证学生前测准确,要求系统在学生进行前测后自动关闭前测,直至教师在后台重新开考或针对个人重新考核,因此在学生点击“进入测试”后,系统应对为每个学生提供前测试卷还是后测试卷做逻辑判断,关键代码:
<%
String classid=(String)(session.getAttribute("classid"));
String userid=(String)session.getAttribute("userid");String testurl="";
if(new DAO().hasBefore(classid, userid)) // hasBefore()方法检测某学生是否已进行前测
str="AfterTest.jsp";else str="BeforeTest.jsp";%>
<a href=<%=testurl%> >进行测试</a><!--点击“进行测试”,系统自动判断提供前测还是后测-->
(4)定时交卷功能的实现:为了保证学生的测试的准确性,系统提供手动交卷功能的同时应自动计时,考试时间结束自动交卷,以保证测试公平,这里使用JavaScript实现,关键代码:
<script language="JavaScript" type="text/JavaScript">
var test_time=<%=(new DAO().getTestTime()%>;//获取考试时间
window.setTimeout("document.textfrm.submit()",test_time);//定时提交答题表单testfrm
alert("考试时间为" + test_time/60000 +"分钟," + "时间结束,自动交卷!");
</script>
3.小结
通过上面的数据库设计以及关键技术实现,即可完成实验室题库系统的实现,开发时还应注意结合XML、CSS等技术使页面美观,以便于以后页面风格的快速调整,同时在对数据库的连接上,要注意调用后关闭,以减少数据库操作异常,另外在具体操作语句书写上,应始终以预处理PreparedStatement代替Statement,以防止SQL注入,提高系统安全性。
四、系统部署与测试
系统可以选择以开源操作系统Red Hat Enterprise Linux 5+Apache Tomcat 5.5或微软Windows server 2008+IIS 6.0任一方式部署,部署地点可选在计算机机房或者实验室,部署成功后,学生在机房或寝室都可以通过校园网来访问服务器进行在线测试;同时,教师可通过后台实现考试管理,了解学生掌握情况。学生登录后的主界面见图4,教师后台管理主界面见图5。
图4学生登录系统后主界面
图5教师后台管理主界面
五、结束语
通过以上设计与开发,即可完成支持前测和后测两种测试、能跟踪学生实验掌握情况及变化的B/S结构的实验室在线测试题库系统,为实验室的成绩评估以及了解学生的实验掌握情况提供了一定依据,同时也为实验技能的辅助考察提供了一种高效的信息化手段,而且该系统具有一定的通用性,可用作其他学科考核使用,至于系统的稳定性与安全性有待进一步研究。
参考文献:
[1]孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2004:9-10.
[2]朱敏,朱晴婷等.JSP Web应用教程 [M].北京:清华大学出版社,2004:141.