网络考试系统的设计与实现参考论文(论文 + 源码)

网络考试系统的设计与实现

摘 要

科技在进步,人们生活和工作的方式正发生着改变,不仅体现在人们的衣食住行,也体现在与时俱进的考试形式上。以前的考试需要组织者投入大量的时间和精力,需要对考试的试题进行筛选,对后期的考卷进行批阅,这么多的步骤影响了整个考试执行的效率。因此,本文提出了一种网络考试系统,用于解决上述的一些问题。

本文描述的网络考试系统主要是利用浏览器作为界面,利用B/S模式,即用户可利用浏览器直接访问本站点。主要用到的技术是采用JavaWeb技术和MySql数据库等设计出了各种功能。该系统主要有用户管理、功能管理、角色权限管理、学生网络考试、试题管理、错题管理、自动组卷等功能。

本文提供了一些该系统的部分代码跟截图帮助介绍该系统,对系统的总体设计、详细设计以及测试都给出了一些介绍,还对运行截图以及代码作出了相应的解释。该网络考试系统基本上可以满足一些简单的考试,运行良好,基本可以满足设计要求。

关键词: 考试;JavaWeb;网络

The design and implementation of the network examination system

Abstract

Science and technology in progress, people living and working the way is changing, not only reflected in people's basic necessities, but also reflected in the form of examination with the times. The previous exams require the organizers to devote a lot of time and effort to the examination of the examination questions, the late examination of the examination papers, so many steps affect the efficiency of the entire examination. Therefore, this paper presents a network test system, used to solve some of the above problems.

This article describes the network test system is mainly using the browser as an interface, the use of B / S mode, that users can use the browser to directly access the site. The main use of the technology is the use of JavaWeb technology and MySql database design a variety of functions. The system mainly has user management, function management, role rights management, student network examination, test questions management, wrong title management, automatic test paper and other functions.

This article provides some of the system code and screenshots to help introduce the system, the overall design of the system, detailed design and testing are given some introduction, but also on the operation of the screenshot and the code to make a corresponding explanation. The network test system is basically able to meet some simple exams, running well, the basic can meet the design requirements.

Keywords:Examination; JavaWeb; Network

第1章  绪论

1.1  研究的目的及意义

在我们以往的考试经历中,我们可以看到,每次考试都需要经过出试卷、印试卷、发卷、做卷、收卷、阅卷、统计等过程,这几个过程有着很强的先后次序,不能顺序颠倒。这些过程中,又以出卷、阅卷和统计最为复杂,当一次考试涉及的人数众多时,老师需要批阅非常多的卷子,重复的批阅卷子浪费了大量的时间,此外,不仅效率底下,同时大量的阅卷工作也让老师疲于应付,最后导致阅卷的准确率下降。即便阅卷完成之后,工作还没结束,还需要对这些卷子进行分数登记、成绩统计以及对各个题目进行错误率统计,这些工作消耗时间非常多,因此效率也是非常低的。此外,从学生角度出发,每次做卷都要准备笔和草稿纸,麻烦且不符合环保的要求,从老师的角度出发,如果能够减少出卷、阅卷和统计的时间,那么可以腾出更多的时间用在其他的地方。因此本文基于JavaWeb技术希望开发一套网络考试系统来解决出卷、阅卷、统计花费时间过多的问题,同时为学校教务信息化作出一份贡献。

本文开发的网络考试系统具有一定的现实意义,主要是解决教师在出卷、阅卷和统计上花费时间过多的问题。开发一个系统需要考虑很多方面的问题,比如说时效性和高效性这是两个最最常见的因素,因为时效性关系到你的系统在投入使用时是不是真的能够解决当前所存在的这些问题,网络考试系统在国内虽然已经初具规模,一些学校也在使用这种方式考试,但我觉得目前的考试系统还存在着一些未解决的问题,还需进一步完善。同时高效性也是一个非常重要的因素,如果你的系统用了以后还不如不用那么你的系统必定是一个不成功的产品这也是我们开发需要考虑的一个重要问题。本系统目前只可以实现对一门科目的客观题的考试,基本上还不是特别成熟的一个系统,我还需要考虑如何进行多科目的主客观题型的考试是我以后研究的方向。因此是本系统的开发具有很重要的实际意义,能在当前的发展状态下为学生和教师提供适当的帮助的同时也为今后此类软件的发展提供一定的基础。

1.2  研究开发现状分析

国内考试系统的信息化发展比较缓慢,在广泛化应用的过程中,开发者一方面不断投资购建各种硬件、系统软件和网络,另一方面也不断开发实施了各类教学软件、数据统计、信息记录等应用系统,形成了一定规模的信息化建设体系。可是,由于目前国内的系统还不是很完善,比如一门考试就需要一个系统去支持,这样成本太高,而且我国集体信息化水平有些落后,资金短缺等因素。我国的网络考试系统还没有很好地完全自如的融入到我们的学习生活中,比其他国家有一定的差距。国外的管理与国内完全不同,不但在线考试化建设早,而且他们有坚强的技术团队来提供技术基础。

1.3  研究的内容

本系统的研究目的在于实现网络考试系统,实现该系统要完成的工作包括如下几个方面:

(1)了解全球的网络考试系统的发展历程和现状。深入解析其工作流程。

(2)根据该系统的工作流程设计其总体结构,绘制其结构图。

(3)设计系统的功能模块,如:后台系统运行维护模块。包括试题的录入、筛选、删除,随机生成,提交,打分等功能。前台考试模块,包括题的分发、时间的记录等功能。教师组题模块,具有考题的生成、选择、分数评判的等能力。设计并实现教师考前出题的组题功能模块。包括题类型,数量,每个题考分的设定等。

(4)熟练地运用和掌握JavaWeb技术和MySql数据库编程,进行考试系统的程序代码编写、调试运行以及功能测试。

(5)了解电脑服务器的运行问题以及原理;大数据库的储存;以及大数据库与程序的互相交流问题。


第2章  系统相关技术

本网络考试系统运用了很多的开发工具以及以java为基础的开发语言,在后台的代码编写中主要运用了Java、J2EE;前台的设计中运用了JavaScript、JQuery、css等一些开发语言;通过eclipse来编写这些程序;用mysql进行数据库的设计与分析;另外该网络考试系统的部署容器为tomcat,当需要进行考试时,只需要配置tomcat服务器,便可进行考试。

2.1  JAVA简介

 Java作为一种计算机编程语言,其在企业网络和Internet环境的应用更是十分广泛,现在已成为Internet中最受欢迎、最有影响的编程语言之一。其最大的特点就是面向对象,这种面向对象的程序设计更接近我们的思维方式,相对于面向过程的程序设计,它最大的优点就是可扩展性和可维护性,这也使我们的代码更健壮。

我们都知道面向对象主要有四大特性:封装、抽象、继承和多态。

封装:在面向对象语言中,封装特性最为直接的体现在类中,类即现实生活中的实体的抽象,我们将其所拥有的属性和方法封装到类中,对外部我们提供相应的接口,通过实例化的对象可以调用类中封装好的属性和方法,并且在使用这些方法时并不用知晓其内部的具体实现,这是面向对象的封装特性;

抽象:抽象就是将一类实体的所共同拥有的特性抽象出来,封装在一个抽象类中,抽象在面向对象语言中是由抽象类来体现的。抽象类描述的是一类事物共有的东西,而并非特指某种事物,所以在Java编程语言中体现为抽象类不能实例化;

继承:继承就是指子类可以继承父类或者接口,从而可以实现代码重用,其实继承体现的是单继承关系,父类和子类本质上还是一类实体。

多态:Java中的多态具有多重含义。首先多态最为直白的体现就是父类对象引用不同的子类对象实例,调用不同的子类重写的方法从而表现出不同的行为。多态能够提高代码重用,还可为程序提供更好的可扩展性。

2.2  J2EE

