基于JSP的在线考试系统源代码和论文(含源文件)


获取项目源文件,联系Q:1225467431,可指导毕设,课设


四川XX技术学院毕业设计说明书(论文)
目 录
TOC 1-3 HYPERLINK l _Toc275501105 绪 论 1
HYPERLINK l _Toc275501106 第1章 系统开发背景及意义 2
HYPERLINK l _Toc275501107 1.1系统开发背景 2
HYPERLINK l _Toc275501108 1.2系统开发意义 2
HYPERLINK l _Toc275501109 第2章网上考试系统需求分析 3
HYPERLINK l _Toc275501110 2.1现状分析 3
HYPERLINK l _Toc275501111 2.2可行性分析 4
HYPERLINK l _Toc275501112 2.2.1经济可行性 4
HYPERLINK l _Toc275501113 2.2.2技术可行性 4
HYPERLINK l _Toc275501114 2.3设计目标 5
HYPERLINK l _Toc275501115 2.4功能要求 5
HYPERLINK l _Toc275501116 2.5系统开发环境配置 6
HYPERLINK l _Toc275501117 2.6系统开发工具 6
HYPERLINK l _Toc275501118 2.6.1开发语言—JSP(Java Server Page) 6
HYPERLINK l _Toc275501119 2.6.2数据库—MySQL5.0 7
HYPERLINK l _Toc275501120 第3章 网上考试系统设计 8
HYPERLINK l _Toc275501121 3.1数据库设计 8
HYPERLINK l _Toc275501122 3.1.1数据库需求分析 8
HYPERLINK l _Toc275501123 3.1.2数据库概念结构设计 9
HYPERLINK l _Toc275501124 3.1.3数据库逻辑结构设计 10
HYPERLINK l _Toc275501125 3.1.4数据库表设计 13
HYPERLINK l _Toc275501126 3.2系统结构设计 15
HYPERLINK l _Toc275501127 3.2.1页面模块化设计 15
HYPERLINK l _Toc275501128 3.2.2 MVC模式设计(Jsp+Servlet+JavaBean) 16
HYPERLINK l _Toc275501129 第4章 网上考试系统实现 17
HYPERLINK l _Toc275501130 4.1系统各部分的实现方法 17
HYPERLINK l _Toc275501131 4.1.1创建与数据库的连接 17
HYPERLINK l _Toc275501132 4.1.2访问数据库的JavaBean 18
HYPERLINK l _Toc275501133 4.1.3用户及管理员登录模块页面 19
HYPERLINK l _Toc275501134 4.1.4系统主要模块页面 23
HYPERLINK l _Toc275501135 4.1.5学生考试模块的实现页面 25
HYPERLINK l _Toc275501136 4.1.6教师添加试题制作试卷模块的实现 27
HYPERLINK l _Toc275501137 第5章 系统测试 30
HYPERLINK l _Toc275501138 5.1什么是软件测试 30
HYPERLINK l _Toc275501139 5.2软件测试的目标与方法 30
HYPERLINK l _Toc275501140 5.3系统的不足和展望 30
HYPERLINK l _Toc275501141 结束语 32
HYPERLINK l _Toc275501142 致 谢 33
HYPERLINK l _Toc275501143 参考文献 34
绪 论
考试是检验教学效果的重要手段,也是促进学生学习的重要手段,是教学过程中的一个重要环节。学生考试成绩的优劣,不但反映其对教学内容和应掌握知识的分析、理解、吸收、运用的能力,更反映教师对教学内容的把握和熟练程度。
传统的学校教学中,进行一场考试,要求老师编写试卷、印试卷、安排考试、监考、收集试卷、评改试卷、讲评试卷和分析试卷,这是一个繁杂的过程,需要大量人力、物力与时间的投入,已经越来越不适应学校信息化建设与现代教学的需要。尤其在远程网络教学中,学生分布广,不易统一集中安排考试,给校方和学生带来了众多的不便。
而网上考试系统不仅减轻了在组织考试、评卷、成绩统计等方面所花费的人力和物力,并且突破了时间与空间的限制,不仅节省了资源,而且提高了评分的客观性、公正性和准确度,大大改善了考试工作的效率。加上数据库技术的利用,大大简化了传统考试的过程,因此在线考试是电子化教学的不可缺少的辅助手段。在当今信息时代,计算机技术与网络技术越来越广地应用于各个领域,改变着人们的学习、工作、生活乃至思维方式,也引起了教育领域的重大变革。将计算机与网络技术应用于现代高等教育中,是现代高等教育发展的需要,也是改革教育模式,提高学校教学效果和教学效率、提高科研和管理水平的必要手段。
第1章 系统开发背景及意义
1.1系统开发背景
随着计算机技术、网络技术迅速发展和高校校园网功能的日益完善,很多高校建立了基于校园网的网络信息管理平台,为提高教学管理水平提供了先进的管理手段。目前,基于网络的在线考试系统己经成为现代考试方式的有力补充和发展。相对于传统的笔试,网络在线考试不仅减轻了在组织考试、评卷、成绩统计等方面所花费的人力和物力,并且突破了时间与空间的限制,不仅节省了资源,而且提高了评分的客观性、公正性和准确度,大大改善了考试工作的效率。
1.2系统开发意义
很多学校学生的期末考试仍采用任课教师(个人或集体)考前出题的方式。为解决学生压题,考前漏题,补(缓)考试题与正式考试试题题量及难度差异问题,教务管理部门通常要求教师同时出多套试卷,其题量与难度要求相同,并且要同时给出答案和评分标准。这样做虽能解决一些问题,但给教师增加了很大的工作负担,若上下届学生的同一门课程由同一教师承担,则难免几届学生用相同几套试卷;若由不同教师任课出题,则上下届学生的成绩之间又不具有可比性。
若建立题库,每次考试前由题库中题目随机生成试卷,则可较好地解决考教分离的问题,也可将广大教师从每学期末繁重的命题工作中解放出来。近年来,部分学校陆续开发了一些基于微机的题库系统,并作为成果向其它学校推广,但这些题库一般都是结合本校具体情况,针对单一课程的小型题库,甚至某些学校购得的题库系统中的题目本身是不可维护的,即使题目已不适合自己的学生考试使用,也无法更新题库中的题目。
为解决题库系统中存在的这些问题, 作者经过研究几种不同的网上系统,经充分的考虑,最后给出了一个较为理想的题库系统解决方案,并结合当前比较使用的B/S结构开发一个功能完备的网上考试系统。
第2章网上考试系统需求分析
2.1现状分析
传统的考试方法要求组织者提前命题试卷,然后约定一个统一时间,让所有考生到考场里进行考试。这种模式如图2-1 所示:
编辑考题
印刷大量试卷
安排考场,时间,监考人员
学生集体考试
阅卷,统计成绩
图2-1 传统考试模式
这种模式存在有较多的问题:
命题:由于考试要求统一进行,所有考生都考同样的一份试卷,所以试卷的命题工作便一定得非常谨慎小心,试题太难或太容易,都达不到考试目的,尤其是对于一个大规模的考试,(比如计算机等级考试,英语四,六级考试等),如何正确把握试卷的难度,一直都是让命题教师最为头痛的问题之一。而如何不在考试之前使命好的试题泄漏出去,也是组织者费尽心思。
试卷印刷:对于大规模的考试,试卷印刷费工费时,成本高,对纸张资源也是一种浪费。对于涉及地域范围较广的考试(如英语四,六级考试),还要考虑试卷大的长途运送费用。在考试的印刷和运输过程中同样有试题泄漏出去的问题,任何一个环节出了问题,都可能使前面有的工作付诸流水。
考场的安排:监考人员的培训与管理。对于大规模的考试,尤其是到了考试密集期(如期末,期中)。诸多学科的考试都要陆续开始的时候,对于教室资源和教师数量相对紧张的学校,如何安排考场,调配监考人员,是一件相对繁琐而又复杂的事情。如果考试再涉及到不同地域之间的同步,如英语四,六级的考试,还要考虑更多的问题。
进行考试:由于同一次考试的试卷相同,要杜绝考生作弊是一个普遍的难题,因此,历届组织考试的人动了很多脑筋,如分AB卷,加强监考,加重对作弊者的惩罚程度等,但这些都没能从根本上杜绝作弊。不同地域监考的严格程度,考试时问控制的严格程度,也很难达到统一。过多人为因素的加入,也使得考试的公正性下降。
判卷:考试结束后,采用人工判卷比较容易出错,并可能出现人为造成的不公正现象。
2.2可行性分析
可行性分析也称为可行性研究,即是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、管理的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。该系统的可行性分析包括以下几个方面的内容。
2.2.1经济可行性
主要是对项目的经济效益进行评价,利用计算机来实现网上考试以成为适应当今教学管理的方式。开发一套能满足网上考试系统的软件是十分必要的,实现试卷管理和试卷生成自动化,在减少由于认为失误而早成损失的同时,也可以使教师减少工作量。本系统在经济上是可以接受的,并且本系统实施后可以显著提高考试效率,有助于学院完全实现网络化管理。所以本系统在经济上是可行的。
2.2.2技术可行性
技术上的可行性分析主要分析技术条件是否能顺利完成开发工作,硬、软件能否满足开发者的需要等。
软件方面,网络化考试需要的各种软件环境都已具备,数据库服务器方面则有MySQL,均能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。其灵活性、安全性和易用性为数据库编程提供了良好的条件。因此,系统的软件开发平台已成熟可行。
硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。
2.3设计目标
在线考试系统的总体目标:
1. 在线考试系统可以帮助教师完成一个考试从题目设计,考试安排,考试实施,考卷批改到分数计算总结的所有工作。
2. 所有的考试数据和其它数据库需要一种主流的方式进行存储和管理,例如使用数据库技术。
3. 考试数据的存放和处理必须对考试保密,需要一定的安全性保障。
4. 题目最好有一定的稳定性和随机性。稳定性可以保证每一次考试对每一个考生是公平的,随机性可以避免作弊的发生。
5. 考试的部分客观题在考生考完之后系统就能自动评分,并保存考生的主观题答案。
2.4功能要求
系统应该具备的基本功能:
用户类别:登录系统的身份定为三种,一是管理员,二是普通老师,四是学生,只有被授权的用户才可以使用本系统的资源。
权限管理:系统需要经过有效的身份验证可以登录。用户的身份不同,使用的系统资源也不同。考生只可以参加在线考试;普通教师可以在线制作试卷,控制考试、成绩查询、添加试题、阅卷等。管理员可添加系系部、教师、专业、科目信息、查询修改管理员信息及审批试卷、查询考生成绩。
在线考试功能:考生输入学号密码登陆系统后,选择对应的试卷可进行考试。答题中,有倒计时的功能,考试结束时还没提交就自动交卷,系统将自动对客观题进行评分。
在线制作试卷:教师、管理员可在线制作试卷,可设定试题的类型、分值,但教师制作试卷后必须要由管理员审核才能考试。
控制考试功能:可设定每次的考试时间。
考生管理功能:可注册新增学生用户,同时查看考生及班级考生的信息。
考生成绩查询功能:提供考生各科目成绩的详细查询。
试卷审批功能:只有管理员有此权限。教师制作试卷完毕,只有经过管理员审批后才能发布,发布后学生才能开考。
除了实现上述功能以外,在线考试系统还应该具有友好、简洁的界面,安全性要高,稳定性要强。
2.5系统开发环境配置
选择微软平台作为主导,一方面考虑目前微软的飞速发展,越来越多的企业在规划内部网络时,将微软平台作为首选方案;令一方面从技术角度来讲,微软平台上的应用无论是在开发上,还是在软件的部署上都是非常容易,而且性能优越。具体如下:
1. 开发工具:MyEclipse 8.0
2. 辅助开发工具: Dreamweaver 8
3. 数据库:MySQL5.0
4. 服务器 :Apache Tomcat6.0
5. 运行环境 :安装JDK1.6支持Java运行。
6. 技术:前台网页的设计采用JSP技术制作。负责响应用户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户由servlet处理,JavaBean则负责数据的处理。
2.6系统开发工具
本系统是基于JSP+MySQL5.0数据库技术实现的,现对JSP技术和SQL Server 2005数据库作简要的介绍。
2.6.1开发语言—JSP(Java Server Page)
JSP页面由HTML代码和嵌入其中的Java代码所组成。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的等特点。JSP的技术的优势:
一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不需要做任何更改。
系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。
JSP技术是用Java语言作为脚本语言的。Java语言是成熟的、强大的、易扩充的编程语言。
高效性与安全性。JSP在执行前先被编译成字节码,字节码由Java虚拟机解释执行,比源码解释效率高。
可维护性。由于JSP技术是一种开放的、跨平台的结构,因此Web服务器、平台及其他组件能很容易升级或切换,且不会影响JSP基本的应用程序。
多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
2.6.2数据库—MySQL5.0
MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐,特别是与Apache和PHP/PERL结合,为建立基于数据库的动态网站提供了强大动力。
SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索产品信息及存储顾客信息,同时MySQL也足够快和灵活以允许你存储记录文件和图像。
第3章 网上考试系统设计
3.1数据库设计
在对网上考试系统数据库部分进行设计的过程中,通过对系统功能进行需求分析得到系统的基本信息表,绘制系统业务流程图和系统数据流程图,分析得到数据字典;在概率结构设计阶段通过对需求阶段得到的用户需求抽象得到数据库关系模型的E-R图;在逻辑结构设计阶段得到数据库的关系模式并绘制信息表。详细设计过程如下介绍。
3.1.1数据库需求分析
需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。
3.1.1.1系统基本信息
综合以上分析,要实现上面的所有功能模块,数据库共要设计十个表,它们分别是:科目表、班级表、系别表、专业表、试卷信息表、学生表、学生成绩表、学生答题试卷信息表、教师表、题库表。
3.1.1.2系统层次图
根据所要实现的功能和用户权限的设置。
系统总体的层次图如下图3-1所示:
图3-1系统层次图
3.1.1.3系统数据流程图
系统数据流程图如下图3-2所示:
图3-2数据流程图
3.1.2数据库概念结构设计
概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键,包括概念模型设计和新系统流程两个阶段。在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,才能更好地、更准确地用某一DBMS实现这些需求。
概念数据模型独立于具体的数据处理的细节和数据库管理系统。这次设计仍采用传统的实体联系图作为概念设计的工具。再进行优化后,尽量满足结构清晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余。系统E-R图如下图3-3所示:
图3-3 系统E-R图
3.1.3数据库逻辑结构设计
对于关系型数据库,数据库的概念结构设计完毕后,要把E-R图描述的概念数据模型转换为等价的关系模式极其约束。逻辑设计的基本工作主要包括如下的3个步骤。
3.1.3.1关系模式设计
该设计以概念结构设计中的E-R图为主要依据,这几出相关的整体逻辑结构。该系统的关系模式如下图3-4所示:
图3-4 概念关系模型图
3.1.3.2完整性设计
完整性要求用于描述各种信息之间的制约关系,以及关联关系,各个数据项的取值范围以及各个数据项是否可以取值。根据实际需要,采取一定的手段来满足用户的完整性需求。域完整性约束要求属性值必须在域中。实体完整性约束要求主键必须唯一且不能为空。如用户信息表中的用户名设置为主键,并且要求唯一且不能为空。
3.1.3.3模式优化
本次采用3NF为规范准则来分解关系。将一个关系分解为两个或者多个关系,以满足规范,从而避免产生插入异常、删除异常、更新异常。
3.1.4数据库表设计
学生信息表如图3-5所示
图3-5 学生信息表
教师信息表如图3-6所示
图3-6 教师信息表
题库信息表如图3-7所示
图3-7 题库信息表
试卷信息表如图3-8所示
图3-8 试卷信息表
学生答案表如图3-9所示
图3-9 学生答案表
学生成绩表如图3-10所示
图3-10 学生成绩表
系部信息表如图3-11所示
图3-11 系部信息表
专业信息表如图3-12所示
图3-12 专业信息表
科目信息表如表3-13所示
表3-13 科目信息表
班级信息表如图3-14所示
图3-14班级信息表
3.2系统结构设计
3.2.1页面模块化设计
模块化设计的要求不仅是为了提高代码的重用性,更重要的是为了提高代码的可维护性和稳定性。一个模块化程度高、结构清晰的应用程序,在程序维护时的便利性是可想而知的。最初设计方案时,就要规划好哪些模块是可以提出来多次使用,哪些模块虽只使用一次,但提出来之后能使代码更清晰等。
网上考试系统是一个典型的数据库开发应用程序,本系统主要用管理员、教师和学生三大模块组成,各模块功能如下:
管理员模块:该模块主要是对系部、专业、班级、课程进行管理,添加修改学生、教师、信息,添加试题、试卷和审核教师制作的试卷等。
教师模块:该模块主要是教师通过登录该系统能够修改个人信息,添加试题,在线制作试卷,阅卷等。
学生模块:该模块主要是学生通过登录该系统能够修改个人信息(只能修改密码),进行考试等。
3.2.2 MVC模式设计(Jsp+Servlet+JavaBean)
MVC(Model View Controller)是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
  视图是用户看到并与之交互的界面。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。JSP页面处于表现层,也就是视力(View即V)的角色。
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。JavaBean则负责数据的处理,也就是模型(Model即M)的角色。
控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。Servlet用来处理请求的事务,充当控制器(Controller即C)的角色,Servlet负责响应用户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户。
初始的请求由Servlet来处理,Servlet调用商业逻辑和数据处理代码,并创建Bean来表示相应的结果(模型)。然后Servlet确定哪个页面适合于表达这些特定的结果,并将请求转发到相应的页面(JSP页面即为视图),由Servlet确定哪个业务逻辑适用,应该用哪个JSP页面相应结果(Servlet就是控制器)。
第4章 网上考试系统实现
4.1系统各部分的实现方法
从系统功能模块划分中可以看出,系统总体上有两个功能模块组成。各模块虽然是独立的,但又统一于同一数据库中,便于管理员管理维护数据库,同时也便于教师和学生的操作。在介绍系统各模块的实现方法之前,首先介绍系统与数据库的连接方式——使用JavaBean连接连接在服务器tomcat里配置的连接池。再介绍系统主要部分的实现方法。
4.1.1创建与数据库的连接
配置数据源创建连接池,再通过JavaBean连接到数据源再对数据库进行操作。
连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。连接池可以极大的改善用户的 Java 应用程序的性能,同时减少全部资源的使用。连接池主要的优点有:减少连接创建时间、简化的编程模式、受控的资源使用。连接池能够使性能最大化,同时还能将资源利用控制在一定的水平之下,不过如果超过该水平,应用程序将崩溃而不仅仅是变慢。
配置连接池:
1.首先要将mysql的驱动包放在tomcat/lib目录下
2.在应用服务器Tomcat 里的/conf下找到一个context.xml文件,在里面添加的内容如下:
auth=Container
type=javax.sql.DataSource
driverClassName=org.gjt.mm.mysql.Driver
url=jdbc:mysql://127.0.0.1/examol
username=root
password=123
maxIdle=30
maxWait=10000
maxActive=100/>

