C语言考试系统的设计与实现(计算机科学与技术专业)_第1页
C语言考试系统的设计与实现(计算机科学与技术专业)_第2页
C语言考试系统的设计与实现(计算机科学与技术专业)_第3页
C语言考试系统的设计与实现(计算机科学与技术专业)_第4页
C语言考试系统的设计与实现(计算机科学与技术专业)_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

华北水利水电大学硕士学位论文绪论引言本次设计的C语言网上测试系统,从传统的同步互动模式转变为异步互动模式,网页在后台根据需要,前端部分进行升级,节约了带宽,加快了网络的反应。建立该体系有两个目的:一是让同学们有机会通过C语言在线测试来提升他们的水平。第二,减轻了教师的工作负担,同时,教师要对学生的知识进行评价,从而使课堂教学的质量得到改善,从而达到双赢的目的。课题内容及意义近年来疫情严重,很多考试也伴随着疫情而不得不暂停。在教育发展的今天,考试已成为我们的重要学习内容,网上测试也逐渐受到人们的关注。C语言课程的网上测试是一种新兴的教学手段,是一个值得关注的课题;与传统的笔试相比,C语言计算机网络测试系统有很多优点:可以节约图书资源、节约人力、物力、加速考试进程。这样,电脑就可以在考试的过程中应用,比如设定一系列的测试问题,以及对测试的结果进行分析,从而提供有用的考试结果。随着测试需求的增加,考试形式的改变,老师的工作量也随之增加。在这种背景下,传统的测验方法已经无法适应现代测验的需要,对考试方式进行改革显得尤为重要。本文组织结构在开发之前,先参考了一下一些软件工程的书籍,这次系统选择使用的是MyEclipse的开发工具,使用的是SSH的框架技术,MYSQL的数据库。全文共分七章:第一章为绪论,主要有引言,课题的内容及意义,以及本文的组织结构等方面进行了阐述。第二章为背景技术,主要介绍了本文所使用的一些技术的优缺点。第三章是对系统的需求进行了详细的分析,其中包含了可行性分析,功能分析,系统用例分析,系统业务等。第四章是C语言网上测试系统的整体设计,这一章主要叙述了本系统的数据库设计,着重介绍了部分网页的前台和后台的功能,并通过绘制结构图了解网站的主要功能。第五章是C语言网上测试系统的具体实施,本章重点介绍了网站的功能实现,详细说明了每个模块的实现方式。第六章是测试,这一章主要采用了“黑盒”和其它的测试手段,对网站的性能进行了测试,其中有没有BUG,这是最关键的一章。第七章为结束语,本章主要是对本次毕业设计撰写过程中的问题进行分析,以及一些心得体会。

