基于JSP+sqlserver的在线考试系统设计与实现(毕业论文+程序源码)
大家好,今天给大家介绍基于JSP+sqlserver的在线考试系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦
文章目录:
1、项目简介
- 在线考试系统旨在实现考试的无纸化管理,基于计算机和网络技术进行在线考试系统的使用,既方便校方对考试的管理,也方便了考生,尤其适合考生分布广,不易集中的远程教育。
- 基于远程教育的推广和在线考试需求的增加,本文设计并实现了一套在线考试系统。本系统实现了系统管理、考生管理、在线考试、在线制作试卷、控制学生考试、试卷审批等基本功能。同时,为确保系统安全运行和考试信息的机密性、完整性,本系统采用了SSL协议来加密传输的考试数据,并实现对服务器的认证。系统采用B/S开发模式,以JAVA作为开发平台,结合JSP、JavaScript、Html等语言,以Tomcat为服务器和SQL Server 为后台数据库。整个系统层次结构简单,操作容易,并具备一定的安全性。考生借助此系统,可以随时随地的进行课程结业考试,同样,老师使用该系统能更高效、便捷的组织在线考试。
2、资源详情
项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:9074个字24页
包含内容:全套源码+配整论文
开题报告、论文答辩、课题报告等ppt模板推荐下载方式:
3、关键词
在线考试系统;B/S模式;SSL4、毕设简介
提示:以下为毕业论文的简略介绍,项目完整源码及完整毕业论文下载地址见文末。
1 引言
1.1 课题背景
近年来,我国的函授教育、网络远程教育、自学教育,以及国内国外的各类认证考试教育,如微软的MCSE、Cisco的CCNA等,迅速发展。在这个日新月异的时代,不学习就意味着落后,所以接受教育不再局限于校园内,职场人员通过各种不同的考试来提升自我。
随着Internet的发展,计算机的全面普及,学校的教学、教务管理、行政管理也一改传统的模式,借助现代计算机技术及因特网技术,努力朝着信息化建设的方向发展。教育的改革,给人们带来了更多的学习机会。随着学习形式灵活、学生分布广的成人教育及各种的认证培训考试教育的迅猛发展,考试的形式也变得更加多样化。比如,在线考试就已经成为广泛应用的一种考试形式,相应的,对在线考试系统的需求也越来越大。
1.2 系统开发的意义
系统所设计的在线考试系统,是响应教育信息化的体制改革,使Internet技术与计算机技术在教育教学领域的应用得以拓展。在线考试系统的开发与设计适合现代教育教学,也给传统的考试提供了一个很好的解决方案,今后将成为教育教学管理的辅助方式之一,让传统教育中的考试朝网络化的方向发展。
2 需求分析
2.1 问题分析
在传统的学校教学中,进行一场考试,要求老师刻试卷、印试卷、安排考试、监考、收集试卷、评改试卷、讲评试卷和分析试卷,这是一个繁杂的过程,需要大量人力、物力与时间的投入,已经越来越不适应学校信息化建设与现代教学的需要。尤其在远程网络教学中,学生分布广,不易统一集中安排考试,给校方和学生带来了众多的不便。
当前盛行的在线考试系统,正是信息化建设的产物,它是传统考场的延伸。它可以利用互联网络和局域网,随时随地的对学生进行考试,评分,加上数据库技术的利用,使得管理过程简化,能够轻松实现查询,控制等功能。因此在线考试是信息化教学的不可缺少的辅助手段。显然,无论采取何种方式,首要考虑的是安全性能。为此,本系统在SSL协议下完成了在线考试。数据、信息、资料等得以安全稳定的传输。
2.2 功能需求分析
1.用户类别:登录系统的身份定为四种,一是超级管理员,二是学校领导,三是一般管理员(普通老师),四是学生,只有被授权的用户才可以使用本系统的资源。
2.权限管理:系统需要经过有效的身份验证可以登录。用户的身份不同,使用的系统资源也不同。考生只可以参加在线考试;一般管理员(普通教师)可以在线制作试卷,进行考生管理,添加学生信息、控制考试、成绩查询等。学校领导可添加院系、教师、部门、科目信息及查询修改管理员信息及审批试卷、查询考生信息;超级管理员拥有整个系统的全部使用权限,但查询修改管理员信息的权限例外。
3.在线考试功能:考生输入准号证号登陆系统后,选择对应的试卷可进行考试。答题完毕后,可自动交卷,系统将自动评分,考生可同时获得考试成绩。
4.在线制作试卷:一般管理员(教师)、学校领导和超级管理员可在线制作试卷,可设定试题的类型、难易程度、分值。
5.控制考试功能:可设定每次的考试时间,可禁止或允许考生参加考试,同时可查看考生的考试状态。
6.考生管理功能:可注册新增学生用户,同时查看个别考生及班级考生的信息,也可设定考生的考试状态:允许或禁止考试。
7.考生成绩查询功能:提供考生各科目成绩的详细查询。
8.试卷审批功能:超级管理员及学校领导有此权限。教师制作试卷完毕,只有经过超级管理员或学校领导审批后才能发布,发布后学生才能开考。
9.系统管理功能:一般管理员只可更改登陆密码。超级管理员及学校领导除更改密码外,同时具有高级管理功能,进行添加和删除管理员的帐号。
10. 系统安全性能:SSL协议对数据的加密、对服务器的认证等能够保证数据在各个流程中流动的安全性。
11.
2.3 开发环境的选择
整个系统开发完全采用Browser/Server模式,开发平台为Java平台,以Tomcat为JSP引擎和Web服务器,后台数据库使用SQL Server 。
在开发模式上选择Browser/Server模式,是因为B/S模式有以下优点:
1.开发成本及维护成本降低。由于B/S架构管理软件只安装在服务器端(Server)上,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人员只需要做硬件维护。
2.良好的安全性能,防火墙加技术加上SSL协议可以保证后台数据库的安全性。所有客户端请求都是通过DBMS来访问数据库,从而大大减少了数据直接暴露的风险。因此系统的架构就采用了B/S设计模式。
3 系统安全基础
在系统安全性能方面,以SSL协议作为安全保障,SSL协议功能概述如下:
SSL协议位于TCP/IP协议模型的网络层和应用层之间,使用TCP来提供一种可靠的端到端的安全服务,它是客户/服务器应用之间的通信不被攻击窃听,并且始终对服务器进行认证,还可以选择对客户进行认证。SSL协议在应用层通信之前就已经完成加密算法、通信密钥的协商以及服务器认证工作,在此之后,应用层协议所传送的数据都被加密。SSL实际上是共同工作的两层协议组成,如图1所示。从体系结构图可以看出SSL安全协议实际是SSL握手协议、SSL修改密文协议、SSL警告协议和SSL记录协议组成的一个协议族。
图1 SSL体系结构
省略
4 系统总体设计
4.1 设计思想
系统功能设计本着从用户角度出发的原则,要求实用,且符合用户提出的合理需求。系统设计在不违反系统整体性的基础上,可根据用户的需求进行二次开发,不断完善系统功能,便于系统的不断升级。
4.2 系统模块结构图
系统的模块结构如图所示,根据权限不同对用户所操作的模块也有相应的变化。各个模块在数据库的支持下具有独立性、完整性。
图2 系统模块结构图
4.3 系统流程图
用户对系统进行操作的流程也用图作了形象的解释,系统对操作用户反馈其对应的信息。老师能够很方面的举行考试,学生对考试过程透明,但系统能对学生的考试自动存档、打印出考试成绩。并对学生信息加以记录以方便查询。其流程图如下所示:
图3 系统流程图
4.4 数据库的设计
在数据库设计时,考虑到系统不同用户,不同权限,以及系统所使用范围和试卷的特有属性,分别建立了相应的表。各个表的主键在表中也已相应标明。以下就是系统中几个关键的表。
5 系统详细设计与实现
5.1 SSL协议的配置与使用
由于系统采用Tomcat作为服务器,而Tomcat服务器能很好的支持SSL协议。因此,在如此环境下配置SSL协议的过程相对要容易得多。
首先,系统要得到一个生成证书:
在命令行输入 %Java_home%\bin\keytool -genkey -alias tomcat -keyalg RSA
在此命令中,keytool是JDK自带的产生证书的工具。把RSA运算法则作为主要安全运算法则,这保证了与其它服务器和组件的兼容性。系统自动产生.keystore文件。其默认密码为changeit.在生成文件过程中,系统要求出示密钥密码,这必须和.keystore文件密码一致。
操作界面如图:
图4 配置证书图
其次,在Tomcat配置文件中有个server.xml文件,找到如下程序:
<-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<!-- <Connector port="8443" minProcessors="5" maxProcessors="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true";
clientAuth="false" sslProtocol="TLS"/>
-->
在这段程序中将注释符消去,并加上keystoreFile和keystorePass两个属性。keystoreFile=存放证书的路径keystorePass=密码。
这样,SSL协议配置完成,系统可以通过SSL访问Tomcat支持的任何web应用程序。只不过指令需要像这样:https://localhost:8443
通过指令可以在页面上看到如下图所示的内容:
图5 Tomcat SSL配置成功
出现上图6,就说明在TOMCAT服务器配置成功了SSL。
5.2 功能模块设计
整个模块分为系统管理、考生管理、控制考试、查询系统、制作试卷、试卷中心、考生考试七大模块。
5.2.1 系统管理模块
图6系统管理模块结构图
系统管理模块包括更改密码、高级管理(添加资源、添加管理员、删除管理员、查询管理员)两大子模块。
1、更改密码:各级管理员登录系统后,可自行重新设置登录密码;
2、高级管理:包含添加资源、添加管理员、删除管理员、查询管理员四个子功能,超级管理员添加资源、添加管理员、删除管理员、查询管理员,学校领导拥有超级管理员的权限外,还有查询管理员的权限。
(1)添加资源,可添加部门名称;部门的科目名称,科目名称将录入科目信息表中,以后教师可以制作此科目的试卷。
(2)添加管理员,允许超级管理员和校领导添加超级管理员及一般的管理员用户,并分配权限。
(3)删除管理员,允许超级管理员及校领导删除其它管理员。
(4)查询管理员,只允许校领导查询管理员信息,查询时,可显示各管理员的信息列表,点击列表中各记录后面的修改、删除,可对管理员信息进行编辑与管理,但不可更改管理员的信息。
系统管理界面如图:
图7系统管理页面
其中,实现以上功能的主要代码如下:
在JSP中使用BEAN:
<jsp:useBean id="dep1" scope="page" class="exam.exam"/>
<jsp:useBean id="dep" scope="page" class="exam.exam"/>
系统管理:
添加部门:
<jsp:useBean id="db1" scope="page" class="exam.exam"/>
String sql1="select max(dep) as num from departmen";
ResultSet rs=db1.executeQuery(sql1);
while(rs.next()){
num=rs.getInt("num");
dep=num+1;
}
<jsp:useBean id="db2" scope="page" class="exam.exam"/>
Stringsql2="insert into
departmen(dep,depname)values('"+dep+"','"+depname+"')";
db2.executeUpdate(sql2);
添加管理员
StringstrSQL4="insertinto
administrators(wnum,wpswd,tname,tsex,tdep,tpri)values ('"+wnum+"','"+wnum+"','"+tname+"','"+tsex+"','"+tdep+"','"+tpri+"')";
regBean.executeUpdate(strSQL4);
5.2.2 考生管理模块
图8 考生管理模块结构图
考生管理模块包括考生注册,考生个人信息查询、考生集体(班级)查询三个模块。
1、考生注册
考生注册用于添加考生的信息,此操作由超级管理员及教师来完成。
输入项:准考证号、姓名、性别、学号年级,班级和所在系。
输出项:注册成功,进入成功页面,不成功则显示错误信息页面。
处 理:
(1)判断准考证号,姓名,性别,学号,年级,班级的所在系是否为空,数据库中是否有重复的准考证号以及位数是否正确。
(2)在这里系统管理员可以添加考生信息,添加的信息有准考证号,姓名,性别,学号,年级,班级和所在系。所有的信息被系统取得后都将添入信息表中,经过注册的考生,可以使用他的准考证号和密码登录网络考试系统,进行在线考试。这里系统将考生的密码默认为准考证号。
2、考生信息
(1)个人信息查询
输入项:考生的准考证号
输出项:查找成功,进入成功页面,显示考生信息,不成功则显示错误信息页面。
处 理:在这个子功能里,用户输入考生的准考证号,提交给系统后,系统会将使用这个准考证号的考生的所有信息显示出来。个人的信息有准考证号,姓名,性别,学号,年级,班级,所在系,考试状态(允许考试/禁止考试),考试次数,历史最好的科目与成绩,历史最坏的科目与成绩,所有考试科目与成绩。还可以查看此考生的试卷,在这个子功能里还可以设置考生的考试状态(允许/禁止)。
(2)集体信息查询(班级)
输入项:用户选择系别,年级和班级
输出项:查找成功,进入成功页面,不成功则显示错误信息页面
处 理:在这个子功能里,用户选择系别,用户选择系别,年级和班级,提交给系统后,系统将这个具体的班的所有考生的信息显示出来。集体的信息有准考证号,姓名,性别,学号,考试状态(允许考试/禁止考试)。通过这个功能还可以设置整个班级考生的考试状态。
考生管理界面如图
图9考生管理图
实现以上主要功能核心代码为:
查询班级信息及设置考试状态
String sql2="update student set power='"+power+"' where dep='"+depq+"' and grade='"+grade+"' and sclass='"+sclass+"'";
dep1.executeUpdate(sql2);
sql="select * from student where dep='"+depq+"' and grade='"+grade+"' and sclass='"+sclass+"' order by snum";
ResultSet rs=dep.executeQuery(sql);
ResultSet rs2=dep2.executeQuery(sql);
5.2.3 成绩查询模块
本模块可查询学生基本信息及成绩单信息。
输入项:学生的准考证号或姓名,或系级,支持模糊查询。
输出项:显示符合条件的该考生基本信息及各科目成绩单信息,无符合条件的将显示无此记录。
处 理:在这个子功能里,用户可输入准考证号、姓名或系别,系统将自动进行判定。
其查询模块如图:
图10查询模块图
以上主要功能代码为:
查询学生的考试信息
ResultSet rs2=adminBean.executeQuery("select * from student where snum like '"+"%"+sid+"%"+"' and sname like '"+"%"+name2+"%"+"' and dep like '"+"%"+depints+"%"+"'");
countrs=adminBean.executeQuery("select count(*)as cnt from student where snum like '"+"%"+sid+"%"+"' and sname like '"+"%"+name2+"%"+"' and dep like '"+"%"+depints+"%"+"'");
5.2.4 控制考试模块
图11控制考试模块结构图
控制考试模块包括开始考试、结束考试两个模块。试卷获准发布后,教师可选择院系及试卷,然后点击“允许开始考试”,同时设定考试时限,此后,学生登陆考试系统才能开始考试。在此处,对已开考的试卷,教师可随时结束本次考试。
输入项:选择部门或院系名称
输出项:页面将罗列出已经审批过的试卷,以及显示试卷考试状态控制页面,即“允许开始开试”、“结束考试”。
处 理:
(1)系统检索数据库中属于这个部门且又审批后可以发布的试卷,然后罗
列出来。
(2)所有查询结果以分页方式显示,每页5条,可以迅速跳转某一页,也可按上一页、下一页、首页、尾页方式连接到相应的页。
其模块界面如图
图12控制考试界面图
以上的主要代码为:
考试信息读取的时候进行分页控制
String dep=request.getParameter("give");
if(dep==null){dep=(String)session.getValue("dep");}
session.putValue("dep",dep);
int pageLine=5;
int totalRec=0;
int intPage=1;
int i;
intPageCount=(totalRec+pageLine-1)/pageLine;
ResultSet rs2=adminBean.executeQuery("select sbnum,pnum,phead,pstate from pap where dep='"+dep+"' and pstate='"+1+"' or pstate='"+2+"' order by pnum "); if (intPageCount>0)
{for(i=1;i<=(intPage-1)*pageLine;i++)
rs2.next();
for(i=1;i<=pageLine;i++){
if(rs2.next()){显示出符合条件的试卷}
5.2.5 制作试卷模块
图13 制作试卷流程图
制作试问模块包括:基本属性设置(系别,试卷的科目,试卷的标题,性质(标准考试,补考),题型设置,(题型,难度,分数,问题),问题选项设置(选项个数的设置,每个选项的内容,及设置该选项是否为正确答案),试卷的预览(及有修改的功能)。
输入项:题型,难度,分数,问题
输出项:题型的设置页面,完成制作是预览这套试卷。
处 理:
(1)题型设置。试卷的问题是一道一道的设置的。流程以上如图,先是选择题,要系统中有四种,分别是单选题,多选题,判断题和填空题。以菜单的形式显示这四种题型。
(2)难度设置。难度分为:易,中,难三个等级。
(3)分数设置。填写此题的分数。
(4)输入此题的具体问题。
将以上这些信息提交给系统,系统会根据用户提交题型的不同,显示不同的内容。单选题和多选题会提示用户先设置几个选择题的选项,然后提交给系统,系统接着将要求用户就几个选项,设定一个或几个正确的答案,并提交给系统。填空题显示的是此问题框,让用户将答案提交给系统。
判断题和填空题制作完成,并提交后,系统会提示是否继续制作或完成制作。若继续制作,用户可继续进行题目添加或其它题型的设置;若选择完成制作,则可预览制作的这套试卷。
以上主要代码为:
获取题目:String sql4="select distinct qnum,question,mark,type,diff from question where sbnum='"+sbnum+"' and pnum='"+pnum+"'order by qnum";
ResultSet rs4=db4.executeQuery(sql4);
while(rs4.next()) {
int qnum=rs4.getInt("qnum");
String question=rs4.getString("question");
int mark=rs4.getInt("mark");
int type=rs4.getInt("type");
int diff=rs4.getInt("diff");
制作答案 String sql6="select * from storer where question='"+question+"' and sbnum='"+sbnum+"' order by knum";
试卷制作
String pnum=request.getParameter("pnum");
String question=(String) session.getValue("question");
String sbnum=(String) session.getValue("kname");
String keys= new String(request.getParameter("select").getBytes("8859_1"));
Stringsql="insertintostorer(question,sbnum,knum,keys)Values('"+question+"','"+sbnum+"','"+1+"','"+keys+"')";
db.executeUpdate(sql);
5.2.6 试卷中心模块
试卷中心的功能是超级管理员和学校领导针对教师所制作的试卷,进行审批与发布。
输入项:选择要审批试卷所的部门名(系别),选择试卷号。
输出项:显示审批页面,罗列待审批的科目试卷。
处 理:这个功能是超级管理员及领导的权限。每个普通教师制作完成的试卷,要经过有效的审批后才可以发布出去。这个功能就是用来实现此目的。首先选择要审批试卷所在部门名。系统会将所提交的部门里的所有的没有经过审批的已制作完成的试卷显示出来。用户想审批哪套试卷,就可以选择它并提交给系统,系统就会将这套试卷全部显示出来供用户阅览,然后进行审批。
以上功能主要代码为:
领导审批获取信息
String dep=(String)session.getValue("dep");
String pnum=request.getParameter("pnum");
String sbnum=request.getParameter("sbnum");
String sql="select sbname,sbnum from subject where dep='"+dep+"'";
ResultSet rs=db.executeQuery(sql);
String sql1="select * from pap where dep='"+dep+"' and pnum='"+pnum+"' and sbnum='"+sbnum+"'";
String sql2="select tname from administrators where wnum='"+wnum+"'";
String sql3="select depname from departmen where dep='"+dep+"'";
5.2.7 考生考试模块
考生考试模块主要是考生的获取试卷,及考试(并有倒计时的功能),及自动评功能。
输入项:考生输入正确口令,选择(获取)试卷,作答题目。
输出项:考生信息,考生的试卷及考生考完的成绩(打印成绩单)。
处 理:系统对考生输入的口令进行验证,如果通过则并进入考生考试的首页面,及显示考生的所有信息,对公布一些考场规则,当考生获取试卷时,并作答时系统进入倒计时,时间一到,系统将自动交试卷并进入评分,把该科目的成绩存入到学生档案中,显示该科目的成绩并打印成绩单。一份试卷,只允许考生考一次,考生交卷后,若该考生第二次进入该试卷时,虽然考生可继续答题,但已不能重复交卷。
考生考试操作流程:
(1) 输入用户名(准考证号),密码(默认准考证号)。
(2)系统显示该考生的基本信息,及一次考试规则。
(3)考生获取试卷,系统并进入倒计时。
(4)考生进行答题,答题完毕点击“交卷”,不可重复交卷两次。
(5)交卷后,考生可即时看到自己的成绩单。系统只对客观选择题进行评分。考生可打印自己的成绩单。
其界面如图
图14 考生考试
以上功能主要代码为:
获取学生信息:
String pnum=request.getParameter("pnum");
String sbnum=request.getParameter("sbnum");
String sqltime="select * from timeset where sbnum = '"+sbnum+"' and pnum= '"+pnum+"'";
ResultSet rstime=deb1.executeQuery(sqltime);
时间倒计:
function leavePage()
{if (0 == s && n== 0 && m==0)
{document.form23.submit();
}
else if( n==0 && s==0)
{m=m-1;n=59;s=60;
}
else if( s==0)
{n=n-1;s=60;}
s -= 1;
if (n<=9) na="0"+n;
else na=n;
if (s<=9) s="0"+s;
if (m==0) m="00";
document.all.countdown.innerText = m+":"+na+":"+s+" ";
setTimeout("leavePage()", 1000);}
leavePage();
进入考试页面,从数据库得到试卷,选择题型开始作答
String sql4="select distinct qnum,question,mark,type,diff from question where sbnum='"+sbnum+"' and pnum='"+pnum+"'order by qnum";
ResultSet rs4=db4.executeQuery(sql4);
6 系统测试
系统在完成以后,经过测试,运行正常,达到了所设计的效果。4种不同用户能够按照预期设计的要求进行操作。超级管理员对系统有统治性的权利。学校领导用户随时可以根据系统对试卷进行审批,对学生信息进行查询等。教师也可以随时组织学生参加考试。考生所完成考试后的一切信息都存到数据库。加强了系统对考生管理的记录。
整个系统基于SSL协议,对数据的传输、信息的流动起到了安全方面的保证。测试过程中没有异常现象的发生。
结 论
本文提出的在线考试系统的实现主要基于计算机和互联网技术,通过使用Web浏览器,学生能够轻松完成抽题、考试、交卷等考试任务,还可以通过互联完成考试的控制。借助原来的数据库,各考点可以通过网络获取题库。学生通过网络选择开考的试卷,然后进行在线作答。答卷后,学生可在线自动交卷。交卷同时,系统将自动评分,生成考试成绩数据。教师可在线查看各考生的成绩。同时本系统,可对学生基本信息及考试成绩信息进行查询、更改等管理,也有利于学校教务的管理。同时,由于在系统中使用了SSL协议,能有效保障考试数据的机密性和完整性。
参考文献
[1] 冯燕奎,赵德奎著.JSP实用案例教程[M].北京:清华大学出版社,2004。
[2] 黄刘生著.数据结构[M].上海:经济科学出版社,1999。
[3] 黄晓东著.JAVA课程设计案例精编[M].北京:中国水利水电出版社,2004。
[4] (美)Bruce Eckel著.陈昊鹏,饶若楠等译.JAVA编程思想[M].北京:机械工业出版社 ,2005。
[5] 胡道元编.网络安全[M].北京:清华大学出版社,2003。
[6] 闵京华编.安全协议导论[M].北京:清华大学出版社,2003。
[7] 陈玉峰著.SQL Server数据库开发教程[M].上海:科学出版社,。
致 谢
省略
5、资源下载
本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。
序号 | 毕业设计全套资源(点击下载) |
---|---|
本项目源码 | 基于JSP+sqlserver的在线考试系统设计与实现(源码+文档)_jsp_BS架构_在线考试系统.zip |