资源描述
摘要在竞争越来越激烈的今天,人们的生活工作节奏也在急剧加快。现在几乎所有行业为了适应新的社会节奏,都大量采用机器帮助提高劳动生产效率,降低生产成本,增强单位的竞争能力。电脑辅助教学作为一种新的教学方式正受到越来越多的重视。不管是学校还是培训中心都大量使用电脑来辅助教学,使学校的教学工作规范高效率,最大限度地节约成本。本论文介绍了交通规则模拟考试系统开发的具体实现过程,着重介绍了系统的界面、数据库设计以及测试过程。本系统采用Java Web开发技术,配合Struts框架实现,界面采用XHTMLCSS布局。主要实现模拟考试功能,试题的添加、更新、删除,用户管理等基本功能。系统界面美观友好、具有一定的可扩展性、易于维护、安全性较好,具备一般交通规则模拟考试系统的基本要求,并增加了错题练习、章节练习和成绩统计等辅助功能,可以在各种符合Java Web标准的容器中高效运行,并兼容大部分常用浏览器。可以预测,这种符合具有良好构架、扩展性和安全性的交通规则模拟考试系统,将获得越来越多人们的认可。交通规则模拟考试系统的前景十分光明,充满活力。 关键词:交通规则模拟考试;Java Web;Struts;AbstractToday,the competition is more and more fiercely, the rhythm of peoples life and work are being accelerated sharply too.The almost of all profession for adapt to new society rhythm,plenty of adopt machines to progress productive of labor and reduce d the cost of produce, to strengthen competent ability for enterprise. Use computer to help education is attached importance to as a new way about teaching and studing .A wealth of computers are used to assist education at the school and the center of training, improve to productive of educations work at school and let it normal, save cost in the most limit.This paper introduces the detailed implementation procedures and concentrates on introducing the interface of the system, the designing of database and the testing procedure. The system uses Java Web development technique which concert with Struts, and whose interface adopts to XHTML+CSS. It archly meets the basic function of question publishing, updating, deleting, and the management of user. The interface is not only beautiful and friendly but also can be extended, maintained and is highly secured. So it can realize the basic requirements of an traffic regulations test, and can be run in any kinds of normal container accorded with Java Web, and also is compatible with most of the frequently-used browsers. It can be predicted that this kind of traffic regulations test syste m which is accorded with the 2.0 standard, with its better frame, extendibility and security, will win more and more popularity. The future of traffic regulations test is very bright and lively.Key Words: traffic regulations test; Java Web; Struts;目录摘要iAbstractii第1章 绪论1本文工作的来源1目的和意义1本文工作的主要内容2系统概述3设计背景3设计目标3运行环境3功能需求4第3章 总体设计5系统体系结构5 系统模块介绍5系统的物理结构63.3.2 B/S模式的简介73.3.3 B/S模式的优势73.4 数据库概要设计8第4章 详细设计9首页及主要页面设计9整站类设计10数据库详细设计11主要功能模块设计12首页设计12模拟考试页设计13后台用户成绩管理页面设计15用户注册页面设计15第5章 系统的编码17系统框架17开发语言17系统编程18数据库连接185.3.2 模拟考试抽题195.3.3 计算考试时间及剩余时间205.3.4 保存考试结果21第6章 测试17测试原则22测试方法22测试实例23测试结果及分析24单元测试部分24集成测试部分24结论25致谢27参 考 文 献28附录A部分代码展示29外文科技资料翻译38英文原文38中文翻译45第1章 绪论在竞争越来越激烈的今天,人们的生活工作节奏也在急剧加快。现在几乎所有行业为了适应新的社会节奏,都大量采用机器帮助提高劳动生产效率,降低生产成本,增强单位的竞争能力。电脑模拟考试作为一种新的教学方式正受到越来越多的重视。多数驾驶学校由于技术原因以及学员自身情况,致使大量的时间和人力白白浪费在交通规则教学上,不仅教学效率低,而且教学成本大幅度上升,不利于市场的竞争。因此,为适应发展,驾驶学校需要一个适用于其特殊性的软件,以方便其模拟考试工作所用,提高学员的学习效率,减轻教学人员的劳动强度,提高其劳动效率,真正做到解放生产力,创造更多的劳动价值;使学校更规范、科学、高效、有更大的发展潜力1。基于以上原因,我决定设计一款出题快速准确,无出题重题现象,能按考试题库进行顺序出题,随机出题,能对选定题库进行针对练习,练习时能马上提示学员所选答案是否正确,模拟考试后能对考试中做错题进行重点练习,练习或考试中能进行计时等功能。本设计源于开发一个完全自主创新并能够应用于学习中的交通规则考试系统的构想,应用平时学习的知识和生活总结的经验以及对同类产品的借鉴,开发出这个交通规则模拟考试系统。其难度工作量也都符合毕业设计的要求,是符合教学要求的模拟题目。交通规则模拟考试系统,采用了当今流行的B/S结构,适应了驾驶员培训教育发展的新需要,对用户来说,不仅可以减少人力、物力和财力资源的浪费,更重要的是有助于提高学员考试的通过率。这和以往单机版的驾驶员理论考试系统相比,系统不需要安装,节约了本地计算机资源,方便了用户的接入,只要能上网就能随时模拟练习,也满足了当今驾校学员爆炸式增长的需求。该系统经过试运行及测试,能符合当今此类系统的先进性、实用性、可靠性等特点,将引领驾驶员理论考试网上模拟系统的新模式。随着互联网的普及和驾驶员培训事业的不断发展与壮大,会有越来越多的用户乐于接受驾驶员理论考试的网上模拟,其市场潜力会得到充分发挥。 1.3本文工作的主要内容本设计主要实现交通规则模拟考试系统的基本功能,包括:(1) 试题的添加、修改、删除、修改操作:添加试卷功能由用户填写试题的题目,所属章节,各选项答案,正确答案等信息,当用户点击确定时将题目存入数据库。试题修改功能可修改除所属章节以外的试题信息,删除功能则从数据库中删除本条试题记录。 (2) 自动抽取试题 :当用户进入模拟考试界面时系统将从数据库中随机抽取指定数量的题目,而题目将涉及到试题表中所有的章节。(3) 自动评分:当用户回答完所有题目点击提交按钮时系统将会对用户的答题进行评分,并将成绩,考生考号和考试时间等信息插入数据库。模拟考试中设置了考试时间,当剩余时间为0时,计时系统将计算出此时用户所答题目的成绩,并将结果保存至数据库。(4) 统计考生成绩与自测情况:当用户进入统计界面后系统会取出数据库中的成绩表中该考生的所以记录,将其展示在页面中(5) 分章节练习:当用户进入章节练习模块中时,系统将从数据库中的试题表中抽取同一类型中的所有题目,并将答案显示在页面底部。(6) 错题练习:当用户进入错题练习模块中时,系统将从数据库中的错题表中抽取用户曾经在模拟考试中答错的题目,并将答案显示在页面底部。本文主要介绍设计所用到的一些技术、所采用的方法和特点功能等。其中第二章需求分析从计算机软硬件方面分别介绍本设计需要的运行需求和运行环境,并在其后的内容中对用户的详细需求进行分析。第三章总体设计主要介绍系统的功能结构、主要物理架构、安全和数据库概要设计。第四章详细设计主要介绍了主要页面和类(包括包)的设计、数据库详细设计、界面设计等。第五章主要介绍本设计采用的主流技术、框架,开发工具和一些精髓代码的展示说明。第六章是测试,主要介绍了本系统所采用的白盒、黑盒测试方式,所获得的测试结果以及针对结果所做的修改等。第2章 需求分析2.1系统概述本交通规则模拟考试系统提供对用户模拟考试实现的支持。为满足用户对交通规则模拟考试系统的需要,开发本套开源代码的交通规则模拟考试系统。本考试系统面向一般用户,对Web技术有一定了解的人群。本套系统完全为免费开源软件,提供Java Web交流、学习之平台。共同完善本交通规则模拟考试系统。本着实用精神,本系统将完成基本考试功能并提供较强的接口对更多功能提供支持。设计背景本设计面向所有希望学习交通规则的人和一起参与Java Web学习交流的同行,基于JSPStrutsMS SQL Server以及CSS花费2个月时间设计开发。设计目标完成交通规则考试系统的基本功能:包括对试题的添加,修改删除,用户登陆,模拟考试,按章节练习,错题练习,统计考生自测情况等 功能。运行环境(1) 硬件环境服务器端要求:CPU:Inter Pentium 或AMD Athlon 3000+或更高内存:256MB硬盘:100MB客户端要求:CPU:Inter Pentium 或AMD Athlon 2600+或更高内存:128MB(2) 软件环境服务器端要求:操作系统:Windows 2000 Server或更高、Linux Server、UnixJava Web容器:JDK1.5或更高、数据库系统:Microsoft SQL Server 2000 sp4客户端要求:操作系统:多媒体操作系统、Firefox 2、Firefox3及同类浏览器浏览器插件及脚本要求:JavaScript2.2功能需求交通规则考试网站功能:交通规则模拟考试系统功能:前台页面使用考生准考证号与密码登录,考生可逐节练习、模拟考试、错题复习、常用网址等内容。可获取考生自测统计结果,当考生提交试卷后由系统进行自动评分将结果显示在用户界面。后台管理页面使用管理员用户名与密码登录,管理员享有管理(添加、修改、删除)试题库、管理(添加、修改、统计)自测统计结果的权限。管理员可向试题库添加,删除或修改试题,可根据考生提交的试卷测试情况统计出考生成绩排名,易错题等内容,方便考生自我评估。(1)交通规则模拟考试系统用户界面:采用浅蓝色作背景,清新简约风格。(2)交通规则模拟考试系统的软件接口:界面采用完全按CSS布局控制,风格完全可以通过CSS实现自定义;数据库采用DAO连接,通过修改DAO中的方法可轻松改变数据库各种操作。(3)确定交通规则考试系统维护的要求:不定期根据情况推出新界面和代码调整,优化系统性能、丰富网站界面。内容方面完全由用户自主更新。(4)确定交通规则模拟考试系统空间租赁要求:支持JSP的主机,500800元/年。(5)主页面及次页面数量:前台主页1个,次页面15个。后台主页面1个,次页面14个。(6)管理及内容录入任务分配:由管理员确定。(7)各种页面特殊效果及其数量:前台页面由默认风格及用户选择风格决定(可扩展多个风格),后台风格固定。(8)信息保密性要求:数据库及Java Web服务器物理安全。程序代码安全,无后门,权限分配及管理安全,密码安全等。 第3章 总体设计系统体系结构交通规则模拟考试系统自测统计自测评分模拟测试自动评分获取试卷试卷管理成绩管理添加、修改、删除统计、修改、添加前台自测页面后台管理页面章节练习错题练习统计测试情况图3.1 系统功能结构图3.2 系统模块介绍本系统分为前台自测与后台管理两大功能模块,用户首先从前台登陆界面进入自测首页由此可进入模拟考试,错题管理,章节练习等子功能模块从而选择各项自测功能;管理员从后台登陆界面进入后台管理首页,由此可进入试题管理,章节管理,成绩管理等子功能模块从而选择各项管理功能。(1) 试卷管理本模块实现对试卷题目,章节等内容的添加、修改、删除等功能,操作试卷信息需要管理员权限。在提交时,程序会对所提交的信息进行检查,当添加重复题目或章节时会以对话框的形式给与提醒,(2) 成绩管理该模块实现了对用户考试结果的集中展示,列举出用户考试的时间,用户ID,成绩等信息,方便管理员分析用户考试情况同时本模块提供了搜索功能。可根据用户的ID进行搜索,快速查找到感兴趣的结果。(3) 模拟测试该模块实现了模拟考试中计时,获取题目的功能,用户在登陆状态下在其中回答问题,如果考试时间结束,则自动关闭页面。本模块中抽取的题目来自数据库中的题目表,抽取方式为随机抽取,同时保证所抽取的题目涉及到题库中的所有章节。页面顶部有计时功能,等剩余时间显示为0时,则系统将结束本次考试,并对之前所答题目进行评分,并将成绩存入数据库。(4) 自测评分该模块实现对用户提交的答案进行评分的功能,以对话框的形式展示成绩。并将结果保存至数据库,方便统计成绩,并将用户没有回答正确的题目存入数据库中的错题表,当用户选择错题练习功能时将从中抽取题目。(5) 自测统计该模块实现对用户成绩进行统计的功能,列举出用户每次考试的成绩,时间等信息,方便用户对自身情况进行评估。(6) 错题练习该模块为用户提供练习做错的题目的功能,并提供正确答案,方便用户掌握易错题型。所抽取的错题从数据库中取出,同时在页面底部显示题目的正确答案。(7) 章节练习该模块为用户提供按章节练习题目的功能,并提供正确答案,方便用户循序渐进的学习。在此模块中,页面中将展示出同一章节中所以题目,并在页面底部展示出题目的答案。系统的物理结构现在开发管理信息系统一般都是采用C/S或者B/S模式两种模式,但这两种模式又都有自己的优点与不足。本系统采用B/S模式进行开发设计;3.3.2 B/S模式的简介Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。B/S结构,主要是利用了WWW浏览器技术,结合浏览器的多种Script语言(JavaScript 、VBScript)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序有了巨大的进步。B/S结构采用星形拓扑结构建立企业内部通信网络或利用Internet虚拟专网(VPN)。B/S结构具有节省投资、跨地域广的优点,无须视企业规模和地理分布确定。企业内部通过防火墙接入Internet,再整个网络采用TCP/IP协议。网络结构如图所示: B/S模式的优势B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。系统物理结构如图所示:控制器(Servlet)视图(JSP)浏览器(Model)JavaBean请求响应应用服务器数据库实例化图3.2 系统的物理结构图左部分浏览器属于客户端,右部分属于服务器。其中控制器及业务逻辑使用Struts实现,视图由JSP实现,数据库采用MS SQL Server 2000。 数据库概要设计一个设计良好的数据库,可以使系统的实现变得非常的简单,同时,也可以使系统的执行速度变得很快。反之,一个设计混乱的数据库,不仅增加了吸引的管理实现过程,同时在系统的执行过程中,使得检索变得很慢,降低效率。所以数据库的设计是一个系统设计很重要的步骤。根据系统功能设计要求和模块划分,本站的数据库主要有错题信息、题目信息、用户信息、章节信息、结果信息等表。数据库的设计通常是以一个已经存在的数据库管理系统为基础的,常用的数据库管理系统有Access、SQL Server、Oracle、My SQL等。根据用户需求和系统分析,本系统采用SQL Server 2000数据库管理系统。在SQL Server 2000的数据库管理系统中建立名称为db_netExam的数据库。为了保证较好的安全和兼容性,SQL Server 2000要求集成sp4补丁和所有安全补丁。第4章 详细设计表4.1 主要页面文件及其作用文件名说明前台登陆界面default.jsp前台功能主界面exercise.jsp考试功能选择页面top.jsp模板文件,用于构建网页顶部style.css本文件夹用于存储各种不同显示样式,可根据不同需要添加CSS样式register.jsp前台用户注册页面selectLesson.jsp选择章节的页面startExam.jsp模拟考试页面startExercise.jsp逐节练习页面startWrong.jsp错题练习页面Student_Modify.jsp修改学生信息页面stuResultQuery.jsp查看考试结果页面manage left.jsp后台功能选择页面managemanager_add.jsp添加管理员页面managequestions_add.jsp添加题目页面manageselTao.jsp添加章节页面managecopyright.jsp声明页面Struts配置文件Struts主要标签库之一,用于实现各种逻辑和显示Struts主要标签库之一,用于实现各种逻辑和显示Struts主要标签库之一,用于实现各种逻辑和显示WEB-整个网站的配置文件图4.1 网站文件结构图本站所用到的类分为4个包,包括用于连接数据库的core,用于操作数据表的dao,用于用户交互的action,以及actionForm。这些包分别管理和完善系统的各个方面。例如dao实现的是与操作数据表的功能,每个表都对应着一个唯一的dao,用来实现程序中对表中数据的增,删,改,查。Action负责接收用户请求。整站的包结构如下:图4.2 本网站的包结构根据系统功能设计要求和模块划分,本站的数据库主要包括课程信息表、管理员信息表、题目信息表、用户信息表、考试结果表、章节信息表、错题信息表等7个表。各表的表结构如下:表 课程信息表结构字段名数据类型长度键备注IDbigint8主键标识符Namevarchar60课程名JoinTimedatetime18加入时间表 管理员信息表结构字段名数据类型长度键备注IDbigint8主键标识符NAMEvarchar30名称PWDvarchar30密码表 题目信息表结构字段名数据类型长度键备注IDbigint8主键标识符subjectvarchar50题目Typechar6题目类型JoinTimedatetime8加入时间lessonIdint4课程信息表外键课程IDtaoTiIdbigint8章节IDoptionAvarchar50A选项内容optionBvarchar50B选项内容optionCvarchar50C选项内容optionDvarchar50D选项内容answervarchar10答案表4.4 错题信息表结构字段名数据类型长度键备注stuIdvarchar16用户信息表外键用户idquesIdbigint8题目信息表外键题目idIDbigint8主键标识符表4.5 章节信息表结构字段名数据类型长度键备注IDbigint8主键标识符Namevarchar50名称LessonIDbigint8章节IDJoinTimedatetime8加入时间表4.6 用户信息表结构字段名数据类型长度键备注IDvarchar16主键标识符namevarchar20名称pwdvarchar20密码sexvarchar2性别jointimedatetime8加入时间 questionvarchar50问题answervarchar50答案表4.7 考试结果表结构字段名数据类型长度键备注IDint8主键标识符stuIdvarcher16用户信息表外键用户IDwhichLessonvarcher60课程信息表外键课程名resSingleint4单选分数resTotalint4多选分数resTotalint4总分joinTimedatetime8加入时间主要功能模块设计首页设计首页是用户对网站的第一印象,一个好的首页能够极大的提高用户的好感度和访问率,考试系统也不例外。本系统默认首页为清新风格,背景为蓝天草地,朴素且柔和,可以很好的缓解用户因为考试而产生的紧张情绪。本站所有页面均由CSS布局,在不同的浏览器中展示的效果稍有区别,在ie中展示效果最佳。下图是首页的截图:图4.3 主页截图模拟考试页设计模拟考试功能是本程序的核心功能,是本程序的重点,页面包括时间展示和试题展示两部分。顶部包括考试时间、计时和剩余时间三部分。用于提醒用户考试时间。主体部分为试卷的试题,并用红字指出每道题目的分数,底部为提交按钮,当考生确认答题结束后可点击它来提交结果,程序会自动评分,并将成绩以对话框的形式展示给用户。如果顶部的剩余时间耗尽,同样视为提交了答案,系统将进入评分阶段。图图4.4 模拟考试页面截图图4.5 成绩结果对话框截图后台用户成绩管理页面设计本程序不仅完整的模拟了交通规则考试的功能,而且拥有功能强大的后台管理及统计功能。通过后台管理界面,管理员可以轻松的浏览用户的考试结果。本页面主要包括四部分,顶部为统一风格的欢迎界面,并在加载过程中检测用户是否登陆,如果尚未登陆则跳转至登陆界面,左侧为功能选择区域,列举出程序后台所具备的全部功能,单击不同的项目则页面主体区域出现对应的功能界面。页面主体区域展示了全部用户的考试信息,包括用户ID、考试时间、成绩等内容。该界面提供了搜索功能,可以通过用户ID和考试时间搜索成绩信息。底部为声明部分,并提示本程序界面的最佳展示方法。图4.6 后台管理截图4.4.4用户注册页面设计注册是用户对网站的一种认可,良好的注册页面会给用户一种舒适的感觉和温馨的体验,会促使他们认真填写注册信息。同时友好的错误提示对于用户注册也是必不可少的。在登录界面各输入栏右侧,给出了正确填写的标准,如果用户填写不符合要求,会在提交时返回不符合要求的地方,并要求修改该处。本站的注册页如下:图4.7 注册页面截图第5章 系统的编码5.1系统框架为了更加科学和完美地完成本设计,本系统还采用Apache组织的Struts开源框架(1.2版本)构建控制层和业务层。图是Struts基本结构图,可以看出,采用Struts框架结构的Web应用系统主要由控制器、业务逻辑、模型和视图组成。其中的控制器、模型和视图为Struts框架结构的主要组成部分,而事务逻辑则是我们需要实现的系统业务逻辑处理部分。严格的说系统应该使用专门的部分实现业务逻辑,而不是使用Struts来实现,但就本系统而言,业务逻辑比较简单,虽然引入专门的逻辑业务处理单元没有任何问题,考虑到程序复杂性和运行效率问题,决定还是省略用作专门处理业务的逻辑单元。客户(浏览器)控制器(ActionServlet)模型(ActionForm)业务逻辑(Action)视图(JSP)请求转发响应分配读取struts图5.1 Struts的基本结构5.2开发语言本系统采用JSP开发,主要后台代码都由Java编程开发。此外,一些配置文件由XML文件编写。JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件 用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。JSP技术的强势:(1)一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改。(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署, 在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。 (3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。(4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。5.3.1数据库连接()方法获得数据库连接池。其中DriverManager.getConnection()的三个参数为别代表数据库名称,数据库用户名,数据库密码,将这三个参数传入就可以通过conn变量操作数据库了。具体代码如下:public class ConnDB public Connection conn = null; / 声明Connection对象的实例public Statement stmt = null; / 声明Statement对象的实例public ResultSet rs = null; / 声明ResultSet对象的实例private static String propFileName = /com/connDB.properties;private static Properties prop = new Properties(); private static String dbClassName = com.microsoft.jdbc.sqlserver.SQLServerDriver;/定义保存数据库驱动的变量private static String dbUrl = jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=db_netExam;private static String dbUser = sa;private static String dbPwd = 123;public static Connection getConnection() Connection conn = null;try Class.forName(dbClassName).newInstance();conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd); catch (Exception ee) ee.printStackTrace();if (conn = null) System.err.println(警告: DbConnectionManager.getConnection() 获得数据库链接失败.rnrn链接类型:+ dbClassName+ rn链接位置:+ dbUrl+ rn用户/密码+ dbUser + / + dbPwd);return conn;5.3.2 模拟考试抽题本系统的模拟考试抽题部分采用了随机抽题的方式,同时所抽取的题目将涉及数据库中所存储的所有试题章节,实现方法为在sql语句中调用了newid()数据库方法;该方法配合top n*将从select语句自定的查找范围中随机查找出n条记录,完整的sql语句为SELECT top 4 * FROM tb_questions A WHERE taoTiId in(SELECT taoTiId FROM tb_questions WHERE A.id = id ) order by newid(),返回记录后将结果保留到名为questionsList的List中,供模拟考试页面调用。具体代码如下:public List queryExam(int questionsID,String flag) List questionsList = new ArrayList(); QuestionsForm questionsForm1 = null; String sql=; if(questionsID=-1) if(flag.equals(0) sql = SELECT top 4 * FROM tb_questions A WHERE taoTiId in(SELECT taoTiId FROM tb_questions WHERE A.id = id ) order by newid(); else if(questionsID=-2) sql = SELECT * FROM tb_questions WHERE id in (SELECT distinct quesId from tb_Wrong WHERE stuId=+flag+); else sql = SELECT * FROM tb_questions WHERE taoTiID=+questionsID+ ResultSet rs = conn.executeQuery(sql); String type=; int id=0; try rs.last(); int recordNum=rs.getRow(); rs.first(); int idArr=new intrecordNum; for(int i=0;irecordNum;i+) questionsForm1 = new QuestionsForm(); id=rs.getInt(1); questionsForm1.setID(id); questionsForm1.setSubject(rs.getString(2); type=rs.getString(3); questionsForm1.setType(type); questionsForm1.setLessonId(rs.getInt(5); questionsForm1.setTaoTiId(rs.getInt(6); questionsForm1.setOptionA(rs.getString(7); questionsForm1.setOptionB(rs.getString(8); questionsForm1.setOptionC(rs.getString(9); questionsForm1.setOptionD(rs.getString(10); questionsForm1.setAnswer(rs.getString(11) questionsForm1.setIdArrS(idArri=id;); questionsForm1.setNote(rs.getString(12); questionsList.add(questionsForm1); rs.next(); catch (Exception e) e.printStackTrace();/输出异常信息 return questionsList; 5.3.3 计算考试时间及剩余时间 本系统在考生进行模拟考试过程中将计算考试时间和剩余时间,当剩余时间耗尽则视为考生提交了试卷,系统将自动为试卷进行评分。实现方法为调用包下的Date().getTime()方法获取当前的系统时间;然后通过在Jsp页面中设置计时timer=Window.setInterv(showStartTime();showRemainTime();,1000); 来不断更新时间。计算剩余时间时还要记录考试开始时间,并用其与考试时间相加得到考试结束时间,当到达结束时间时触发提交试卷事件进入系统评分。具体代码如下:/计算剩余时间private ActionForward showRemainTime(ActionMapping mapping, ActionForm form, ServletRequest request, ServletResponse response) Session session = request.getSession();String startTime=session.getAttribute(startTime).toString();long a=Long.parseLong(startTime);long b=new java.util.Date().getTime();long r=20*60000-(b-a-1000);int h=(int)Math.abs(r/3600000);String hour=chStr.formatNO(h,2);int m=(int)(r)%3600000/60000;String minute=chStr.formatNO(m,2);int s=(int)(r)%3600000)%60000/1000;String second=chStr.formatNO(s,2);String time=hour+:+minute+:+second;request.setAttribute(showRemainTime,time);return mapping.findForward(showRemainTime);5.3.4 保存考试结果当系统对试卷自动评分后会将考试结果,考试时间和考生准考证号保存至数据库中的成绩表中,同时将做错的题目和考生的准考证号保存至错题表中。具体代码为:public int SaveWrongResult(String studentID,int quesId) String sql=INSERT INTO tb_Wrong (stuId,quesId) values(+studentID+,+quesId+); System.out.println(刚开始考试时保存考试结果的SQL语句:+sql); int ret=conn.executeUpdate(sql); return ret; /考试结束后保存考试结果public int saveResult(String studentID,int lessonID,int resSingle,intresMore) String lesson=(LessonForm)lessonDAO.query(lessonID).get(0).getName(); String sql=INSERT INTO tb_stuResult (stuId,whichLesson,resSingle,resMore) values(+studentID+,+lesson+,+resSingle+,+resMore+);resSingle=+resSingle+,resMore=+resMore+ WHERE stuId=+studentID+ AND whichLesson=+lesson+; System.out.println(sql); int ret=conn.executeUpdate(sql); return ret; 第6章 测试原则软件测试(Software testing)是软件生存期(Software life cycle)中的一个重要阶段,是软件质量保证的关键步骤。通俗地讲,软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码进行最终复审的活动。1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。在G.J.Myers的经典著作软件测试技巧中,给出了测试的定义: 程序测试是为了发现错误而执行程序的过程。测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。在软件开发过程中,分析、设计与编码等工作都是建设性的,惟独测试是带有破坏性,测试可视为分析、设计和编码3个阶段的最终复审,在软件质量保证中具有重要地位。为了确保软件的质量,较理想的做法应该是对软件的开发过程,按软件工程各阶段形成的结果,分别进行严格的审查。当设计工作完成以后,就应该着手测试的准备工作了,一般来讲,由一位对整个系统设计熟悉的设计人员编写测试大纲,明确测试的内容和测试通过的准则,设计完整合理的测试用例,以便系统实现后进行全面测试。软件测试主要分为白盒测试和黑盒测试。白盒测试也称结构测试或逻辑驱动测试,这种测试将测试对象看作一个透明的盒子,测试人员根据程序内部的逻辑结构及有关信息设计测试用例,检验程序中所有逻辑路径是否都能按预定要求正确工作。黑盒测试也称行为测试,这种方法把测试对象看作一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能需求。根据以上测试方法,本系统将同时采用白盒测试和黑盒测试。其中,白盒测试主要用于单元测试;而黑盒测试主要在浏览器中执行具体测试用例来实现,测试用例如下:(1) 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。可以通过Dreamweaver命令工具进行链接检查。(2) 相关性检查:增加/删除一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。(3) 检查按钮的功能是否正确:如修改、保存、取消、返回等按钮功能是否正确。(4) 检查带出信息的完整性:在查看信息和更新信息时,查看所填写的信息是不是全部带出,带出信息和添加的是否一致。(5) 信息重复:在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否做出正确处理。(6) 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,选择“删除”,看系统如何处理,是否会出错;然后选择一个和多个信息进行删除,看是否正确处理。(7) 检查添加和修改是否一致:检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型。(8) 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理、报错。同时,也要注意会不会报和自己重名的错。(9) 检查多次使用返回键的情况: 在有返回键的地方,返回到原来页面,再返回,重复多次,看会否出错。(10) 必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加*。单元测试部分测试中根据程序中各个类中的各个方法分别设计用例并进行测试,例如将一个数据保存入数据库时,将编写满足正确保存条件的测试用例和各种不正确的保存条件的测试用例,进而测试系统是否能正确识别该执行保存的和不该执行保存并给出出错信息的情况。若不能正确执行则需对程序进行纠错和修改。部分相关代码将在附录中给出。集成测试部分本部分测试将根据6.3节设计的测试方法分别进行测试,结果如下:(1) 页面链接检查:通过Dreamweaver命令工具进行链接检查,处理了断掉的不正确的链接;再次运行网站程序,依次点击链接,链接全部正确。(2) 相关性检查:添加/删除相关信息后,相关页面能正常显示。(3) 检查按钮的功能:按钮的功能正常。(4) 检查带出信息的完整性:查看信息和更新信息时,所填写的信息全部带出,带出信息和添加的信息一致,正确显示。(5) 信息重复:如在注册页面重复用户名注册时,会提示“该用户名已经存在!”。(6) 检查删除功能:在公告管理页面中不选择公告,直接点击删除,系统会提示“请选择要删除的记录!”,选择一项或几项后,系统能够正确删除。(7) 检查添加和修改是否一致:结果一致。(8) 检查修改重名:修改用户信息,将准考证号改为已存在的准考证号,会提示错误,修改不成功。(9) 检查多次使用返回键的情况:在有返回键的地方,返回到原来页面,再返回,不会出错。(10) 必填项检查:在必填项前加*作为提示,比如填写注册信息时,必填项“用户名”没有填写,系统会提示“用户名不能为空!”:测试过程中,某些操作产生了一些异常(Exception),大部分已经解决。系统中异常处理并未很完善是导致这些异常没有友好提示和解决的主要原因。结论本系统各项主要功能已基本完成,具备交通规则模拟考试系统的基本要求。本系
展开阅读全文