背景技术JSP技术本系统在JSP技术的基础上进行了开发。有些动态页面可以使用JSP进行配置,使用起来非常方便。大部分用户都能轻松地访问该站点,而且该站点具有多种表现和编程接口。设计还可以更加的丰富。当然,最大的特点就是软件能够在很多人都能访问的地方正常工作。JSP在Java,HTML,JS等方面共同进行了开发和创建。以前也有人想出过许多办法,概念发展也从逻辑程式码中分离出网页程式码。这样可以提高代码的可用性,降低技术人员的工作负担,让他们能够更方便地使用软件开发。在JSP站点的开发过程中,服务器必须先提供对应的请求。在接收到某些结果之后,使用者会在网页上看见伺服器的资料。用户可以下载JSP网页,但是Java软件仅对用户开放。JSP的开发以Java和HTML为基础,它要求采用各种技术,当用户访问该站点时,会有一个对应的网页,通过java代码对服务器的请求进行响应,并通过java代码将其上传到站点上。JSP的诞生旨在迅速地创建动态网页,让用户无需再进行复杂的操作,无需指定用户即可完成;允许开发具有多种服务和网页编排的软件。其主要目标是让该软件可以在服务器和浏览器上正常工作,并允许多个用户访问和使用。JSP技术主要采用Java、HTML等语言进行开发。它包括了一种确定的构造框架和其他不同的方法。他们的设计把逻辑运算码从网页程式码中分离出来,让程式码能够重复地利用,是一种逻辑清楚的开发流程,降低了工作负担,简化了开发。当客户机存取网站伺服器时,程式会先传送至JSP,完成程式后,会在网页上向使用者呈现作业的成果。该软件的Java代码主要是用来进行数据处理和准确地显示数据库的数据,从而实现了简单的网络编程。JSP站点的开发和Java的目的是要满足用户对代码匹配的要求,在得到操作的结果之后,会把结果反馈给用户。JSP站点的开发涉及到很多技术,其中有HTML技术和Java技术,用户在访问站点时,会把一个请求发送到服务器,然后对该请求进行处理,得到结果,再把结果反馈给用户,并在客户端站点上发布。Servlet技术是JSP开发中的一种主要JSP技术,它把网页和逻辑层分离开来,而JSP网站的设计,则可以利用Servlet实现JSP的功能,从而简化JSP。Java语言Java是一种可以用于多种平台的编程语言。Java开发的软件不能在浏览器里直接运行,它需要向服务器请求数据,然后进行编译,最终在用户端的浏览器中出现。当使用者存取网站的时候,程式会先执行Java程式,然后再将程式码送回使用者检视。Java代码的开发使数据库工作更加简单,能够更加精确地在站点上展示数据库的信息,从而实现站点的开发。JavaScript是一种基于Web的脚本语言,它拥有如下的特性:利用JavaScript以及其它易于学习的脚本语言将HTML代码结合起来,从而产生一种动态的效果,从而引起用户的关注和注意[4]。JAVA具有很强的语言能力,C++不太安全,但C和C++是被大众认可的,因此Java采用了C和C++格式,易于掌握。Java去掉了很多C和C++的功能,变得更加简洁,并且增加了很多有用的功能。它具有以下特性:分布式:Java是以先进的,是以TCP/IP为基础的。Kuser功能可以通过HTTP和FTTP协议来传送和接收数据,这让编程人员可以很容易地处理网络文件,就像在处理一个本地的文件。安全:Java的安全是双向的。一方面,为了阻止非法的可疑操作,Java语言会删除C++游标并将其公开。另一方面,当你用Java创建一个模块时,您可以将您的语言能力与您能够提供的某些特性相结合,这样你就会更加的安全。说明:Java译码器(RuntimeSystem)能够直接完成目的代码指令。创建一个源程序所需的资源往往要少于编译器,这样程序员就能节省更多的时间。高性能:Java可以把译码器在执行时直接转化成机器指令,如果译码器的速度很慢。通过直接转换,几十万个程序可以在一秒之内被调用。在Java中,对象代码的转换速度并不比C/C++慢多少。多任务:Java提供了一种多线程功能,可以在一次的程序中完成多项小型任务。动态:Java使用尽可能多的面向对象的技术。Java不会尝试在运行之前绑定所有模块,更新的存储库功能不需要对源代码进行任何更改,就能正确执行。MYSQL数据库介绍本系统采用MYSQL数据库,采用的MYSQL作为一个受大众认可并且免费的数据库,这样我们在使用的时候会更加的便捷。这是一个能够把数据信息储存到多张表格中的关系数据库,并不需要把所有的数据库都集中起来。由于MYSQL具有体积小、灵活性高、又是自由的等特点,因此在大多数中小网站的开发中都采用MYSQL作为数据库。Mysql隶属于Oracle公司,是一款多使用者、多执行者资料库。这个系统的体积很小并且快速、一次性处理上万个数据、支持SQL语句等特点,具有良好的移植性。这些特性让很多系统都会使用MySQL数据库。而且体积小,执行速度快,一次处理数万个数据,支持SQL语句,具有良好的数据移植性能这些功能,让很多的系统使用MySQL来减少了技术方面的开销,受到大众的认可。MySQL具有多线程特性,能够有效地使用系统的资源,提高运行效率,尽管它的功能很少,但是在扩充数据库表的结构空间和二次开发方面,它已经足够了。因此,在开发C语言网络测试系统时,我慎重地选择了MySQL作为后台支持系统。MySql数据库的特性:(1)对C、C++进行测试,保证编译程序的可移植性和灵活性。(2)多种操作系统的支持。(3)将API提供给各种编程语言。(4)对多线程的支持利用CPU资源。(5)对SQL查询进行了优化,使检索效率得到了显著的提高。(6)您可以在任何独立的程式设计环境中使用,以供网络上的客户机以及服务器使用。有中文图书馆、BIG5、日语、多国语言、多国语言。(7)建立TCP/IP、ODBC、JDBC等数据库,并可与其他资料库进行互联。(8)管理工具,用于对数据库的运行进行管理、控制和调整。(9)几千万条记录可以被记录在一个大的数据库中。另外,MySQL数据库还具有很多其他的特性:比如,MySQL能够支持很多大的数据库,这样就可以更好地处理和对相关的系统的支持。在开发C语言考试系统时选择Mysql能够省去很多麻烦。SSH框架SSH是一个整合了Struts+Spring+Hibernate的系统,同时也是一个受欢迎的Java网络应用软件开放源代码框架。Struts是一种以J2EESun为基础的MVC系统,采用Servlet技术和JSP技术来完成该任务。STRUTS可以很好地适应软件的开发需要,使用起来非常方便、灵活、快速。Struts能够将服务小程序,JSP,定制标签,以及内容资源整合在一起。利用这种机制来开发MVC模型,无需进行任何的开发和实现,可以节约大量的时间。因此,Struts是一个很好的平台。Spring是解决许多J2EE开发中的普遍问题的有力基础.Spring提供了一种统一的企业对象管理方法,通过界面而非课堂教学。Spring架构是以JavaBean属性为基础,用于控制转换。Spring是一个综合的抽象数据访问机制,它包括一个简化的JDBC系统,可以大大的提高工作效率和减少潜在的错误。采用基本的管理方法。Spring是一个AOP系统,它在Java标准的基础上,能够在必要时为Pojos提供声明性的管理和其它商业服务,同时也能够完成自己的工作。通过引入EJB的核心业务,本系统功能强大,可以降低EJB的复杂性。Spring还提供了一个功能强大的MVCWeb框架,灵活地整合到IOC容器中的Web框架。这是一个完全自动化的关系/物件解决方案,可以让你在没有复杂SQL表达式的情况下,保持一个包含类、映射文件和组态档的相关资讯的资料库。ORM技术是通过描述对象和数据库之间的映射元数据来存储对象。它在对象数据库与Java关系之间设置了特别的绑定,并且可以直接存储Java对象。ORM架构与其它MVC架构有很大的区别,它的作用域也和MVC有很大的区别。B/S结构B/S的英文名称是Browser/Server,也就是浏览器/服务器。在这个架构下,用户不必再去开发其他的应用程序。不要通过网页浏览器来访问有关的站点,并进行相应的处理。这是网络形成后的网络拓扑模型。在这种结构化模式下客户不再需要开发其他应用软件。而不是使用网络浏览器访问相关网站并执行相关操作。B/S系统具有三个层次的架构。用户可以通过多种浏览器在不同的网络上发送不同的请求,大大降低了客户端的工作效率。客户机只需要安装和配置少量的客户端程序。伺服器主要负责资料库存取及应用程式的功能。第一个客户机是整个系统的界面,并且已被扩充为标准的浏览器软件,例如网页导航,微软网络资源管理器。网页将HTML转换为图像,并为用户提供了各种互动的功能,用户可以在网站上完成表格,并在后台完成。此模块包括用于处理此请求的二级Web服务器。备份Web服务器执行对应的处理程序以回应这个要求。产生动态HTML码,内嵌处理的结果,并将其传回至用户端。在客户端请求访问数据的时候,还需要联系数据库的服务器进行处理。该系统采用C/S模式,对来自不同网络服务器的SQ请求进行协调。B/S模式的目的是为了让顾客的经验更加简单。B/S服务比C/S更有弹性。当情况改变时,请不要对所有已存在的客户机应用进行更新。简单地在Web服务器上查看ServiceManager。这样既能增加企业的生产力,又能节约大量的人力资源。在企业有成千上万的顾客时,这种服务就显得特别重要了。同时,用户体验也得到了简化。用户必须经过专业的训练,而B/S模式下的Client是一款简单、便捷的浏览器。政策制定者和企业雇员不需要经过训练就可以直接使用。B/S模型的这个特点减少了MIS系统的维护。B/S是一种很好的网上信息交流平台。这就使得传统的MIS系统效率得到了提升,C/S无法实现,而网络上的新的信息发布方法恰恰是现代公司所急需的,它使公司的很多文档都可以用电子文档取代,从而大大的提高了公司的管理效率。图2.2B/S体系结构图如图2.2所示;该浏览器向Web服务器发送一个请求。这个Web服务器可以通过这个数据库逐渐地把这个过程的结果反馈给客户机。该模式使客户机协调一致,使其能够专注于系统的某些主要功能。本系统采用了全新的系统的架构方式,其功能十分强大,能够在复杂的用户程序中使用,从而使系统的开发、维护和使用变得更加简单,从而大大缩短开发周期,减少开发费用。目前,该体系结构已经被越来越多的应用所采纳,并且已经被引入到了这个体系结构中。