J2EE是一项目架构标准主要用于网页的开发通过这个标准可以制定出一些应用于企业的网站。严格地来说,J2EE并不属于一种产品而是一种约束或者是标准。有的人把它称开发的规范,因此,不管是哪一家公司他们只要在这个架构下进行开发都可以开发出一款比较实用的高级应用程序。J2EE从开发到设计,再到最后的综合管理可以构成一套完整的开发体系,J2EE是由oracle软件公司跟其他多数享誉盛名的科技公司共同努力发明并且应用起来的。J2EE是软件开发的一项标准。J2EE并非是一种生产产品,它既可以说一种开发标准,也能够说是一种开发规范。无论是哪家公司都能够在这种现有统一的标准下开发出一套属于自己企业的高级应用系统的。J2EE是一个公司级平台。它用来给那些在公司经营项目中遇到的研发、设计、系统管控有关难题进行简化。

J2EE可以说这一项技术是根据JAVA标准升级而成而不是凭空独创的,J2EE不断的更新和发展最终形成了现在的约束和规范。J2EE技术首先要不违背它所继承的技术和规范标准,比如说对数据库的访问以及良好的跨平台性质,以及分布式的应用。同时,还要适用于各种各样的使用人群。除此之外必须还要为其他的网页开发或者企业开发提供大量的预留接口,体现其强大的可扩展性。其他的开发人员可以通过这些预留的接口对该规范和准则进行更加标准和一致性高的开发,从而体现出J2EE标准的强大的伸缩性。那么最终的一个目的就是要使得程序开发人员在开发过程中尽量少使用市场上的一些现有的框架,从而规范一个正确的开发体系。那么,他是利用一种开发模型,此模型呈现分布式。以此来完成对所有应用的开发。在开发过程中主要根据系统的各个功能进行划分,也可将这些功能划分为不同的组件。不同的组件会存放在不同的服务器上,并通过不同的用户接口进行管理。那么使用这一标准可以明确的规范开发的流程,并且可以通过MVC来解决系统层次和架构的问题,使得开发人员更加轻松的开发代码,并且让维护人员或者后期的修改人员能更加方便地查看系统的代码和结构。

2.3  MySQL

MySQL是一款开源的数据库。它具有非常实用的价值。他属于中型数据库。MySQL提供了许多的技术支持其中包括了多操作系统的支持也包括了多线程的支持,同时也提供多种资源的支持,除此之外,还可以提供多种的数据库连接方法解决数据库并发和大量数据操作的问题 。使用MySQL的人都会认为这个数据库特别实用。由于它是完全开源和免费的,在使用成本上也不会有太大的损失,因此是目前中小型公司主要使用的数据库之一。从数据库关系来看他是一款关系型数据库具有很多优点比如说用的内存空间较小用户界面简单操作起来十分便捷并且不需要太多繁琐的安装步骤。MySQL是由MySQL公司开发而成,那么这个公司是一个什么公司呢?从历史数据来看它是一个非常有商业眼光的公司,也是非常成功的一个公司,它所开发的产品都受到了人们的青睐。MySQL本身的特性也非常的突出,他能够兼容多种操作系统,同时也能兼容多种的编程语言,比如说Linux环境下使用,也同时能够支持多种编程语言并为这些编程语言提供他们所要使用的用户接口。在性能方面具有处理大数据高并发的处理能力,并且不会占用太多的主机内存,这一点相对其他的数据库要好很多。MySQL的架构应用图如2-1所示:

图2-1  Mysql架构服务图

MySQL使用了好几种软件进行测试,保证这个可用性;它支持好多种操作系统;支持多线程,提供了很多资源;也提种了很多数据库连接方法;它还可以处理很多比较大的数据库。大部分使用这个软件的人就会有很大的帮助了,而且还因为其他开放源码软件,也还大大降低总体拥有成本了。

MySQL数据库是最流行的关系型数据库管理系统,在WEB应用方面MySQL数据库是最好的RDBMS(Relational Database Management System:关系型数据库管理系统)应用软件之一。关系型数据库有较强的灵活性,它将数据保存到不同的表中,这样将数据进一步细分,读取速度和灵活性就会提高。MySQL数据库是真正做到了多线程、多用户的SQL数据库[9]。它使用最常用标准化语言去访问数据库。MySQL数据库以其成本低、体积小、速度快和源码开发的优点,开发中小型的网站都选用MySQL数据库作为数据库。

在大学期间,MySQL做为我们最先接触和理解的数据库其基础应用相对广泛,此次毕业设计我也选用MySQL做为后台数据库。

MySQL数据库的实现是以一个客户机/服务器结构[13]的形式,它是很多不同的客户程序和库和一个服务器守护程序组合而成的。    

MySQL数据库主要是快度速、比较健壮和易于使用。我们需要这样一个SQL服务器,它能基于不昂贵的基础上,处理数据速度快,加之可视化插件、软件的使用可以使其数据操作更加方便。

可以总结出MySQL具有以下几个特性:

  1. 支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统;
  2. 为多种编程语言提供了API;
  3. 支持多线程,充分利用CPU资源;
  4. 通过优化的SQL语句算法,有效地增进了查询速度;
  5. 能够作为单独的应用程序为客户端服务器网络环境提供数据支持,也能够作为库而嵌入到其他的软件,完成相关的数据存储作用;
  6. 提供多种语言支持,数据表名和数据列名都可以使用多种编码方式如中文的GB 2312、BIG5,日文的Shift_JIS等;
  7. 提供多种用于管理数据库操作的管理工具;

使用MySql数据库用作集群服务器管理系统的数据库。可以让服务器大量的相关数据得以快捷地查询处理。

2.4  MyEclipse

MyEclipse是一种有集成效果的开发工具。在Eclipse的基础上进行插件的集成,最终形成功能强大的开发软件。目前主要用于JAVA,JAVAEE的开发,也可以用于移动应用的开发,其主要特点是功能强大,应用广泛,并且支持很多开源的产品,应用前景非常广发。

MyEclipse是由Eclipse通过对插件的集成而来,是对IDE的拓展,可以用来开发网页等应用,可以实现程序的开发,调试,发布等,能极大的提高开发效率,能完美支持HTML、STRUTS等,可以说集成后的MyEclipse包含了当前所有主流的开源产品。MyEclpise也经历了很多代的产品,从最开始的到后来的2014版本,2015版本等都说明了它在发展历程中的变化。

MyEclipse的配置使用也非常智能,不需要使用者懂太多的知识,只需要在自己使用的功能中进行了解即可,在完成项目开发之后,也可以直接通过MyEclipse进行项目部署,可以将网页项目进行选中,直接运行在Tomcat中,也可以将项目打包通过导出功能将项目全部导出,然后将项目发布到tomcat中,通过对配置文件的设置,完成布置,布置完项目以后可以在浏览器中进行查看。可以说,有了MyEclipse之后,基本就能支持所有的web开发,就能使用快捷的编译工具进行快速的开发,也能在各种各样的服务器上进行代码测试。在其他方面,MyEclispe也有很多的开发前景,比如在云开发领域,在移动端开发领域,在企业级开发领域等等,因此,MyEclipse的应用场景非常的广泛。

2.5  JavaScript

JavaScript看样子和Java很像,但是,实际上它们之间并没有直接联系,只是大家都以Java开头而已。目前互联网上最重要的语言是什么?不是Java,不是.Net,也不是PHP,而是JavaScript,它是互联网上最重要的语言。它不仅能跨平台、跨浏览器,它还能跨后端语言。在WEB2.0时代,JavaScript语言像桥一样,将前端页面和后端服务器连接了起来,这样前端页面不用知道服务器那里是用什么语言编写的,也不用知道是如何编写的,而服务器那头也不用知道前端是用什么语言写的,只需要知道前端会传过来一些固定格式的数据信息。JavaScript编写的程序是在浏览器中运行的,它不会在服务器那头运行,一定程度上减少了服务器那头的压力。JavaScript语言在网页完全加载完毕后,可以与网页产生互动来完成一些操作,利用这个特性,我们经常将JavaScript运用在验证表单、修改HTML元素和存储用户数据等方面上。这些功能,Flash和Silverlight都能完成,但是Flash和Silverlight都要单独的安装插件,使用门槛比较高,而且针对不同的浏览器,插件也不一样,在一堆插件中,用户很难选择正确的插件进行安装。而JavaScript不同,它不需要额外的安装什么东西,只要是个浏览器,就能支持。JavaScript的语法与C的语法类似,语句通过在最后加上“;”符号来表示结束,同样的大小写敏感,注释也是“//”开始。因此学习过C语言的人能够很快的上手JavaScript的开发工作。