需要访问数据库就通过在JavaBean创建的一个叫QueryRunner()方法来访问。
代码如下:
public class Conn {
public static QueryRunner getQueryRunner() {
DataSource ds = null;
try {
Context context = new InitialContext();
ds=(DataSource)context.lookup(java:/comp/env/jdbc/examolds);
} catch (Exception e) {
System.out.println(获取数据源出错!);
}
QueryRunner qr = new QueryRunner(ds);
return qr;
}
}
4.1.2访问数据库的JavaBean
JavaBean是一种Java语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean通过提供符合一致性设计模式的公共方法将内部域暴露成为属性。众所周知,属性名称符合这种模式,其他Java类可以通过自省机制发现和操作这些JavaBean属性。
用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、Applet程序或应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。
JSP的一个重要特性就是可以用JavaBean实现功能的扩展。将大部分功能放在JavaBean中完成,以使JSP页面程序更干净简洁、利于维护。JavaBean可以很方便的用来捕获页面表单的输入并完成各种业务逻辑的处理。
连接数据库的JavaBean——Conn。通过JSP页面调用此JavaBean,可以实现对数据库的连接,数据表的添加、删除、更新等操作。
4.1.3用户及管理员登录模块页面
用户登录页面比较简单,为防止用户登录的操作错误,应设置错误处理页面,在登录操作过程中,一般发生的错误有:用户输入了错误的用户名或密码、用户直接单击了登录按钮,对上述情况的判断就要通过Servlet文件来实现。学生登录界面如图4-1所示:
图4-1 学生登录面
管理员教师登录界面如4-2图所示:
图4-2 管理员教师登录界面
在登录页面时,当用户提交了登录资料后,就由UsersServlet.java”这个servlet进行验证,它的工作主要是判断用户登录的帐号和密码是否一致。完成这些工作就必须连接存储用户数据库取出相关信息记录。如果用户输入了错误的用户名和密码,通过history.back();返回到登录界面并提示出错,如图4-3所示:
图4-3登录错误提示页面
若用户提交正确的用户和密码后,如果记录验证无误,就通过JSP的request.getRequestDispatcher()方法跳转到相应的界面;判断用户是否输入正确用户名和密码的Java程序片段如下所示:
//学生登录信息验证
public void stu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String StuId = request.getParameter(StuId);
String StuPwd = request.getParameter(StuPwd);
String sql = select * from student where StuId=? and StuPwd=?;
String params[] = { StuId, StuPwd };
QueryRunner qr = Conn.getQueryRunner();
Student student = null;
List list = null;
try {
list = (List) qr.query(sql, new BeanListHandler(Student.class),params);
} catch (SQLException e) {
}
if (list.size() > 0) {
student = (Student) list.get(0);
HttpSession session = request.getSession();
session.setAttribute(student, student); request.getRequestDispatcher(/servlet/OptionExamSelect).forward(request, response);
} else {
response.setContentType(text ml;charset=UTF-8);
PrintWriter out = response.getWriter();
out.println( );
}
}
//教师和管理员登录信息验证
public void tea(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String TeaId = request.getParameter(TeaId);
String TeaPwd = request.getParameter(TeaPwd);
System.out.println(TeaId);
System.out.println(TeaPwd);
String sql = select * from teacher where TeaId=? and TeaPwd=?;
String params[] = { TeaId, TeaPwd };
QueryRunner qr = Conn.getQueryRunner();
Teacher teacher = null;
List list = null;
try {
list=(List)qr.query(sql,new BeanListHandler(Teacher.class),params);
} catch (SQLException e) {
}
if (list.size() > 0) {
teacher = (Teacher) list.get(0);
System.out.println(teacher.getTealimit());
// 老师登录
if (teacher.getTealimit().equals(0)) {
HttpSession session = request.getSession();
session.setAttribute(teacher, teacher);
response.sendRedirect(/examOL/teacher/main.jsp);
}
// 管理员登录
if (teacher.getTealimit().equals(1)) {
HttpSession session = request.getSession();
session.setAttribute(teacher, teacher);
response.sendRedirect(/examOL/admin/main.jsp);
}
} else {
response.setContentType(text ml;charset=UTF-8);
PrintWriter out = response.getWriter();
out
.println( );
}
}
4.1.4系统主要模块页面
整个系统都采用JSP+JavaBean+Servletm模式实现。JSP+JavaBean+servlet模式的运用实现了代码的重复利用;是系统程序易编写、易维护、易使用;并且可以在任何安装了Java运行环境的平台上使用而不需要重新编译。系统首页如图4-4、4-5、4-6所示。
学生登录系统进入学生选择考试页面如图4-4所示:
图4-4 学生登录首页
教师登录系统后,进入教师首页如下图4-5所示:
图4-5 教师界面
管理员登录系统后,进入管理员首页如下图4-6所示:
图4-6 管理员首页
不同用户登录系统后显示的界面都是简单都是一些功能的链接。外观是一个DIV+CSS的后台管理模版。
4.1.5学生考试模块的实现页面
考生可以通过首页登录进入选择考试页面,如上图所示。在该页面考生能查看考试科目和开考时间,可以修改个人的密码。修改密码成功后将自动注销重新登录。
如果到了开始考试的时间是否考试”中就会由等待考试”变成开始考试”的连接了,考生可以点击此处进入到考试页面。考试页面有倒计时显示,如果时间到了系统会自动提交。
学生考试界面如下图4-7所示。
图4-7 考试页面
功能实现代码如下:
sql = SELECT * FROM test ,subject WHERE test.SubNum = subject.SubNum AND test.TesNum = + id;
Paper paper = null;
try {
List list = (List) qr.query(sql, new BeanListHandler(Paper.class));
paper = (Paper) list.get(0);
} catch (SQLException e) {
e.printStackTrace();
}
sql = select * from question where SubNum=+ paper.getSubNum() + + AND question.QueType = 选择题 + order By rand() Limit + paper.getTesSinCount();
System.out.println(选择题 + sql);
List sincount = null;
try {
sincount = (List) qr.query(sql, new BeanListHandler(
Question.class));
} catch (SQLException e) {
e.printStackTrace();
}
sql = select * from question where SubNum=+ paper.getSubNum() + + AND question.QueType = 填空题 + order By rand() Limit + paper.getTesBlaCount();
System.out.println(填空题 + sql);
List blabount = null;
try {
blabount = (List) qr.query(sql, new BeanListHandler(
Question.class));
} catch (SQLException e) {
e.printStackTrace();
}
sql = select * from question where SubNum=+ paper.getSubNum() +
+ AND question.QueType = 问答题
+ order By rand() Limit + paper.getTesAnsCount();
System.out.println(问答题 + sql);
List anscount = null;
try {
anscount = (List) qr.query(sql, new BeanListHandler(
Question.class));
} catch (SQLException e) {
e.printStackTrace();
}
4.1.6教师添加试题制作试卷模块的实现
教师登录到系统后通过左边的管理菜单了解到自己拥有那些功能:题库信息查看、添加题库,试卷信息查看,添加试卷,阅卷管理等。题库添加:先选择所添加试题的科目和题型再进行添加。系统设置了选择题,填空题,问答题。
教师可以在线制作试卷,设置考试的科目、时间、考试时间段、题型分布、分值分布、考题数量等,考题数量必须根据系统提示题库总数量设置,不能把考题数量超出题库的总数量。
在线制作试卷页面如下图4-8所示。
图4-8 在线制作试卷页面
实现在线制作试卷代码如下:
request.setCharacterEncoding(UTF-8);
String SubNum = request.getParameter(subnum);
String TeaNum = request.getParameter(teanum);
String TesName = request.getParameter(TesName);
String TesTotalper = request.getParameter(TesTotalper);
String TesSinCount = request.getParameter(TesSinCount);
String TesBlaCount = request.getParameter(TesBlaCount);
String TesAnsCount = request.getParameter(TesAnsCount);
String TesSinPer = request.getParameter(TesSinPer);
String TesBlaPer = request.getParameter(TesBlaPer);
String TesAnsPer = request.getParameter(TesAnsPer);
String TesTime = request.getParameter(TesTime);
String atarttime = request.getParameter(atarttime);
String endtime = request.getParameter(endtime);
String done = request.getParameter(done);
System.out.println(SubNum);
String sql = insert into test + (SubNum,TeaNum,TesName,TesTotalper,TesSinCount,TesSinPer,TesBlaCount,TesBlaPer,TesAnsCount,TesAnsPer,TesTime,atarttime,endtime,Done,addtime) + values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,now());
String params[] = { SubNum, TeaNum, TesName, TesTotalper, TesSinCount, TesSinPer, TesBlaCount, TesBlaPer, TesAnsCount, TesAnsPer, TesTime, atarttime, endtime, done };
QueryRunner qr = Conn.getQueryRunner();
try {
qr.update(sql, params);
} catch (SQLException e) {
e.printStackTrace();
}

