基于Struts2结构的在线考试系统设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Struts2结构的在线考试系统设计与实现
摘要:基于Struts2和J2EE技术框架,结合MySQL数据库,设计并实现了一个基于B/ S架构的在线考试系统,重点阐述了用户答题模块的设计,并提出了一种系统随机出题的方法。
关键词:在线考试系统;Struts2技术;J2EE;随机出题
0引言
根据市场需求,网站的开发需要高效,同时考虑到网站的盈利性,则需要降低人力成本和资源成本。目前,大部分基于Java开发的网站都采用了Struts2的框架结构,并结合MySQL数据进行开发,以降低开发成本和提高开发效率。Struts2是基于MVC模式的开发,Struts2框架为程序员的开发带了极大方便,同时也更好地满足了用户的多样化需求。
本系统是基于Struts2开发的一个在线考试系统,同时采用了J2EE技术,结合Mysql数据库,设计并实现了一个基于B/S架构的网上考试系统,并提出了一种系统随机出题的方法。
1系统总体设计
使用在线考试系统的用户必须是注册用户,使用时要先登录。当用户选择某种测试后,系统会自动给出题目进行考试。考试开始时,系统自动计时,用户必须在规定的时间内完成考试,否则时间到了则不能答题。用户答完题后可以直接提交,系统会在用户自主提交或时间超时的情况下对用户所做的题进行评分。用户信息和试题维护由管
理员进行管理,当管理员进入管理时,也需要有一个登录验证功能来验证是否有权限进入管理页面。管理员可以完成录入、修改、添加、删除等功能,还可以把已保存在文本文件里的数据导入到数据库中。
本系统总体结构如图1所示。
2系统设计
2.1数据表设计
根据系统功能要求,构建如下数据表,其中有下划线的是主键:用户表(用户标号、登录名、密码、邮箱、登录状态):建立用户的基本情况,主要用于登录网络考试系统;
管理员表(管理员标号、登录名、密码、登录状态):建立管理员的基本情况,主要用于登录数据库管理;
选择题表(编号、题干、选项1、选项2、选项3、选项4):提供考试题中的选择题,其中“选项1”为正确答案;
填空题表(编号、题干、答案):提供考试题中的填空题;
套题记录表(编号、题目类型、年号、月号):用于记录套题包含的选择题和填空题,该表信息在录入试题时由系统自动填写;
成绩表(用户标号、考试时间、成绩):记录用户考试成绩。
2.2在线考试模块程序流程
在线考试模块流程如图2所示。
2.3系统页面
整个系统由模块构成,对应的页面如表1所示。
3关键技术处理
3.1选择题选项随机出现算法
选择题选项随机出现可以有效防止考试作弊的发生,维护考试的公平性。为了让选择题选项随机出现,需要有一个产生随机排列的函数,同时要建立一个临时的随机表。系统将值“1、2、3、4”与选项“A、B、C、D”建立一一映射,由随机排列函数对每一道题的值“1、2、3、4”进行重新排序,然后存储到临时的随机表。
随机排列函数是没有参数但有返回类型的函数,返回类型为整型数组,该数组中存储排好序的数字。系统中定义了两个大小为4的整型一维数组a和b,a数组初始赋值为{1,2,3,4},是数据库中原选择题的选项,b数组用来存放重排后的数字。每次从a中随机选一数字(选项),并在a中将该数字删除,然后存入b,循环4次后b 中就是重排的顺序,然后将b放入临时的随机表。C#实现随机排列函数的代码如下:
static protected int[] RandomIntArray(){
int[] a = new int[4] { 1,2,3,4 };
int[] b = new int[4];
Random random = new Random();
for (int j = 3,n = 0;j >= 0;j--,n++){
int i;
i = random.Next(0,j + 1);
b[n] = a[i];
for (;i < j;i++){
a[i] = a[i + 1];}
}
return b;}
3.2抽题不重复性
为了避免系统在一套考题中抽题出现重复现象,系统采用排除法进行抽题:将所有备选试题号n存放在数组Topic中,随机生成抽取的序号m,1≤m≤n,选出试题号Topic(m);然后将Topic(m)与Topic(n)交换,再从备选试题号n-1中抽题,这时随机生成抽取的序号m,1≤m≤n-1;重复以上操作,直到抽题数量达到要求。
4结语
随着网络技术的飞速发展,无纸化的在线考试突破时间和空间的限制,成为当今考试的发展方向。本文探讨了在线考试系统的设计与实现,并提出了一种系统随机出题的方法,具有一定的应用价值。
参考文献:
[1]H M DEITLEL,P J DEITEL.Java大学基础教程[M].刘晓莉,周璐,钱方,等,译.北京:电子工业出版社,2007.
[2]DONALD BROWN,CHAD MICHAEL DA VIS,SCOTT STANLICK. Struts2实战[M]北京:人民邮电出版社,2010.
[3]迪布瓦.MySQL cookbook:中文版[M].北京:电子工业出版社,2008.
[4]VIVEK CHOPRA,SING LI,JEFF GENENDER.Apache tomcat6高级编程[M].北京:人民邮电出版社,2009.