be365体育在线投注_365BET能赢钱吗_手机365体育投注客户端JAVA EE框架的在线考试系统平台的设计与实现

Badgirl

发布日期: 2018-09-27 22:47:00 浏览量: 3190
评分:
star star star star star star star_border star_border star_border star_border
*转载请注明来自write-bug.com

摘要

在线考试系统以java作为开发语言,Struts2、Hibernate实现前后台数据管理,Spring实现业务逻辑管理,以MyEclipse作为开发工具,MySQL实现数据持久化,Tomcat部署整个系统,实现了院系管理、专业管理、班级管理、用户管理、课程管理、题库管理、考试管理、成绩管理八大功能。

关键字:在线考试系统、J2EE、JSP、Struts2、Hibernate、Spring、MySQL、Tomcat

Abstract

Online examinationsystem with Java as a development language, struts 2, Hibernate implementationQianHouTai data management, Spring management, implement the business logicwith MyEclipse as development tools, M and SQL for data persistence, Tomcatdeployment of the entire system, realized the departments management,professional management, class management, user management, course management,question bank management, examination management, grade management eightfunctions.

Key words: online examinationsystem; J2EE;JSP;struts 2;Hibernate;Spring;MySQL;Tomcat

第一章 绪论

当今社会是一个信息社会,一个知识经济时代。自世界上第一台计算机ENINC(Electronicnumerical integrator and calculator)于1946年在美国问世到现在,计算机业飞速发展,技术淘汰指标高的惊人,价格下降以及软件应用的快速扩展引发了以信息处理计算机化为标志的“微机革命”,随之而来的是以全球信息网络普及和全球信息共享为标志的“全球信息网络革命”的蓬勃兴起[1]。可见,世界已进入在计算机信息管理领域中激烈竞争的时代,计算机已经变得普通的不能再普通的工具,如同我们离不开的自行车、汽车一样。我们应该承认,谁掌握的知识多,信息量大,信息处理速度快,批量大,谁的效率就高,谁就能在各种竞争中立于不败之地。

随着网络技术的飞速发展,现在很多国内外的大学和其他部门都已经开设了远程教育,通过计算机网络实现了异地教育和培训。

远程教育包括很多环节,例如:教学系统、答疑系统和考试系统等等,在我国远程教育正在逐步地发展起来,在教育教学过程中考试又是一个很重要环节,它对学生知识的增长、能力的发展、兴趣爱好、思想品德以及对学校的教育措施等许多问题是一个良好的反应,通过对考试成绩的分析有利于学校更好的指导和教育学生。但是目前学校与社会上的考试大都采用传统的考试方式,而传统的考试方式组织一次考试至少需要经过五个步骤,即人工出题、考生考试、人工阅卷、成绩评估和试卷分析[2]。其中人工出题由老师将题目用笔写在纸上或者由老师以电子文档的形式出题,然后在将试题打印在纸质试卷上;而考生考试也必须从其他地方赶到同一个地方参加考试,考试过程中要准备好考试所用的各种工具;考试结束后老师将试卷收上去然后根据标准答案进行手工阅卷;阅卷完后还需要手工统计学生的成绩等等。显然,随着考试类型的不断增加及考试要求的不断提高,教师的工作量将会变得越来越大,十分的繁琐,并且非常容易出错。因此传统的考试方式已经不能适应现代化考试的需求了,人们迫切需要新的技术来改善这一状况。

目前,利用计算机网络技术来进行考试的主要是社会上的培训认证考试(如微软的各种认证考试)和远程教育的考试。一个成功的be365体育在线投注_365BET能赢钱吗_手机365体育投注客户端WEB的考试需要一个好的网络环境和一个号的考试平台以及一个好的题库。但一个真正智能化的be365体育在线投注_365BET能赢钱吗_手机365体育投注客户端WEB的考试系统的实现是一个复杂的过程,考试平台和题库的研究要依靠软件开发专家、被测科学专家和精通考试理论和命题的专家三者的合作。

在线考试系统具有降低考试成本、解决繁重的考务工作的优点。它可以免去老师大量的临考工作,试卷可以根据题库中的内容即时生成;老师也无须在考生提交答卷后批阅考生所有的答案,还可以免去阅卷后对成绩的统计与分析等工作,计算机可以自动统计、排序和汇总成绩,实现无纸考试,大大提高工作效率。

一个完善的在线考试系统可以使学生在网上学习过后及时检验自己的学习效果,以发现自己的不足,使得学习效率得到很大提高[3]。在线考试系统中题目的生成、试卷的提交、成绩的批阅等都可以由系统自动完成。只要形成一套成熟的题库就可以实现考试的自动化。这样老师所要做的只是精心设计题目、维护题库,而不是组织考试,从而大大减轻了教师的负担。

第二章 可行性分析

本章主要从经济可行性、技术可行性和操作可行性三个方面阐述了在线考试系统的开发可行性,其中经济可行性主要是从传统考试方式所消耗的成本与在线考试系统开发与应用所消耗的成本来对比经济可行性,技术可行性主要是介绍系统开发所用到的技术,操作可行性则是介绍用户使用系统的能快速上手操作整个系统。

2.1 经济可行性

传统考试采用的是纯人工方式的出卷、阅卷、成绩统计,考生考试时也需要提前从各地集中在一个地点进行统一考试,因此,从经济角度分析,出卷时印刷所消耗的成本、考生赶往考试地点所消耗的交通费用、老师组织一次考试时消耗的工时等等都是比较大的。同样,在考生考试过后,老师阅卷也是采用纯人工的方式来完成,阅卷完成之后还需要制作报表、对数据进行综合分析等,这消耗的工时也是较多的,且效率低下。

而利用计算机网络来组织考生在有网络的地方进行在线考试,不但可以为学校或者企业节省大量的人力物力,而且效率要比手工传统的考试方式高的多,还可以让人力资源得到充分的利用,由此可见,开发在线考试系统在经济上是完全可行的。

2.2 技术可行性

在线考试系统开发所利用的技术主要包括JSP、JAVASCRIPT、J2EE、STRUTS2、HIBERNATE、SPRING,以MySQL数据库实现数据的持久化,Tomcat部署整个系统的运行。

其中JSP技术主要是有Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准[4],而J2EE是Sun Microsystems针对Java开发人员的产品(JDK)的一个企业版[5],JSP与J2EE都可夸平台操作。STRUTS是一个使用MVC架构的框架,将设计模式中的模型、视图、控制器三者实现代码分离,从而使同一个应用程序可以使用不同的表现形式[6]。HIBERNATE是一个ORM(对象关系映射)框架,它对JDBC进行了轻量级的封装,通过使用HIBERNATE框架,开发人员能够以面向对象的思维方式来操作数据库[7]。SPRING是一个以IoC和AOP为核心的轻量级容器框架,它提供了一系列的JAVA EE开发解决方案[8]。MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库[9]。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选[10]。

以上所提及到的技术都是开源或者免费的技术,同时也具有跨平台使用的效果,开发使用起来简单方便,所以在线考试系统的开发在技术上是可行的。

2.3 操作可行性

在线考试系统开发是所使用到的技术都是可跨平台的,所以我们首选的操作系统是windows操作系统。作为21世纪的学生,人人都会使用电脑、人人都能在windows环境下进行网页浏览操作。

在线考试系统的业务逻辑简单,在懂的操作windows系统的前提下只要对用户进行简单的培训用户就能独立完成在线考试系统的各个功能使用,所以在线考试系统在操作上也是完全可行的。

第三章 需求分析

本章主要讲述的是系统的功能需求,同时也包含了系统的运行环境需求、性能需求和系统的E-R图。其中系统的功能需求是通过本人对考试各个环节的理解以及在网上收集资料等各种方法所获取的,运行环境需求是对运行本系统的一个最低PC配置,E-R图是对系统的各实体之间的关系的一个解说[11]。

3.1 功能需求

本系统主要包括登录功能、院系管理功能、专业管理功能、班级管理功能、用户管理功能、课程管理功能、题库管理功能、考试管理功能和成绩管理功能。登录功能是用于用户登录系统,院系管理功能是用于管理员管理院系信息,专业管理功能是用于管理员管理专业信息,班级功能是用于管理员管理班级信息,用户管理功能是用于管理员管理系统用户,课程管理功能是用于管理员管理课程信息,题库管理功能是用于教师管理题库信息,考试管理功能是用于管理员生成试卷、学生在线考试与教师阅卷,成绩管理功能是用于学生查询本人成绩和教师统计学生成绩。

3.3.1 登录功能

该功能是针对所有的用户必需的功能,用户在登录页面输入用户名和密码,选择相应的角色进行登录,其中学生的用户名为学号,老师与管理员的用户名为教师编号,登录成功后进去在线考试系统,失败则返回登录页面重新登录。

