• 【毕业设计】基于javaEE+原生Servlet+MySql的网络考试系统设计与实现(毕业论文+程序源码)——网络考试系统


    基于javaEE+原生Servlet+MySql的网络考试系统设计与实现(毕业论文+程序源码)

    大家好,今天给大家介绍基于javaEE+原生Servlet+MySql的网络考试系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。

    文章目录:

    1、项目简介

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

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

    3. 网络考试系统主要用于实现高校在线考试,基本功能包括:自动组卷、试卷发布、试卷批阅、试卷成绩统计等。本系统结构如下:
      (1)学生端:
      登录模块:登录功能;
      网络考试模块:可参加考试,并查看考试结果,提交试卷后老师允许的情况下查看错题;
      (2)超级管理员端:
      登录模块:实现管理员登录功能;
      用户管理模块:实现用户信息的增加、修改、查看功能;
      角色权限管理模块:实现角色的增加、修改、查看功能;
      试卷管理模块:实现试卷信息的增加、修改、查看功能;
      试题管理模块:实现试题信息的增加、修改、查看功能;
      (3)试题管理员端(老师):
      试卷管理模块:实现试卷信息的增加、修改、查看功能;
      试题管理模块:实现试题信息的增加、修改、查看功能;


    2、资源详情

    项目难度:中等难度
    适用场景:相关题目的毕业设计
    配套论文字数:28181个字65页
    包含内容:整套源码+完整毕业论文+答辩PPT+任务书+辅导视频+运行截图


    3、关键词:

    考试;JavaWeb;网络

    4、毕设简介:

    提示:以下为毕业设计的简略介绍,项目源码及完整毕业论文下载地址见文末。

    绪论
    1.1 研究的目的及意义
    省略

    本文开发的网络考试系统具有一定的现实意义,主要是解决教师在出卷、阅卷和统计上花费时间过多的问题。开发一个系统需要考虑很多方面的问题,比如说时效性和高效性这是两个最最常见的因素,因为时效性关系到你的系统在投入使用时是不是真的能够解决当前所存在的这些问题,网络考试系统在国内虽然已经初具规模,一些学校也在使用这种方式考试,但我觉得目前的考试系统还存在着一些未解决的问题,还需进一步完善。同时高效性也是一个非常重要的因素,如果你的系统用了以后还不如不用那么你的系统必定是一个不成功的产品这也是我们开发需要考虑的一个重要问题。

    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中最受欢迎、最有影响的编程语言之一。其最大的特点就是面向对象,这种面向对象的程序设计更接近我们的思维方式,相对于面向过程的程序设计,它最大的优点就是可扩展性和可维护性,这也使我们的代码更健壮。

    省略

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

    省略

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

    MySQL本身的特性也非常的突出,他能够兼容多种操作系统,同时也能兼容多种的编程语言,比如说Linux环境下使用,也同时能够支持多种编程语言并为这些编程语言提供他们所要使用的用户接口。在性能方面具有处理大数据高并发的处理能力,并且不会占用太多的主机内存,这一点相对其他的数据库要好很多。MySQL的架构应用图如2-1所示:
    在这里插入图片描述

    图2-1 Mysql架构服务图

    省略

    可以总结出MySQL具有以下几个特性:
    a. 支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统;
    b. 为多种编程语言提供了API;
    c. 支持多线程,充分利用CPU资源;
    d. 通过优化的SQL语句算法,有效地增进了查询速度;
    e. 能够作为单独的应用程序为客户端服务器网络环境提供数据支持,也能够作为库而嵌入到其他的软件,完成相关的数据存储作用;
    f. 提供多种语言支持,数据表名和数据列名都可以使用多种编码方式如中文的GB 2312、BIG5,日文的Shift_JIS等;
    g. 提供多种用于管理数据库操作的管理工具;
    使用MySql数据库用作集群服务器管理系统的数据库。可以让服务器大量的相关数据得以快捷地查询处理。

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

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

    省略

    2.5 JavaScript
    JavaScript看样子和Java很像,但是,实际上它们之间并没有直接联系,只是大家都以Java开头而已。目前互联网上最重要的语言是什么?不是Java,不是.Net,也不是PHP,而是JavaScript,它是互联网上最重要的语言。它不仅能跨平台、跨浏览器,它还能跨后端语言。

    省略

    2.6 JQuery
    如果把开发人员扔回石器时代,那么JavaScript就是一堆绳子、木头和石头,通过用这些工具,人类就可以在石器时代活下来,同样的,开发人员也能用JavaScript做任何事。但是,如果说我们把绳子、木头和石头组装起来,做成榔头,做成弓箭,那么无论是打猎还是耕作,效率都会有很大的提升。jQuery就是这里的榔头和弓箭。jQuery是由JavaScript写的,它封装了一些我们在创作网页时候常用的操作,比如对DOM的修改、AJAX等操作,这些操作如果让开发人员自己用JavaScript编写,那么可能要花几十行代码,复杂的甚至要上百行,同时考虑到这些操作比较频繁,那么一个页面上你会看到很多很多的JavaScript代码,开发成本和维护成本都会很高,代码也不容易读。

    省略

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

    省略

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

    首先JSP是跨平台的,因为Java就是可移植跨平台的,而JSP技术是建立在Java平台之上,所以使用JSP开发的Web应用也是跨平台的。
    JSP页面不仅可以使用普通网页一样使用标准标记语言的元素(如HTML标记)以外,还可以使用其独有的JSP标记。JSP可以直接向数据库中获取或写入数据,所以通过JSP,我们可以在网页中加入更多动态内容。

    省略

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

    省略

    第3章 可行性与需求分析
    3.1 可行性分析
    省略

    1. 经济可行性
      省略

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

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

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

    (1)学生端:
    登录模块:登录功能;
    网络考试模块:可参加考试,并查看考试结果,提交试卷后老师允许的情况下查看错题;

    (2)超级管理员端:
    登录模块:实现管理员登录功能;
    用户管理模块:实现用户信息的增加、修改、查看功能;
    角色权限管理模块:实现角色的增加、修改、查看功能;
    试卷管理模块:实现试卷信息的增加、修改、查看功能;
    试题管理模块:实现试题信息的增加、修改、查看功能;

    (3)试题管理员端(老师):
    试卷管理模块:实现试卷信息的增加、修改、查看功能;
    试题管理模块:实现试题信息的增加、修改、查看功能;

    二.非功能需求分析
    省略

    第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用户表
      在这里插入图片描述

    用户表ER图,如图4-4所示:
    在这里插入图片描述

    图4-4 用户表ER图
    用户id:每一个登陆的用户都有一个特有的编号;
    角色id:学生、超级管理员、试题管理员,三个角色分别对应一个编号;
    账号:登录时需要用到的;
    密码:密码对应相应的账号;
    姓名:用户的真实姓名;
    状态:1为正常,0为禁用。

    1. 角色表
      表4.2角色表
      在这里插入图片描述

    2. 功能表ER图
      表4.3功能表
      在这里插入图片描述

    功能表ER图,如图4-5所示:
    在这里插入图片描述

    图4-5 功能表ER图
    功能id:每个功能对应的编号;
    功能名:分别有系统功能管理、角色管理、用户管理、题目管理、试卷管理等;
    功能地址:每个功能对应一个地址,用于管理;
    顶层功能id:系统功能包括系统功能管理、角色管理、用户管理,试题管理包括题目管理、试卷管理;
    状态:1为正常,0为禁用。

    1. 权限表ER图
      表4.4权限表
      在这里插入图片描述

    权限表ER图,如图4-6所示:
    在这里插入图片描述

    图4-6 权限表ER图

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

    1. 试题表ER图
      表4.5试题表
      在这里插入图片描述

    试题表ER图,如图4-7所示:
    在这里插入图片描述

    图4-7 试题表ER图
    试题id:每道题对应的编号;
    题干:题目的内容;

    1. 试卷表ER图
      表4.6试卷表
      在这里插入图片描述

    试卷表ER图,如图4-8所示:
    在这里插入图片描述

    图4-8 试卷表ER图
    试卷ID:每套试卷对应的编号;
    试卷名:试卷对应的名字;
    试题id:每道题对应的编号;

    1. 学生试卷表ER图
      表4.7学生试卷表
      在这里插入图片描述

    学生试卷表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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77

    学生得到成绩以后可以对自己的本次成绩进行查看,也能对自己的其他考试试卷的成绩进行查看,查看界面如图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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

    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;
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90

    第6章 系统测试
    省略

    6.1 功能测试
    省略

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

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

    表6.1 功能测试表
    在这里插入图片描述

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

    表6.2 软件测试用例表
    在这里插入图片描述

    错误等级如表6.3所示:
    表6.3 错误等级描述表
    在这里插入图片描述

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

    表6.4用户管理模块功能测试用例
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

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

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

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

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

    第7章 结束语
    这篇论文主要讲述了一个网络考试系统,在实现网络考试系统的时候,我重点完成了以下几点内容:
    (1)认识国内外网络考试系统的发展情况,深入思考该系统的工作流程;
    (2)按照该考试系统的工作流程设计该系统的总体结构,绘制结构图;
    (3)设计系统的功能模块,如:后台系统维护模块,其中包含试题的录入、整理、删除等功能;前台考试模块,其中包括考试题的抽取、考试时间的倒计时等一些功能;教师组题模块,包括考试题的生成、题目形式的选择、每道题分值的设置等功能;设计并完成老师在考试前把题目整理出来功能模块,包括考题类型、数量、每个题分数的设置等;
    (4)熟练地运用和掌握JavaWeb技术和MySql数据库编程,进行考试系统的程序代码编写、调试运行以及功能测试;
    (5)了解服务器的部署问题,数据库的存储问题,以及数据库与程序的交互问题。

    本文总结了当前网络考试系统的应用领域和发展趋势,分析了现今一些考试系统存在的问题,结合我们所使用的考试系统和使用环境,提出了本文设计网络考试系统的必要性。同时,根据系统需求与可行性分析完成了系统架构的方案设计和管理员、学生用户的功能分析以及各个功能的详细实现。课题在具体内容上首先详细介绍了系统所使用的关键技术,并对这些技术的相关知识进行了详细的介绍,紧接着对我的这个系统的结构和还有模块进行了一些详细的解释,最后对这个系统的实现进行分析和演示。

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

    致谢
    省略

    参考文献
    [1] 李英杰. 基于JAVA技术的网络考试管理系统的研究与开发[D]. 上海: 同济大学,2007, (23):页码.
    [2] 王添财. 基于Java EE的在线考试系统的设计与实现[D]. 广东:华南理工大学,2014.
    [3] 刘毅. 人工智能在自动组卷建模中应用研究[J]. 计算机仿真,2011.
    [4] 郭琳. Java Web中错误异常的处理方法分析[J]. 电子技术与软件工程,2015.
    [5] 关海伟. Java Web的云存储技术研究[D]. 西安:西安电子科技大学,2014,(23):页码.
    [6] Renuka Kumar. Detection of Obfuscation in Java Malware[J]. 爱思唯尔期刊,2016.
    [7] 郑保平,郭荣宁. 数据库技术研究综述[J]. 军事通信系统,2003,(18): 页码.
    [8] Ronald P .Anjard. The Basics of Database Management Systems[J]. Emerald期刊,1994.
    [9] Sepideh Naghdi. Preventing database schema extraction by error message handing[J]. 爱思唯尔期刊, 2015.
    [10] 朱少民. 软件测试方法和技术[D]. 北京:清华大学出版社,2010.
    [11] 柳纯录. 软件评测师教程[J]. 北京:清华大学出版社,2005.
    [12] 舒华峰. 自动组卷系统的设计与实现[D]. 吉林:吉林大学,2014,(15):页码.

    附录:
    外文
    省略

    中文翻译

    省略


    5、源码下载:

    本项目源码及论文如下,有需要的朋友可以点击进行下载

  • 相关阅读:
    springboot-mybatisplus-redis二级缓存
    【改造先序遍历】222. 完全二叉树的节点个数
    【企业架构】现代企业架构方法——第 1 章
    离线安装Levenshtein cannot import name ‘_levenshtein‘
    css justify-content Test210428
    动态SQL语句怎么写
    django报错--Not Found The requested URL was not found on the server.
    优秀的ui设计作品(合集)
    Scala爬虫如何实时采集天气数据?
    cdn与云服务器有什么区别
  • 原文地址:https://blog.csdn.net/m0_66238867/article/details/125479263