2.6  JQuery

如果把开发人员扔回石器时代,那么JavaScript就是一堆绳子、木头和石头,通过用这些工具,人类就可以在石器时代活下来,同样的,开发人员也能用JavaScript做任何事。但是,如果说我们把绳子、木头和石头组装起来,做成榔头,做成弓箭,那么无论是打猎还是耕作,效率都会有很大的提升。jQuery就是这里的榔头和弓箭。jQuery是由JavaScript写的,它封装了一些我们在创作网页时候常用的操作,比如对DOM的修改、AJAX等操作,这些操作如果让开发人员自己用JavaScript编写,那么可能要花几十行代码,复杂的甚至要上百行,同时考虑到这些操作比较频繁,那么一个页面上你会看到很多很多的JavaScript代码,开发成本和维护成本都会很高,代码也不容易读。在jQuery,这些操作只需要少数几行代码甚至一行代码就能完成,减少了开发人员的负担,也让后期维护更加简单。绳子、木头和石头可以组装成榔头、弓箭等,同样的,JavaScript也能组装成许多和jQuery类似的工具,但是我们为什么选择jQuery,而不选择其他的呢?一方面是因为jQuery功能强大且容易学习,另一方面,jQuery从发行到现在,经历了许多版本的迭代,不仅稳定,而且网上相关的资料也更齐全,遇到问题也能更容易的解决。此外,在jQuery的支持下,还诞生一大批基于jQuery的插件,比如UI插件、弹窗、选项卡、导航菜单、在线客服、瀑布流、3D、时间轴等等的插件,这些插件不仅简化了开发,还使网页更加美观,用户交互体验更加好。基于上述原因,才在众多工具中,采用了jQuery。

2.7  CSS3

Cascading Style Sheets(CSS),中文叫层叠样式表。现在来说我们已经进入了WEB2.0的时代,WEB2.0下的网站不仅需要好看的外观,同时还要用户体验良好的界面。CSS2标准,从现在的大环境下去看,显然已经不能满足日益增长的用户需求和开发需求。因此CSS3标准应运而生。CSS的作用是控制页面的布局,除了控制布局外,它还能够对页面上的字体颜色、大小、字体、背景和你能在网页上看到的一切进行控制。日前很多浏览器都能很好的支持CSS3标准。

CSS3引入许多新特性,以字体为例,在以前的CSS版本中,如果我们将网页的字体设置成“宋体”,那么大多数的电脑都能正常显示,可是我们都知道,MacOS系统里的字体要比Windows下的字体好看,但是如果我们将网页的字体设置为MacOS系统里的字体,那么Windows系统用户就没办法正常访问。这在老版本的CSS中是没办法解决的,但是在CSS3中,通过@Font-face特性,可以允许浏览器从服务器上加载字体文件,换句话说,即便你的电脑上没有这种字体,你也能正常的访问用了这个字体的页面。可见CSS3赋予了更大的灵活性。除了@Font-face特性外,CSS3还引入了包括Word-wrap & Text-overflow样式、文字渲染、多列布局、渐变、阴影、反射、盒子模型、Transforms 和 Animation Transitions等等新特性,这些新特点的引进,降低了创造者的开发难度,也提高了体验。

2.8  JSP

JSP(Java Script Pages)是由Sun公司建立的一种动态网页技术,它是建立在HTML文件基础上的。在传统的网页HTML文件(*.htm,*.html)中加入Java程序。

首先JSP是跨平台的,因为Java就是可移植跨平台的,而JSP技术是建立在Java平台之上,所以使用JSP开发的Web应用也是跨平台的。

JSP页面不仅可以使用普通网页一样使用标准标记语言的元素(如HTML标记)以外,还可以使用其独有的JSP标记。JSP可以直接向数据库中获取或写入数据,所以通过JSP,我们可以在网页中加入更多动态内容。

JSP有如下优点:

(1)一次编写,到处运行。除了系统之外,代码不用做任何更改。

(2)JSP具有多平台支持。可以在任意平台上的任意环境中开发,在任意环境中进行系统的部署和扩展。相比JSP的多平台支持相比ASP/.net的局限性是显而易见的。

(3)具有可伸缩性。不论是只有一个小的Jar文件就可以运行的Servlet/JSP,还是由多台服务器进行集群和负载均衡,亦或者由多台Application来事务处理,Java显示了其广阔的应用范围和巨大的生命力。

(4)功能强大的多样化的开发工具支持。Java已经有了许多非常优秀的开发工具,其中大部分可以免费得到,并且其中大多都能运行在多平台下。

选取JSP的原因

JSP通过其独有的标签库,使静态HTML网页技术向动态网页技术完善。通过其在网络编程中的使用,可以利用嵌入Java代码使其充分利用Java语言的上手容易,跨平台,运行效率高等优点。具备一定程序设计的基本知识,学习JSP也十分容易。

首先JSP是一种动态网页编程语言,再加上JSP具有跨平台、运行效率高、易学易用等特点和优势,做简单界面比较容易,故选用JSP来实现网络考试系统。

2.9  Tomcat服务器

Tomcat 服务器是Apache组织的一个开源子项目。具备基本的web服务的功能,是中小型系统首选的服务器,更是开发和调试JSP 程序的首选。因为Tomcat 技术不仅免费而且性能稳定,我们在本科阶段的很多web项目中也多为使用Tomcat作为服务器,其也成为目前比较流行使用的Web 应用服务器。

如果配置正确,Tomcat 服务器实际上在运行JSP 页面和Servlet容器。此外,Tomcat和其他Web服务器一样,都具有基于处理HTML页面的功能,另外它还是一个Servlet和JSP容器。独立的Servlet容器是Tomcat服务器的默认模式。目前Tomcat服务器最新版本为8.0.0,本次毕设我使用的也是Tomcat8。

此外,Tomcat 服务器运行时占用的系统资源较小,可扩展性良好,支持邮件服务和负载平衡等开发应用系统常用的功能。因此利用Tomcat服务器作为网络考试系统的Web应用服务器。


第3章  可行性与需求分析

3.1  可行性分析

可行性分析是用最小的代价在最短的时间内确定问题是否能够解决。我首先需要进一步对上一章节目前考试系统现状的分析。之后初步的确定项目的规模跟目标,确定项目的约束跟限制,必须分析几种可能解法的利弊,从而判定原定系统的目标和规模是否能够实现,系统完成后带来的效益是否能够达到最大值。总之,只有认真的进行了可行性分析,才会避免或者减轻项目开发后期可能出现的困境。

1. 经济可行性

经济可行性的重要方面是研究成本,其中包含毕业设计所需的开发成本,对开发成本是不是会大于开发项目前期预计利润进行预算。在结合上述所有情况的分析下,我觉得自己的毕设课题是经济可行性好的。首先开发此次毕设软件不要前期的投入资金,其次是自己设计的,最多是自己去图书馆找书,在实验室做项目,通过老师教导,同学帮助,这些都是免费的,再有就是需要一台电脑,这些都是能接受的,成本很小的同时我也可能够提升我在编码方面的实现能力。

2. 技术可行性