操作流程如图3.1所示。

3.3.2 院系管理功能

该功能仅对管理员可见,管理员登录系统后可对院系的基本信息进行增删改查操作,其中修改和删除两项操作需要先将院系信息查询出来才可进行。点击添加院系信息时进入填写院系信息页面填写院系信息,提交后保存结束,点击查看院系信息直接将所有院系信息列出来显示在页面,在每条院系信息后面有编辑与删除按钮,点编辑按钮编辑所选院系,并在编辑页面显示所选院系的所有信息,修改提交后保存并结束,点删除按钮直接删除所选院系信息并结束。

操作流程如图3.2所示。

3.3.3 专业管理

该功能仅对管理员可见,管理员登录系统后可对专业的基本信息进行增删改查操作,其中修改和删除两项操作需要先将院系信息查询出来才可进行。点击添加专业信息时进入填写专业信息页面填写专业信息,提交后保存结束,点击查看专业信息进入选择要查看的院系的页面,选择院系后点查看直接将所选院系的所有专业信息列出来显示在页面,在每条专业信息后面有编辑与删除按钮,点编辑按钮编辑所选专业,并在编辑页面显示所选专业的所有信息,修改提交后保存并结束,点删除按钮直接删除所选专业信息并结束。

操作流程如图3.3所示。

3.3.4 班级管理

该功能仅对管理员可见,管理员登录系统后可对班级的基本信息进行增删改查操作,其中修改和删除两项操作需要先将班级信息查询出来才可进行。点击添加班级信息时进入填写班级信息页面填写班级信息,提交后保存结束,点击查看班级信息进入填写查询条件页面填写查询条件,填写完查询条件后点查看直接将所填条件下的所有班级信息列出来显示在页面,在每条班级信息后面有编辑与删除按钮,点编辑按钮编辑所选班级,并在编辑页面显示所选班级的所有信息,修改提交后保存并结束,点删除按钮直接删除所选班级信息并结束。

操作流程如图3.4所示。

3.3.5 用户管理

该功能仅对管理员可见,管理员登录系统后可对用户的基本信息进行增删改查操作,其中用户包括学生与老师两种类别,老师也包括管理员,修改和删除两项操作需要先将用户信息查询出来才可进行。点击添加老师信息时进入填写老师信息页面填写老师信息,提交后保存结束,点击查看老师信息进入填写查询条件页面填写查询条件,填写完查询条件后点查看直接将所填条件下的所有老师信息列出来显示在页面,在每条老师信息后面有编辑与删除按钮,点编辑按钮编辑所选老师,并在编辑页面显示所选老师的所有信息,修改提交后保存并结束,点删除按钮直接删除所选老师信息并结束。对学生信息的管理与老师类似。

操作流程如图3.5所示。

3.3.6 课程管理

该功能仅对管理员可见,管理员登录系统后可对课程的基本信息进行增删改查操作,其中修改和删除两项操作需要先将课程信息查询出来才可进行。点击添加课程信息时进入填写课程信息页面填写课程信息,提交后保存结束,点击查看课程信息直接将所有课程信息列出来显示在页面,在每条课程信息后面有编辑与删除按钮,点编辑按钮编辑所选课程,并在编辑页面显示所选课程的所有信息,修改提交后保存并结束,点删除按钮直接删除所选课程信息并结束。

操作流程如图3.6所示。

3.3.7 题库管理

该功能对管理员与老师都可见,管理员或者老师登录系统后可对题库的基本信息进行增删改查操作,题库中的题型分为选择题、判断题、填空题、简答题四种。其中修改和删除两项操作需要先将题库信息查询出来才可进行。点击添选择题信息时进入填写选择题信息页面填写题目信息,提交后保存结束,点击查看选择题信息后进入查询条件填写页面,填写完查询条件后点查询后将列出所填查询条件下的所有选择题信息,在每条选择题信息后有编辑与删除按钮,点击编辑按钮编辑所选选择题,并在编辑页面显示所选选择题的所有信息,修改提交保存并结束,点删除按钮直接删除所选选择题信息并结束;类似选择题管理,点击添判断题信息时进入填写判断题信息页面填写题目信息,提交后保存结束,点击查看判断题信息后进入查询条件填写页面,填写完查询条件后点查询后将列出所填查询条件下的所有选择题信息,在每条判断题信息后有编辑与删除按钮,点击编辑按钮编辑所选判断题,并在编辑页面显示所选判断题的所有信息,修改提交保存并结束,点删除按钮直接删除所选判断题信息并结束;填空题与简答题的管理类似。

选择题操作流程如图3.7所示,判断题操作流程如图3.8所示,填空题操作流程如图3.9所示,简答题操作流程如图3.10所示。




3.3.8 考试管理

该功能分为生成试卷、在线考试、老师阅卷三个功能,生成试卷仅对管理员可见,在线考试仅对学生可见、老师阅卷仅对老师可见。其中生生试卷功能是管理员登录系统后点考试管理,然后再点生成试卷进入生成试卷条件填写页面,在试卷条件填写页面填写生成试卷的条件后提交自动随机生成试卷并结束;在线考试功能在学生登录系统后点考试管理,然后再点在线考试进入试卷选择页面,选择要考试的试卷开始考试,考试完毕提交试卷结束。老师阅卷功能在老师登录系统后选择考试管理,点击老师阅卷进入学生答卷选择页面,选择学生考试试卷开始阅卷,阅卷完后提交结束。

生成试卷的操作流程如图3.11所示,在线考试的操作流程如图3.12所示,老师阅卷的操作流程如图3.13所示。

生成试卷 在线考试 老师阅卷

3.3.9 成绩管理

该功能主要包括成绩统计与成绩查询两个功能,其中成绩统计仅对老师可见,老师登录系统后选择成绩管理,然后点击成绩统计进入统计条件填写页面填写统计条件,点统计后将显示统计结果,点关闭结束。查看成绩仅对学生可见,学生登录系统后选择成绩管理,点击查询成绩将显示该学生所有考试科目的成绩,点关闭结束。

成绩统计操作流程如图3.14所示,查看成绩操作流程如图3.15所示。

成绩统计 查询成绩

3.2 运行环境需求

为了保证系统运行的流畅性,我们对硬件有一定的需求,硬件配置不得低于32GB的硬盘容量、1GB的运行内存、1.8GHz的CUP处理速度。同样为了保证系统操作的简单性,我们要求该系统在windows操作系统下运行,浏览器的版本火狐浏览器,同时也要求各客户PC机与服务器所在PC机保存通信状态。

3.2 性能需求

由于在线考试系统最主要的功能是用于在线考试,而每场考试都是设定时间的,所对系统的性能有一定的需求,系统每个操作处理时间不能大于10S,正常处理时间必须低于5S。

第四章 概要设计

本章主要介绍在线考试系统的八个功能模块的总体设计以及数据库的设计。其中院系管理模块、专业管理模块、班级管理模块、用户管理模块、课程管理模块和题库管理模块都具有增删改查功能,而考试管理模块具有生成试卷、在线考试、老师阅卷三个功能,成绩管理模块具有成绩统计和查询成绩两个功能。

4.1 功能模块设计

该在线考试系统主要包括院系管理模块、专业管理模块、班级管理模块、用户管理模块、课程管理模块、题库管理模块、考试管理模块和成绩管理八大模块,如图4-1所示。

4.1.1 院系信息管理模块

该模块主要包括添加院系信息、查询院系信息、修改院系信息、删除院系信息四个功能模块,如图4.2所示。

4.1.2 专业信息管理

该模块主要包括添加专业信息、查询专业信息、修改专业信息、删除专业信息四个功能模块,如图4.3所示。

4.1.3 班级信息管理]

该模块主要包括添加班级信息、查询班级信息、修改班级信息、删除班级信息四个功能模块,如图4.4所示。

4.1.4 用户信息管理

该模块主要包括添加老师信息、查询老师信息、修改老师信息、删除老师信息以及添加学生信息、查询学生信息、修改学生信息、删除学生信息八个功能模块,如图4.5所示。

4.1.5 课程管理

该模块主要包括添加课程信息、查询课程信息、修改课程信息、删除课程信息四个功能模块,如图4.6所示。

4.1.6 题库管理

该模块主要包括添加选择题、查看选择题、修改选择题、删除选择题、添加判断题、查看判断题、修改判断题、删除判断题、添加填空题、查看填空题、修改填空题、删除填空题、添加简答题、查看简答题、修改简答题、删除简答题十六个功能模块,如图4.7所示。

4.1.7 考试管理