系统分析和设计可行性分析1.技术可行性以B/S模型为基础,以开发客户机应用为核心。建立及维持后台资料库。功能与易用性是应用程式发展的关键。建立和维护数据库是建立和维护数据库的基础。数据的安全性及稳定性。该系统以JSP、MySQL为主要的开发工具,易于学习,易于使用。 我了解了JSP的基础,同时,本文还对MySQL数据库作了较深度的调查。总体而言,数据库的设计与运行是整个系统的关键。本人对软件开发,软件测试,UML等有系统的学习。我也可以通过一些系统开发和确认的技巧来学习。在学校里,我学习了JSP,J2EE,Java以及其他的技术支援项目。本系统采用B/S结构,在保证数据完整性的前提下,SQL数据库能够有效地处理海量数据,并增加了很多先进的管理功能。它具有很好的灵活性和易用性,是一个很好的数据库设计平台。2.经济可行性主要目的是评估项目的成本效益。系统发展基金具有经济意义.此外,推行这个制度,将可大大提高教育的效率和质素。因此,这个制度在经济上是可行的。根据分析结果,系统开发是可行的。功能分析在调查分析的基础上,C语言课程在线考试系统主要涵盖教师和学生。我会集中分析用户的功能。1.管理员和教师(1)用户管理在管理系统中,系统管理员可以对用户进行请求、管理、授权、删除、修改。(2)课程管理在考试管理系统中,首页设置考试课程,管理人员可以添加和删除课程信息。(3)题库管理在管理考题信息时,选取相应科目进行考库信息管理,并在管理界面中选取考题进行修改。主题类型包括主题选择、空白填充、问题解决以及管理员添加和解决的简单问题。(4)考卷管理考试管理是整个考试制度的核心。管理员可以创建新卷、手动创建卷或自动创建卷。手动创建测试,管理员选择主题和主题类型,然后手动选择主题创建考试;自动测试使用随机数据库算法生成一组测试,设置测试题类型和每种类型的问题数量,并自动生成一组试卷供学生考试。(5)阅卷管理考试管理是教师在学生完成考试时使用的一种功能性较强的功能,可以选择考试试卷进行考试验证。通常,选择和判断是系统自动批阅的。简答题是让教师手动检查并给出标记,最终自动生成教师手动设置的标注和标记,综合给出学生成绩。2.学生(1)参加考试进入系统的考生,只能在考前进行考试和成绩查询,在考试中,可以选择所考的科目,通过之后,再将考卷交上去。(2)成绩查询学生通过考试后,教师在检查考试后将成绩系统地存储在数据库中,下次学生可以访问系统了解他们的考试情况。据分析得到的模块系统图如下:图3.1系统功能模块图系统用例分析管理员管理用例图关键用例包括管理学生信息的用例、管理教师信息的用例、管理试题的用例、管理其他信息的用例以及管理用例的测试活动。图3.2管理员用例图教师管理用例图教师可以输入并提供试题。他们的工作主要是负责系统的试题库的管理,添加、删除和编辑试题,提供分数基准,并结合学生的日常表现提供最终评估。该系统的用例包括管理证据应用信息的用例和评估证据文件的用例,如下图所示。图3.3教师管理用例图学生管理用例图考生可以按照考试系统上的时间和科目,输入考生的编号和口令即可进入考场。考试时,考生可自行选择或由系统推荐。因为每个人的学习水平和学习的深度都不一样,所以系统会根据每天的平均分数,为他们提供一套适合自己的测试。不过,这并不是必需的。学生还可以按照他们目前的情况进行学习或从敢于挑战自己的角度自主选择更合适的试题。他们还将在全面的最终评估中参考上述情况。当作答完成时,考生可以选择将试卷在此时送达,或者可以使系统将在此时自动送达考卷,如果考试时间截止,将停止交卷。此外,课程的考试信息以及考试题目等由代课老师进行设置,学生统一进行在线考试非常的方便。包括管理个人信息,选择科目的测试,并查询分数。如图3.4所示。图3.4学生管理用例图系统业务分析B/S模式下的测试管理系统的运行过程:用户要对C语言的网上测试系统进行检验,如未登录,应先转入注册,然后由管理员进行系统管理员的补充。管理员可以在此发布各种资讯、资料汇入、管理。图3.5系统业务流图数据流图分析系统分为管理员、教师、学生三大用户功能,系统完成了账户和密码验证三大用户功能登录在线考试系统,管理员主要负责课程、师生、课堂基本信息维护等,教师主要负责存储任务,测试、随机创建、验证等。学生主要参加网上随堂测验及考试,查询分析结果则是根据考试系统所得。(1)如图3.6所示图:图3.6试题信息数据流图(2)系统总数据流图如图3.7所示:图3.7系统总数据流图(3)试卷信息是考试信息的重要组成部分,管理员可以修改、修改、删除、增加等信息;如图3.8所示:图3.8试题信息数据流图系统性能分析系统需要安全稳定的运行。用户在输入相关数据时必须能够有效地提供正确、有效的资料,保证资料的准确性与连贯性,保证资料与实际需求相符。整个系统要求即时回应文字提示、优美的页面以及友好的人机交互。根据目前的技术条件,该运行条件能够满足。C语言在线测试系统的开发过程中,为了确保系统的安全、高效,必须要有充足的资源。 安全问题:在当今信息社会,特别是对个人信息的保护,更是刻不容缓。先进性:根据目前的潮流,开发出符合使用者需要、迅速、精确地管理考生。扩展性:随着技术的发展,以SSH为基础的网上测试系统需求也在不断地改变,因此系统必须进行升级,并在最初阶段进行了较好的扩充;便于以后的系统升级。在设计以SSH为基础的在线考试系统时,必须尽可能地考虑客户的需要[10]。