本课题使用的是Java技术,开发平台选用Eclipse,Eclipse有着完整配备的功能,便于初学者使用还有代码提示,让我使用更加得心应手。在决定了编程框架后,再说用Java语言编码的优点:快,精简,可用性高等。同时,使用的数据库是MySQL,开源的MySQL增添了可视化和稳定化的优点,而且安全方面也做得很好,更别说它的强大的保存数据功能以及查询数据功能。

  1. 操作可行性

该网络考试系统部署容器为tomcat,当需要进行考试时,只需要配置tomcat服务器,便可进行考试。本系统采用jsp技术,利用网络就能够进行访问和操作,且界面简单易操作,用户只要有电脑,都能进行访问和操作。本系统具有易操作、易管理、交互性好的特点,在操作上是非常简单的。因此本系统可以进行开发。

3.2  需求分析

一.功能需求分析

网络考试系统主要用于实现高校在线考试,基本功能包括:自动组卷、试卷发布、试卷批阅、试卷成绩统计等。本系统结构如下:

(1)学生端:

登录模块:登录功能;

网络考试模块:可参加考试,并查看考试结果,提交试卷后老师允许的情况下查看错题;

(2)超级管理员端:

登录模块:实现管理员登录功能;

用户管理模块:实现用户信息的增加、修改、查看功能;

角色权限管理模块:实现角色的增加、修改、查看功能;

试卷管理模块:实现试卷信息的增加、修改、查看功能;

试题管理模块:实现试题信息的增加、修改、查看功能;

  1. 试题管理员端(老师):

试卷管理模块:实现试卷信息的增加、修改、查看功能;

试题管理模块:实现试题信息的增加、修改、查看功能;

二.非功能需求分析

1、整个系统的设计中,系统必须满足以下要求:

(1)数据安全性

存储有关隐私权的网络考试等问题的系统数据,需要确保数据的安全性,在网站设计时必须要采取安全防范措施,以解决潜在的安全问题,比如如何防止学生上网查答案。

(2)易用性

在用户权限范围内,可在一个统一风格的界面内即可完成相关的所有业务流程操作或者获取所有相关信息,大大提高操作员的工作效率和易用性,灵活应用本系统。

(3)柔软性

由于这个网络考试系统涉及到范围广泛的业务,设计出的系统必须能够处理接受变化的能力。

(4)扩展性

随着互联网管理业务管理需求的不断变化,老师管理系统必然涉及到业务更新及扩展,这就要求在设计之初就应该考虑良好的可扩展性方案。

第4章  系统总体设计

4.1.  系统概要功能图

本系统所开发的网络考试系统主要分成了三个模块的主要功能,系统功能、考试功能和学生功能,每个功能都包含了几个子功能,子功能主要包括:对于系统功能方面的管理、角色的管理、用户方面的管理、对于试题管理、对于的试卷管理、学生答题、总结出错题库与得分。系统的概要功能图如图4-1所示:

图4-1 系统概要功能图

4.2  系统基本功能

系统功能的划分方式可以分成很多种类,前面是按照功能模块进行划分,将系统分成三个模块,本章节依据网络考试系统的系统角色不同,可以分成用户端和管理员端。用户端包括:登录功能、学生答题、答题得分以及考完试之后的错题解析。管理员端包括:登录功能、系统功能管理、用户管理、角色管理、题目管理、试卷管理。下面本节主要对各个基本的功能进行一个简介。(此处没有对试题管理员进行详细介绍,因为管理员的题目管理跟试卷管理的功能就是他的功能)

4.2.1  登录功能

登录功能是一个系统的重要组成部分,也是一个系统重要的门户功能,登录功能主要实现了使用者对系统的登录,在本文所设计的体系中,登录主要分成了两种身份:学生用户和管理员。两种身份登陆,能细分系统的功能模块,实现更加方便的操作和管理。

4.2.2  系统答题

系统答题模块是本系统的一个重要功能,可以实现让用户的答题操作。系统答题功能主要是学生用户登录以后操作的,学生用户在输入正确的用户名和密码以后能开始系统答题,系统答题的题目均来自数据库。

4.2.3  答题得分

答题得分功能实现了学生用户在答题结束以后对自己得分情况的查看,该功能就实现了登录系统的学生用户在完成自己的试卷以后,点击体提交就能看到自己的得分,因此该功能是一个展示性质的功辅助能。

4.2.4  错题解析

错题解析功能是系统答题功能的一个辅助或者说优化的功能,只有学生用户在登录系统完成答题以后在老师允许的情况下才能进行该功能的操作,学生答题可能存在一定的错误,对错误题目的查看成为考试系统的子功能。因此本文所设计的错题解析功能,能让学生迅速发现正确或者错误题目,以及解析过程。这样方便自学和改进。学生功能结构图,如图4-2所示:

图4-2学生系统结构图

4.2.5  系统功能管理

系统功能管理主要实现了对系统的其他功能进行管理,主要包括对新功能的添加和编辑,对现有功能的添加和修改,同时能对现有的功能进行子功能的编辑和修改,修改后的功能可以在系统中被查看。

4.2.6  用户管理

用户管理是一个系统的重要功能之一,对用户的管理可以实现对系统使用者的了解和查看,能让使用者更加方便的使用本系统,用户的种类分为多种,本文主要体现在学生用户和管理者两种用户上面,可以对用户的信息进行添加修改等。

4.2.7  角色管理

角色管理主要是针对用户来设计的,不同的用户拥有不同的权力。换句话说就是操作的权限是不同的。学生账号只能进行答题等行为,而不能进行后台的管理员操作。管理员账号也拥有不一样的权利。这些权力体现在对账号的操作,试卷和题目的管理上,因此对权限的管理能很好的控制系统用户的行为,有利于系统更加稳定的运行。

4.2.8  题目管理

题目管理主要是针对管理员的功能,该功能面向系统中试卷所使用的题目库,在本系统中,管理员能通过对题目的添加和修改对题目进行管理,可以查看现有的题目,同时也能对新的题目进行添加,为试卷的生成提供更多题目的选择。

4.2.9  试卷管理

试卷管理是本系统的核心功能,主要实现的是对学生用户考试答题的试卷进行管理,通过系统随机抽取的题目自动生成试卷并且能将试卷存入数据库,供学生考试时进行选择。管理员功能结构图,如图4-3所示:

图4-3 管理员功能结构图

4.3  数据库设计 

数据库的设计十分重要,下面将对本文所使用的数据表进行逐一的介绍。

1. 用户表及ER图

表4.1用户表

字段名

数据类型

  长 度

   字段含义

   是否主键

   是否外键

userid

INTEGER

11

用户ID

roleid

INTEGER

11

角色id

username

VARCHAR

20

 用户账户名

userpwd

VARCHAR

20

   用户密码

usertruename

VARCHAR

30

   真实姓名

 用户表ER图,如图4-4所示:

图4-4 用户表ER图

用户id:每一个登陆的用户都有一个特有的编号;

角色id:学生、超级管理员、试题管理员,三个角色分别对应一个编号;

账号:登录时需要用到的;

密码:密码对应相应的账号;

姓名:用户的真实姓名;

状态:1为正常,0为禁用。

2.  角色表

表4.2角色表

字段名

数据类型

长度

   字段含义

   是否主键

   是否外键

roleid

INTEGER

11

角色id

   rolename

VARCHAR

20

角色名

  rolestate

INTEGER

11

   角色状态

角色id:学生、超级管理员、试题管理员,三个角色分别对应一个编号;

角色名:学生、超级管理员、试题管理员;

角色状态:1为正常,0为禁用。

3.  功能表ER图

表4.3功能表

字段名

数据类型

长度

   字段含义

   是否主键

   是否外键

funid

INTEGER

11

功能ID

funname

VARCHAR

20

功能名

funurl

VARCHAR

200

 功能地址

funpid

INTEGER

11

顶层功能ID

funstate

INTEGER

11

 功能状态

功能表ER图,如图4-5所示:

图4-5 功能表ER图

功能id:每个功能对应的编号;