该模块主要包括添加生成试卷、在线考试、老师阅卷三个功能模块,如图4.8所示。

4.1.8 成绩查询

该模块主要包括成绩统计和查询成绩两个功能模块,如图4.9所示。

4.2 E-R图

E-R(实体 - 关系)图是用来描述实体之间的关系的[12],一个专业属于一个院系,一个班级属于一个专业,一个学生属于一个班级,学生与老师都拥有权限,一个老师管理多个班级,学生与试卷的选择题、判断题、填空题、简答题存在考试关系,试卷的选择题、判断题、填空题与简答题分别是从题库的选择题、判断题、填空题和简答题表中抽取出来的,题库中的每一道选择题、判断题、填空题、简答题又隶属于一门课程,总体E-R图如图4.10、图4.11所示,实体E-R图如图4.12至图4.26所示。


实体图见图4.12至图4.26。

院系实体 专业实体
班级实体 权限实体

学生实体

教师实体

课程实体

试卷选择题实体 试卷选择题实体
试卷填空题实体 试卷简答题实体
题库判断题实体 题库填空题实体
题库简答题实体 题库选择题实体

4.3 数据库设计

该在线考试系统以院系、专业、班级、学生、老师、权限、课程、题库选择题、题库判断题、题库填空题、题库简答题、试卷选择题、试卷判断题、试卷填空题、试卷简答题15个实体作为数据库的表,表的设计如下。

4.2.1 院系表

院系表包含id、name、date、des四个字段,id为主键,没有实际意义,name用来存储院系名称,date用来存储院系创办日期,des是用来对存储院系做一个简单的描述。表的设计如表4.1所示。

字段名 字段类型 字段长短 字段描述
id int 8 主键
name varchar 50 名称
date date 创办日期
des text 描述

4.2.2 专业表

专业表包含id、name、deptId、date、des五个字段,id为主键,没有实际意义,name存储专业名称,deptId存储院系id,用来唯一标识专业属于哪个院系,date存储专业开始日期,des用来对存储的专业做一个简短的描述,如表4.2所示。

字段名 字段类型 字段长度 字段描述
id int 8 主键
name varchar 50 名称
deptId int 8 所属院系
date date 创办日期
des text 描述

4.2.3 班级表

班级表包含id、name、majorId、teacherId、des五个字段,id为主键,没有实际意义,name存储班级名称,majorId存储专业id,用来唯一标识班级属于哪个专业,teacherId存储教师id,用来唯一标识负责老师,des是用来对存储班级做一个简短的描述,如表4.3所示。

字段名 字段类型 字段长度 字段描述
id int 8 主键
name varchar 50 名称
majorId int 8 所属专业
teacherId int 8 班主任
des text 描述

4.2.4 学生表

学生表包含id、sno、name、birthday、nation、tel、email、address、classId、powerId、password、des十二个字段,id为主键,没有实际意义,sno存储学生学号,name存储学生姓名,birthday存储学生出生日期,nation标识学生属于哪个民族,tel存储学生电话号码,email存储学生邮箱,address存储学生住址,classId存储班级id,用来唯一标识学生属于哪个班级,powerId存储学生权限id,用来唯一标识学生的权限,password存储学生登录系统的密码,des是用来对存储的学生做一个简短的描述,如表4.4所示。

字段名 字段类型 字段长度 字段描述
id int 8 主键
sno varchar 11 学号
name varchar 50 姓名
birthday date 出生日期
nation varchar 50 民族
tel varchar 20 电话
email varchar 20 邮箱
address varchar 200 地址
classId int 8 所属班级
powerId int 2 权限
password varchar 20 密码
des text 描述

4.2.5 教师表

教师表包含id、name、birthday、nation、tel、email、address、position、powerId、password、des十一个字段,id是主键,没有实际意义,tno存储教师的教师编号,name存储教师名称,birthday存储教师的出生日期,nation用来标注教师属于哪个民族,tel存储教师的电话号码,email存储教师的邮箱,address存储教师的住址,position存储教师的职位,powerId存储权限id,用来唯一标识教师的权限,password存储教师登录系统的密码,des是用来对教师做一个简短的描述,如表4.5所示。

字段名 字段类型 字段长度 字段描述
id int 8 主键
tno varchar 11 教师编号
name varchar 50 姓名
birthday date 出生日期
nation varchar 50 民族
tel varchar 20 电话
email varchar 20 邮箱
address varchar 200 地址
position varchar 50 职位
powerId int 2 权限
password varchar 20 密码
des text 描述

4.2.6 权限表

权限表包含id、power、des三个字段,id为主键,没有实际意义,power存储用户权限,des是对用户权限做一个简短的描述,如表4.6所示。

字段名 字段类型 字段长度 字段描述
id int 2 主键
power varchar 50 权限
des text 描述

4.2.7 课程表

课程表包含id、cname、des三个字段,id为主键,没有实际意义,cname存储课程名称,des是用来对存储的课程做一个简短的描述,如表4.7所示。

字段名 字段类型 字段长度 字段描述
id int 8 主键
cname varchar 50 课程名称
des text 描述

4.2.8 题库选择题表

题库选择题表包含id、question、answer、teachername、courseid五个字段,id为主键,没有实际意义,question存储选择题题目,answer存储选择题答案,teachername存储出题老师姓名,courseid存储课程id,用来唯一标识选择题属于哪门课程,如表4.8所示。

字段名 字段类型 字段长度 字段描述
id int 8 主键
question text 题目
answer char 1 标准答案
teachername varchar 50 出题老师
courseid int 8 课程

4.2.9 题库判断题表

题库判断题表包含id、question、answer、teachername、courseid五个字段,id为主键,没有实际意义,question存储判断题题目,answer存储判断题答案,teachername存储出题老师姓名,courseid存储课程id,用来唯一标识判断题属于哪门课程,如表4.9所示。

字段名 字段类型 字段长度 字段描述
id int 8 主键
question text 题目
answer int 1 标准答案
teachername varchar 50 出题老师
courseid int 8 课程

4.2.10 题库填空题表

题库填空题表包含id、question、answer、teachername、courseid五个字段,id为主键,没有实际意义,question存储填空题题目,answer存储填空题答案,teachername存储出题老师姓名,courseid存储课程id,用来唯一标识填空题属于哪门课程,如表4.10所示。

字段名 字段类型 字段长度 字段描述
id int 8 主键
question text 题目
answer text 标准答案
teachername varchar 50 出题老师
courseid int 8 课程

4.2.11 题库简答题表

题库简答题表包含id、question、answer、teachername、courseid五个字段,id为主键,没有实际意义,question存储简答题题目,answer存储简答题答案,teachername存储出题老师姓名,courseid存储课程id,用来唯一标识简答题属于哪门课程,如表4.11所示。

字段名 字段类型 字段长度 字段描述
id int 8 主键
question text 题目
answer text 标准答案
teachername varchar 50 出题老师
courseid int 8 课程

4.2.12 试卷选择题表

试卷选择题表包含id、papername、question、modelanswer、teachername、studentid、courseid、studentanswer、score九个字段,id为主键,没有实际意义,papername为试卷名称,用来标识试卷选择题属于哪份试卷,question存储试卷选择题题目,modelanswer存储试卷选择题题目的标准答案,teachername存储阅卷老师名字,studentid存储学生id,用来唯一标识存储的题目由哪个学生作答,courseid存储课程id,用来唯一标识题目属于哪门课程,studentanswer存储学生答题后的答案,score存储试卷选择题的分值,如表4.12所示。

字段名 字段类型 字段长度 字段描述
id int 8 主键
papername varchar 200 试卷名称
question text 题目
modelanswer int 1 标准答案
teachername varchar 50 阅卷老师
studentid int 11 答题学生
courseid int 8 课程
studentanswer int 1 学生答案
score int 2 分值

4.2.13 试卷判断题表

试卷判断题表包含id、papername、question、modelanswer、teachername、studentid、courseid、studentanswer、score九个字段,id为主键,没有实际意义,papername为试卷名称,用来标识试卷判断题属于哪份试卷,question存储试卷判断题题目,modelanswer存储试卷判断题题目的标准答案,teachername存储阅卷老师名字,studentid存储学生id,用来唯一标识存储的题目由哪个学生作答,courseid存储课程id,用来唯一标识题目属于哪门课程,studentanswer存储学生答题后的答案,score存储试卷判断题的分值,如表4.13所示。

字段名 字段类型 字段长度 字段描述
id int 8 主键
papername varchar 200 试卷名称
question text 题目
modelanswer int 1 标准答案
teachername varchar 50 阅卷老师
studentid int 11 答题学生
courseid int 8 课程
studentanswer int 1 学生答案
score int 2 分值