数据库设计数据库的应用这个数据库的目的是存储容器,存储容器中的数据,通过多种方式将数据分布到容器中,扩展容器的应用和发展这是一个很关键的技术。数据库的构造并没有表面上看起来的那样简单,当你可以使用相应的软件时,数据库就会变得很复杂。因此,要做更好的设计,就必须循序渐进地进行,这就相当于将数据库中的数据进行高效的组织,方便管理。E-R设计ER图是一种描述数据类型间关系的数据描述方法。ER曲线能很好地反映出模型和模型之间的联系。在数据库开发过程中,主体关系模型体现了真实的实体之间的相互关系,是一种描述数据库体系结构的方法。他使用了当前项目参与者的现有数据模式。E-R曲线能反映物体之间的关系。可见性,描述对象之间的关系。为实体设计属性时,通过定义主键和外键之间的联系,以及定义实体的可扩展性。它们可以在E-R图上可视化。这种将数据分类成组的做法建立一个与关联群不同的信任,让使用者可以更方便地观察和进行实际的分析。E-R图的三大要素是实体、属性以及关系。通过对数据库的需求进行分析,可以生成符合要求的各类目标和它们之间的关系,并在E-R图中给出。图4.1试题与试卷E-R图图4.2学生与试卷E-R图数据库表设计根据本C语言课程在线考试系统的设计要求,共设计了5个表格,用于存储所有考生和考试信息:用户信息表(姓名、性别、考试编号、身份证号码以及学校)题目清单(题目编号、题目、标注、考卷)考生试卷表(题号、考生编号)科目清单(编号、科目名称)分数表(题目分数、总分)然后把它作为表格的密钥。确定各应试者的测验时间及测验状况。在作业中设定属性(考生号)作为主要的关键词,以避免出现重复的主题。并在候选列表、正确答案表和候选答案列表中设置属性(考生编号)作为外键与存储库中的任务号匹配的单词可以减少这些表中的属性。确保整个数据库结构的完整。在考生答题卡和考生核对表中设置属性(题号和考生号)作为外部关键字,为考生分配问题。它还通过匹配唯一标识每个候选人的测试项目和答案来促进测试项目的未来分配和每个候选人的评估。对应数据表的结构和功能如下:对应的数据表的设计及功能如下:表4.1试卷表表4.2题目表表4.3成绩表表4.4科目表表4.5用户表接口设计外部接口1.用户界面界面应该易于使用,以便用户易于使用。因此,创建一个CSS样式表。(1)对于用户来说,它易于理解且易于使用。(2)用户界面要适合于软件的功能。(3)要有防错的处理。(4)一定要满足用户业务流程。(5)布局合理,色彩图案合适,布局要清晰简洁。2.软件接口Tomcat6Web服务器可以使用JavaBean中间件来处理所有MySQL请求。MySQL数据库,既要确保数据的存取,又要实现系统的自动化。MySQL拥有一个多用户、多线程的强大数据库服务器。如今把Tomcat和MySQL结合起来使用,是非常受欢迎的。TomcatServer是基于SunJSDK的优秀Servlet/JSP容器。该系统不但能够实现Servlet和JSP,还有一些商业JavaWeb容器的特性。Tomcat是一款开源软件,能够在大多数主要的HTTP服务器上工作,并且非常稳定、有效。3.硬件接口在打字时,可以用鼠标和键盘来完成。使用输出区、使用打印机连接、网络设备部分和网络传送部分。内部接口在内部界面上,模块间的资讯是透过超链接及表格的形式传送。每一个模型模块都可以在对应的类中调用接口的方法和功能,同时,数据库的添加、删除和修改都可以由引用类完成。