功能名:分别有系统功能管理、角色管理、用户管理、题目管理、试卷管理等;

功能地址:每个功能对应一个地址,用于管理;

顶层功能id:系统功能包括系统功能管理、角色管理、用户管理,试题管理包括题目管理、试卷管理;

状态:1为正常,0为禁用。

4.  权限表ER图

表4.4权限表

字段名

   数据类型

长度

   字段含义

  是否主键

   是否外键

rrid

INTEGER

11

 角色权限ID

funid

INTEGER

11

功能ID

权限表ER图,如图4-6所示:

图4-6 权限表ER图

角色权限id:每个角色所拥有的权限对应的编号;

功能id:每个功能对应的编号;

5.  试题表ER图

表4.5试题表

字段名

数据类型

长度

  字段含义

   是否主键

   是否外键

sid

INTEGER

11

试题ID

   scontent

VARCHAR

150

题干

sa

VARCHAR

100

A选项

sb

VARCHAR

100

B选项

sc

VARCHAR

100

C选项

sd

VARCHAR

100

D选项

试题表ER图,如图4-7所示:

图4-7 试题表ER图

试题id:每道题对应的编号;

题干:题目的内容;

6.  试卷表ER图

表4.6试卷表

字段名

数据类型

长度

   字段含义

   是否主键

   是否外键

pid

INTEGER

11

试卷ID

pname

VARCHAR

11

试卷名

sid

INTEGER

11

试题ID

试卷表ER图,如图4-8所示:

图4-8 试卷表ER图

试卷ID:每套试卷对应的编号;

试卷名:试卷对应的名字;

试题id:每道题对应的编号;

7.  学生试卷表ER图

表4.7学生试卷表

字段名

数据类型

长度

字段含义

是否主键

  是否外键

spid

INTEGER

11

试卷ID

userid

INTEGER

11

用户ID

sid

INTEGER

11

角色ID

  studentkey

VARCHAR

10

学生答案

studentstate

INTEGER

11

试题答案

学生试卷表ER图,如图4-9所示:

图4-9 学生试卷表ER图

试卷ID:每套试卷对应的编号;

用户id:每一个登陆的用户都有一个特有的编号;

角色id:学生、超级管理员、试题管理员,三个角色分别对应一个编号;

学生答案:学生做试卷后的结果;

试题答案:每道题的正确答案;


第5章  系统详细设计

本章主要介绍网络考试系统的详细设计,分别从用户端和管理员端介绍各个功能模块的实现情况和运行截图。下面首先介绍用户端,然后介绍管理员端。

5.1  学生用户端

在这个系统中使用者主要是分为管理员和学生,我在这里先介绍学生用户系统的运行情况。以下是学生用户从登陆到错题解析的整个运行流程情况将在下面的论文中进行展示。

5.1.1  学生用户登录

学生用户登陆,先到这个界面。 如图5-1所示:

图5-1用户登录运行界面

在进入登录界面以后选择学生登录,再输入正确的用户名和正确的密码,就可以登录。如图5-2所示:

图5-2用户登录输入界面

用户正确完成登录输入以后,系统会根据用户所输入的信息,通过功能代码实现与数据库中存储数据的对比,从而判别该登录用户是否合法,如果不合法将提示输入正确的登录信息,输入正确则登录系统,进入系统的主界面。

5.1.2  主界面

学生用户正确登录系统之后会跳转到学生用户端的界面,主界面如图5-3所示:

图5-3学生用户主界面

学生用户的主界面主要包含了试卷列表和查看错题两个功能,试卷列表中罗列了所有考试的试卷,学生可以根据老师的要求选择对应的的试卷进行考试,考试结束以后还可以进行错题查看功能。

5.1.3  系统答题

学生用户登录系统以后选择试卷列表中的试卷进行考试答题,答题界面如图5-4所示:

图5-4学生用户答题界面

学生要在一定的时间内,完成试卷上的所有题目,然后进行提交,答题的进度和时间的限制可以系统会给出提示,运行界面如图5-5所示:

图5-5学生用户答题进度界面

5.1.4  答题得分

学生在规定的时间内完成答题,完成以后提交系统,提交系统,系统会根据题库对比得到考试成绩,成绩界面如图5-6所示:

图5-6学生用户答题成绩界面

计时器(到时自动交卷)功能,交卷时判断试卷是否有未答题、计算得分等功能都在paper.jsp中用javascript来实现

// 交卷功能

判断是否有未答题目

function unAnswer(){

if(unanswer != 0){

layer.open({

title:'警告',

content: "还有"+unanswer+"道题目未做!",

icon:2,

end:function(){

postAnswer();

}

});

}else{

postAnswer();

}

}

计算得分

function getScore(){

//var spid = n

$.post({

        url: basePath + 'user/studentPaper?cmd=score&userid='+'${userid}'+'&spid='+ now.getTime(),

        contentType: false,

        processData: false,

        success: function(res) {

            console.log(res)

            layer.open({

title:'得分',

content: res,

icon:1,

end:function(){

location.href = basePath+'user/studentPaper?cmd=stupaper';

}

})

        },

        error: function(res) {

            console.log('error');

        }

    })

}

倒计时功能

//小于10的数字前面补0

function p(n){

return n<10?'0'+n:n;

}

//获取当前时间

var now=new Date();

//获取结束时间

var endDate=new Date();

//设置考试时间(单位分钟)

endDate.setMinutes(now.getMinutes()+20)

function getTime(){           

var startDate=new Date();

var countDown=(endDate.getTime()-startDate.getTime())/1000;

var h=parseInt(countDown/(60*60)%24);

var m=parseInt(countDown/60%60);

var s=parseInt(countDown%60);                

$('.time').html(p(h)+'时'+p(m)+'分'+p(s)+'秒');

if(countDown<=0){

document.getElementById('time').innerHTML='考试结束';

layer.open({

title:'警告',

content: '考试时间到,试卷已经提交!',

icon:5,

end:function(){

unAnswer();

}

})

}else{

setTimeout('getTime()',500);

}              

}

getTime()

学生得到成绩以后可以对自己的本次成绩进行查看,也能对自己的其他考试试卷的成绩进行查看,查看界面如图5-7所示:

图5-7学生答题情况成绩结果界面

5.1.5  错题解析

学生用户能对自己的答题试卷中错误的题进行查看,并且能看到错题的解析,但是此功能只是一个辅助优化功能,必须是在交卷之后老师同意的情况下,才能查看。错题的解析界面如图5-8所示

图5-8学生用户错题解析界面

学生能根据数据库中给出的正常答案,对比自己的错误选项进行研究和学习,达到考试提升能力的效果。

5.2  管理员端

管理员端的功能主要为了更好的管理系统,让学生用户能顺利考试,因此管理员功能在实现的时候需要考虑的因素和功能会比较多,下面对管理员如何在这个系统中操作进行演示。试卷管理员(老师)的功能包括在其中。

5.2.1  管理员登录

管理员登录和学生用户登录使用的是同一个登录界面,区别在于登录时选取的身份是管理员身份,登录界面如图5-9所示:

图5-9管理员登录界面

5.2.2  管理员主界面

管理员正确输入信息后会跳转到管理员的主界面,主界面如图5-10所示:

图5-10管理员主界面

在管理员主界面上,我们可以看到管理员端主要分成了两个部分的功能,第一个是系统功能,第二个是试卷管理功能,下面将对这两个功能下的子功能进行逐一介绍。

5.2.3  系统功能管理

系统功能管理实现了所有的父功能和子功能之间的联系,能让管理员更方便得查看各个功能的实现情况。系统功能管理的界面如图5-11所示:

图5-11系统功能管理界面

功能之间存在着主次关系,可以通过新建实现新的功能,也可以通过编辑来实现功能间的联系,新建功能如图5-12所示:

图5-12系统新建功能界面

编辑系统子功能如图5-13所示:

图5-13系统功能管理编辑子功能界面