4.2.14 试卷填空题表

试卷填空题表包含id、papername、question、modelanswer、teachername、studentid、courseid、studentanswer、score九个字段,id为主键,没有实际意义,papername为试卷名称,用来标识试卷填空题属于哪份试卷,question存储试卷填空题题目,modelanswer存储试卷填空题题目的标准答案,teachername存储阅卷老师名字,studentid存储学生id,用来唯一标识存储的题目由哪个学生作答,courseid存储课程id,用来唯一标识题目属于哪门课程,studentanswer存储学生答题后的答案,score存储试卷填空题的分值,如表4.14所示。

字段名 字段类型 字段长度 字段描述
id int 8 主键
papername varchar 200 试卷名称
question text 题目
modelanswer text 标准答案
teachername varchar 50 阅卷老师
studentid int 11 答题学生
courseid int 8 课程
studentanswer text 学生答案
score int 2 分值

4.2.15 试卷简答表

试卷简答题表包含id、papername、question、modelanswer、teachername、studentid、courseid、studentanswer、score九个字段,id为主键,没有实际意义,papername为试卷名称,用来标识试卷简答题属于哪份试卷,question存储试卷简答题题目,modelanswer存储试卷简答题题目的标准答案,teachername存储阅卷老师名字,studentid存储学生id,用来唯一标识存储的题目由哪个学生作答,courseid存储课程id,用来唯一标识题目属于哪门课程,studentanswer存储学生答题后的答案,score存储试卷简答题的分值,如表4.12所示。

字段名 字段类型 字段长度 字段描述
id int 8 主键
papername varchar 200 试卷名称
question text 题目
modelanswer text 标准答案
teachername varchar 50 阅卷老师
studentid int 11 答题学生
courseid int 8 课程
studentanswer text 学生答案
score int 2 分值

4.4 创建工程

在MyEclipse中新建一个Web工程,工程命名为“online_examination_system”,并设置其为J2EE应用,工程的目录结构如图4.27所示。

在线考试系统主要包括action、bean、dao、dao.impl、service、service.impl、util七个包(注:本文提及的类包一律省略类包前的com.online_examination_system),其中action类包主要是存放action类,用于实现前后台数据交换;bean包存放实体类,用于实现系统与数据库关联;dao包存放dao接口,用于存放系统与数据库进行数据交互的接口;dao.impl包存放dao的实现类,用于实现dao类对数据库的访问;service包存放逻辑控制接口,用于控制系统业务逻辑;service.impl存放service接口的实现类,用于实现service对系统的业务逻辑控制;util包存放工具类,用于实现类型转换。

第五章 详细设计

本章主要讲述了在线考试系统的各个功能页面的详细设计,每个功能的设计包括对该页面的一个简短介绍、运行效果图与核心代码,页面的文字介绍主要是从用户角度描述每个功能界面的操作方式,运行效果图是用户正确操作后该系统的显示效果,核心代码是实现每个功能界面的的关键代码。

5.1 登录

用户在浏览器上输入“http://localhost:8080/online_examination_system/”进入登录页面,在登录页面输入用户名、密码、选择相应的角色登录系统,登录页面如图5.1所示。

核心代码如下:

  1. HttpServletRequest request = ServletActionContext.getRequest();
  2. HttpSession session = request.getSession();
  3. List<StudentBean> listStudentBean = new ArrayList<StudentBean>();
  4. List<TeacherBean> listTeacherBean = new ArrayList<TeacherBean>();
  5. StudentBean studentBean = null;
  6. TeacherBean teacherBean = null;
  7. String hql = "";
  8. if(this.userClass.equals("student")){
  9. hql = hql + "from StudentBean studentBean where studentBean.sno='" + this.username + "'" + " and studentBean.password='" + this.password + "'";
  10. try {
  11. listStudentBean = this.studentService.findStudentByHql(hql);
  12. } catch (Exception e) {
  13. // TODO: handle exception
  14. return ERROR;
  15. }
  16. if(listStudentBean.size() == 0){
  17. return ERROR;
  18. }
  19. studentBean = listStudentBean.get(0);
  20. session.setAttribute("user", studentBean);
  21. } else {
  22. hql = hql + "from TeacherBean teacherBean where teacherBean.tno='" + this.username + "'" + " and teacherBean.password='" + this.password + "'";
  23. try {
  24. listTeacherBean = this.teacherService.findTeacherByHql(hql);
  25. } catch (Exception e) {
  26. // TODO: handle exception
  27. return ERROR;
  28. }
  29. if(listTeacherBean.size() == 0){
  30. return ERROR;
  31. }
  32. teacherBean = listTeacherBean.get(0);
  33. session.setAttribute("user", teacherBean);
  34. }

5.2 院系管理

院系管理包含院系添加、院系查看、院系更新、院系删除四个功能,其中院系添加和院系查看直接在院系管理模块下就能操作,院系更新与院系删除需要在查询出院系信息后才能进行操作。

5.2.1 院系添加

管理员登录系统后选择院系管理,点添加院系信息进入院系添加页面,在该页面输入院系名称、创办日期与对添加的院系的描述,点添加按钮添加院系,院系添加页面如图5.2所示。

核心代码如下:

  1. public String addDept() {
  2. try{
  3. this.deptBean.setSetdate(DateUtils.strToDate(setDate));
  4. this.deptService.addDept(this.deptBean);
  5. return SUCCESS;
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. return ERROR;
  9. }
  10. }

5.2.2 院系查看

管理员登录系统后选择院系管理,点查看院系信息进入查看院系页面,该页面讲显示所有院系信息,院系查看页面如图5.3所示。

核心代码如下:

  1. public String listDept() {
  2. try{
  3. HttpServletRequest req = ServletActionContext.getRequest();
  4. this.listDept = deptService.findAllDept();
  5. req.setAttribute("listDept", this.listDept);
  6. return SUCCESS;
  7. } catch (Exception e) {
  8. e.printStackTrace();
  9. return ERROR;
  10. }
  11. }

5.2.3 院系更新

管理员在查看院系信息页面点击要更新的院系信息后的更新,进入更新院系信息页面,在该页面将显示原院系信息,可以在原来院系信息的基础上修改所要更新的院系信息,院系更新页面如图5.4所示。

核心代码如下:

  1. public String updateDept() {
  2. try{
  3. this.deptBean.setSetdate(DateUtils.strToDate(setDate));
  4. this.deptService.updateDept(this.deptBean);
  5. return SUCCESS;
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. return ERROR;
  9. }
  10. }

5.2.4 院系删除

管理员在查看院系信息页面点击要删除的院系信息后的删除直接删除该条院系信息,删除院系信息页面如图5.5所示。

核心代码如下:

  1. public String deleteDept(){
  2. try{
  3. HttpServletRequest req = ServletActionContext.getRequest();
  4. int id = Integer.parseInt(req.getParameter("id"));
  5. this.deptBean = deptService.findDeptById(id);
  6. deptService.deleteDept(this.deptBean);
  7. return SUCCESS;
  8. } catch (Exception e) {
  9. e.printStackTrace();
  10. return ERROR;
  11. }
  12. }

5.3 专业信息管理

专业管理包含专业添加、专业查看、专业更新、专业删除四个功能,其中专业添加和专业查看直接在专业管理模块下就能操作,专业更新与专业删除需要在查询出专业信息后才能进行操作。

5.3.1 专业添加

管理员登录系统后选择专业管理,点添加专业信息进入专业添加页面,在该页面输入专业名称、创办日期、所属院系与对添加的专业的描述,点添加按钮添加专业,专业添加页面如图5.6所示。

核心代码如下:

  1. public String addMajor(){
  2. try {
  3. this.majorService.addMajor(this.majorBean);
  4. return SUCCESS;
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. return ERROR;
  8. }
  9. }

5.3.2 专业查看

管理员登录系统后选择专业管理,点查看专业信息进入属院系选择页面,院系选择页面如图5.7所示,在该页面上选择要查看的院系,点查看将显示所选院系下所有专业,专业查看页面如图5.8所示。


核心代码如下:

  1. public String listMajor(){
  2. try{
  3. ActionContext ctx = ActionContext.getContext();
  4. if(this.deptId == 0){
  5. this.listMajor = this.majorService.findAllMajor();
  6. } else {
  7. this.listMajor = this.majorService.findConditionMajor(this.deptId);
  8. }
  9. ctx.put("listMajor", this.listMajor);
  10. return SUCCESS;
  11. } catch (Exception e) {
  12. e.printStackTrace();
  13. return ERROR;
  14. }
  15. }

5.3.3 专业更新