系统的实现登录界面在登录界面输入登录名称和口令,点击登录,系统就会利用Ajax来比较登入的资料和资料库的内容,并将两者进行比较。验证通过后,请进入登录页面,否则将会向登陆界面发送验证出错信息。JSP会将用户所记录的动作传送到XML文档中的模组内容。Struts会从行为的名字中寻找对应的类别属性。使用者动作会在XML档案中发现对应的内容与类别,并在springXML档案中执行对应的Dao,并传回结果。如图5-1所示:开始结束密码开始结束密码登录成功登录功YN管理员在登录页面上输入用户的账号和安全密码,如果此用户信息存在于数据库表中,成功登录,否则页面刷新,提示错误信息,重新输入账号和密码。图5.2登录界面核心代码:publicStringlogin(){ Stringusername=this.getUsername(); Stringpassword=this.getPassword(); if("admin".equalsIgnoreCase(username) &&"admin".equalsIgnoreCase(password) &&this.loginType.equals("0")){ ActionContext.getContext().getSession().put( Const.ACTION_PUT_SESSION_USRE_TYPE,"0"); ActionContext.getContext().getSession().put( Const.ACTION_PUT_SESSION_USRE_NAME,"admin"); returnConst.ACTION_ADMIN_LOGIN_SUCCESS; }elseif(!loginType.equals("0")){ booleanhasUser=this.sysAdminManager.isUserExit(username); if(hasUser){ booleanisPwdCorrect=this.sysAdminManager.checkPassword( username,password); if(isPwdCorrect){ SysAdminadm=this.sysAdminManager .getSysAdminById(username); adm.setLoginTime(DateUtil.getCurrentDateTime()); try{ this.sysAdminManager.updateUser(adm); }catch(Exceptione){ ActionContext.getContext().put( Const.ACTION_PUT_ERROR_MSG, e.getMessage()+"/更具体信息请查看日志"); LogFactory.getLogger().error( "用户登录发生错误,可能是数据连接不存在,请检查数据库的链接"); returnConst.ACTION_RETURN_ERROR; } Stringtype=String.valueOf(adm.getUserType()); if(!type.equals(this.loginType)){ ActionContext.getContext().put(Const.ACTION_PUT_ERROR_MSG,"用户账户和用户类型不匹配"); returnConst.ACTION_RETURN_ERROR; } if("1".equals(type)||"2".equals(type)){ ActionContext.getContext().getSession().put( Const.ACTION_PUT_SESSION_USRE_TYPE,type);管理员管理界面管理界面有用户、科目、题库和试卷管理等功能。图5.3管理员管理界面Administrator管理模组可以建立、变更、发现及移除管理员。在加入管理员后,系统会先设定管理员的资料,例如管理员密码等,以保证管理员资料不是空的。如果您的资料库中没有新的Administrator,那么您就可以建立一个新的Administrator。编辑有关现有管理员的信息时,还必须在不使用数据的情况下执行验证。调用基本信息,然后调用数据库。如果更改消息满足条件,则可以将操作存储在数据库中。当您与管理员联系时,将根Administrator号码来完成要求。当资料库中有管理员的资料时,会传回系统。当需要删除对应的管理员时,系统管理员的状态码会变成“N”,这样就会导致管理员不适应,等于是把管理员给删除了。该设计的优势在于,当使用者需要浏览系统中的管理员资料时,可以得到更全面、更详尽的资料。你可以看到所有关于管理员的资料,包括“N”的状态码。 因为系统管理员的权限不同,所以当您登录时,界面会相应地显示,并能获得管理员的相关信息。核心代码:<managername="用户管理"type="0"> <linkhref="./sys_jsp/admin/admin_add.jsp"name="添加用户"type="0"/> <linkhref="./sys_jsp/admin/admin_query.jsp"name="管理用户"type="0"/> </manager> <managername="科目管理"type="0"> <linkhref="./exam_jsp/subject/subject_add.jsp"name="添加科目"type="0"/> <linkhref="./exam_jsp/subject/subject_query.jsp"name="管理科目"type="0"/> </manager> <managername="题库管理"type="0"> <linkhref="item/item_addBlank.do"name="添加填空题"type="0"/> <linkhref="item/item_addSingle.do"name="添加单选题"type="0"/> <linkhref="item/item_addMulti.do"name="添加多选题"type="0"/> <linkhref="item/item_addJudge.do"name="添加判断题"type="0"/> <linkhref="item/item_addShort.do"name="添加简答题"type="0"/> <linkhref="./exam_jsp/item/item_query.jsp"name="管理题库"type="0"/> </manager> <managername="试卷管理"type="0"> <linkhref="exam/exam_add.do"name="生成试卷"type="0"/> <linkhref="./exam_jsp/exam/exam_query.jsp"name="查询试卷"type="0"/> </manager> <managername="成绩管理"type="0"> <linkhref="./exam_jsp/exam/exam_adminScoreQuery.jsp"name="成绩查询"type="0"/> </manager> <managername="个人信息管理"type="1"> <linkhref="admin/admin_changePwd.do"name="修改密码"type="0"/> </manager> <managername="阅卷管理"type="1"> <linkhref="./exam_jsp/correct/correct_result.jsp"name="开始阅卷"type="0"/> <linkhref="./exam_jsp/correct/correct_query.jsp"name="阅卷查询"type="0"/> </manager> <!--<managername="科目管理"type="1"> <linkhref="./exam_jsp/subject/subject_add.jsp"name="添加科目"type="0"/> <linkhref="subject/subject_query2.do"name="管理科目"type="0"/> </manager> <managername="题库管理"type="1"> <linkhref="item/item_addBlank.do"name="添加填空题"type="0"/> <linkhref="item/item_addSingle.do"name="添加单选题"type="0"/> <linkhref="item/item_addMulti.do"name="添加多选题"type="0"/> <linkhref="item/item_addJudge.do"name="添加判断题"type="0"/> <linkhref="./exam_jsp/item/item_query.jsp"name="管理题库"type="0"/> </manager> <managername="试卷管理"type="1"> <linkhref="exam/exam_add.do"name="生成试卷"type="0"/> <linkhref="exam/exam_query2.do"name="查询试卷"type="0"/> </manager> <managername="成绩管理"type="1"> <linkhref="./exam_jsp/exam/exam_adminScoreQuery2.jsp"name="成绩查询"type="0"/> </manager>添加试题考题管理模块能够根据测试题的不同,添加考题清单、题型等。图5.4试题管理模块流程图在对试题信息进行管理的时候,在选择一个对应的课程进行题库信息进行管理,在管理的界面下选择试题进行修改,此外,还可以选择和修改各种题型。图5.5试题信息修改核心代码:publicStringaddSingle(){ HttpServletRequestrequest=ServletActionContext.getRequest(); if("commitAdd".equals(request.getParameter("ACT_TYPE"))){ if(this.itemManager.isExistItemId(this.itemId)){ ActionContext.getContext().put("errorMsg","试题编号已经存在"); returnActionSupport.ERROR; } Itemitem=newItem(); ActionContext.getContext().put(Const.PAGE_FORWARD_LOCATION,CommonUtil.getRootPath(request)+"item/item_addSingle.do"); returnActionSupport.SUCCESS; }catch(Exceptione){ ActionContext.getContext().put(Const.ACTION_RETURN_ERROR,e.getMessage()); returnActionSupport.ERROR; } }else{ StringsubHtml=subjectManager.genSubjectHtml(); ActionContext.getContext().put("subHtml",subHtml); return"toAdd"; } } publicStringaddMulti(){ HttpServletRequestrequest=ServletActionContext.getRequest(); String[]results=request.getParameterValues("result"); Stringresult=StringUtils.StringArr2String(results); if("commitAdd".equals(request.getParameter("ACT_TYPE"))){ if(this.itemManager.isExistItemId(this.itemId)){ ActionContext.getContext().put("errorMsg","试题编号已经存在"); returnActionSupport.ERROR; }生成试卷考卷管理是整个考试体系的中心环节,管理员可以自行创建试题,手工制作试题,手工编写试题,管理员选定题目,手工选取试题,制作试题;采用随机数据库算法,设定了试题种类、任务数量,并实现了对试题的自动生成。其流程如图5.6所示:具体的算法如下所示:=1\*GB3①用户通过进入考题管理界面;=2\*GB3②连接数据库,把已经建立好的信息展示给用户;=3\*GB3③管理进行增加、删除、改写等;=4\*GB3④结束。图5.6试卷制定流程图图5.7试卷生成核心代码:publicvoidrandom(){ HttpServletRequestrequest=ServletActionContext.getRequest(); HttpServletResponseresponse=ServletActionContext.getResponse(); //4简答题 Itemitem1=newItem(); item1.setSubject(getDecodeString(this.subject)); item1.setItemType("4"); condition=newDefaultQueryCondition<Item>(item1); StringactionType=request.getParameter("generatorExam"); if(CommonUtil.isNotEmpty(actionType)){ request.setAttribute("isGenerator",actionType); } simpleItems=this.itemManager.getRand(condition); //0单选题 Itemitem2=newItem(); item2.setSubject(getDecodeString(this.subject)); item2.setItemType("0"); condition=newDefaultQueryCondition<Item>(item2); actionType=request.getParameter("generatorExam"); if(CommonUtil.isNotEmpty(actionType)){ request.setAttribute("isGenerator",actionType); } singleItems=this.itemManager.getRand(condition); //1多选题 Itemitem3=newItem(); item3.setSubject(getDecodeString(this.subject)); item3.setItemType("1"); condition=newDefaultQueryCondition<Item>(item3); actionType=request.getParameter("generatorExam"); if(CommonUtil.isNotEmpty(actionType)){ request.setAttribute("isGenerator",actionType); } multiItems=this.itemManager.getRand(condition); //2判断题 Itemitem4=newItem(); item4.setSubject(getDecodeString(this.subject)); item4.setItemType("2"); condition=newDefaultQueryCondition<Item>(item4); actionType=request.getParameter("generatorExam"); if(CommonUtil.isNotEmpty(actionType)){ request.setAttribute("isGenerator",actionType); } judgeItems=this.itemManager.getRand(condition); //3填空题 Itemitem5=newItem(); item5.setSubject(getDecodeString(this.subject)); item5.setItemType("3"); condition=newDefaultQueryCondition<Item>(item5); actionType=request.getParameter("generatorExam"); if(CommonUtil.isNotEmpty(actionType)){ request.setAttribute("isGenerator",actionType); }添加用户在管理用户的过程中,管理员可以对用户进行管理、查询、添加到用户的权限,由管理员进行删除、修改。所述方法包含:该方法包括:①访问对应的用户管理网页;②连接数据库,向管理员展示创建的记录集合;=3\*GB3③对增加的作业进行管理;=4\*GB3④结束;流程图如图5.8所示:图5.8添加用户流程图图5.9查询学生考卷核心代码:publicStringquery(){ SysAdminadm=newSysAdmin(); adm.setUsername(username); condition=newDefaultQueryCondition(adm); HttpServletRequestrequest=ServletActionContext.getRequest(); StringcurPage=request.getParameter("curPage"); StringpageSize=request.getParameter("pageSize"); if(CommonUtil.isNotEmpty(curPage)){ condition.setPageIndex(Integer.parseInt(curPage)); } if(CommonUtil.isNotEmpty(pageSize)){ condition.setPageSize(Integer.parseInt(pageSize)); } Page<SysAdmin>page=sysAdminManager.getRecords(condition); List<SysAdmin>user=page.getList(); ActionContext.getContext().put(Const.ACTION_PUT_RESULT,user); ActionContext.getContext().put(Const.ACTION_PUT_PAGE_INFO, page.getNavigation()); ActionContext.getContext().put("curPage",page.getCurrentPage()); ActionContext.getContext().put("username",username); returnConst.ACTION_RETURN_QUERY; }学生界面修改密码在修改后的口令中,先输入一个新的口令,紧接着重复再输入一次,然后按一下“确定”键,新的口令就会被更新到资料库的表格里。修改密码的流程图如图5.10所示:图5.10修改密码流程图图5.11修改密码核心代码:publicStringchangePwd(){ HttpSessionsession=ServletActionContext.getRequest().getSession(); Stringusername=(String)session.getAttribute("userName"); SysAdminuser=this.sysAdminManager.getSysAdminById(username); ActionContext.getContext().put(Const.ACTION_PUT_RESULT,user); returnConst.ACTION_RETURN_QUERY; }考试学生登录到系统中,只能选择考试和进行成绩查询,在进行考试的时候,选择具体的考试科目和试卷,之后进行考试,试卷做完后,可以选择提交考试的试卷。其流程如图5.12所示:图5.12学生考试流程图具体算法如下:=1\*GB3①考生进入考试页面;=2\*GB3②完成考试信息;=3\*GB3③在数据库连接后,向数据库中写入数据;=4\*GB3④结束。图5.13学生考卷测试图核心代码:publicStringgotoExamId(){ StringsubHtml=this.examManager.genSubjectIDHtml(this.subject); ActionContext.getContext().put("subHtml",subHtml); return"toAdd"; } publicStringgotoExamById(){ HttpServletRequestrequest=ServletActionContext.getRequest(); try{ //Examexam=this.examManager.getRandomExam(this.subject); Examexam=this.examManager.getRandom_Exam(this.examId); Stringusername=(String)request.getSession().getAttribute(Const.ACTION_PUT_SESSION_USRE_NAME); Scorescore=this.scoreManager.getViaExamId(this.examId,username); if(score!=null){ ActionContext.getContext().put(Const.ACTION_PUT_ERROR_MSG,"已参加了最近的课程编号测试"); returnConst.ACTION_RETURN_ERROR; } Stringhtml=this.examManager.genExamHtml(exam); exam.getId(); ActionContext.getContext().put(Const.ACTION_PUT_RESULT2,html); request.setAttribute("limitTimes",exam.getAllowTimes()*60); return"toAdd"; }catch(Exceptione){ ActionContext.getContext().put(Const.ACTION_PUT_ERROR_MSG,e.getMessage()); returnActionSupport.ERROR; } } publicStringgotoExam(){ HttpServletRequestrequest=ServletActionContext.getRequest(); if("commitAdd".equals(request.getParameter("ACT_TYPE"))){ try{ //Examexam=this.examManager.getRandomExam(this.subject); Examexam=this.examManager.getRandom_Exam(this.examId); Stringusername=(String)request.getSession().getAttribute(Const.ACTION_PUT_SESSION_USRE_NAME); Scorescore=this.scoreManager.getViaExamId(this.examId,username); if(score!=null){ ActionContext.getContext().put(Const.ACTION_PUT_ERROR_MSG,"已参加了最近的课程编号测试"); returnConst.ACTION_RETURN_ERROR; } Stringhtml=this.examManager.genExamHtml(exam); exam.getId(); ActionContext.getContext().put(Const.ACTION_PUT_RESULT2,html); request.setAttribute("limitTimes",exam.getAllowTimes()*60); return"toAdd"; }教师登录界面考试管理是教师在学生完成考试时使用的一种实用性较强的功能,可以在考试中选择学生的试题进行确认。一般情况下,选择题目和判断题目的打分都会由C语言课程在线考试系统自动完成。而在简答题中,老师会手工核对并标注,最后,学生的得分是计算机计算出来的选择题和判断题得分总分和老师手工计算出来的简答题得分的相加。其流程如图5.14所示:图5.14试卷评阅模块流程图具体算法如下:=1\*GB3①考卷批改页面;=2\*GB3②查阅考卷;=3\*GB3③连接数据库,在数据库之中写入数据信息;=4\*GB3④结束。图5.15阅卷管理核心代码:publicStringmdy(){ Scorescore=this.scoreManager.getById(id); ActionContext.getContext().put(Const.ACTION_PUT_RESULT2,score); returnConst.ACTION_RETURN_QUERY; } publicStringmdyCommit(){ Scorescore=this.scoreManager.getById(id); score.setScore(Integer.parseInt(this.score)); this.scoreManager.update(score); returnActionSupport.SUCCESS; } publicStringgaodd(){ return"gaodd"; } publicStringdidaogao(){ return"digao"; }

系统测试测试方案及测试用例网站测试,也就是在你完成了所有的特性之后,你要测试它们是否符合你的计划,在测试期间有没有发生什么问题,以及在发生了什么情况下该怎么办?虽然仅仅是一个测试,但是测试的时间和开发的时间差不多,因此,不要小瞧了这个过程,这是一个很关键的步骤。为了保证一个程序的正常运转,必须先对已经完成的模块进行检验。本文将技术测试网站所采用的技术与技术相结合,对所采用的测试方法进行了描述,并对其进行了测试,并对其进行了分析,并对其进行了分析。安全测试安全性检查是确定系统将保护自己免受各种异常的检查。测试人员模拟入侵发现了安全系统可能存在的漏洞,并对系统进行改进。这些措施包括:确认使用者的登录。登录系统时,需要输入正确的用户账号,用户的登录密码以及要选择正确的身份信息。如果遇到安全问题,不管级别如何,都无法登录。检索用户权限。使用不同级别的账户进行测试时,无错误。系统数据的安全性。对各种用户密码和用户名信息进行加密处理。测试方法测试是最终的一个关键因素。我们不但要找出某些bug和例外情况,而且要对某些专案问题进行检验。很多的不满意和缺少设计来阻碍下一次的设计?我不会去找出问题出在哪里,认真分析问题的根源,找到项目中的哪个环节有问题,还有什么逻辑上的问题。所有这些都是为了提高用户的使用体验和不断提高项目的性能,所以你必须对软件进行测试。那么如何去测试,可以从以下方面去测试:“黑盒测试”不注重程式的执行方式及程式码的执行,而忽略程式的内在逻辑,直接进行专案,以取得成果,注重使用者的需要,从使用者的观点来检验软体的效能,以及进行端对端的测试。下面的表格显示了问题信息的输入:表6.1数据输入测试数据输入测试期望期望结果测试结果结论试题标题是否符合标准试题标题规格规则,并且格式正确。信息正确,并且格式也正确结果符合试题内容能否输入数字以外的字符,是否能输入负值。试题内容输入正确,没有负数结果符合试题类别能否输入数字以外的字符,是否能输入负值。试题标题输入正确,没有负数结果符合(2)窗体链接测试如表6.2所示。表6.2窗体链接测试窗体链接测试操作期望结果测试结果结论窗体链接是否能正确的打开指定的窗体能正确的通过链接打开窗体结果符合测试用例本系统主要对老师、学生用户以及管理员进行了测试,具体的测试方案如下使用者登陆模组测试用例使用者登入分学生账号、老师账号、管理员账号,如表格所示:表6.3用户登录模块测试用例用例编号测试用例描述操作过程及数据预期结果测试结果N001输入正确的用户名密码遵循系统既定规则填写用户名(hjx)、密码(123456)后点击“确定”开始登录系统成功登录系统,

温馨提示

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

评论

0/150

提交评论