5.2.4  用户管理

     实现用户的管理解决的是学生的使用系统有关的问题,用户管理界面如图5-14所示:

图5-14用户管理界面

用户管理可以对用户进行新增、修改和查询,用户新增界面如图5-15所示:

图5-15用户新增界面

用户修改界面如图5-16所示:

图5-16用户修改界面

用户查询界面如图5-17所示:

图5-17用户查询界面

5.2.5  角色管理

角色管理主要把各个角色之间的权限管理实现了,方便最高权限的人对其他管理员的管理。角色管理界面如图5-18所示:

图5-18角色管理界面

对角色的管理主要体现在对角色的权限控制上,权限设置界面如图5-19所示:

图5-19角色设置界面

角色可以通过添加完成。添加角色界面如图5-20所示:

图5-20角色新增界面

5.2.6  题目管理

题目的管理主要实现对所有考试题目得新增和编辑。题目管理界面如图5-21所示:

图5-21题目管理界面

实现对现有题目的编辑如图5-22所示:

图5-22题目编辑界面

除了对现有题目的修改,还能实现对新题目的添加,新增新题目的界面如图5-23所示:

图5-23题目新增界面

5.2.7  试卷管理

试卷的管理是学生考试的关键功能,试卷管理界面如图5-24所示:

图5-24试卷管理界面

试卷的种类分为很多种,要想从试卷中找到相关的试卷可以启动搜索功能,搜索界面如图5-25所示:

图5-25试卷搜索界面

可以随机抽取题目生成试卷。生成试卷的界面如图5-26所示:

图5-26试卷新增界面

 在DAO层,利用随机函数,(设置试卷题目和插入题目数量)实现自动组卷