管理员在查看专业信息页面点击要更新的专业信息后的更新,进入更新专业信息页面,在该页面将显示原专业信息,可以在原来专业信息的基础上修改所要更新的专业信息,专业更新页面如图5.9所示。

核心代码如下:

  1. public String updateMajor(){
  2. try{
  3. this.majorService.updateMajor(majorBean);
  4. return SUCCESS;
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. return ERROR;
  8. }
  9. }

5.3.4 专业删除

管理员在查看专业信息页面点击要删除的专业信息后的删除直接删除该条专业信息,删除专业信息页面如图5.10所示。

核心代码如下:

  1. public String deleteMajorById(){
  2. try{
  3. this.majorBean = this.majorService.findMajorById(this.majorId);
  4. this.majorService.deleteMajor(this.majorBean);
  5. return SUCCESS;
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. return ERROR;
  9. }
  10. }

5.4 班级信息管理

班级管理包含班级添加、班级查看、班级更新、班级删除四个功能,其中班级添加和班级查看直接在班级管理模块下就能操作,班级更新与班级删除需要在查询出班级信息后才能进行操作。

5.4.1 班级添加

管理员登录系统后选择班级管理,点添加班级信息进入班级添加页面,在该页面输入班级名称、创办日期与对添加的班级的描述,点添加按钮添加班级,班级添加页面如图5.11所示。

核心代码如下:

  1. public String addPoliticsClass(){
  2. try{
  3. this.politicsClassService.addPoliticsClassBean(this.politicsClassBean);
  4. return SUCCESS;
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. return ERROR;
  8. }
  9. }

5.4.2 班级查看

管理员登录系统后选择班级管理,点查看班级信息进入班级查看限定条件页面,查看班级限定条件填写页面如图5.12所示,在该页面上填写要查看的班级名称、选择所属专业、负责老师等信息,点查看将显示限定条件下的所有班级,班级查看页面如图5.13所示。


核心代码如下:

  1. public String searchPoliticsClass(){
  2. try{
  3. this.listMajorBean = this.majorService.findAllMajor();
  4. this.listTeacherBean = this.teacherService.findAllTeacher();
  5. this.listPoliticsClassBean = this.politicsClassService
  6. .searchPoliticsClass(this.politicsClassBean);
  7. return SUCCESS;
  8. } catch (Exception e) {
  9. e.printStackTrace();
  10. return ERROR;
  11. }
  12. }

5.4.3 班级更新

管理员在查看班级信息页面点击要更新的班级信息后的更新,进入更新班级信息页面,在该页面将显示原班级信息,可以在原来班级信息的基础上修改所要更新的班级信息,班级更新页面如图5.14所示。

核心代码如下:

  1. public String updatePoliticsClass(){
  2. try {
  3. this.politicsClassService
  4. .updatePoliticsClass(this.politicsClassBean);
  5. return SUCCESS;
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. return ERROR;
  9. }
  10. }

5.4.4 班级删除

管理员在查看专业信息页面点击要删除的专业信息后的删除直接删除该条专业信息,班级删除页面如图5.15所示。

核心代码如下:

  1. public String deletePoliticsClass(){
  2. try {
  3. this.politicsClassBean = this.politicsClassService
  4. .findPoliticsClassById(this.politicsClassBean.getId());
  5. this.politicsClassService
  6. .deletePoliticsClass(this.politicsClassBean);
  7. return SUCCESS;
  8. } catch (Exception e) {
  9. e.printStackTrace();
  10. return ERROR;
  11. }
  12. }

5.5 用户信息管理

用户管理包含教师添加、教师查看、教师更新、教师删除、学生添加、学生查看、学生更新、学生删除八个功能,其中教师添加、学生添加、教师查看和学生查看四个功能直接在用户管理模块下就能操作,教师更新与教师删除需要在查询出教师信息后才能进行操作,学生更新与学生删除需要在查询出学生信息后才能进行操作。

5.5.1 教师添加

管理员登录系统后选择用户管理,点添加教师信息进入教师添加页面,在该页面输入教师编号、教师名称、出生日期、民族、电话、邮箱、职位、密码、权限等信息,点添加按钮添加教师,教师添加页面如图5.16所示。

核心代码如下:

  1. public String addTeacher(){
  2. try{
  3. this.teacherService.addTeacher(this.teacherBean);
  4. return SUCCESS;
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. return ERROR;
  8. }
  9. }

5.5.2 教师查看

管理员登录系统后选择用户管理,点查看教师信息进入查看教师页面,该页面讲显示所有教师信息,教师查看页面如图5.17所示。

核心代码如下:

  1. public String listTeacher(){
  2. try {
  3. this.listTeachser = this.teacherService.findAllTeacher();
  4. return SUCCESS;
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. return ERROR;
  8. }
  9. }

5.5.3 教师更新

管理员在查看教师信息页面点击要更新的教师信息后的更新,进入更新教师信息页面,在该页面将显示原教师信息,可以在原来教师信息的基础上修改所要更新的教师信息,教师更新页面如图5.18所示。

核心代码如下:

  1. public String updateTeacher(){
  2. try {
  3. this.teacherService.updateTeacher(this.teacherBean);
  4. return SUCCESS;
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. return ERROR;
  8. }
  9. }

5.5.4 教师删除

管理员在查看院系信息页面点击要删除的院系信息后的删除直接删除该条院系信息,教师删除页面如图5.19所示。

核心代码如下:

  1. public String deleteTeacher(){
  2. try {
  3. this.teacherBean = this.teacherService
  4. .findTeacherById(this.teacherBean.getId());
  5. this.teacherService.deleteTeacher(this.teacherBean);
  6. return SUCCESS;
  7. }
  8. catch (Exception e) {
  9. e.printStackTrace();
  10. return ERROR;
  11. }
  12. }

5.5.5 学生添加

管理员登录系统后选择用户管理,点添加学生信息进入学生添加页面,在该页面输入学生编号、学生名称、出生日期、民族、电话、邮箱、职位、密码、权限等信息,点添加按钮添加学生,学生添加页面如图5.20所示。

核心代码如下:

  1. public String addStudent(){
  2. try {
  3. this.studentService.addStudentBean(this.studentBean);
  4. return SUCCESS;
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. return ERROR;
  8. }
  9. }

5.5.6 学生查询

管理员登录系统后选择用户管理,点查看学生信息进入学生查看限定条件页面,查看学生限定条件填写页面如图5.21所示,在该页面上填写要查看的学生学号、姓名、出生日期等限定条件,点查看将显示限定条件下的所有学生,学生查看页面如图5.22所示。


核心代码如下:

  1. public String searchStudent(){
  2. try{
  3. this.listStudentBean = this.studentService
  4. .searchStudentBean(this.studentBean);
  5. this.listPoliticsClassBean = this.politicsClassService
  6. .findAllPoliticsClass();
  7. return SUCCESS;
  8. } catch (Exception e) {
  9. e.printStackTrace();
  10. return ERROR;
  11. }
  12. }

5.5.7 学生更新

管理员在查看学生信息页面点击要更新的学生信息后的更新,进入更新学生信息页面,在该页面将显示原学生信息,可以在原来学生信息的基础上修改所要更新的学生信息,学生更新页面如图5.23所示。

核心代码如下:

  1. public String updateStudent(){
  2. try {
  3. this.studentService.updateStudent(this.studentBean);
  4. return SUCCESS;
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. return ERROR;
  8. }
  9. }

5.5.8 学生删除

管理员在查看院系信息页面点击要删除的院系信息后的删除直接删除该条院系信息,学生删除页面如图5.24所示。

核心代码如下:

  1. public String deleteStudent(){
  2. try {
  3. this.studentBean = this.studentService
  4. .findStudentById(this.studentBean.getId());
  5. this.studentService.deleteStudent(this.studentBean);
  6. return SUCCESS;
  7. } catch (Exception e) {
  8. e.printStackTrace();
  9. return ERROR;
  10. }
  11. }

5.6 课程管理

课程管理包含课程添加、课程查看、课程更新、课程删除四个功能,其中课程添加和课程查看直接在课程管理模块下就能操作,课程更新与课程删除需要在查询出课程信息后才能进行操作。

5.6.1 课程添加

管理员登录系统后选择课程管理,点添加课程进入课程添加页面,在该页面输入课程名称、课程描述信息,点添加按钮添加课程,课程添加页面如图5.25所示。

核心代码如下:

  1. public String addCourse(){
  2. try {
  3. this.courseService.addCourse(this.courseBean);
  4. return SUCCESS;
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. return ERROR;
  8. }
  9. }

5.6.2 课程查看

管理员登录系统后选择课程管理,点查看课程进入查看课程页面,该页面讲显示所有课程信息,课程查看页面如图5.26所示。

