基于SSH框架试题系统的设计与实现
2018-07-13李天赐余海情
李天赐,余海情
(湖北工业大学计算机学院,湖北 武汉 430068)
0 引言
随着互联网技术的飞速发展、电子商务迅速崛起和Web应用迅速发展,Web在各类网站,跨平台电子商务系统,大数据,云计算等热门技术领域都得到了广泛应用[1]。在传统试题中题量不断的增大给传统纸质试题库带来了一系列问题,比如存储和试题查找调用等,都需要耗费巨大人力物力来完成,针对此问题,需要开发一种试题管理系统来解决这些问题。当前流行的开发框架有很多,本文设计了一种基于 SSH框架的试题管理系统,利用成熟的SSH框架搭建的信息系统具有可伸缩性、灵活性、易于维护等特点[2]。
1 需求分析
本文设计的试题管理系统以Web形式展现,系统以数据库的形式保存并且以树的方式分类成不同的试题,使得学员可以方便有针对性地进行练习。学员可以修改个人信息和密码并且随时利用闲暇时间通过计算机网络访问题库进行题目训练;在答完题目后就能立刻显示答案并给出答案解析方便学员查漏补缺。系统的期望需求是可以收藏疑难问题方便之后学员进行强化训练;对有疑问的题目可以进行评论;并可以下载题库课件。系统主要功能模块如图1所示。
2 框架选择
本文系统是以 MVC(模型 Model, 视图 View和控制 Controller)架构中经典的 SSH框架进行开发。前端是以JSP技术显示界面,Bootstrap技术实现快捷开发界面,JavaScript和 JQuery技术实现动态加载,EL表达式简化前端代码,Ajax技术实现局部刷新功能。JSP把点击事件后,事件根据strut2找到相应的 Action进行业务处理。Action调用Service, Service调用Dao方法访问数据库进行数据访问。其工作流程如SSH工作流程图2所示。
3 数据库设计
图1 系统主要功能模块Fig.1 Main functional modules of the system
图2 SSH工作流程图Fig.2 SSH workflow diagram
在系统设计开发过程中,数据库设计一定要遵循相关理论和范式。本系统采用的是关系型数据库,使得数据库中数据表之间实现数据的一致性,保证数据安全[3-5]。图 3是 NaviCat For MySQL软件中E-R图标下的局部数据库,表1是用户表。
4 平台实现
系统根据用户种类的不同设置了等级权限,使用Struts2的过滤器技术,对访问页面的用户进行身份验证。在struts2-ExamCenter.xml文件中添加过滤器栈时,需要填写自定义的过滤器栈及相应参数和默认过滤器栈。
这使得普通用户,管理员,超级管理员三者有着不同的业务页面,不能相互访问,如果越界访问则会强制退出。三种不同的用户有着不同的分工,以下是对普通用户‘进入题库答题’功能实现的简单介绍。
普通用户进入题库功能:系统通过用户编号查找已购买的题库,选择题库后根据题库编号查找到的考试项目进行选择,选择考试项目后再通过考试项目编号查询到课程进行选择,选择课程后根据课程的编号查找到相应的专题训练。这里是根据数据结构中树的存取思路,根节点有着指向子节点的内容,子节点有着指向叶节点的内容。首先查找项目,再查找课程,最后再查找专题训练。就像日常生活中查用字典一样,根据拼音的首字母查找拼音,再根据拼音查找具体的字。在进入题库时,系统需要多次建立连接查询数据库,而SSH框架中Hibernate的持久化对象技术可以减少对数据库连接的次数,避免出现系统异常。
在进入题库后,专题训练又分为三个部分,每个章节的在线练习、模拟考试、疑难题库强化练习。以下是对在线练习的实现介绍以及模拟考试和疑难题库强化练习的简要实现介绍:
1)在线练习:在用户选择某一个章节的在线练习时,JSP页面会把选中的章节练习编号以表单(form)的形式提交给后台系统。依据表单中Exam_Practice. action的信息转发给在 Action包中找到ExamCenterAction.java。java文件中Practice()方法调用Service接口包中examCenterService类的方法。在Service的实现包ServiceImpl中,调用接口包DAO中的方法。DAOImpl是对DAO包接口的实现,依托hibernate技术访问数据库取出根据章节编号查询到的信息。DAO把信息传递给 Service,Service把信息传递给Action。Action又对查取出的信息进行业务处理,最后把处理结束的信息根据setAttribute()存储到 request中并返回一个字符串。Strut包依据ExamCenterAction.java中发送出来的字符串信息,系统把业务处理结束的信息发送到相应的JSP页面。因为每个章节的题目数量不是很多,JSP页面则利用假分页的技术处理数据并能够很快的显示题目,选项,答案,解析等。在线练习界面,如下图4所示。
2)模拟考试是在每个章节中随机抽选题目,在题目上方还有计时功能,方便用户控制时间作答题目。抽选题目是在Action层由随机数Random rd =new Random(System.currentTimeMillis());进行随机取值,再传送回JSP页面显示。计时是采用setInterval()方法。
3)疑难题库是在线练习时,用户通过‘添加到疑难题库’按键标记题目或者是模拟考试的错误题目,依托用户编号和题号添加到疑难题库中。疑难题库存储着在线答题收集的疑难题目和模拟考试的错误题目,在疑难题库界面的右上角按键可以取消题目在疑难题库中。
在以上三个题库中都用到 JavaScript技术来更改前端HTML代码,以达到背景色切换夜间或者白天模式,提高用户答题时的舒适度。在最后为了方便移动端用户的体验,在访问界面时,页面会根据界面大小对页面进行了一些样式调整方便移动用户体验。以下图5和图6是对不同页面大小进行自适应的图。
5 系统测试
软件系统完成交付前,系统需要开发者根据系统的功能进行黑盒和白盒测试。在本文系统中,系统测试是黑盒测试为主,白盒测试为辅。在测试进入题库时,主要是测试系统能否快速准确地查找出用户所购买的题库,再根据题库编号查找到课程编号,再依据选择的课程编号查找到训练题编号[6]。在测试结果中,整个跳转查找的时间符合系统实现的要求。除此之外,还需要对注册,登录,下载课件,评论等功能进行测试。
图4 在线练习界面Fig.4 Online practice interface
图5 界面较大Fig.5 Large interface
图6 界面较小Fig.6 Small interface
6 结论
本文围绕着基于SSH框架的试题管理系统,对系统开发进行了需求分析,设计方面对框架选取和数据库设计进行分析,以及对普通用户进入题库功能和在线练习的实现进行介绍[7-8]。虽然试题管理系统在不同用户需求下不尽相同,但本文所介绍的试题系统对普遍教学试题管理分析和设计有一定的帮助。时代在前行,用户对试题管理的需求也在不断变化,试题管理系统也需要进行变更控制,不断进行系统上的更新与维护。