第5章 系统测试
5.1什么是软件测试
软件测试是在软件投入运行前,对软件需求分析、设计规格说明书和编码的最终的复审,是软件质量保证的关键步骤。确切的说,软件测试就是为了发现错误而执行的过程。一般分为两个阶段:
1.单元测试:在编完一模块后进行测试;
2.综合测试:在开发完软件后进行综合测试。
5.2软件测试的目标与方法
G.Myers给出了关于测试的一些规则,这些规则可以看作是测试的目标或定义:
1.测试是为了发现程序中的错误而执行程序的过程;
2.好的测试方案是极可能发现迄今为止尚未发现的错误的测试;
3.成功的测试是发现了至今为止尚未发现的错误的测试。
测试任何软件都有两种方法:黑盒测试和白盒测试法。
黑盒测试法(又称功能测试法)是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程,是在程序接口进行的测试,它只检查程序功能是否按照规格说明书的规定正常使用。
白盒测试法(又称结构测试法)是把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程,这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按照预定要求正确工作。
通过测试并不能证明程序就是完全正确的,但我们的目的就是要通过测试保证软件的可靠性,因此,必须仔细设计测试方案,力争用最少的测试发现尽可能多的错误。
5.3系统的不足和展望
对于本次做的网上考试系统有很多的不足和不完善的地方。比如系统的有些功能操作不够人性话。提示不够准确,对管理信息的设置很不完善等。尤其是在题库的设计,没有设置试题的难易程度,学生考试就不能有层次性的进行测试了。
在当今信息时代,计算机技术与网络技术越来越广地成熟的应用于各个领域,同时也影响了教育领域的重大变革,网上考试系统也将更多更好的应用在教育教学领域中。以后的网上考试系统将会更加完善使用。
结束语
通过这次毕业设计,对很多东西有了新的认识和新的见解,认识问题的和思考解决办法有了本质上的进步,特别是对一个系统开发的模式有了更深的认识,对专业技能的运用更熟练。
网上考试系统的开发过程中也遇到了很多问题,开始做需求时不确定考试系统到底应该具备那些功能,只知道主要功能就是有试题能考试,但具体流程,怎样实现这些功能就很模糊,所以查看了很多资料才理清楚。数据库设计也是个难点,不明确要实现哪些功能就不能很好的把数据库设计好。设计数据库就是开发一个系统的核心。设计数据库一定要思路清晰,各个数据的流向各个表之间的关系一定要弄清楚,透彻。数据库设计出错了对以后整个系统的影响是最直接的。所以做需求时一定要做好需求分析,考虑完善,数据库设计要谨慎。总之需求分析时能做好就能降低需求变更,再加上设计时考虑到的技术可行性就可以大幅度的降低需求变更。
最终还是完成了预定的需求功能。看到自己独立完成并可以使用的系统给了我很大信心。在本系统的设计过程和论文编写过程中,很多老师、同学都给与了我许多无私的帮助,尤其是我的导师给我的论文提出了很多宝贵的修改意见,在这里我向这些无私帮助我的人表示衷心的感谢。
第 1 页
获取项目源文件,联系Q:1225467431,可指导其它毕设,课设

猜你喜欢

转载自blog.csdn.net/u010783228/article/details/86438935