核心代码如下:

  1. public String listCourse(){
  2. try {
  3. this.listCourseBean = this.courseService.findAllCourse();
  4. return SUCCESS;
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. return ERROR;
  8. }
  9. }

5.6.3 课程更新

管理员在查看课程信息页面点击要更新的课程后的更新,进入更新课程页面,在该页面将显示原课程信息,可以在原来课程信息的基础上修改所要更新的课程信息,课程更新页面如图5.27所示。

核心代码如下:

  1. public String updateCourse(){
  2. try{
  3. this.courseService.updateCourse(this.courseBean);
  4. return SUCCESS;
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. return ERROR;
  8. }
  9. }

5.6.1 课程删除

管理员在查看课程信息页面点击要删除的课程后的删除直接删除该条课程信息,课程删除页面如图5.28所示。

核心代码如下:

  1. public String deleteCourse(){
  2. try {
  3. this.courseBean = this.courseService.findCourseById(this.courseBean
  4. .getId());
  5. this.courseService.deleteCourse(this.courseBean);
  6. return SUCCESS;
  7. } catch (Exception e) {
  8. e.printStackTrace();
  9. return ERROR;
  10. }
  11. }

5.7 题库管理

题库管理包含题库选择题添加、题库选择题查看、题库选择题更新、题库选择题删除、题库判断题添加、题库判断题查看、题库判断题更新、题库判断题删除、题库填空题添加、题库填空题查看、题库填空题更新、题库填空题删除、题库简答题添加、题库简答题查看、题库简答题更新和题库简答题删除十六个功能,其中题库选择题添加、题库选择题查看、题库判断题添加、题库判断题查看、题库填空题添加、题库填空题查看、题库简单题添加和题库简答题查看直接在题库管理模块下就能操作,题库选择题更新与题库选择题删除需要再查询出题库选择题后操作,题库判断题更新与题库判断题删除需要再查询出题库判断题后操作,题库填空题更新和题库填空题删除需要再查询出题库填空题后操作,题库简单题更新与题库简答题删除需要再查询出题库简答题后操作。

5.7.1 题库选择题添加

教师登录系统后选择题库管理,点添加选择题进入题库选择题添加页面,在该页面选择题目所属课程、输入题目、正确答案,点添加按钮添加题库选择题,题库选择题添加页面如图5.29所示。

核心代码如下:

  1. public String addQuestionBankSelect(){
  2. try {
  3. this.questionBankSelectService
  4. .addQuestionBankSelect(this.questionBankSelectBean);
  5. return SUCCESS;
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. return ERROR;
  9. }
  10. }

5.7.2 题库选择题查看

教师登录系统后选择题库管理,点查看选择题信息进入题库选择题查看限定条件填写页面,查看题库选择题限定条件填写页面如图5.30所示,在该页面上选择要查看的题库选择题的出题老师、所属课程以及题目关键字,点查看将显示限定条件下的所有题库选择题,题库选择题查看页面如图5.31所示。


核心代码如下:

  1. public String searchQuestionBankSelect(){
  2. try {
  3. this.listCourseBean = this.courseService.findAllCourse();
  4. this.listQuestionBankSelectBean = this.questionBankSelectService
  5. .searchQuestionBankSelect(this.questionBankSelectBean);
  6. return SUCCESS;
  7. } catch (Exception e) {
  8. e.printStackTrace();
  9. return ERROR;
  10. }
  11. }

5.7.3 题库选择题更新

教师在查看题库选择题页面点击要更新的选择题后的更新,进入更新题库选择题页面,在该页面将显示原选择题题目信息,可以在原题库选择题题目的基础上修改所要更新的选择题信息,题库选择题更新页面如图5.32所示。

核心代码如下:

  1. public String updateQuestionBankSelect(){
  2. try {
  3. this.questionBankSelectService
  4. .updateQuestionBankSelect(this.questionBankSelectBean);
  5. return SUCCESS;
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. return ERROR;
  9. }
  10. }

5.7.4 题库选择题删除

教师在查看题库选择题页面点击要删除的选择题后的删除直接删除该选择题信息,题库选择题删除页面如图5.33所示。

核心代码如下:

  1. public String deleteQuestionBankSelect(){
  2. try {
  3. this.questionBankSelectBean = this.questionBankSelectService
  4. .findQuestionBankSelectById(this.questionBankSelectBean
  5. .getId());
  6. this.questionBankSelectService
  7. .deleteQuestionBankSelect(this.questionBankSelectBean);
  8. return SUCCESS;
  9. } catch (Exception e) {
  10. e.printStackTrace();
  11. return ERROR;
  12. }
  13. }

5.7.5 题库判断题添加

教师登录系统后选择“题库管理”,点添加“判断题进”入题库判断题添加页面,在该页面判断题目所属课程、输入题目、正确答案,点添加按钮添加题库判断题,题库判断题添加页面如图5.34所示。

核心代码如下:

  1. public String addQuestionBankJudge(){
  2. try {
  3. this.questionBankJudgeService
  4. .addQuestionBankJudge(this.questionBankJudgeBean);
  5. return SUCCESS;
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. return ERROR;
  9. }
  10. }

5.7.6 题库判断题查看

教师登录系统后选择题库管理,点查看判断题信息进入题库判断题查看限定条件填写页面,查看题库判断题限定条件填写页面如图5.35所示,在该页面上判断要查看的题库判断题的出题老师、所属课程以及题目关键字,点查看将显示限定条件下的所有题库判断题,题库判断题查看页面如图5.36所示。


核心代码如下:

  1. public String searchQuestionBankJudge(){
  2. try {
  3. this.listCourseBean = this.courseService.findAllCourse();
  4. this.listQuestionBankJudgeBean = this.questionBankJudgeService
  5. .searchQuestionBankJudge(this.questionBankJudgeBean);
  6. return SUCCESS;
  7. } catch (Exception e) {
  8. e.printStackTrace();
  9. return ERROR;
  10. }
  11. }

5.7.7 题库判断题更新

教师在查看题库判断题页面点击要更新的判断题后的更新,进入更新题库判断题页面,在该页面将显示原判断题题目信息,可以在原题库判断题题目的基础上修改所要更新的判断题信息,题库判断题更新页面如图5.37所示。

核心代码如下:

  1. public String updateQuestionBankJudgeAction(){
  2. try {
  3. this.questionBankJudgeService
  4. .updateQuestionBankJudgeAction(this.questionBankJudgeBean);
  5. return SUCCESS;
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. return ERROR;
  9. }
  10. }

5.7.8 题库判断题删除

教师在查看题库判断题页面点击要删除的判断题后的删除直接删除该判断题信息,题库判断题删除页面如图5.38所示。

5.7.9 题库填空题添加

教师登录系统后填空题库管理,点添加选填空进入题库填空题添加页面,在该页面填空题目所属课程、输入题目、正确答案,点添加按钮添加题库填空题,题库填空题添加页面如图5.39所示。

核心代码如下:

  1. public String addQuestionBankFill(){
  2. try {
  3. this.questionBankFillService
  4. .addQuestionBankFill(this.questionBankFillBean);
  5. return SUCCESS;
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. return ERROR;
  9. }
  10. }

5.7.10 题库填空题查看

教师登录系统后选择题库管理,点查看填空题信息进入题库填空题查看限定条件填写页面,查看题库填空题限定条件填写页面如图5.40所示,在该页面上填空要查看的题库填空题的出题老师、所属课程以及题目关键字,点查看将显示限定条件下的所有题库填空题,题库填空题查看页面如图5.41所示。


核心代码如下:

  1. public String searchQuestionBankFill(){
  2. try {
  3. this.listCourseBean = this.courseService.findAllCourse();
  4. this.listQuestionBankFillBean = this.questionBankFillService
  5. .searchQuestionBankFill(this.questionBankFillBean);
  6. return SUCCESS;
  7. } catch (Exception e) {
  8. e.printStackTrace();
  9. return ERROR;
  10. }
  11. }

5.7.11 题库填空题更新

教师在查看题库填空题页面点击要更新的填空题后的更新,进入更新题库填空题页面,在该页面将显示原填空题题目信息,可以在原题库填空题题目的基础上修改所要更新的填空题信息,题库填空题更新页面如图5.42所示。

核心代码如下:

  1. public String updateQuestionBankFill(){
  2. try {
  3. this.questionBankFillService
  4. .updateQuestionBankFill(this.questionBankFillBean);
  5. return SUCCESS;
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. return ERROR;
  9. }
  10. }

5.7.12 题库填空题删除

教师在查看题库填空题页面点击要删除的填空题后的删除直接删除该填空题信息,题库填空题删除页面如图5.43所示。

