基于JSP的网上在线考试系统的毕业设计.doc_第1页
基于JSP的网上在线考试系统的毕业设计.doc_第2页
基于JSP的网上在线考试系统的毕业设计.doc_第3页
基于JSP的网上在线考试系统的毕业设计.doc_第4页
基于JSP的网上在线考试系统的毕业设计.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于JSP的网上在线考试系统的毕业设计系统开发背景及意义1.1系统开发背景随着计算机技术、网络技术迅速发展和高校校园网功能的日益完善,很多高校建立了基于校园网的网络信息管理平台,为提高教学管理水平提供了先进的管理手段。目前,基于网络的在线考试系统己经成为现代考试方式的有力补充和发展。相对于传统的笔试,网络在线考试不仅减轻了在组织考试、评卷、成绩统计等方面所花费的人力和物力,并且突破了时间与空间的限制,不仅节省了资源,而且提高了评分的客观性、公正性和准确度,大大改善了考试工作的效率。1.2系统开发意义很多学校学生的期末考试仍采用任课教师(个人或集体)考前出题的方式。为解决学生压题,考前漏题,补(缓)考试题与正式考试试题题量及难度差异问题,教务管理部门通常要求教师同时出多套试卷,其题量与难度要求相同,并且要同时给出答案和评分标准。这样做虽能解决一些问题,但给教师增加了很大的工作负担,若上下届学生的同一门课程由同一教师承担,则难免几届学生用相同几套试卷;若由不同教师任课出题,则上下届学生的成绩之间又不具有可比性。若建立题库,每次考试前由题库中题目随机生成试卷,则可较好地解决考教分离的问题,也可将广大教师从每学期末繁重的命题工作中解放出来。近年来,部分学校陆续开发了一些基于微机的题库系统,并作为成果向其它学校推广,但这些题库一般都是结合本校具体情况,针对单一课程的小型题库,甚至某些学校购得的题库系统中的题目本身是不可维护的,即使题目已不适合自己的学生考试使用,也无法更新题库中的题目。为解决题库系统中存在的这些问题, 作者经过研究几种不同的网上系统,经充分的考虑,最后给出了一个较为理想的题库系统解决方案,并结合当前比较使用的B/S结构开发一个功能完备的网上考试系统。1. 网上考试系统需求分析2.1现状分析传统的考试方法要求组织者提前命题试卷,然后约定一个统一时间,让所有考生到考场里进行考试。这种模式如图2.1 所示: 图2.1 传统考试模式这种模式存在有较多的问题:命题:由于考试要求统一进行,所有考生都考同样的一份试卷,所以试卷的命题工作便一定得非常谨慎小心,试题太难或太容易,都达不到考试目的,尤其是对于一个大规模的考试,(比如计算机等级考试,英语四,六级考试等),如何正确把握试卷的难度,一直都是让命题教师最为头痛的问题之一。而如何不在考试之前使命好的试题泄漏出去,也是组织者费尽心思。试卷印刷:对于大规模的考试,试卷印刷费工费时,成本高,对纸张资源也是一种浪费。对于涉及地域范围较广的考试(如英语四,六级考试),还要考虑试卷大的长途运送费用。在考试的印刷和运输过程中同样有试题泄漏出去的问题,任何一个环节出了问题,都可能使前面有的工作付诸流水。考场的安排:监考人员的培训与管理。对于大规模的考试,尤其是到了考试密集期(如期末,期中)。诸多学科的考试都要陆续开始的时候,对于教室资源和教师数量相对紧张的学校,如何安排考场,调配监考人员,是一件相对繁琐而又复杂的事情。如果考试再涉及到不同地域之间的同步,如英语四,六级的考试,还要考虑更多的问题。进行考试:由于同一次考试的试卷相同,要杜绝考生作弊是一个普遍的难题,因此,历届组织考试的人动了很多脑筋,如分AB卷,加强监考,加重对作弊者的惩罚程度等,但这些都没能从根本上杜绝作弊。不同地域监考的严格程度,考试时问控制的严格程度,也很难达到统一。过多人为因素的加入,也使得考试的公正性下降。判卷:考试结束后,采用人工判卷比较容易出错,并可能出现人为造成的不公正现象。2.2可行性分析可行性分析也称为可行性研究,即是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、管理的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。该系统的可行性分析包括以下几个方面的内容1。2.2.1经济可行性主要是对项目的经济效益进行评价,利用计算机来实现网上考试以成为适应当今教学管理的方式。开发一套能满足网上考试系统的软件是十分必要的,实现试卷管理和试卷生成自动化,在减少由于认为失误而早成损失的同时,也可以使教师减少工作量。本系统在经济上是可以接受的,并且本系统实施后可以显著提高考试效率,有助于学院完全实现网络化管理。所以本系统在经济上是可行的。2.2.2技术可行性技术上的可行性分析主要分析技术条件是否能顺利完成开发工作,硬、软件能否满足开发者的需要等。软件方面,网络化考试需要的各种软件环境都已具备,数据库服务器方面则有SQLServer,均能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能2。其灵活性、安全性和易用性为数据库编程提供了良好的条件。因此,系统的软件开发平台已成熟可行。硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。2.3设计目标在线考试系统的总体目标:在线考试系统可以帮助教师完成一个考试从题目设计,考试安排,考试实施,考卷批改到分数计算总结的所有工作。所有的考试数据和其它数据库需要一种主流的方式进行存储和管理,例如使用数据库技术。考试数据的存放和处理必须对考试保密,需要一定的安全性保障。题目最好有一定的稳定性和随机性。稳定性可以保证每一次考试对每一个考生是公平的,随机性可以避免作弊的发生。考试的部分客观题在考生考完之后系统就能自动评分,并保存考生的主观题答案。2.4功能要求系统应该具备的基本功能:用户类别:登录系统的身份定为二种,一是普通老师,二是学生。权限管理:系统需要经过有效的身份验证可以登录。用户的身份不同,使用的系统资源也不同。考生可以参加在线考试和查看成绩,核对答案;普通教师可以在线制作试卷,控制考试、成绩查询、添加试题等。在线考试功能:考生输入学号密码登陆系统后,选择对应的试卷可进行考试。答题中,有倒计时的功能,考试结束时还没提交就自动交卷,系统将自动对客观题进行评分。 在线制作试卷:教师、管理员可在线制作试卷,可设定试题的类型、分值,但教师制作试卷后必须要由管理员审核才能考试。 考生管理功能:可注册新增学生用户,同时查看考生及班级考生的信息。 考生成绩查询功能:提供考生各科目成绩的详细查询。 除了实现上述功能以外,在线考试系统还应该具有友好、简洁的界面,安全性要高,稳定性要强。2.5系统开发环境配置选择微软平台作为主导,一方面考虑目前微软的飞速发展,越来越多的企业在规划内部网络时,将微软平台作为首选方案;令一方面从技术角度来讲,微软平台上的应用无论是在开发上,还是在软件的部署上都是非常容易,而且性能优越。具体如下:开发工具:Eclipse 4辅助开发工具: Dreamweaver数据库:SQLServer 20005服务器 :Apache Tomcat6.06运行环境 :安装JDK1.6支持Java运行。技术:前台网页的设计采用JSP技术制作。负责响应用户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户由servlet7处理,JavaBean则负责数据的处理。2.6系统开发工具本系统是基于JSP+SQLServer 2000数据库技术实现的,现对JSP技术和SQL Server 2000数据库作简要的介绍。2.6.1开发技术JSP(Java Server Page)JSP3页面由HTML代码和嵌入其中的Java代码所组成。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的等特点。JSP的技术的优势:一次编写,到处运行。在这一点上Java比PHP8更出色,除了系统之外,代码不需要做任何更改。系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。JSP技术是用Java语言作为脚本语言的。Java语言是成熟的、强大的、易扩充的编程语言。高效性与安全性。JSP在执行前先被编译成字节码,字节码由Java虚拟机解释执行,比源码解释效率高。可维护性。由于JSP技术是一种开放的、跨平台的结构,因此Web服务器、平台及其他组件能很容易升级或切换,且不会影响JSP基本的应用程序。多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。2.6.2数据库SQLServer 2000SQL Server 2000是Microsoft 公司推出的SQL Server 数据库管理系统的一个版本。该版本继承了SQL Server 7.09 版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。 Microsoft SQL Server 2000 的特性包括: 1.Internet 集成。SQL Server 2000 数据库引擎提供完整的XML 支持。它还具有构成最大的Web 站点的数据存储组件所需的可伸缩性、可用性和安全功能。SQL Server 2000 程序设计模型与 Windows DNA 构架集成,用以开发 Web 应用程序,并且SQL Server 2000 支持 English Query 和 Microsoft 搜索服务等功能,在Web 应用程序中包含了用户友好的查询和强大的搜索功能。 2.可伸缩性和可用性。同一个数据库引擎可以在不同的平台上使用,从运行 Microsoft Windows® 98 的便携式电脑,到运行 Microsoft Windows 2000 数据中心版的大型多处理器服务器。SQL Server 2000 企业版支持联合服务器、索引视图和大型内存支持等功能,使其得以升级到最大 Web 站点所需的性能级别。 3.企业级数据库功能。SQL Server 2000 关系数据库引擎支持当今苛刻的数据处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千个并发修改数据库的用户的开销减到最小。SQL Server 2000 分布式查询使您得以引用来自不同数据源的数据,就好象这些数据是 SQL Server 2000 数据库的一部分,同时分布式事务支持充分保护任何分布式数据更新的完整性。复制同样使您得以维护多个数据复本,同时确保单独的数据复本保持同步。可将一组数据复制到多个移动的脱接用户,使这些用户自主地工作,然后将他们所做的修改合并回发布服务器。 4.易于安装、部署和使用。 SQL Server 2000 中包括一系列管理和开发工具,这些工具可改进在多个站点上安装、部署、管理和使用 SQL Server 的过程。SQL Server 2000 还支持基于标准的、与 Windows DNA 集成的程序设计模型,使 SQL Server 数据库和数据仓库的使用成为生成强大的可伸缩系统的无缝部分。这些功能使您得以快速交付 SQL Server 应用程序,使客户只需最少的安装和管理开销即可实现这些应用程序。2.7小结本章分析确定了开发基于jsp在线考试系统是必要且可行的,并确定了开发环境为eclipse+tomcat+sql2000。规划了本系统的设计目标和功能要求。2. 网上考试系统设计3.1数据库设计在对网上考试系统数据库部分进行设计的过程中,通过对系统功能进行需求分析得到系统的基本信息表,绘制系统业务流程图和系统数据流程图,分析得到数据字典;在概率结构设计阶段通过对需求阶段得到的用户需求抽象得到数据库关系模型的E-R图10;在逻辑结构设计阶段得到数据库的关系模式并绘制信息表。详细设计过程如下介绍。3.1.1数据库需求分析需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。系统基本信息综合以上分析,要实现上面的所有功能模块,数据库共要设计十一张表,它们分别是:科目表(tbcourse)、教师信息表(tbteacher)、学生信息表(tbstudent)试卷信息表(tbtestpaper)、选择题题库表(tbchoice)、填空题题库表(tbcompletion)、选择题表(tbpaperchoice)、填空题表(tbpapercom)、考试表(tbmytest)、考试-选择题表(tbtestchoice)、考试-填空题表(tbtestcom)系统层次图根据所要实现的功能和用户权限的设置。系统总体的层次图如下图3.1所示:图3.1系统层次图3.1.2数据库逻辑结构设计对于关系型数据库11,数据库的概念结构设计完毕后,要把E-R图描述的概念数据模型转换为等价的关系模式极其约束。逻辑设计的基本工作主要包括如下的3个步骤。关系模式设计该设计以概念结构设计中的E-R图为主要依据,这几出相关的整体逻辑结构。该系统的关系模式如下图3.2所示:图3.2 概念关系模型图完整性设计完整性要求用于描述各种信息之间的制约关系,以及关联关系,各个数据项的取值范围以及各个数据项是否可以取值。根据实际需要,采取一定的手段来满足用户的完整性需求。域完整性约束要求属性值必须在域中。实体完整性约束要求主键必须唯一且不能为空。如用户信息表中的用户名设置为主键,并且要求唯一且不能为空,并且为了保证删除数据时的完整性,还是用了instead of类型的触发器12,触发器如下:/* 对象: 触发器 dbo.deletetbchoice */CREATE TRIGGER deletetbchoice ON dbo.tbchoice instead of DELETE ASbegindelete from tbpaperchoice where titleno in(select titleno from deleted)delete from tbmytestchoice where titleno in(select titleno from deleted)delete from tbchoice where titleno in(select titleno from deleted)end/* 对象: 触发器 dbo.deletetbcompletion */CREATE TRIGGER deletetbcompletion ON dbo.tbcompletion instead of DELETE ASbegindelete from tbpapercom where titleno in(select titleno from deleted)delete from tbmytestcom where titleno in(select titleno from deleted)delete from tbcompletion where titleno in(select titleno from deleted)end/* 对象: 触发器 dbo.deletetbcourse */CREATE TRIGGER deletetbcourse ON dbo.tbcourse instead of DELETE ASbegindelete from tbchoice where course in(select course from deleted)delete from tbcompletion where course in(select course from deleted)delete from tbtestpaper where course in(select course from deleted)delete from tbcourse where course in(select course from deleted)end/* 对象: 触发器 dbo.deletetbmytest*/CREATE TRIGGER deletetbmytest ON dbo.tbmytest instead of DELETE ASbegindelete from tbmytestchoice where id in (select id from DELETED)delete from tbmytestcom where id in (select id from DELETED)delete from tbmytest where id in(select id from deleted)end/* 对象: 触发器 dbo.deletetbstudent*/CREATE TRIGGER deletetbstudent ON dbo.tbstudent instead of DELETE ASbegindelete from tbmytest where stuno in(select stuno from deleted)delete from tbstudent where stuno in(select stuno from deleted)end/* 对象: 触发器 dbo.deletetteacher */CREATE TRIGGER deletetteacher ON dbo.tbteacher instead of DELETE ASbegindelete from tbtestpaper where tecno in(select tecno from deleted)delete from tbpaperchoice where tecno in(select tecno from deleted)delete from tbpapercom where tecno in(select tecno from deleted)delete from tbchoice where tecno in(select tecno from deleted)delete from tbcompletion where tecno in(select tecno from deleted)delete from tbteacher where tecno in(select tecno from deleted)end/* 对象: 触发器 dbo.deletetestpaper */CREATE TRIGGER deletetestpaper ON dbo.tbtestpaper instead of DELETE ASbegindelete from tbpaperchoice where testno in(select testno from deleted)delete from tbpapercom where testno in(select testno from deleted)delete from tbmytest where testno in(select testno from deleted)delete from tbtestpaper where testno in (select testno from deleted)end模式优化本次采用3NF为规范准则来分解关系。将一个关系分解为两个或者多个关系,以满足规范,从而避免产生插入异常、删除异常、更新异常。3.1.4数据库表设计学生信息表如表3-1所示表3-1 学生信息表(tbstudent)列名类型备注说明stunoVarchar(20)主键stunameVarchar(20)stusexVarchar(5)Is male or femalestuclassVarchar(30)班级stupassVarchar(30)密码教师信息表如表3-2所示表3-2 教师信息表(tbteacher)列名类型备注说明tecnoVarchar(20)主键tecnameVarchar(20)tecpassVarchar(30)密码选择题信息表如表3-3所示表3-3 选择题信息表(tbchoice)列名类型备注说明titlenoint自动增长 主键titleVarchar(200)optionAVarchar(50)optionBVarchar(50)optionCVarchar(50)optionDVarchar(50)answerVarchar(2)courseVarchar(20)TecnoVarchar(20)Adddatedatetime填空题信息表如表3-4所示表3-4 填空题信息表(tbcompletion)列名类型备注说明titlenoint自动增长 主键titleVarchar(200)answerVarchar(50)courseVarchar(20)TecnoVarchar(20)Adddatedatetime试卷表如表3-5所示表3-5 试卷表(tbtestpaper)列名类型备注说明testnoint自动增长 主键titleVarchar(60)试卷名称courseVarchar(20)学科maxscoreint分值adddatedatetime试卷命题时间startdatedatetime试卷开放时间enddatedatetime试卷终止时间TecnoVarchar(20)试卷选择表如表3-6所示表3-6 试卷选择表(tbpaperchoice)列名类型备注说明testnoint外键titlenoint外键scoreInt分值NoinpaperInt试卷中的题号TecnoVarchar(20)试卷填空表如表3-7所示表3-7 试卷填空表(tbpapercom)列名类型备注说明testnoint外键titlenoint外键scoreInt分值NoinpaperInt试卷中的题号TecnoVarchar(20)学科信息表如表3-8所示表3-8 学科信息表(tbcourse)列名类型备注说明courseVarchar(20)主键考试表如表3-9所示表3-9 考试表(tbmytest)列名类型备注说明idint自动增长 主键testnoint外键stunoVarchar(20)外键scoreint得分Testtimedatetime考试时间考试选择题考生答案表如图3-10所示表3-10 考试选择题考生答案表(tbmytestchoice)列名类型备注说明idint外键titlenoint外键NoinpaperInt试卷中题号myanswerVarchar(2)考试填空题考生答案表如图3-11所示表3-11 考试填空题考生答案表(tbmytestcom)列名类型备注说明idint外键titlenoint外键myanswerVarchar(50)NoinpaperInt试卷中题号scoreint分数3.2系统结构设计3.2.1页面模块化设计模块化设计的要求不仅是为了提高代码的重用性,更重要的是为了提高代码的可维护性和稳定性。一个模块化程度高、结构清晰的应用程序,在程序维护时的便利性是可想而知的。最初设计方案时,就要规划好哪些模块是可以提出来多次使用,哪些模块虽只使用一次,但提出来之后能使代码更清晰等。网上考试系统是一个典型的数据库开发应用程序,本系统主要用管理员、教师和学生二大模块组成,各模块功能如下:1、用户功能模块图3.3 学生功能模块图学生注册:可以注册学生权限的账号修改个人信息:学生登录后修改个人基本信息考试模块功能:学生登陆后选择试卷并进行考试成查看成绩功能:学生登陆后可以查询自己的成绩信息,已经查看标准答案。2、教师功能模块图3.4 教师功能模块图设置个人信息:修改个人基本信息学生信息管理模块功能:教师负责对数据库信息的维护(包括增加,删除,修改),实现对学生基本信息的增删改。教师信息管理模块功能:教师负责对数据库信息的维护(包括增加,删除,修改),实现对教师基本信息的增删改。试卷信息管理模块功能:教师对试卷的基本信息的维护,实现对试卷及其信息(如分数)的增,删,改,考试时间的设定。题库信息管理模块功能:教师对试卷的基本信息的维护,实现对题库(选择题和填空题)的增,删,改。 3.2.2 MVC模式设计(Jsp+Servlet+JavaBean)MVC(Model View Controller)13是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。视图是用户看到并与之交互的界面。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。JSP页面处于表现层,也就是视力(View即V)的角色。模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。JavaBean则负责数据的处理,也就是模型(Model即M)的角色。控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。Servlet用来处理请求的事务,充当控制器(Controller即C)的角色,Servlet负责响应用户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户。初始的请求由Servlet来处理,Servlet调用商业逻辑和数据处理代码,并创建Bean来表示相应的结果(模型)。然后Servlet确定哪个页面适合于表达这些特定的结果,并将请求转发到相应的页面(JSP页面即为视图),由Servlet确定哪个业务逻辑适用,应该用哪个JSP页面相应结果(Servlet就是控制器)。3.3小结本章详细介绍了数据库的设计和建立,确定了使用11张基本表和7个触发器的方案,该方案的确立减少了数据库的冗余,并确保了数据的完整性。还确定了采用jsp+servlet+bean的MVC设计模式,规划了系统的功能模块。3. 网上考试系统实现4.1系统各部分的实现方法从系统功能模块划分中可以看出,系统总体上有两个功能模块组成。各模块虽然是独立的,但又统一于同一数据库中,便于管理员管理维护数据库,同时也便于教师和学生的操作。在介绍系统各模块的实现方法之前,首先介绍系统与数据库的连接方式JDBC-ODBC14桥接器。再介绍系统主要部分的实现方法。4.1.1建立JDBC-ODBC桥接器JDBC使用java.lang包中的Class类建立JDBC-ODBC桥接器。Class类通过调用它的静态方法forName加载sun.jdbc.odbc包中的JdbcOdbcDriver类建立JDBC-ODBC桥接器。建立桥接器师可能发生异常,必须捕获这个异常,建立桥接器的代码是:try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); catch (ClassNotFoundException e1) System.out.println(驱动加载失败:driver=+driver);4.1.2创建ODBC数据源打开控制面板/管理工具/odbc数据源。点击添加,选择SQLServer,建立一个连接本系统数据库的数据源(名称为:cwx_200710137317)4.1.3和ODBC数据源制定的数据库建立连接使用类DriverManager调用静态方法getConnection创建java.sql.Connection类的对象,代码是:try con = DriverManager.getConnection(jdbc:odbc:cwx_200710137317);System.out.println(连接数据库成功); catch (SQLException e) System.out.println(获取连接失败);4.1.3用户及管理员登录模块页面用户登录页面比较简单,为防止用户登录的操作错误,应设置错误处理页面,在登录操作过程中,一般发生的错误有:用户输入了错误的用户名或密码、用户直接单击了登录按钮,对上述情况的判断就要通过Servlet文件来实现。界面如图4.1所示:图4.1 学生登录面 在登录页面时,当用户提交了登录资料后,就由“Login.java”这个servlet进行验证,它的工作主要是判断用户登录的帐号和密码是否一致。完成这工作就必须连接存储用户数据库取出相关信息记录。如果若用户提交正确的用户和密码后且验证无误,就通过session.setAttribute(user, user);session.setAttribute(role, role);方法存储用户的登录信息;判断用户是否输入正确用户名和密码的Java程序片段如下所示:protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException String username = request.getParameter(username);/获取参数String password = request.getParameter(password);String role = request.getParameter(role);System.out.println( + username + password + role);HttpSession session = request.getSession();/得到session对象if (student.equals(role) /判断是否用student身份登录Student student = new Student();/建立student对象student.setStuno(username);DAO dao = new DaoStudent();/获取接口对象/通过接口查出student对象student = (Student) dao.getModelByPK(student); if (null != student & password.equals(student.getPass().trim() /如果用户输入的密码和数据库中存储的相等,登录成功,/并存储用户的登录信息User user = new User(username, password, role);session.setAttribute(user, user);session.setAttribute(role, role);System.out.println(loginsuccess);if (teacher.equals(role) /判断是否用teacher身份登录Teacher teacher = new Teacher();/新建teacher对象teacher.setTecno(username);DAO dao = new DaoTeacher();/根据账号信息获取teacher对象teacher = (Teacher) dao.getModelByPK(teacher);/判断密码是否正确if (null != teacher & password.equals(teacher.getTecpass().trim() User user = new User(username, password, role);session.setAttribute(user, user);session.setAttribute(role, role);System.out.println(loginsuccess);/重定向到Indexrequest.getRequestDispatcher(Index).forward(request, response);然后,再通过request.getRequestDispatcher(Index).forward(request, response)重定向到Index,在Index中通过判断用户的登录信息来判断重定向到登录页面、学生主页、教师主页中的哪个页面。程序代码片段如下:protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException HttpSession session = request.getSession();User user = (User) session.getAttribute(user);if (null != user) /判断是否已经登录System.out.println(login success);if (student.equals(user.getRole()/判断用户身份request.getRequestDispatcher(student/indexofstudent.jsp).forward(request, response);/重定向到学生主页elserequest.getRequestDispatcher(teacher/indexofteacher.jsp).forward(request, response); else System.out.println(login fail);request.getRequestDispatcher(index.jsp).forward(request, response);/重定向到登录页面4.1.4系统主要模块页面整个系统都采用JSP+JavaBean+Servlet模式实现。JSP+JavaBean+servlet模式的运用实现了代码的重复利用;是系统程序易编写、易维护、易使用;并且可以在任何安装了Java运行环境的平台上使用而不需要重新编译。系统首页如图4.2、4.3所示。学生登录系统进入学生选择考试页面如图4.2所示:图4.2 学生登录首页教师登录系统后,进入教师首页如下图4.3所示:图4.3 教师界面 不同用户登录系统后显示的界面都是简单都是一些功能的链接。外观是 iframe的框架。4.1.5学生考试模块的实现页面考生可以通过首页登录进入进入学生主页,在主页上有三个链接,分别是在线考试,参加过的考试,个人信息修改。进入在线考试之后会进行选择科目进入试题选择页面,点击参加考试就可以进行考试了学生考试界面如下图4.4所示。 图4.4 考试页面考试功能实现为,学生在试卷列表页面中点击进行考试,系统将根据点击的链接提供的信息来确定学生请求的哪份试卷,并用Session存储试卷的id,随后在数据库中提取改试卷的题目信息并发送到jsp页面进行显示以让学生进行考试。学生填写完答案后则点击交卷按钮将答案提交给系统,系统将再次根据session中的试卷id的值取出试卷的试题信息,结合考生的账号和答案,将相关信息存入数据库中,并且对比学生的答案和标准答案,对选择题进行自动打分。代码如下:protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException / TODO Auto-generated method stubrequest.setCharacterEncoding(utf-8);int testno = 0;/获取试卷编号,每份试卷有一个唯一的试卷编号if (null = request.getParameter(testno)testno = (Testpaper) request.getSession().getAttribute(testpaper).getTestno();elsetestno = Integer.parseInt(request.getParameter(testno).trim();DAO dao = new DaoPaperChoice();List list1 = dao.getModelList( testno= + testno+ order by noinpaper asc);/获取试卷的选择题列表List list = new ArrayList();for (Model model : list1) if (null != model) list.add(PaperChoice) model);System.out.println(PaperChoice) model).getAdddate().toString();dao = new DaoPaperCom();List list2 = dao.getModelList( testno= + testno+ order by noinpaper asc);/获取试卷的填空题列表List list3 = new ArrayList();for (Model model : list2) if (null != model) list3.add(PaperCom) model);System.out.println(PaperCom) model).getAdddate().toString();Testpaper testpaper = new Testpaper();testpaper.setTestno(testno);testpaper = (Testpaper) new DaoTestpaper().getModelByPK(testpaper);request.setAttribute(papercomlist, list3)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论