public Integer addpaper(Paper paper) {

// TODO Auto-generated method stub

String sql = "INSERT INTO paper(pname,sid) SELECT ?,sid FROM " +

"subject where sstate = 1 ORDER BY rand() LIMIT ?";

Integer rtn  =DBUnitHelper.executeUpdate(sql,paper.getPname(),paper.getScount());

return rtn;

5.3  数据管理

数据管理对代码与数据库之间的连接和交互起作用,数据库交互实现的代码为:

Connection conn = null;

try {

DbUtils.loadDriver("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection(

"jdbc:mysql://localhost:3306/exam", "root", "zhs2668281");

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

完成数据库的连接,进行一些简单的数据库操作,包括增删改查等,主要代码为:

public static Integer executeUpdate(String sql,Object ...objects){

Connection conn = getConn();

QueryRunner qr = new QueryRunner();

Integer rtn = 0;

try {

if(objects == null){

rtn = qr.update(conn, sql);

}else{

rtn = qr.update(conn, sql, objects);

}

} catch (Exception e) {

e.printStackTrace();

}finally{

try {

DbUtils.close(conn);

} catch (Exception e) {

e.printStackTrace();

}

}

return rtn;

}

public static Integer executeUpdate(String sql){

return executeUpdate(sql, null);

}

public static <T> List<T> executeQuery(String sql,Class<T> cls,Object ...objects){

Connection conn = getConn();

List<T> list = null;

try{

QueryRunner rq = new QueryRunner();

if(objects == null){

list = rq.query(conn, sql,new BeanListHandler<T>(cls));

}else{

list = rq.query(conn, sql,new BeanListHandler<T>(cls),objects);

}

}catch(Exception e){

e.printStackTrace();

}finally{

try {

DbUtils.close(conn);

} catch (SQLException e) {

e.printStackTrace();

}

}

return list;

}

其中分页查找的代码为:

/**

 * 带分页的查询

 * @param sql SQL语句

 * @param map SQL参数

 * @param pc 分页控制对象,需要传递参数:当前第几页(currentindex),每页显示多少行:(pagesize)

 * 分页控件显示多少也:showpcount

 * @return

 */

public static <T> Pager<T> execlist(String sql,PageControl pc,Class cls,String pk,Object...object){

//获取总记录数sql  

String sqlcount = "select count(*) as count from ("+sql+") a";

//获取具体数据的SQL语句

Integer min = (pc.getCurrentindex()-1)*pc.getPagesize();

Integer max = pc.getPagesize();

String sqllist = "select * from ("+sql+") a where a."+pk+" limit "+min+","+max;

Connection conn = getConn();

Pager<T> pager = new Pager<T>();

try {

QueryRunner rq = new QueryRunner();

Object count = rq.query(conn, sqlcount, new ScalarHandler<Object>("count"), object);

List<T> list = executeQuery(sqllist,cls,object);

//设置总记录数

Integer c = 0;

if(count!=null){

c=Integer.parseInt(count.toString());

}

pc.setRscount(c);

pager.setList(list);

pc = dealpage(pc);

pager.setPagectrl(pc);

DbUtils.close(conn);

} catch (Exception e) {

e.printStackTrace();

}

return pager;

}


第6章  系统测试

系统测试一个很主要的任务便是检查系统中所存在的一些不足和需要改进的方面,以此来提高整个系统的可靠性。而系统建设的一个更主要的目的是检测整个系统的“执行如何”。这其中可以把它分为三大步,分别是对于模块测试、组装测试以及对于验证的测试。而模块测试即是要测试整个程序的正确与否,装测试便是测试程序的接口正确与否,最后的验证测试是使用者是否满足整个系统软件的功能和性能的关键。一旦经过系统检测测试出所存在的一系列问题的时候就需要经过不断的调试,从而找出具体的错误所存在的位置在哪里,以便更好的改正。黑盒测试要根据系统整体需求说明书,应该全面覆盖到系统联合部件。系统检测是对整个系统进行一系列检测,进一步看看它是否符合需求规格的定义。在与需求规格定义不吻合或者是产生矛盾的地方要做进一步的修改。我们进行的软件测试主要是包括功能测试和兼容性测试。

6.1  功能测试

为了确保程序的正常运行为了保证每个功能都能实现既定的任务,在程序开发结束时应该对整个系统进行功能测试。就像我们所知道的功能测试就是对我们所开发的产品的各个功能进行逐一验证确保只能够完成我们所设计的功能。在功能测试的过程中我们需要用到一些测试用例对每一项功能足以测试从而可以检查我们所设计的系统能不能达到我们当时所期望的所有功能。功能测试从另一个方面来讲也可以叫做黑盒测试或者数据驱动测试,因为在黑盒测试和数据驱动测试系功能测试中我们只需要考虑的是每一个独立功能而不需要考虑整个代码的功能。一般来讲我们可以从系统的每一个小功能开始测试,比如说在本文中体现的就是登陆功能和发表评论功能,通过对这两个小功能的测试我们可以得出结论我们的系统是否满足我们所期望的功能需求的。

我们所接触的功能测试一般也叫黑盒测试,我们部队底层代码或者其他因素进行测试,我们只对各个功能进行测试。我们首先会对整个界面的各个功能进行测试,然后逐步深入,对每一个子功能进行测试,这个就是我们预期的目标。我们需要对所有功能进行测试以确保我们的设计和我们的实现是一致的,这样我们的功能说明说才是真实有效的。

我们进行程序的功能测试主要是对功能完整性进行测试,但是不是做完这些就可以了,我们还要对其他的部分进行测试,这就好比:判断条件的测试,输入的测试等。功能测试如表5.1所示。

表6.1 功能测试表

测试需要达到的目标

进行测试后需要完成下面的目标:

首先我们先检测软件是不是达到了之前提出的要求。这些要求包括每个功能模块是不是已实现。业务的过程是不是正确。这个系统的运行是不是比较稳,系统的性能是不是在能够接受的范围。

测试涉及到的范围

在想清楚使用者希望有什么要求的时间里确定给出的功能模块

技术

先想出测试用例,然后再使用黑盒测试来测试各个用例

开始标准

使用者投入使用,可以正常地操作

    完成标准

功能的实现还有操作空间满足之前的设计标准

测试重点

测试重点:软件兼容性

有必要考虑的事项

界面是不是合适不同尺寸不同分辨率使用

部分测试用例如表6.2、6.3所示:

表6.2 软件测试用例表

用例编号

501

用例名称

开始软件用例测试。

用例简述

用户可以通过click图标来进入软件界面。

参与者

用户。

前置条件

用户已经成功顺利地启动这个软件。

后置条件

体验者能够顺利地通过click按钮来开始一段操作。

成功的条件

体验者触摸按钮就可以正常地操作,功能可以正常使用。

基本事件流

步骤

活动

1

体验者正常按流程启动程序,进入到这个软件的登陆界面,最后进入此程序的主界面。

2

点击选择按钮。

3

界面之间的跳转。

规则与约束

用户按操作说明正确操作

错误等级如表6.3所示:

表6.3 错误等级描述表

错误等级

描述

响应时间

在模拟机上可以横屏显示,真机运行不能横屏显示。

需要对Activity节点进行强制横屏的设置。应立即处理。

软件在电脑中运行时,操作反应时间有些长。

优化处理解决跳转的方法。处理完严重问题后1小时内处理。

不影响系统实现功能,但是在用的时候有些不方便,也可能是设计的界面不太好看。

有时间的话再进行处理就可以。

功能测试会存在一定的等级误差也可以理解成我们所开发的功能是否能满足我们所期望的设计的一个范围因此我们可以将错误的等级划分成几个不同的种类。

表6.4用户管理模块功能测试用例

序号

测试标识

测试项目名称

测试用例输入和说明

预测结果

记录结果

1

用户管理模块功能点。

新增加的用户。

系统管理员点击”新增”这个按钮。

顺利的进入到新增用户的界面。

测试可以通过。

2

用户管理模块功能点。

必填项。

空下必填项,其他填写好并提交。

提示(用户名不能为空)。

测试中发现提示不易理解。

3

用户管理模块功能点。

全部置空。

令所有文本框为空。

提示(用户名不能为空)。

测试中发现提示不易理解。

4

用户管理模块功能点。

提交新增用户信息。

在新增用户界面输入有效数据并点击提交按钮。

添加成功后跳转到用户列表界面。

测试通过。

表6.5角色管理模块功能测试用例

序号

测试标识

测试项目名称

测试用例输入和说明

预测结果

记录结果

1

角色管理模块功能点。

新增角色。

系统管理员单击”新增”按钮。

成功进入到新增角色界面。

测试通过。

2

角色管理模块功能点。

必填项。

空下必填项,其他填写好并提交。

提示(角色名不能为空)。

测试中发现提示不易理解。

3

角色管理模块功能点。

全部置空。

令所有文本框为空。

提示(角色名不能为空)。

测试中发现提示不易理解。

4

角色管理模块功能点。

提交新增角色信息。

在新增角色界面输入有效数据并点击提交按钮。

添加成功后跳转到角色列表界面。

测试通过。

表6.6系统功能管理模块功能测试用例

序号

测试标识

测试项目名称

测试用例输入和说明

预测结果

记录结果

1

系统功能管理模块功能点。

新增系统功能。

系统管理员单击”新增”按钮。

成功进入到新增系统功能界面。

测试通过。

2

系统功能管理模块功能点。

必填项。

空下必填项,其他填写好并提交。

提示(系统功能名,子功能URL不能是空的)。

测试中发现提示不易理解。

3

系统功能管理模块功能点。

全部置空。

令所有文本框为空。

提示(系统功能名不能为空)。

测试中发现提示不易理解。

4

系统功能管理模块功能点。

提交新增系统功能信息。

在新增系统功能界面输入有效数据然后同时点击提交按钮。

添加成功后跳转到系统功能列表界面。

测试通过。

表6.7题目管理模块功功能测试用例

序号

测试标识

测试项目名称

测试用例输入和说明

预测结果

记录结果

1

题目管理模块功能点。

新增题目。

系统管理员单击”新增”按钮。

成功进入到新增题目界面。

测试通过。

2

题目管理模块功能点。

必填项。

空下必填项,其他填写好并提交。

提示(题干,选项,标准答案不能为空)。

测试中发现提示不易理解。

3

题目管理模块功能点。

全部置空。

令所有文本框为空。

提示(题干,选项,标准答案不能为空)。

测试中发现提示不易理解。

4

题目管理模块功能点。

提交新增题目信息。

在新增题目界面输入有效数据并点击提交按钮。

添加成功后跳转到题目列表界面。

测试通过。

表6.8试卷管理模块功能测试用例

序号

测试标识

测试项目名称

测试用例输入和说明

预测结果

记录结果

1

试卷管理模块功能点。

搜索查询试卷。

系统管理员在查询框内输入试卷名并点击查询。

成功搜索出来试卷记录。

测试通过。

2

试卷管理模块功能点。

查看试卷详情。

系统管理员点击查看试题。

成功跳转到试卷详情页面。

测试通过。

3

试卷管理模块功能点。

随机组合试卷。

系统管理员点击新增。

成功跳转到组合试卷页面必填试题数量(试题量高于题库里量按照题库最高数量取出)。

测试通过。

6.2  兼容性测试

兼容性测试是一个系统是否能在各种情况下正常运行的关键,测试的环境主要在各个操作系统和各个浏览器上展开,软件测试中的兼容性测试很重要,如果说一个B/S系统与大多数的主浏览器都不是很兼容,那么这个系统将不能在市场上稳定的运行。在本设计中,我们所提出的系统虽然不用考虑过多的商业因素但是也必须将兼容性测试后考虑在其中,这样能让系统在以后的使用中更加稳定的运行。因此对系统进行一次兼容性测试是很有用的一个检测方式。

6.3  测试的方法

软件测试的常用方法基本有两种:静态测试和动态测试。

1.静态测试主要是指在不运行程序的前提下,通过人工评审程序源代码和程序有关的说明文档以及其他各类资料,来发现软件中存在的逻辑错误和代码错误,但是该类方法有一定的局限性;

2.动态测试顾名思义就是要运行测试程序,检查运行结果和预期结果的差异,并分析运行效率和健壮性等属性,动态测试的关键就是测试用例的构建。目前,大部分公司的测试方式主要是动态测试,动态测试中设计测试用例的方法是白盒法与黑盒法;

白盒测试:也称之为结构测试,是将软件看成了一个透明的白盒子,并按照程序的内部结构与处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查它与设计是否相符。白盒测试:是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。

黑盒测试:也称功能测试,数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。将软件看作黑盒子,在完全不考虑程序的内部结构和特性的情况下,测试软件的外部特性。根据软件的需求规格说明书设计测试用例,从程序的输入和输出特性上测试是否满足设定的功能。

第7章  结束语

这篇论文主要讲述了一个网络考试系统,在实现网络考试系统的时候,我重点完成了以下几点内容:(1)认识国内外网络考试系统的发展情况,深入思考该系统的工作流程;(2)按照该考试系统的工作流程设计该系统的总体结构,绘制结构图;(3)设计系统的功能模块,如:后台系统维护模块,其中包含试题的录入、整理、删除等功能;前台考试模块,其中包括考试题的抽取、考试时间的倒计时等一些功能;教师组题模块,包括考试题的生成、题目形式的选择、每道题分值的设置等功能;设计并完成老师在考试前把题目整理出来功能模块,包括考题类型、数量、每个题分数的设置等;(4)熟练地运用和掌握JavaWeb技术和MySql数据库编程,进行考试系统的程序代码编写、调试运行以及功能测试;(5)了解服务器的部署问题,数据库的存储问题,以及数据库与程序的交互问题。本文总结了当前网络考试系统的应用领域和发展趋势,分析了现今一些考试系统存在的问题,结合我们所使用的考试系统和使用环境,提出了本文设计网络考试系统的必要性。同时,根据系统需求与可行性分析完成了系统架构的方案设计和管理员、学生用户的功能分析以及各个功能的详细实现。课题在具体内容上首先详细介绍了系统所使用的关键技术,并对这些技术的相关知识进行了详细的介绍,紧接着对我的这个系统的结构和还有模块进行了一些详细的解释,最后对这个系统的实现进行分析和演示。

至此,本文所设计的网络考试系统基本完成,但是本文所提出的仅仅是一个的毕业设计,它所涉及的内容和形式都非常有限,在许多功能的实现和完成方式上存在着诸多的不足,这将在今后的学习中得到改进。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/330262.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

变量命名的艺术:从蛇形到驼峰

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、蛇形命名法的魅力 二、类名和模块名的特殊规则 三、驼峰命名法的魅力与挑战 四、保持…

DLRover:蚂蚁集团开源的AI训练革命

在当前的深度学习领域&#xff0c;大规模训练作业面临着一系列挑战。首先&#xff0c;硬件故障或软件错误导致的停机时间会严重影响训练效率和进度。其次&#xff0c;传统的检查点机制在大规模训练中效率低下&#xff0c;耗时长且容易降低训练的有效时间。资源管理的复杂性也给…

新建项目上传gitee

1.在项目根目录下打开黑窗口执行初始化 git init2.复制码云上新建仓库地址 3.本地仓库和远程仓库建立连接 远程仓库地址是之前复制的仓库地址&#xff0c;复制后直接在命令窗口中鼠标右键Paste即可在命令窗口粘贴出来 git remote add origin 远程仓库地址4.每次上传之前先更…

【嵌入式软件工程师面经】Socket,TCP,HTTP之间的区别

目录&#xff1a; 目录 目录&#xff1a; 一、Socket原理与TCP/IP协议 1.1 Socket概念&#xff1a; 1.2 建立Socket连接&#xff1a; 1.3 SOCKET连接与TCP/IP连接 二、HTTP连接&#xff1a; 2.1 HTTP原理 三、三者的区别和联系 前些天发现了一个巨牛的人工智能学习网站&#xf…

头歌openGauss-存储过程第1关:创建存储过程

编程要求 1、创建第1个存储过程&#xff0c;并调用&#xff1b; 1&#xff09;创建存储过程&#xff0c;查询emp表数据&#xff1b; 2&#xff09;调用存储过程&#xff1b; --创建存储过程&#xff0c;获得计算机&#xff08;cs&#xff09;系学生选课情况并将结果写入临时表t…

Excel插入多行VBA实现

我们还可以利用 VBA&#xff08;Visual Basic for Applications&#xff09;宏语言&#xff0c;在 Excel 中写一个 VBA 宏来自动插入多行数据。这种方法可以方便我们自定义需要插入的行数和插入位置。下面是编写 VBA 宏的步骤&#xff1a; 1、按下Alt F11快捷键&#xff0c;打…

JavaScript表达式和运算符

表达式 表达式一般由常量、变量、运算符、子表达式构成。最简单的表达式可以是一个简单的值。常量或变量。例&#xff1a;var a10 运算符 运算符一般用符号来表示&#xff0c;也有些使用关键字表示。运算符由3中类型 1.一元运算符&#xff1a;一个运算符能够结合一个操作数&…

忍の摸头之术游戏娱乐源码

本资源提供给大家学习及参考研究借鉴美工之用&#xff0c;请勿用于商业和非法用途&#xff0c;无任何技术支持&#xff01; 忍の摸头之术游戏娱乐源码&#xff0c;抖音上面非常火的摸头杀画面,看得我眼花缭乱,源码拿去玩吧&#xff1b; 目录说明 忍の摸头之术&#xff1a;域…

物理服务器介绍

物理服务器介绍 概述分类按服务器应用分类按服务器结构分类塔式服务器机架式服务器刀片式服务器机架式服务器与刀片式服务器的对比按处理器个数分类按处理器架构分类 主板概述工作原理物理结构技术参数 CPU概述工作原理指令集相关技术技术参数主流产品 内存概述类型相关技术技术…

【linux特殊符号】

文章目录 学习目标一、Linux的特殊符号1.系统变量2.引号 总结 学习目标 1.学会查看系统变量 2.学会各种引号 3.一、Linux的特殊符号 1.系统变量 windows系统变量&#xff1a;echo %path% linux系统变量&#xff1a;echo $PATH2.引号 " " 双引号&#xff0c;换行…

Vue3路由配置

路由其实就是一组对应关系&#xff0c;将一个路径与一个组件对应起来&#xff0c;当路径发生变化&#xff0c;路由器就可以通过路由规则&#xff0c;找到当前路径对应的组件&#xff0c;并将该组件呈现到页面上 使用路由步骤&#xff1a; 1.终端输入 npm i vue-router 2.在App…

解耦:哪些方法可以用来解耦代码

目录 1.引用 2.为何解耦如此重要 3.如何判断代码是否需要解耦 4.如何给代码解耦 5.思考题 1.引用 前面我们曾经讲到&#xff0c;重构可以分为大型重构和小型重构。小型重构的主要目的是提高代码的可读性&#xff0c;大型重构的主要目的是解耦。本节讲解如何对代码进行解耦…

es问题汇总--待完善

1. 查询某个索引库中数据总量 方式一&#xff1a; CountRequest 鄙人喜欢这种方式 public long getTotalNum(String indexName) throws IOException {CountRequest countRequest new CountRequest(indexName);// 如果需要&#xff0c;你可以在这里添加查询条件// countReques…

MySQL之架构设计与历史(一)

架构设计与历史 概述 和其他数据库系统相比&#xff0c;MySQL有点与众不同&#xff0c;它的架构可以在多种不同场景中应用并发挥好的作用&#xff0c;但同时也会带来一点选择上的困难。MySQL并不完美&#xff0c;却足够灵活&#xff0c;能够适应高要求的环境&#xff0c;例如…

【全开源】班级管家微信小程序(FastAdmin+ThinkPHP)

班级管家微信小程序 班级管家微信小程序&#xff0c;作为一款专注于家校沟通、作业管理、成绩发布等方面的工具&#xff0c;凭借其丰富的特色功能和显著的优势&#xff0c;已经成为广大教师、家长和学生日常学习生活中不可或缺的一部分。 一、特色功能 家校沟通便捷&#xff…

高效利用键盘上的 caps lock(大写键)实现中英切换

先看效果 在中文输入环境中&#xff0c;Caps Lock 键经常被忽视&#xff0c;占据了键盘上的黄金位置却很少派上用场。接下来&#xff0c;我将介绍如何将这个闲置的键合理利用&#xff0c;让它变得更加实用。 第一步 设置&#xff1a; 我以五笔为例&#xff1a; 1.输入法默认…

CCF20230301——田地丈量

CCF20230301——田地丈量 代码如下&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int n,a,b;cin>>n>>a>>b;int x1,x2,y1,y2,x,y,sum0;for(int i0;i<n;i){cin>>x1>>y1>>x2>>y2;xmin(x2,a)-max(x1,…

基础3 探索JAVA图形编程桌面:逻辑图形组件实现

在一个宽敞明亮的培训教室里&#xff0c;阳光透过窗户柔和地洒在地上&#xff0c;教室里摆放着整齐的桌椅。卧龙站在讲台上&#xff0c;面带微笑&#xff0c;手里拿着激光笔&#xff0c;他的眼神中充满了热情和期待。他的声音清晰而洪亮&#xff0c;传遍了整个教室&#xff1a;…

k8s 1.28.10 浏览器访问6443查看api,需要证书

添加证书 使用client-certificate-data和client-key-data生成一个p12文件 1.生成client-certificate-data grep client-certificate-data ~/.kube/config | head -n 1 | awk {print $2} | base64 -d >> kubecfg.crt2.生成client-key-data grep client-key-data ~/.kub…

【每日刷题】Day48

【每日刷题】Day48 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 872. 叶子相似的树 - 力扣&#xff08;LeetCode&#xff09; 2. 114. 二叉树展开为链表 - 力扣&…