核心代码如下:

  1. public String deleteQuestionBankFill(){
  2. try {
  3. this.questionBankFillBean = this.questionBankFillService
  4. .findQuestionBankFillById(this.questionBankFillBean.getId());
  5. this.questionBankFillService
  6. .deleteQuestionBankFill(this.questionBankFillBean);
  7. return SUCCESS;
  8. } catch (Exception e) {
  9. e.printStackTrace();
  10. return ERROR;
  11. }
  12. }

5.7.13 题库简答题添加

教师登录系统后填空题库管理,点添加简答题进入题库简答题添加页面,在该页面选择题目所属课程、输入题目、正确答案,点添加按钮添加题库简答题,题库简答题添加页面如图5.44所示。

核心代码如下:

  1. public String addQuestionBankShortAnswer(){
  2. try {
  3. this.questionBankShortAnswerService
  4. .addQuestionBankShortAnswer(this.questionBankShortAnswerBean);
  5. return SUCCESS;
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. return ERROR;
  9. }
  10. }

5.7.14 题库简答题查看

教师登录系统后选择题库管理,点查看简答题信息进入题库简答题查看限定条件填写页面,查看题库简答题限定条件填写页面如图5.45所示,在该页面上简答要查看的题库简答题的出题老师、所属课程以及题目关键字,点查看将显示限定条件下的所有题库简答题,题库简答题查看页面如图5.46所示。


核心代码如下:

  1. public String searchQuestionBankShortAnswer(){
  2. try {
  3. this.listQuestionBankShortAnswerBean = this.questionBankShortAnswerService
  4. .searchQuestionBankShortAnswer(this.questionBankShortAnswerBean);
  5. this.listCourseBean = this.courseService.findAllCourse();
  6. return SUCCESS;
  7. } catch (Exception e) {
  8. e.printStackTrace();
  9. return ERROR;
  10. }
  11. }

5.7.15 题库简答题更新

教师在查看题库简答题页面点击要更新的简答题后的更新,进入更新题库简答题页面,在该页面将显示原简答题题目信息,可以在原题库简答题题目的基础上修改所要更新的简答题信息,题库简答题更新页面如图5.47所示。

核心代码如下:

  1. public String updateQuestionBankShortAnswer(){
  2. try {
  3. this.questionBankShortAnswerService .updateQuestionBankShortAnswer(this.questionBankShortAnswerBean);
  4. return SUCCESS;
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. return ERROR;
  8. }
  9. }

5.7.16 题库简答题删除

教师在查看题库简答题页面点击要删除的简答题后的删除直接删除该简答题信息,题库简答题删除页面如图5.48所示。

核心代码如下:

  1. public String deleteQuestionBankShortAnswer(){
  2. try {
  3. this.questionBankShortAnswerBean = this.questionBankShortAnswerService
  4. .findQuestionBankShortAnswerById(this.questionBankShortAnswerBean
  5. .getId());
  6. this.questionBankShortAnswerService
  7. .deleteQuestionBankShortAnswer(this.questionBankShortAnswerBean);
  8. return SUCCESS;
  9. } catch (Exception e) {
  10. e.printStackTrace();
  11. return ERROR;
  12. }
  13. }

5.8 考试管理

考试管理包含试卷生成、在线考试、教师阅卷三个功能,试卷生成在管理员登录系统后在考试管理中直接操作,在线考试为学生登录系统后再考试管理中选择在线考试进行试卷的选择,然后作答,老师阅卷为老师登录系统后点击教师阅卷选择所要批阅的试卷,然后再批阅试卷。

5.8.1 试卷生成

管理员登录系统后选择考试管理,点击“试卷生成”进入试卷生成信息填写页面,试卷生成如图5.49所示

核心代码如下:

  1. public String createPaper(){
  2. //生成试卷选择题
  3. while (selectNumber != 0){
  4. }
  5. //生成试卷填空题
  6. while (fillNumber != 0){
  7. }
  8. shortAnswerNumber = this.shortAnswerNumber;
  9. //生成试卷简答题
  10. while (shortAnswerNumber != 0){
  11. }
  12. return SUCCESS;
  13. }

5.8.2 学生考试

学生登录系统后选择考试管理,点击“在线考试”进入试卷选择页面,试卷选择页面如图5.50所示,点击开始考试进入考试页面,在考试页面选择相应的题型作答。选择题答题页面如图5.51、判断题答题页面图5.52、填空题答题页面图5.53、简答题答题页面图5.54所示。


核心代码如下:

  1. public String examingSelect(){
  2. PaperSelectBean paperSelectBean = this.paperSelectService.findPaperSelectById(this.paperSelectBean.getId());
  3. paperSelectBean.setStudentanswer(this.paperSelectBean.getStudentanswer());
  4. if (paperSelectBean.getModelanswer() == paperSelectBean.getStudentanswer()){
  5. paperSelectBean.setGetscore(paperSelectBean.getScore());
  6. } else {
  7. paperSelectBean.setGetscore(0);
  8. }
  9. this.studentid = (Integer) session.getAttribute("studentid");
  10. this.paperName = (String) session.getAttribute("paperName");
  11. this.paperSelectService.updatePaperSelect(paperSelectBean);
  12. this.listPaperSelectBean = this.paperSelectService.searchPaperSelect(this.studentid, this.paperName);
  13. return SUCCESS;
  14. }

判断题答题页面

核心代码如下:

  1. public String examingJudge(){
  2. PaperJudgeBean paperJudgeBean = this.paperJudgeService.findPaperJudgeById(this.paperJudgeBean.getId());
  3. paperJudgeBean.setStudentanswer(this.paperJudgeBean.getStudentanswer());
  4. if (paperJudgeBean.getModelanswer() == paperJudgeBean.getStudentanswer()){
  5. paperJudgeBean.setGetscore(paperJudgeBean.getScore());
  6. } else {
  7. paperJudgeBean.setGetscore(0);
  8. }
  9. this.studentid = (Integer) session.getAttribute("studentid");
  10. this.paperName = (String) session.getAttribute("paperName");
  11. this.paperJudgeService.updatePaperJudge(paperJudgeBean);
  12. this.listPaperJudgeBean = this.paperJudgeService.searchPaperJudge(this.studentid, this.paperName);
  13. return SUCCESS;
  14. }

填空题答题页面

核心代码如下:

  1. public String examingFill(){
  2. PaperFillBean paperFillBean = this.paperFillService.findPaperFillById(this.paperFillBean.getId());
  3. paperFillBean.setStudentanswer(this.paperFillBean.getStudentanswer());
  4. this.studentid = (Integer) session.getAttribute("studentid");
  5. this.paperName = (String) session.getAttribute("paperName");
  6. this.paperFillService.updatePaperFill(paperFillBean);
  7. this.listPaperFillBean = this.paperFillService.searchPaperFill(this.studentid, this.paperName);
  8. return SUCCESS;
  9. }

简答题答题页面

核心代码如下:

  1. public String examingShortAnswer(){
  2. PaperShortAnswerBean paperShortAnswerBean = this.paperShortAnswerService.findPaperShortAnswerById(this.paperShortAnswerBean.getId()); paperShortAnswerBean.setStudentanswer(this.paperShortAnswerBean.getStudentanswer());
  3. this.studentid = (Integer) session.getAttribute("studentid");
  4. this.paperName = (String) session.getAttribute("paperName");
  5. this.paperShortAnswerService.updatePaperShortAnswer(paperShortAnswerBean);
  6. this.listPaperShortAnswerBean = this.paperShortAnswerService.searchShortAnswer(this.studentid, this.paperName);
  7. return SUCCESS;
  8. }

5.8.3 教师阅卷

教师登录系统后选择考试管理,点击“教师阅卷”进入试卷与题型选择页面,题型选择页面如图5.55所示,在该页面选择试卷与题型点击“开始阅卷”进入阅卷页面,判断题阅卷页面如图5.56、简答题阅卷页面图5.57所示。

核心代码如下:

  1. public String listPaperQuetionType(){
  2. try {
  3. this.listPaperName = this.paperSelectService.searchPaper();
  4. return SUCCESS;
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. return ERROR;
  8. }
  9. }

判断题阅卷页面

核心代码如下:

  1. public String updateFillBean(){
  2. int temp = 0;
  3. this.listPaperFillBean = (List<PaperFillBean>)session.getAttribute("listPaperFillBean");
  4. PaperFillBean paperFillBean = new PaperFillBean();
  5. paperFillBean = this.paperFillService.findPaperFillById(this.paperFillBean.getId());
  6. paperFillBean.setGetscore(this.paperFillBean.getGetscore());
  7. this.paperFillService.updatePaperFill(paperFillBean);
  8. temp = this.index;
  9. this.index = temp;
  10. temp = this.listsize;
  11. this.listsize = temp;
  12. return SUCCESS;
  13. }

