资源描述
摘 要
随着计算机网络技术的不断发展和学校信息管理日益完善,传统的基于纸质的考试形式已不能适应现在高校教学的需要,计算机在线考试正在逐步取代传统考试。基于WEB的高校教学管理系统已经成为现代高校考试方式的有力补充和发展。为提高教学水平提供了先进的手段。
本设计采用B/S的模式开发,以Tomcat作为Web服务器,使用JSP,JDBC技术和MySQL数据库实现,并且采用Myeclipse6.5 、MySQL-Front2.5、Dreamweaver8等软件完成该系统的设计。
本项目实现了高校教学管理系统--在线考试管理模块,包括登陆注册模块,学生考试模块和教师管理模块。学生可以自行选择考试科目,进行在线答题,以及查看成绩和修改用户信息等操作。教师有试题管理和学生管理等权限,试题管理:可以增加和删除试题。学生管理:修改学生信息,查看修改成绩。论文首先对在线考试系统做了需求分析,然后给出系统的设计与实现过程,最后,针对系统的各个功能进行了阐述。
关键词:在线考试系统;B/S;JSP;JDBC;MySQL;
Abstract
With the development of computer network technology and the school of information management is increasingly perfect, the traditional paperexamination form based on has not been able to adapt now teaching in Colleges and universities, the computer online test is gradually replacing the traditional examination. University teaching management system of WEBhas become the development of powerful supplement and modernuniversity examination mode based on. Provide advanced means forimproving the teaching level.
This design uses B/S model development, with Tomcat as the Web server,use JSP, JDBC technology and MySQL database design andimplementation, using Myeclipse6.5, MySQL-Front2.5, Dreamweaver8 and other software to complete the system.
This project realizes the university teaching management system, online examination management module, including the registration of the landing module, examination module and the teacher management module.Students can choose the subjects of the examination, online answer, andview the results and modify user information and other operations.Teachers have the item management and students management authority,test management: can increase and delete item. Student management:modify student information, view the change scores. Firstly, the requirement analysis of the online examination system, and then give the system designand implementation process, finally, all of the functions of the system are described.
Keywords: online examination system; B/S; JSP; JDBC; MySQL;
目录
1概述 1
1.1 选题依据和意义 1
1.2 本课题国内外研究现状 1
1.3 研究的内容和采用的方法 1
2系统开发和选择工具 2
2.1 基本环境 2
2.2开发工具 2
2.3系统实现中技术选择 2
2.3.1 JavaScript描述 2
2.3.2 Tomcat服务器 2
2.3.3 JDBC 描述 2
2.3.4 MySQL 描述 3
3系统分析 4
3.1开发背景 4
3.2需求分析 4
3.2.1系统功能分析 4
3.2.2系统功能图 4
3.2.3系统用例图 5
3.2.4业务流程图 6
4系统设计与实现 7
4.1数据库设计 7
4.1.1 数据库设计的基本原则 7
4.1.2 数据库设计的逻辑分析 7
4.2数据库表设计 8
4.3界面设计 9
4.3.1登录/注册界面设计 9
4.3.2学生界面设计 10
4.3.3教师界面设计 11
5主要代码 13
5.1登陆/注册模块 13
5.2学生考试模块 15
5.3教师管理模块 17
总结 21
致谢 22
参考文献 23
1概述
1.1 选题依据和意义
随着科技的迅猛发展,网络技术逐渐渗入社会生活的各个层面,学校信息管理系统日益完善,但是先进的网络技术并没有被充分的利用,现阶段学校的考试方式还摆脱不了老师纸上出题,学生纸上答题,老师人工阅卷等繁琐的过程,不利于老师工作效率的提高,而且受时间和空间的限制,满足不了当前大规模统一考试的要求,随着各种考试类型的不断增加和考试要求的不断提高,人们迫切要求利用网络技术进行在线考试,以方便学生进行考试,减轻教师的工作负担,提高工作效率,所以,传统的考试方式将面临着全面的改革,因此WEB网络在线考试将成为高校研发的一个很重要的方向【1】。
基于WEB的在线考试系统,能彻底消除考试中人为的主观影响,教师可以网上增加和删除试题,维护题库,管理学生信息和学生成绩,学生通过注册,登陆考试系统可以自行选择考试科目进行考试,同时还可以修改密码,查询成绩。计算机自动阅卷,从而使考试更趋于公正,客观。与传统的笔试相比,在线考试无纸化的考试模式,计算机阅卷,既节约了资源又加快了考试进程,提高了工作效率。在线考试系统远远超越了传统考试固定时间,固定地点的考试模式的限制,将给学生和老师带来极大的便利,是研究并开发在线考试系统的重要意义【2】。
1.2 本课题国内外研究现状
随着信息技术的发展和普及和当前计算机软硬件发展水平,网络在线考试作为网上远程教育的重要组成部分,已经在国外一些发达国家得到蓬勃发展【3】。美国政府提出了“教育技术规划(Education Technology Initiative)”,指到21世纪初让全美国的每间教室和每个图书馆都将连上信息告诉公路,让每个孩子都能在“21世纪教师”网络服务。1995年4月澳大利亚公共资源管理局建立“澳大利亚教育网”并联通Internet,该网络不仅包括全部高等院校,而且还覆盖全澳大利亚所有的中小学。我国实施科教兴国,对教育的发展给予了前所未有的关注,把信息技术应用于教育,作为民族发展的重要推动力。国内计算机考试虽然起步晚,但我国网络技术迅速发展,计算机等级考试和GRE考试等已投入使用,各高校也纷纷开发了自己的网络教学平台。
1.3 研究的内容和采用的方法
本次毕业论文的题目是高校教学管理系统的设计和实现---在线考试管理模块,采用B/S的模式开发,包括登陆注册,在线考试,试卷选择,试题管理,分数管理,密码管理以及成绩查询等功能。以Tomcat6.0.18,Mysql-Front2..5,Dreamvear8等软件完成该系统的设计。
2系统开发和选择工具
2.1 基本环境
以Java语言为基本开发语言,通过运用集成开发环境Myeclipse 6.5 、MySQL、Dreamweaver 8,Tomcat服务器等相关知识,利用java语言的面向对象的特性及数据库设计思想, 设计一个基于WEB的高校教学管理系统,完成在线考试的设计与实现。
2.2开发工具
选择jdk1.6、tomcat6.0.18和Myeclipse6.5、Dreamweaver 8、MySQL-Front 2.5等。
2.3系统实现中技术选择
2.3.1 JavaScript描述
JavaScript是一种基于对象(Object)和事件驱动(Event Driven)【4】并具有安全性能的脚本语言,此语言可以被嵌入HTML的文件中,轻松的实现与HTML的互操作,并完成丰富的页面交互效果,实现了一种实时性的,动态的,交互性的关系弥补了HTML语言的缺陷,是Java 与HTML折中的选择。同时,可以与HTML表单进行交互,与表单对象(FORM对象)以及表单对象包含的子元素如(Radio,Button,Password等)的植入值进行读写操作。比如学生登陆在线考试系统答题,就可以计算出考生的成绩,添加到数据库,以供学生教师查询。
2.3.2 Tomcat服务器
Tomcat 服务器是作为一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML(标准通用标记语言下的一个应用。)页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
2.3.3 JDBC 描述
JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库。比如建立数据库连接、执行SQL语句进行数据的存取操作。JDBC规范采用接口和实现分离的思想设计了Java数据库编程的框架。接口包含在java.sql及javax.sql包中,其中java.sql属于JavaSE,javax.sql属于JavaEE。这些接口的实现类叫做数据库驱动程序,由数据库的厂商或其它的厂商或个人提供。为了使客户端程序独立于特定的数据库驱动程序,JDBC规范建议开发者使用基于接口的编程方式,即尽量使应用仅依赖java.sql及javax.sql中的接口和类。
2.3.4 MySQL 描述
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一【5】。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言【6】。MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境【7】。
MySQL运行速度快,是一个高性能且相对简单的数据库系统,与一些更大系统的设置和管理相比,其复杂程度较低,支持查询语言【8】。MySQL数据库没有用户数的限制,多个客户机可同时使用同一个数据库。可利用几个输入查询并查看结果的界面来交互式地访问 MySQL。MySQL 是完全网络化的,其数据库可在因特网上的任何地方访问,因此,可以和任何地方的任何人共享数据库【9】。而且 MySQL 还能进行访问控制。
3系统分析
3.1开发背景
在Internet飞速发展的今天,互联网遍布全球每个角落,社会已经进入网络信息时代,计算机网络已经成为社会发展的强大动力,大大提高了生产效率【10】。我们的工作已无时不刻的离不开网络,教育事业同样需要网络。远程教育作为现代教育技术发展的方向之一,在线考试作为远程教育的一个子系统也成为一个热门的研究领域。Internet技术使现在考试突破了时间和空间的限制,与传统考试模式相比,在线考试系统有很多优越性,几乎去除了所有人为主观干预考试的可能,不但节约考试安排,教师阅卷的时间,人力和财力,而且提高了考试的客观性和公正性。在线考试系统课题产生的背景是当今教育信息化的趋势及我国高等教育信息化建设;目的是充分利用学校现有的计算机软、硬件资源和网络资源实现无纸化考试以避免传统考试的不足。
3.2需求分析
3.2.1系统功能需求分析
系统功能需求分析:
1. 注册模块
实现教师,学生两种身份注册,注册信息包含用户名,密码,邮箱。
2. 登陆模块
通过不同权限的用户名登陆系统。
3. 学生考试模块
学生可以自行选择考试科目,进行在线答题,以及查看成绩和修改用户信息等操作。
4.教师管理模块
教师有试题管理和学生管理等权限。试题管理:可以增加和删除试题。学生管理:修改学生信息,查看修改成绩。
5.自动阅卷管理:系统对客观题自动评分,并统计最终得分,将成绩添加到数据库,以便查询。
3.2.2系统功能图
该图主要是对系统操作的流程图的描述:登陆在线考试系统首页,当输入正确的用户名和密码后,系统跳转到操作选项界面。如果输入有误,系统会提示错误,继续输入用户名和密码。验证密码和权限后进入相应选项界面,根据需求对系统进行操作。系统功能流程图如图3-1
图3-1系统功能流程图
N
Y
登陆模块
输入密码
密码正确,验证权限
教师界面
学生界面
选择科目
修改密码
成绩查询
查询修改成绩
查询/修改信息
删除试题
增加试题
学生
教师
减少试题
登陆
增加试题
查询/修改信息
查询/修改成绩
选择科目考试
修改密码
成绩查询
图3-2系统用例图
3.2.3系统用例图
用户信息管理
系统/数据库维护
管理员
图3-3系统用例图
3.2.4业务流程图
N
退出程序
教师
登陆
验证密码
试题题库
查询成绩
学生成绩管理
题库维护
学生信息管理
学生信息
学生
登陆
验证密码
查询成绩
学生考试
修改密码
Y
Y
N
图3-4系统业务图
4系统设计与实现
4.1数据库设计
4.1.1 数据库设计的基本原则
在进行数据库的数据结构和分解和设计时,应遵循数据规范理论进行设计,保证数据的一致性和完整性,以减少数据冗余。
应当重点考虑以下几个因素:
1. 数据库结构层次分明,布局合理。
2.数据库必须高度结构化,保证数据的结构化,规范化和标准化,是建立数据库和信息交换的基础。
3.在设计数据库时,一方面要尽可能的减小冗余,减小存储空间,另一方面,还要考虑适当的冗余,以提高效率降低开发难度。
4.保证数据的正确性和一致性,设定相应的安全机制。
4.1.2 数据库设计的逻辑分析
数据库的逻辑设计的任务就是把概念结构设计阶段的基本E-R图转化为与选用具体机器上的DBMS产品所支持的数据模型相符合的逻辑结构,首先要实现的是E-R图关系模型的转化。而为此要解决的问题是如何将实体和实体之间的联系转化为关系模式,如何确定这些关系模式的属性和码。对于实体,将每个实体转换为一个关系,实体的属性即为关系的属性,实体的码即为关系的码。
对于实体间的联系,可以分成三种情况:
若实体间的联系是1:1,可以在两个实体转换成的两个关系中任意一个关系的属性中加入另一个关系的码。
若实体间的联系是1:n,则在n端实体转换成的关系中加入1端实体转换成的关系码。
若实体间的联系是n:m,则将联系转换为关系,关系的属性为诸个实体的码加上联系具有的属性,而关系的码则为诸实体的码的组合。
试题(编号、题目)
学生(学生编号、姓名、密码、邮箱)
教师(教师编号、姓名、密码、邮箱)
成绩(编号、学生姓名、分数)
4.2数据库表设计
按照数据字典中的数据元素说明确定每个数据项的类型和长度,使每个关系都对应一个数据库表:
表4-1 用户信息表
表4-2 成绩表
Auto_increment
序号
字段名称
字段类型
大小
允许为空
最大长度
备注
1
2
3
4
5
ID
name
pwss
email
role
Int
VarChar
VarChar
VarChar
VarChar
8
30
30
30
30
NO
YES
YES
YES
YES
10
255
255
255
23
允许为空
Auto_increment
255
YES
30
java
VarChar
3
4 data Varchar 30 YES 255
表4-3 试题表
10
255
NO
YES
8
30
Int
VarChar
ID
name
备注
最大长度
大小
字段类型
字段名称
序号
1
2
序号
字段名称
字段类型
备注
最大长度
允许为空
大小
1
ID
Int
Auto_increment
10
NO
8
255
YES
200
VarChar
name
2
5
YES
100
4.3界面设计
4.3.1 登录/注册界面设计
登录/注册界面如图4-1所示
图4-1登录/注册界面
4.3.2学生界面设计
学生输入正确的用户名和密码后,进入考试界面。如图4-2所示:
图4-2学生界面
图4-3数据结构考试界面
图4-4JAVA语言考试界面
图4-5成绩界面
4.3.3教师界面设计
教师输入正确的用户名和密码后,进入教师管理界面。
图4-6教师管理界面
图4-7学生信息管理界面
图4-8添加试题界面
图4-9题库管理界面
5主要代码
5.1登陆/注册模块
本模块是系统主界面,用户可先进行注册操作,获得合法的用户名,密码和权限后,返回主页面正确登陆,系统检测合法用户,验证其用户名密码,以杜绝非法用户侵入系统。
本模块界面设计风格简洁,主题鲜明。图片以及跑动文字的应用使界面更丰富,用户名和密码两个文本框,注册,登陆,重置按钮,已注册的用户登陆系统后,系统自动判断其输入的用户名及密码的正误,同时自动识别其权限(学生和教师),正常登陆后,系统将当前用户名和权限记录下来以便之后其他操作给予适当的权限分配,跳转到相应的界面。
实现本模块的主要代码如下所示:
<BODY>
<h3><marquee direction="left" ><h2>欢迎登陆考试系统!<h2></marquee> </h3>
<center>
<img src="1.jpg" height="150" width="1000"></img>
<div style="width: 700px; font-size:15pt; font-family: Arial ; color: green ; position: relative; filter: glow(color=yellow, strength=5); height:129px"> <p align="center"> <br> <font style="FONT-SIZE: 16px" color="#FF0000"> <br>
</img></img> </font>
<font color="#000000"> <h1 >---欢迎登陆考试系统---</h1></font></div>
<FORM METHOD="POST" ACTION="admincheck.jsp">
用户名:<INPUT TYPE="text" NAME="name"><br/>
密 码:<INPUT TYPE="password" NAME="pass"><br/>
<TD colspan="2">
<INPUT TYPE="submit" value="登陆">
<INPUT TYPE="reset" value="重置">
</TD> <input type="button" value="注册" onClick="window.location.href='reg.jsp'"/> </FORM>
<h1>用户注册</h1>
<FORM METHOD="POST" ACTION="insert.jsp">
用户名<INPUT TYPE="text" NAME="user"><br/>
密 码<INPUT TYPE="password" NAME="pass"><br/>
邮 箱<INPUT TYPE="text" NAME="email"><br/>
教师
<INPUT TYPE="radio" NAME="role" value="admin">
学生 <INPUT TYPE="radio" NAME="role" value="student"><br/>
<INPUT TYPE="submit" value="提交信息">
<INPUT TYPE="reset" value="重置">
</FORM>
<BODY>
<%!
String dbUrl="jdbc:mysql://127.0.0.1:3306/tom?useUnicode=true&characterEncoding=UTF-8";
String dbUser = "root";
String dbPass="";
%>
<%
Connection conn = null;
String user = new String(request.getParameter("user").getBytes("ISO-8859-1"),"utf-8");
System.out.println(user);
String pass = request.getParameter("pass");
String email = request.getParameter("email");
String role =request.getParameter("role");
System.out.println(role);
try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("驱动加载成功!!");
}catch(Exception e){
System.out.println("驱动加载失败!!");
}
try{
conn = DriverManager.getConnection(dbUrl,dbUser,dbPass);
}catch(Exception e){
System.out.println("--数据库连接失败!!");
}
String sql ="INSERT INTO zhaoxianpeng ( name, pass, email,role) VALUES ( ?, ?, ?,?)";
try{
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1,user);
pstmt.setString(2,pass);
pstmt.setString(3,email);
pstmt.setString(4,role);
pstmt.execute();
pstmt.close();
conn.close();
}catch(Exception e){
System.out.println("--数据库操作失败!!");
}
%>
<h1><%=user%>注册成功!!!</h1>
<% out.println("2秒后跳转至登陆页面!");
response.setHeader("refresh","2;url=index.jsp");%>
</BODY>
</HTML>
5.2学生考试模块
该模块主要完成学生选择考试科目进行在线考试,修改密码和成绩查询等操作。设置了数据结构和JAVA语言两个科目供学生选择,考生答题结束,交卷后立即返回自己的答案和正确答案,方便考生找出自己的错误,并将成绩存入数据库中,方便学生和教师查询。
实现该框架的主要代码如下所示:
<BODY>
<center>
<% int scr = 0;
String sex1 = request.getParameter("q1");
String sex2 = request.getParameter("q2");
String sex3 = request.getParameter("q3");
String sex4 = request.getParameter("q4");
String sex5 = request.getParameter("q5");
String sex6 = request.getParameter("q6");
String sex7 = request.getParameter("q7");
String sex8 = request.getParameter("q8");
String sex9 = request.getParameter("q9");
String sex10 = request.getParameter("q10");
if(sex1.equals("C")){
scr=scr+10;
}
out.println("你的答案 1:"+sex1);
if(sex2.equals("A")){
scr=scr+10;}
out.println("2:"+sex2);
if(sex3.equals("B")){
scr=scr+10;}
out.println("3:"+sex3);
if(sex4.equals("B")){
scr=scr+10;}
out.println("4:"+sex4);
if(sex5.equals("A")){
scr=scr+10;}
out.println("5:"+sex5);
if(sex6.equals("B")){
scr=scr+10;}
out.println("6:"+sex6);
if(sex7.equals("C")){
scr=scr+10;}
out.println("7:"+sex7);
if(sex8.equals("B")){
scr=scr+10;}
out.println("8:"+sex8);
if(sex9.equals("C")){
scr=scr+10;}
out.println("9:"+sex9);
if(sex10.equals("D")){
scr=scr+10;}
out.println("10:"+sex10);
//out.println("得分"+scr);
%>
<h4 >正确答案 1:C 2:A 3:B 4:B 5:A 6:B 7:C 8:B 9:C 10:D</h4>
<%!
String dbUrl="jdbc:mysql://127.0.0.1:3306/tom";
String dbUser = "root";
String dbPass="";
%>
<%
Connection conn = null;
String name = (String)session.getAttribute("name");
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(Exception ee){
System.out.println("驱动加载失败!!");
}
try{
conn = DriverManager.getConnection(dbUrl,dbUser,dbPass);
}catch(Exception ee){
System.out.println("--数据库连接失败!!");
}
String sql ="INSERT INTO zhaoxianpeng_score (name, data) VALUES (?,?)";
try{
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1,name);
pstmt.setString(2,scr+"");
pstmt.execute();
pstmt.close(); //释放资源
conn.close();
}catch(Exception ee){
System.out.println("--数据库操作失败!!");
}
%>
<%
//response.setHeader("refresh","2;url=../index.jsp");
%>
<h2> 总分=<%=scr%></h2>
<a href="main.jsp">退出</a>
</h1>
</BODY>
5.3教师管理模块
该模块主要完成教师对学生信息管理,成绩管理和试题管理等操作。教师可以对学生的用户名密码和成绩等进行删除或修改,以及对试题库的管理,包括增加和删除试题。实现该框架的主要代码如下所示:
String sql ="select * from question";
try{
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
%>
<TR>
<TD><%=id%></TD><TD><%=name%></TD><TD ><a href="delete.jsp?id=<%=id%>">删除</a></TD>
<%
}
pstmt.execute();
pstmt.close();
conn.close();
}catch(Exception e){
System.out.println("--数据库操作失败!!");
}
%>
<a href="../index.jsp">返回主页</a></br >
<a href="add.jsp">添加试题</a>
</TABLE>
</BODY>
String sql ="DELETE FROM question WHERE id=?";
try{
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,id);
pstmt.execute();
conn.close();
}catch(Exception e){
System.out.println("--数据库操作失败!!");
}
out.println("删除成功!");
re
展开阅读全文