简答题阅卷页面

核心代码如下:

  1. public String updateShortAnswerBean(){
  2. int temp = 0;
  3. this.listPaperShortAnswerBean = (List<PaperShortAnswerBean>)session.getAttribute("listPaperShortAnswerBean");
  4. PaperShortAnswerBean paperShortAnswerBean = new PaperShortAnswerBean();
  5. paperShortAnswerBean = this.paperShortAnswerService.findPaperShortAnswerById(this.paperShortAnswerBean.getId()); paperShortAnswerBean.setGetscore(this.paperShortAnswerBean.getGetscore()); this.paperShortAnswerService.updatePaperShortAnswer(paperShortAnswerBean);
  6. temp = this.index;
  7. this.index = temp;
  8. temp = this.listsize;
  9. this.listsize = temp;
  10. return SUCCESS;
  11. }

5.9 成绩管理

成绩管理只实现了学生查看本人成绩,学生在登录系统后选择成绩管理,点击查看成绩查看本人所有考试的成绩,成绩查看界面如图5.58所示。

核心代码如下:

  1. public String findGradeCourse(){
  2. for ( int i = 0; i < listcourseidsize; i ++){
  3. for ( int j = 0 ; j < listPaperNamesize; j ++){
  4. GradeBean gradeBean = new GradeBean();
  5. selectBeans = this.paperSelectService.searchPaperSelect(this.studentBean.getId(), this.listcourseid.get(i).intValue(), this.listPaperName.get(j));
  6. judgeBeans = this.paperJudgeService.searchPaperJudge(this.studentBean.getId(), this.listcourseid.get(i).intValue(), this.listPaperName.get(j));
  7. fillBeans = this.paperFillService.searchPaperFill(this.studentBean.getId(), this.listcourseid.get(i).intValue(), this.listPaperName.get(j));
  8. shortAnswerBeans = this.paperShortAnswerService.searchShortAnswer(this.studentBean.getId(), this.listcourseid.get(i).intValue(), this.listPaperName.get(j));
  9. for (int k = 0; k < selectBeanslength; k ++){
  10. n = n + selectBeans.get(k).getGetscore();
  11. }
  12. for (int k = 0; k < judgeBeanslength; k ++){
  13. n = n + judgeBeans.get(k).getGetscore();
  14. }
  15. for (int k = 0; k < fillBeanslength; k ++){
  16. n = n + fillBeans.get(k).getGetscore();
  17. }
  18. for (int k = 0; k < shortAnswerBeanslength; k ++){
  19. n = n + shortAnswerBeans.get(k).getGetscore();
  20. }
  21. for(int k = 0; k < listCourseBeansizi; k ++){
  22. if (selectBeans.get(0).getCourseid() == this.listCourseBean.get(k).getId())
  23. gradeBean.setCourseName(this.listCourseBean.get(k).getName());
  24. }
  25. gradeBean.setPaperName(selectBeans.get(0).getPapername());
  26. gradeBean.setGrade(n);
  27. this.listGradeBean.add(gradeBean);
  28. }
  29. }
  30. return SUCCESS;
  31. }

第六章 总结

该在线考试系统以java作为开发语言,Struts2、Hibernate实现前后台数据管理,Spring实现业务逻辑管理,以MyEclipse作为开发工具,MySQL实现数据持久化,Tomcat部署整个系统,实现了院系管理、专业管理、班级管理、用户管理、课程管理、题库管理、考试管理、成绩管理八大功能。考试的主要参与者——学生在考试过程中出来要体现考生的姓名、学号、考试科目外还需要知道考生属于哪个班级,每个班级都属于特定的专业,每个专业又只属于一个院系,因此在该考试系统中出了实现基本的考试功能还实现了对学生的相关信息的管理,在添加院系时,每个院系的名称唯一,添加专业时,在院系管理中必须存在这样的院系才能添加相关专业,同样,添加班级是首先在专业中要有这样的专业,添加学生时也又必须存在学生所属班级。在学生信息管理这几大模块中,如果对学生所属班级的信息进行更改,那学生对应的所属班级信息会自动更改,更改了专业信息后,班级对应所属专业也会自动更改,修改院系信息后专业对应的所属专业也会自动修改。在线考试系统的另外一个优点就是针对不同的考试科目可以出不同的试卷,也许没门考试的难度不一样,因此该考试系统中实现的自主确定考试题目数量与自主设置每题分值是该考试系统的另一个优点。管理员可以根据考试的实际难易程度设定不同的考试题目数量,根据题目的难易程度设定不同类型的题目的分值,同时,在生成考试试卷时对于试卷生成后老师不能预览考试题目,试卷中的题目也是从数据库中随机抽取,因此这样实现了考试过程中的对试卷的保密性。学生在正个考试过程中能看到自己考试剩余时间,这能使考生在考试时合理安排答题时间。

该考试系统虽已经相当完善,但是没有任何一个软件没有任何缺陷,同样该考试系统也存在着它特有的不足,该考试系统对数据的输入只能一个一个的添加,不能实现文件导入功能,这是该考试系统的最大不足,当然,该考试系统还有其他的不足之处,如页面的设计有些地方不是特别合理,因此改考试系统还有待完善。

致谢

在本系统的设计和实现过程中,老师给我了极大的帮助。老师在我设计系统的功能时给了我许多技术指导,并教会了我许多新的知识,拓宽了我的眼界。更为重要的是,在老师的帮助下让我体会到了当一名好的程序员是需要付出极大的耐心与努力,为将来的工作做好了心理上的准备。

同时,在这毕业的最后,我也要感谢大学四年来与我共同生活,共同努力,共同学习进步的同学们,我们互帮互助,为我们自己的青春挥洒汗水,为我们的将来而努力。谢谢你们!

参考文献

[1] 何为东.在线考试系统设计[D]:[学士学位论文].武汉:武汉大学,2012.

[2] 王子强.在线考试系统需求分析设计[EB/OL].http://wenku.baidu.com/view/d4002f37ee06eff9aef807c3.html

[3] 吴国柱.be365体育在线投注_365BET能赢钱吗_手机365体育投注客户端Java的在线考试系统设计[D]:[学士学位论文].武汉:华中科技大学,2012.

[4] 吴建,张晓东.JSP网络开发入门与实践[M].北京:人民邮电出版社,2007,7~15.

[5] 计磊,李显,周伟.J2EE—-Eclipse Struts Hibernate Spring整合应用案例[M].北京:人民邮电出版社,2006,21~27.

[6] 戎伟,张双.精通Struts—-Java流行服务器、框架、工具及整合应用[M].北京:人民邮电出版社,2007,19~31.

[7] 范立峰,林果园.JavaWeb程序设计教程[M].北京:人民邮电出版社,2011,173~224.

[8] 孟劫.精通Spring—-Java轻量级架构开发实践[M].北京:人民邮电出版社,2007,41~96.

[9] 崔洋 贺亚茹.MySQL数据库应用从入门到精通[M].北京:中国铁道出版社,2012,24~72.

[10] 克尼亚万,德克,曹旭东.深入剖析Tomcat[M].北京:机械工业出版社,2012,22~87.

[11] 张海藩.软件工程导论 [M].北京:清华大学出版社,2008,55~73.

[12] 王珊,萨师煊.数据库系统概论(第四版)[M].北京:高等教育出版社,2011,198~235.

上传的附件 cloud_download 毕设-在线考试系统.7z ( 21.66mb,?118次下载 )
error_outline 下载需要14点积分

keyboard_arrow_left上一篇 : be365体育在线投注_365BET能赢钱吗_手机365体育投注客户端JAVA EE框架的在线考试系统平台的设计与实现 数字字符切割和识别 : 下一篇keyboard_arrow_right



Badgirl
2018-09-27 22:47:52
be365体育在线投注_365BET能赢钱吗_手机365体育投注客户端Java EE的在线考试系统平台
阿才217
2018-12-18 17:28:34
试着我哦一下
样样
2019-01-23 18:11:25
为什么下载了打不开
永远的小白
2019-02-23 11:11:19
登录不上去啊,运行是可以,但是登录就用户名或密码错误,学生和老师都是这样。用户名我用的是sno或tno,密码用的password,登不上。
南浔
2019-06-19 10:15:50
登录不上去呀,我重新设置了数据库密码和用户名,也登录不了
aron
2019-11-11 11:34:20
功能无法使用诶? 生成试卷功能报错,成绩管理也报错

发送私信

大概没去过的地方都叫远方

12
文章数
14
评论数
eject