springboot考试管理系统-计算机毕业设计源码84001
摘要
随着教育信息化的发展,在线考试系统逐渐成为高校与培训机构提升教学效率的重要工具。传统考试方式存在组织复杂、管理困难、数据反馈滞后等问题,已难以满足现代教学的需求。为此,本文设计并实现了一个基于 SpringBoot + Vue + MySQL 的在线考试管理系统,为学生、教师及管理员提供一个高效、便捷、智能的教学辅助平台。系统支持学生用户的注册登录、在线考试、成绩查询、错题记录管理、新闻资讯浏览、异议申请等功能;教师用户可进行题库管理、试卷生成、异议申请处理等操作;管理员则具备对用户、权限、公告、资讯、轮播图等内容的全面管理能力。本系统实现了考试全流程数字化管理,提升了教学互动效率和管理水平。
关键词:考试管理系统;SpringBoot;Vue;MySQL
With the development of educational informatization, the online examination system has gradually become an important tool for colleges and universities and training institutions to improve teaching efficiency. The traditional examination methods have problems such as complex organization, difficult management and lagging data feedback, which have been difficult to meet the needs of modern teaching. Therefore, this paper designs and implements an online examination management system based on SpringBoot + Vue + MySQL, aiming to provide an efficient, convenient and intelligent teaching assistance platform for students, teachers and administrators. The system supports functions such as registration and login for student users, online examinations, score inquiries, wrong question record management, news and information browsing, and objection applications. Teacher users can perform operations such as question bank management, test paper generation, and handling of objection applications. Administrators have the comprehensive management capabilities for users, permissions, announcements, information, carousels and other contents. This system has realized the digital management of the entire examination process, improving the efficiency of teaching interaction and the management level.
Key words: Examination Management System SpringBoot; "Vue;" MySQL
目录
1 绪论
1.1 研究背景
1.2 研究意义
1.3 国内外研究现状
2 相关技术介绍
2.1 B/S框架
2.2 SpringBoot框架
2.3 Vue技术
2.4 MySQL数据库
3 需求分析
3.1 可行性分析
3.1.1 技术可行性
3.1.2 操作可行性
3.1.3 经济可行性
3.2 系统性能需求分析
3.3 功能需求分析
3.3.1 学生用户功能
3.3.2 教师用户功能
3.3.3 管理员功能
3.4 系统总体流程设计
3.4.1 数据开发流程
3.4.2 用户登录流程
3.4.3 系统操作流程
3.4.4 添加信息流程
3.4.5 修改信息流程
3.4.6 删除信息流程
4 系统设计
4.1 系统架构设计
4.2 系统总体功能设计
4.2.1 注册时序图
4.2.2 登录时序图
4.2.3 管理员修改用户信息时序图
4.2.4 管理员管理系统信息时序图
4.3 数据库设计
4.3.1 数据库实体设计
4.3.2 数据库表设计
5 系统实现
5.1 学生用户功能实现
5.1.1 在线考试
5.1.2 新闻资讯
5.1.3 异议申请
5.1.4 错题记录
5.2 教师用户功能实现
5.2.1 后台首页
5.2.2 异议申请管理
5.2.3 科目列表
5.2.4 试题库
5.3 管理员功能实现
5.3.1 后台首页
5.3.2 异议申请管理
5.3.3 资源管理
5.3.4 权限管理
6 系统测试
6.1 测试环境
6.2 测试目的
6.3 测试方法
6.4 测试内容
6.5 测试结论
7 总结
参考文献
致谢
附录
系统核心代码设计
用户注册
用户登录
修改密码
修改数据
删除数据
获取列表
图片上传
考试行业有着悠久的历史,早期主要集中在实体店铺提供的考试交易和相关服务。在这种模式下,考试信息的传播很大程度上依赖于口碑和线下的宣传活动,而考试交易也大多局限于当地的市场。随着社会经济的发展和人们生活水平的提高,对考试的需求逐渐从单纯的获取资格证书扩展到寻求个人成长与职业发展的途径,这促使考试行业朝着多元化和专业化的方向发展。近年来,互联网的普及以及电子商务的兴起极大地改变了考试行业的格局。现在,考试相关的服务和产品可以通过网络平台进行更广泛的传播和销售,突破了地域限制,使更多人能够接触到高质量的教育资源和服务。然而,传统的考试服务模式在信息整合、用户体验及管理效率方面存在诸多不足之处,难以满足现代消费者对于便捷性、高效性和个性化服务的需求。为了解决这些问题,在计算机技术的推动下,考试行业正逐步向数字化和智能化转型。通过信息技术的应用,可以有效地整合考试服务资源,提升用户体验和服务质量,从而更好地满足消费者对于考试产品和服务多样化的需求。
本系统的研发具有重要的现实意义。通过构建基于SpringBoot的考试管理系统,能够有效解决传统考试管理模式中信息分散、管理低效、用户体验差等问题,提升考试服务的信息化与智能化水平。系统为学生提供便捷的在线考试、成绩查询、错题管理等功能,为教师提供试题库维护、智能组卷、阅卷审核等支持,同时为管理员提供全面的用户、权限和内容管理功能。不仅优化了考试流程和教学管理效率,也推动了考试行业的数字化转型,对提升教育服务质量、促进教育公平和现代化发展具有积极作用。
在国内,在线考试管理系统的研究与应用随着教育信息化的发展不断深入。近年来,许多高校、培训机构和企业开始采用基于Web的考试管理系统,以提升考试组织效率和管理水平。目前,国内已有一些成熟的在线考试平台被广泛使用,如超星学习通、雨课堂、蓝墨云班课等,这些平台集成了题库管理、试卷生成、在线考试、自动阅卷等功能,为教师和学生提供了便捷的教学支持。同时,部分高校也开发了自有系统的考试管理模块,结合SpringBoot、Vue、MySQL等主流技术实现功能扩展。然而,现有系统在用户体验、试题资源整合、权限管理等方面仍存在不足,尤其是在多角色协同、异议处理、数据可视化分析等方面仍有待完善。
国外对在线考试管理系统的研究起步较早,技术体系相对成熟。欧美国家的许多高校和教育机构很早就将数字化考试作为教学评估的重要手段。例如,Moodle 是一个国际上广泛应用的开源学习管理系统,其内置的考试模块支持多种题型、智能组卷、自动评分等功能,并具有良好的可扩展性。此外,像Blackboard、Canvas等在线教育平台也都集成了完善的在线考试管理系统,支持大规模并发考试、防作弊机制、成绩统计分析等高级功能。国外系统普遍注重系统的标准化、安全性和数据分析能力,采用先进的架构设计(如微服务、RESTful API)和人工智能辅助评分技术,提升了系统的智能化水平。这些研究成果为国内考试管理系统的开发提供了重要的理论基础和技术参考。
B/S(Browser/Server)架构是一种基于浏览器和服务器的应用架构模式。它以Web浏览器作为客户端,服务器端通过Web技术提供应用服务。客户端通过浏览器与服务器进行交互,用户无需安装专门的客户端应用程序,只需要通过互联网连接即可访问应用程序[1]。在B/S架构中,客户端主要承担用户界面的呈现和基本的输入输出功能,而核心的业务处理、数据存储等操作则由服务器端完成。这种架构的核心优势在于无需在每个客户端机器上安装或更新软件,只要用户的浏览器符合要求,就可以使用系统。
B/S(Browser/Server)架构是一种网络架构模型,其主要特点是客户端通过浏览器与服务器进行通信,所有的业务逻辑和数据处理都在服务器端完成,客户端仅负责展示数据[2]。B/S架构本质上是一种客户端-服务器模式的变体,它通过将传统的C/S(Client/Server)架构中的客户端功能移到浏览器中,简化了客户端的开发和维护工作。在B/S架构中,用户通过浏览器发送请求,浏览器负责展示从服务器获取的数据,服务器则处理请求并返回响应。该架构避免了安装和配置客户端软件的麻烦,也减少了对客户端硬件的依赖,适合于需要大规模部署和跨平台支持的应用系统。
B/S模式三层结构图如图2-1所示。
图2-1 B/S模式三层结构图
-
- SpringBoot框架
SpringBoot是一个用于简化Spring应用开发的开源框架,通过减少开发人员配置和依赖的复杂性,使得开发者能够快速构建基于Spring的生产级应用。SpringBoot基于Spring框架之上,提供了一种自配置的方式,使得开发者可以以最少的配置来启动和开发Spring应用[3]。它通过约定优于配置的原则,将常见的配置预设,使得开发人员能够聚焦于业务逻辑的实现,而不必过多关注繁琐的配置和环境搭建。
SpringBoot框架的核心特点之一是其自动配置功能。它能够根据项目中已存在的类和库,自动推断出开发环境的配置需求,减少了手动配置的工作量。SpringBoot还提供了嵌入式Web服务器支持(如Tomcat、Jetty等),使得应用可以以独立的Java应用形式运行,不再依赖外部的Web容器。这种特性使得SpringBoot特别适合于微服务架构的构建。SpringBoot还通过其提供的启动器(Starters)简化了常见功能的集成,例如数据库连接、消息队列、缓存、认证与授权等,从而提升了开发效率[4]。
-
- Vue技术
Vue.js是一款用于构建用户界面的渐进式JavaScript框架,提供一种灵活而高效的方式来开发单页面应用(SPA)。Vue的设计理念是通过尽量简化开发过程,提供一种声明式的方式来构建用户界面[5]。Vue.js通过数据驱动的视图模型,允许开发者以声明式语法绑定数据与视图,使得应用的状态和界面表现更加简洁和可维护。它的核心思想是通过组件化开发将复杂的UI拆分为可重用的独立模块,从而提升了代码的模块化、可维护性和可扩展性。
Vue.js具备响应式数据绑定和虚拟DOM的特性。响应式数据绑定意味着当数据变化时,Vue会自动更新与之绑定的DOM元素,从而实现视图的实时更新。虚拟DOM则是Vue.js的一种优化手段,通过将对DOM的操作抽象为一个虚拟的DOM树来提高性能,减少实际DOM操作的开销[6]。Vue还提供了丰富的插件和工具,如Vue Router用于路由管理,Vuex用于状态管理,方便开发者构建复杂的前端应用。Vue的灵活性和简洁性使其成为现代Web开发中常用的前端框架之一。
-
- MySQL数据库
MySQL是一种开源的关系型数据库管理系统(RDBMS),基于SQL(结构化查询语言)进行数据操作。作为一个被广泛使用的数据库系统,MySQL具有高度的性能、可扩展性和可靠性。MySQL使用表格结构来存储数据,每个表由多个列和行组成,数据通过SQL查询语言进行操作[7]。MySQL支持多种数据类型,如整数、浮动小数、字符串、日期等,以满足不同应用场景对数据存储的需求。在实际应用中,MySQL通常用于存储和管理结构化数据,通过索引、视图、触发器等功能提升数据查询的效率和数据的完整性[8]。
MySQL支持ACID事务特性(原子性、一致性、隔离性、持久性),确保数据库操作的可靠性和数据的一致性。它还支持多种存储引擎,其中InnoDB是最常用的存储引擎,具备事务支持、行级锁定和外键约束等特性,适用于高并发、高可靠性的数据存储需求。MySQL可以通过主从复制、分区和分库分表等技术实现横向扩展,以应对大规模数据存储和高负载的应用需求。MySQL还具有灵活的权限管理机制,支持用户角色管理、细粒度的权限控制等,保障数据的安全性。
本系统采用当前主流且成熟的技术栈进行开发,具备良好的技术可行性。后端基于Spring Boot框架构建,该框架封装了常用的配置和依赖管理,简化了传统Spring项目的复杂度,并支持快速部署与微服务架构,具有良好的可扩展性和维护性。前端采用Vue.js框架,结合Element UI组件库,能够高效实现响应式页面和用户交互功能,提升用户体验。数据库选用MySQL,其性能稳定、安全性高,适合中小型系统的数据存储需求。同时,系统可借助Redis实现缓存优化,提高数据读取效率;使用MyBatis Plus提升数据库操作效率;利用JWT实现安全的用户认证机制。上述技术均已广泛应用,开发工具完善,社区资源丰富,开发人员具备较强的技术掌握能力,能够保障系统的顺利开发与后期维护。因此,从技术角度出发,本系统具备较高的可行性。
本考试管理系统在操作层面同样具备高度的可行性。系统设计注重用户体验,前端界面采用直观易用的设计风格,确保所有用户角色(学生、教师和管理员)都能方便快捷地完成各自的操作任务。对于学生用户,系统提供了清晰的导航结构和简洁的操作流程,支持参加考试、查看成绩与错题记录等核心功能,使得学生可以轻松访问所需资源和服务。教师用户则可以通过后台管理界面高效地进行题库维护、试卷生成、考试评分及异议申请处理等操作,所有功能模块布局合理,操作简便,减少了学习成本和操作复杂度。管理员用户拥有最高权限,能够便捷地进行用户管理、权限分配、公告发布、资讯更新以及系统配置等操作,通过图形化的管理界面实现对整个系统的有效监控和管理。
基于SpringBoot的考试管理系统的开发与部署具备显著的经济可行性。首先,从开发成本角度来看,所选用的技术栈(如Spring Boot、Vue.js、MySQL等)均为开源技术,无需支付高昂的软件授权费用,这大大降低了初始开发成本。同时,这些技术拥有庞大的社区支持和丰富的插件库,有助于减少开发周期并提高开发效率,从而节省人力资源成本。其次,在硬件投入方面,系统可以部署在云服务器上,例如阿里云或腾讯云提供的服务,这种模式可以根据实际需求灵活调整资源配置,避免了初期高额的硬件采购费用,并减少了后期维护成本。
1.可用性需求
系统应具备良好的可用性,确保用户能够随时访问核心功能。在正常网络环境下,系统需支持7×24小时不间断运行,避免因服务中断影响学生在线考试与教师阅卷等关键操作。同时,界面设计应简洁直观,操作流程清晰,提升用户使用效率,确保各类用户均能高效、稳定地使用系统。
2.可靠性需求
系统的可靠性是指在各种运行环境下,系统对数据处理的正确性和业务逻辑的稳定性。考试管理系统需要保证在高并发情况下(如大规模考生同时在线考试)仍能稳定运行,不出现数据丢失或功能异常的情况。系统应具有良好的容错机制,在发生输入错误、网络波动或操作失误时仍能保持正常运行,并通过日志记录和异常监控及时发现并处理问题,从而保障考试过程的公平性和数据的完整性。
3.安全性需求
由于系统涉及用户个人信息、考试成绩、试题库等内容,因此必须具备完善的安全防护机制。系统应采用严格的权限控制策略,确保不同角色用户只能访问其授权范围内的资源。用户登录需通过加密验证(如JWT+Token机制),敏感数据传输应采用HTTPS协议进行加密,防止信息泄露。此外,系统应定期进行安全审计与漏洞检测,并具备防SQL注入、XSS攻击等常见网络攻击的能力,保障系统数据的机密性、完整性和可追溯性。
功能需求分析是对系统所需功能进行详细描述的过程,明确系统的目标、功能模块及其相互关系。在此阶段,结合用户需求、业务流程和技术架构,识别系统必须实现的各项功能,并对其优先级、实现方式和约束条件进行梳理。通过功能需求分析,确保系统设计能够满足实际需求,且具有良好的可用性、可维护性和扩展性,为后续的系统开发和测试提供明确的指导和依据。
注册登录:学生可通过注册账号并完成基本信息填写后进行登录,登录时需验证用户名、密码结合验证码机制提高安全性。
首页展示:首页包含轮播图以及新闻资讯的快速浏览区域,便于学生第一时间获取平台重点信息。
在线考试:学生可根据科目名称搜索相应的考试任务,在线答题并提交试卷;考试结束后可查看考试成绩,成绩信息包括得分、排名及各题作答情况。
通知公告:系统提供统一的通知公告展示页面,学生可查阅平台发布的各类通知,如考试安排、系统更新等重要信息。
新闻资讯:学生可以查看热门资讯内容,支持通过关键词搜索、分类筛选、按发布时间排序等功能,并可对感兴趣的内容进行点赞、收藏和发表评论。
异议申请:若学生对考试成绩有疑问,可在系统中填写异议申请表单,包括标题、姓名、学号、申请日期、申请内容等字段,并提交等待教师审核处理。
我的账户:该模块允许学生修改个人资料和更换头像,同时支持修改登录密码,保障账户安全性和个性化需求。
个人中心:
异议申请:可查询本人提交的所有异议申请详情,支持重置搜索条件,如通过申请标题、学生姓名、审核状态等条件筛选已申请记录。
错题记录:系统自动保存学生考试中的错题,学生可在此模块查询、删除错题记录,也可通过科目名称和题目名称进行精准搜索。
收藏管理:学生可查看自己收藏的试题或资讯内容,并支持删除操作,方便复习和回顾。
评论管理:学生可查看自己发表过的评论,支持重置搜索、删除评论,并能查看到被他人回复的评论内容,提升互动体验。
学生用户用例图如图3-1所示。
图3-1 学生用户用例图
登录:教师账户需由管理员添加至系统中后,方可通过用户名和密码及验证码机制进行登录。
后台首页:提供直观的数据统计视图,包括考试科目试卷平均分统计图表、考试成绩统计表,帮助教师快速了解教学效果。
异议申请管理:教师可以查询、重置与自己相关的异议申请列表详情,包括学生提交的异议申请标题、姓名、学号、申请日期及具体内容等信息。对于每一条异议申请,教师需要根据实际情况进行审核,并填写审核意见和结果。
在线考试:
科目列表:教师能够对考试科目进行查询、重置、删除和添加操作,方便灵活地调整考试内容。每个科目记录包含科目名称、创建时间、状态(启用/停用)等基本信息。
试题库:教师可以通过下载模板文件批量导入试题,或者手动逐条添加试题至题库中。题库中的题目包含科目、类型(单选题、多选题、判断题等)、题目、选项、参考答案以及分值等信息。同时,支持导出题库文档,便于备份或共享使用。教师还可以对题库中的题目执行删除、重置和查询操作,确保题库内容的准确性和时效性。
试卷列表:教师可以创建新的试卷,设定试卷名称、所属科目、答题时长、总分值以及试卷状态。在生成试卷时,可以选择从题库中手动挑选题目,或者根据预设规则自动生成试卷,例如指定单选题数量、多选题数量、判断题数量等。试卷生成后,教师能够对其进行评分,查看考生作答情况,并根据实际需要调整试卷结构或重新评分。
教师用户用例图如图3-2所示。
图3-2 教师用户用例图
后台首页:展示关键的统计数据图表,包括试卷平均分统计数据图、考试成绩数据统计图等,帮助管理员快速了解系统运行状况和教学效果。
系统用户管理:管理员能够全面管理所有类型的用户,包括管理员自身、学生用户和教师用户。管理员对教师账户需预先创建添加,之后教师才能顺利登录系统开展工作。
异议申请管理:管理员有权查看所有用户提交的异议申请列表详情,并可以根据需要执行查询、重置、删除操作。对于每一条异议申请,管理员可以审核其内容并决定是否批准学生的请求,同时填写审核意见以便记录处理结果。
系统管理:轮播图管理,管理员可以添加、删除、重置以及查询轮播图,用于在系统首页展示重要信息或活动通知。
通知公告管理:管理员负责发布、编辑、删除通知公告,确保学生和教师能够及时获取最新的系统消息或政策变动。
资源管理:管理员可以查询、重置、删除、添加新闻资讯,并查看用户对资讯的评论情况。为了更好地组织和呈现新闻资讯,管理员还可以对资讯分类进行查询、重置、删除和添加操作,方便用户根据兴趣选择阅读内容。
在线考试:
科目列表管理:管理员可以查询、重置、删除、添加考试科目列表,确保系统中的科目信息准确无误。
试题库管理:支持从本地文件下载模板批量导入试题,或者手动逐条添加至题库中。管理员还能导出题库文档,便于备份或共享使用。题库中的题目应包含科目、类型(单选题、多选题、判断题等)、题目正文、选项(针对选择题)、参考答案及分值等信息。此外,还支持对题库中的题目执行删除、重置和查询操作。
错题记录管理:管理员可以查询、重置、删除学生的错题记录,通过科目名称、题目名称等条件搜索具体错题,以便于分析学生的学习情况。
试卷列表管理:管理员能够添加、删除、重置、查询试卷列表,设定试卷的基本属性(如科目名称、试卷名称、答题时长、总分值、状态等),并对试卷进行评分和查看分数分布情况。
权限管理:管理员负责对系统内所有用户的角色权限进行精细化管理,包括添加、修改、删除和查询权限设置。可以为不同角色分配不同的操作权限,确保系统的安全性与灵活性。
管理员用例图如图3-3所示。
图3-3管理员用例图
系统开发流程的主要步骤,从需求分析到系统完成的全过程。流程包括需求分析、总体设计(结构、功能、数据)、详细设计(模块、编码)、模块整合与调用,以及测试、扩展和完善,最终完成系统的开发。本系统的开发流程如图3-4所示
图3-4系统开发流程图
用户输入用户名和密码后,系统先检查输入是否为空,再验证用户名是否存在,若存在则通过用户名获取密码并校验。若密码正确则登录成功,否则提示密码错误。若用户名不存在或无法登录,提示用户操作无效。如图3-5所示。
图3-5登录流程图
用户首先进入系统登录界面,输入用户名和密码后,系统验证信息是否正确。若验证失败,返回登录界面重新输入;若验证成功,则进入功能界面,执行相应功能处理后结束操作流程。操作流程如图3-6所示。
图3-6系统操作流程图
管理员可以添加信息,用户添加可以自己权限内的信息,输入信息后,要想利用这个软件来进行系统的安全管理,首先需要登录到该软件中。添加信息流程如图3-7所示。
图3-7 添加信息流程图
用户首先选择需要修改的记录,输入修改后的数据,系统判断输入数据是否合法。若数据不合法,提示重新输入;若数据合法,则将修改后的数据写入数据库,完成操作后流程结束。修改信息流程图如图3-8所示。
图3-8修改信息流程图
用户选择需要删除的记录后,系统判断是否确认删除。若未确认,返回选择环节;若确认删除,则更新数据库,删除对应记录,完成操作后流程结束。删除信息流程图如图3-9所示。
图3-9删除信息流程图
系统由表现层、业务逻辑层、数据访问层和数据库服务器组成。表现层通过浏览器(如IE、Chrome、Firefox)与用户交互,采用FreeMarker、Bootstrap、jQuery等技术实现界面呈现。业务逻辑层负责处理系统的核心业务逻辑,通过分模块设计实现功能分离。数据访问层使用MyBatis框架连接数据库,执行数据的增删改查操作。数据库服务器采用MySQL进行数据存储和管理,为系统提供稳定的数据库支持。整个架构通过Tomcat服务器完成用户请求的接收和处理,确保系统的高效运行。整个系统架构如图4-1所示。
图4-1 系统架构图
系统功能结构图如图4-2所示。
图4-2 系统功能结构图
用户通过注册模块发送注册请求,系统完成注册后返回确认信息。随后,用户通过登录模块发送登录请求,系统验证用户信息后允许访问目标系统。用户完成操作后可选择退出,系统终止会话。注册时序图如图4-3所示。
图4-3 注册时序图
管理员输入登录信息后,登录界面将信息传递至前台管理界面,随后通过SpringBoot框架读取数据库中的用户信息并返回。系统验证信息,若验证成功则登录成功,若验证失败则返回错误提示。登录时序图如图4-4所示。
图4-4登录时序图
管理员输入登录信息后,进入用户信息管理模块,选择增删改查操作并提交命令至数据库。数据库执行操作后返回成功状态,系统显示用户管理界面并提示操作成功。管理员修改用户信息时序图如图4-5所示。
图4-5管理员修改用户信息时序图
管理员通过访问系统发起请求,系统接收访问后转向系统信息模块进行管理操作。管理完成后,系统返回管理结果至系统,最终反馈给管理员,管理员可选择退出。管理员管理系统信息时序图如图4-6所示。
图4-6管理员管理系统信息时序图
数据库设计是系统开发中至关重要的环节,为系统提供高效、规范的数据存储和管理方案。设计过程包括需求分析、实体设计、表设计和逻辑结构设计。首先,通过分析业务需求,确定系统的核心实体及其属性,同时明确实体间的关系。接着,将实体抽象为具体的数据库表,为每张表定义字段名、数据类型、主键和外键,通过主外键关系和关联表设计,保证数据的完整性和一致性。最后,数据库逻辑设计进一步优化表之间的关系,通过索引、视图和存储过程提升查询效率和操作性能。整个设计需严格遵循规范,避免数据冗余和冲突,确保系统在高并发访问和复杂数据处理场景下的稳定性和高效性。
数据库实体设计是数据库设计的关键步骤,对实际业务逻辑中涉及的实体及其属性进行抽象建模,明确系统中的主要信息对象及其关系。根据系统功能需求确定了用户、角色、权限、科目、试题、试卷、成绩、异议申请等核心实体。每个实体均提取了关键属性,如用户实体包含ID、用户名、密码、角色ID等,科目实体包含科目ID和名称,试题实体包含题目内容、题型、分值等信息。同时定义了实体之间的关系,如用户与角色之间是一对一的关系,试卷与试题之间是多对多的关系。设计过程中遵循数据库规范化原则,确保数据完整性、唯一性和一致性,减少冗余和异常操作,为系统的稳定运行和高效查询提供良好的数据结构支撑。
以下将展示系统的全局E-R图。
系统全局E-R图如图4-7所示。
图4-7系统E-R图
数据库表设计基于实体设计,将抽象的实体映射为具体的表结构。设计过程中,为每个实体定义表名、字段名及数据类型。根据业务需求,合理定义主键、外键及约束条件,确保表之间的关联性,例如通过外键建立用户表和角色表之间的关系。表设计时注重数据存储的完整性、一致性,并通过索引优化查询效率,最终确保数据库结构能够支持系统的功能需求。以下是系统的数据库表设计展示。
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | token_id | int | 是 | 是 | 临时访问牌ID | |
2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
3 | info | text | 65535 | 否 | 否 | 信息 |
4 | maxage | int | 是 | 否 | 最大寿命:默认2小时 | |
5 | create_time | timestamp | 是 | 否 | 创建时间 | |
6 | update_time | timestamp | 是 | 否 | 更新时间 | |
7 | user_id | int | 是 | 否 | 用户编号 |
表 4-2-article(文章)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | article_id | mediumint | 是 | 是 | 文章id | |
2 | title | varchar | 125 | 是 | 是 | 标题 |
3 | type | varchar | 64 | 是 | 否 | 文章分类 |
4 | hits | int | 是 | 否 | 点击数 | |
5 | praise_len | int | 是 | 否 | 点赞数 | |
6 | create_time | timestamp | 是 | 否 | 创建时间 | |
7 | update_time | timestamp | 是 | 否 | 更新时间 | |
8 | source | varchar | 255 | 否 | 否 | 来源 |
9 | url | varchar | 255 | 否 | 否 | 来源地址 |
10 | tag | varchar | 255 | 否 | 否 | 标签 |
11 | content | longtext | 4294967295 | 否 | 否 | 正文 |
12 | img | varchar | 255 | 否 | 否 | 封面图 |
13 | description | text | 65535 | 否 | 否 | 文章描述 |
表 4-3-article_type(文章分类)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | type_id | smallint | 是 | 是 | 分类ID | |
2 | display | smallint | 是 | 否 | 显示顺序 | |
3 | name | varchar | 16 | 是 | 否 | 分类名称 |
4 | father_id | smallint | 是 | 否 | 上级分类ID | |
5 | description | varchar | 255 | 否 | 否 | 描述 |
6 | icon | text | 65535 | 否 | 否 | 分类图标 |
7 | url | varchar | 255 | 否 | 否 | 外链地址 |
8 | create_time | timestamp | 是 | 否 | 创建时间 | |
9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-4-auth(用户权限管理)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | auth_id | int | 是 | 是 | 授权ID | |
2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
4 | table_name | varchar | 64 | 否 | 否 | 表名 |
5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
6 | path | varchar | 255 | 否 | 否 | 路由路径 |
7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
8 | parent_sort | int | 是 | 否 | 父级菜单排序 | |
9 | position | varchar | 32 | 否 | 否 | 位置 |
10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
11 | add | tinyint | 是 | 否 | 是否可增加 | |
12 | del | tinyint | 是 | 否 | 是否可删除 | |
13 | set | tinyint | 是 | 否 | 是否可修改 | |
14 | get | tinyint | 是 | 否 | 是否可查看 | |
15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
20 | option | text | 65535 | 否 | 否 | 配置 |
21 | create_time | timestamp | 是 | 否 | 创建时间 | |
22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-5-code_token(验证码)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | code_token_id | int | 是 | 是 | 验证码ID | |
2 | token | varchar | 255 | 否 | 否 | 令牌 |
3 | code | varchar | 255 | 否 | 否 | 验证码 |
4 | expire_time | timestamp | 是 | 否 | 失效时间 | |
5 | create_time | timestamp | 是 | 否 | 创建时间 | |
6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-6-collect(收藏)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | collect_id | int | 是 | 是 | 收藏ID | |
2 | user_id | int | 是 | 是 | 收藏人ID | |
3 | source_table | varchar | 255 | 否 | 否 | 来源表 |
4 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
5 | source_id | int | 是 | 否 | 来源ID | |
6 | title | varchar | 255 | 否 | 否 | 标题 |
7 | img | varchar | 255 | 否 | 否 | 封面 |
8 | create_time | timestamp | 是 | 否 | 创建时间 | |
9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-7-comment(评论)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | comment_id | int | 是 | 是 | 评论ID | |
2 | user_id | int | 是 | 是 | 评论人ID | |
3 | reply_to_id | int | 是 | 否 | 回复评论ID | |
4 | content | longtext | 4294967295 | 否 | 否 | 内容 |
5 | nickname | varchar | 255 | 否 | 否 | 昵称 |
6 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
7 | create_time | timestamp | 是 | 否 | 创建时间 | |
8 | update_time | timestamp | 是 | 否 | 更新时间 | |
9 | source_table | varchar | 255 | 否 | 否 | 来源表 |
10 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
11 | source_id | int | 是 | 否 | 来源ID |
表 4-8-exam_question_database(试题库)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | exam_question_id | mediumint | 是 | 是 | 试题库ID | |
2 | subject_name | varchar | 255 | 否 | 否 | 科目名称 |
3 | type | varchar | 20 | 否 | 否 | 类型 |
4 | title | varchar | 255 | 否 | 否 | 题目 |
5 | question_item | varchar | 500 | 否 | 否 | 选项 |
6 | answer | varchar | 500 | 否 | 否 | 参考答案 |
7 | score | double | 否 | 否 | 总分 | |
8 | create_time | timestamp | 是 | 否 | 创建时间 | |
9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-9-hits(用户点击)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | hits_id | int | 是 | 是 | 点赞ID | |
2 | user_id | int | 是 | 否 | 点赞人 | |
3 | create_time | timestamp | 是 | 否 | 创建时间 | |
4 | update_time | timestamp | 是 | 否 | 更新时间 | |
5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
7 | source_id | int | 是 | 否 | 来源ID |
表 4-10-notice(公告)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | notice_id | mediumint | 是 | 是 | 公告ID | |
2 | title | varchar | 125 | 是 | 否 | 标题 |
3 | content | longtext | 4294967295 | 否 | 否 | 正文 |
4 | create_time | timestamp | 是 | 否 | 创建时间 | |
5 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-11-objection_application(异议申请)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | objection_application_id | int | 是 | 是 | 异议申请ID | |
2 | application_title | varchar | 64 | 否 | 否 | 申请标题 |
3 | student_users | int | 否 | 否 | 学生用户 | |
4 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
5 | student_number | varchar | 64 | 否 | 否 | 学生学号 |
6 | teacher_user | int | 否 | 否 | 教师用户 | |
7 | application_date | date | 否 | 否 | 申请日期 | |
8 | application_content | text | 65535 | 否 | 否 | 申请内容 |
9 | collect_len | int | 是 | 否 | 收藏数 | |
10 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
11 | examine_reply | varchar | 255 | 否 | 否 | 审核回复 |
12 | create_time | datetime | 是 | 否 | 创建时间 | |
13 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-12-praise(点赞)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | praise_id | int | 是 | 是 | 点赞ID | |
2 | user_id | int | 是 | 是 | 点赞人 | |
3 | create_time | timestamp | 是 | 否 | 创建时间 | |
4 | update_time | timestamp | 是 | 否 | 更新时间 | |
5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
7 | source_id | int | 是 | 否 | 来源ID | |
8 | status | tinyint | 是 | 否 | 点赞状态:1为点赞,0已取消 |
表 4-13-slides(轮播图)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | slides_id | int | 是 | 是 | 轮播图ID | |
2 | title | varchar | 64 | 否 | 否 | 标题 |
3 | content | varchar | 255 | 否 | 否 | 内容 |
4 | url | varchar | 255 | 否 | 否 | 链接 |
5 | img | varchar | 255 | 否 | 否 | 轮播图 |
6 | hits | int | 是 | 否 | 点击量 | |
7 | create_time | timestamp | 是 | 否 | 创建时间 | |
8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-14-student_users(学生用户)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | student_users_id | int | 是 | 是 | 学生用户ID | |
2 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
3 | student_gender | varchar | 64 | 否 | 否 | 学生性别 |
4 | student_phone | varchar | 16 | 否 | 否 | 学生电话 |
5 | student_number | varchar | 64 | 是 | 是 | 学生学号 |
6 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
7 | user_id | int | 是 | 否 | 用户ID | |
8 | create_time | datetime | 是 | 否 | 创建时间 | |
9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-15-subject(科目)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | subject_id | int | 是 | 是 | 科目ID | |
2 | name | varchar | 255 | 否 | 否 | 科目名称 |
3 | update_time | timestamp | 是 | 否 | 更新时间 | |
4 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-16-subject_exam(考试)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | exam_id | mediumint | 是 | 是 | 考试id | |
2 | subject_name | varchar | 255 | 否 | 否 | |
3 | name | varchar | 32 | 是 | 否 | 考试名称:[2,32] |
4 | duration | int | 否 | 否 | 答题时长 | |
5 | score | double | 否 | 否 | 总分 | |
6 | status | varchar | 10 | 否 | 否 | 状态:启用、禁用 |
7 | create_time | timestamp | 是 | 否 | 创建时间: | |
8 | update_time | timestamp | 是 | 否 | 更新时间: | |
9 | user_id | int | 否 | 否 | 出题人 |
表 4-17-subject_exam_question(试题)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | exam_question_id | mediumint | 是 | 是 | 试题ID | |
2 | subject_name | varchar | 255 | 否 | 否 | 科目名称 |
3 | type | varchar | 20 | 否 | 否 | 类型 |
4 | title | varchar | 255 | 否 | 否 | 题目 |
5 | question_item | varchar | 500 | 否 | 否 | 选项 |
6 | answer | varchar | 500 | 否 | 否 | 参考答案 |
7 | score | double | 否 | 否 | 总分 | |
8 | question_order | int | 否 | 否 | 排序 | |
9 | exam_id | mediumint | 是 | 是 | 所属试卷 | |
10 | create_time | timestamp | 是 | 否 | 创建时间 | |
11 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-18-subject_user_answer(用户答题)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | user_answer_id | mediumint | 是 | 是 | 用户答题ID | |
2 | user_id | mediumint | 是 | 否 | 用户ID | |
3 | exam_id | mediumint | 是 | 否 | 考试id | |
4 | score | double | 否 | 否 | 分数 | |
5 | answers | text | 65535 | 否 | 否 | 答案 |
6 | score_detail | text | 65535 | 否 | 否 | 评分详情 |
7 | objective_score | double | 否 | 否 | 客观题得分 | |
8 | subjective_score | double | 否 | 否 | 主观题得分 | |
9 | score_state | tinyint | 否 | 否 | 评分状态 | |
10 | nickname | varchar | 255 | 否 | 否 | 提交人 |
11 | create_time | timestamp | 是 | 否 | 创建时间 | |
12 | update_time | timestamp | 是 | 否 | 更新时间 | |
13 | comment_desc | varchar | 255 | 否 | 否 | 评语 |
表 4-19-teacher_user(教师用户)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | teacher_user_id | int | 是 | 是 | 教师用户ID | |
2 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
3 | gender_of_teachers | varchar | 64 | 否 | 否 | 教师性别 |
4 | teachers_telephone | varchar | 16 | 否 | 否 | 教师电话 |
5 | teachers_work_number | varchar | 64 | 是 | 是 | 教师工号 |
6 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
7 | user_id | int | 是 | 否 | 用户ID | |
8 | create_time | datetime | 是 | 否 | 创建时间 | |
9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-20-upload(文件上传)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | upload_id | int | 是 | 是 | 上传ID | |
2 | name | varchar | 64 | 否 | 否 | 文件名 |
3 | path | varchar | 255 | 否 | 否 | 访问路径 |
4 | file | varchar | 255 | 否 | 否 | 文件路径 |
5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
6 | father_id | int | 否 | 否 | 父级ID | |
7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-21-user(用户账户)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | user_id | int | 是 | 是 | 用户ID | |
2 | state | smallint | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) | |
3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
4 | login_time | timestamp | 是 | 否 | 上次登录时间 | |
5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
6 | phone_state | smallint | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) | |
7 | username | varchar | 16 | 是 | 否 | 用户名 |
8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
9 | password | varchar | 64 | 是 | 否 | 密码 |
10 | | varchar | 64 | 否 | 否 | 邮箱 |
11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) | |
12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-22-user_answer_wrong(用户错题)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | user_answer_id | mediumint | 是 | 是 | 用户错题ID | |
2 | subject_name | varchar | 255 | 否 | 否 | 科目名称 |
3 | question_item | varchar | 255 | 否 | 否 | 选项 |
4 | title | varchar | 255 | 否 | 否 | 题目 |
5 | type | varchar | 255 | 否 | 否 | 题目类型 |
6 | exam_id | mediumint | 是 | 是 | 考试ID | |
7 | score | double | 否 | 否 | 分数 | |
8 | answers | text | 65535 | 否 | 否 | 用户提交的答案 |
9 | answer | text | 65535 | 否 | 否 | 参考答案 |
10 | score_detail | text | 65535 | 否 | 否 | 评分详情 |
11 | objective_score | double | 否 | 否 | 客观题得分 | |
12 | subjective_score | double | 否 | 否 | 主观题得分 | |
13 | score_state | tinyint | 否 | 否 | 评分状态 | |
14 | nickname | varchar | 255 | 否 | 否 | 提交人 |
15 | user_id | int | 是 | 否 | 提交人ID | |
16 | create_time | timestamp | 是 | 否 | 创建时间 | |
17 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-23-user_group(用户组)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | group_id | mediumint | 是 | 是 | 用户组ID | |
2 | display | smallint | 是 | 否 | 显示顺序 | |
3 | name | varchar | 16 | 是 | 否 | 名称 |
4 | description | varchar | 255 | 否 | 否 | 描述 |
5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
7 | source_id | int | 是 | 否 | 来源ID | |
8 | register | smallint | 否 | 否 | 注册位置 | |
9 | create_time | timestamp | 是 | 否 | 创建时间 | |
10 | update_time | timestamp | 是 | 否 | 更新时间 |
学生可根据科目名称搜索相应的考试任务,在线答题并提交试卷;考试结束后可查看考试成绩,成绩信息包括得分、排名及各题作答情况。在线考试界面如图5-1所示。
图5-1在线考试界面
学生可以查看热门资讯内容,支持通过关键词搜索、分类筛选、按发布时间排序等功能,并可对感兴趣的内容进行点赞、收藏和发表评论。新闻资讯界面如图5-2所示。
图5-2新闻资讯界面
若学生对考试成绩有疑问,可在系统中填写异议申请表单,包括标题、姓名、学号、申请日期、申请内容等字段,并提交等待教师审核处理。异议申请界面如图5-3所示。
图5-3异议申请界面
系统自动保存学生考试中的错题,学生可在此模块查询、删除错题记录,也可通过科目名称和题目名称进行精准搜索。错题记录界面如图5-4所示。
图5-4错题记录界面
提供直观的数据统计视图,包括考试科目试卷平均分统计图表、考试成绩统计表,帮助教师快速了解教学效果。后台首页界面如图5-5所示。
图5-5后台首页界面
教师可以查询、重置与自己相关的异议申请列表详情,包括学生提交的异议申请标题、姓名、学号、申请日期及具体内容等信息。对于每一条异议申请,教师需要根据实际情况进行审核,并填写审核意见和结果。异议申请管理界面如图5-6所示。
图5-6异议申请管理界面
教师能够对考试科目进行查询、重置、删除和添加操作,方便灵活地调整考试内容。每个科目记录包含科目名称、创建时间、状态(启用/停用)等基本信息。科目列表界面如图5-7所示。
图5-7科目列表界面
教师可以通过下载模板文件批量导入试题,或者手动逐条添加试题至题库中。题库中的题目包含科目、类型(单选题、多选题、判断题等)、题目、选项、参考答案以及分值等信息。同时,支持导出题库文档,便于备份或共享使用。教师还可以对题库中的题目执行删除、重置和查询操作,确保题库内容的准确性和时效性。试题库界面如图5-8所示。
图5-8试题库界面
展示关键的统计数据图表,包括试卷平均分统计数据图、考试成绩数据统计图等,帮助管理员快速了解系统运行状况和教学效果。后台首页界面如图5-9所示。
图5-9后台首页界面
管理员有权查看所有用户提交的异议申请列表详情,并可以根据需要执行查询、重置、删除操作。对于每一条异议申请,管理员可以审核其内容并决定是否批准学生的请求,同时填写审核意见以便记录处理结果。异议申请管理界面如图5-10所示。
图5-10异议申请管理界面
管理员可以查询、重置、删除、添加新闻资讯,并查看用户对资讯的评论情况。为了更好地组织和呈现新闻资讯,管理员还可以对资讯分类进行查询、重置、删除和添加操作,方便用户根据兴趣选择阅读内容。资源管理界面如图5-11所示。
图5-11资源管理界面
管理员负责对系统内所有用户的角色权限进行精细化管理,包括添加、修改、删除和查询权限设置。可以为不同角色分配不同的操作权限,确保系统的安全性与灵活性。权限管理界面如图5-12所示。
图5-12权限管理界面
系统的测试环境如表6-1所示。
表6-1 测试环境
类别 | 配置项 | 详细信息 |
硬件环境 | 服务器CPU | Intel Xeon E5-2680 v4 |
内存 | 32GB DDR4 | |
硬盘 | 1TB SSD | |
网络带宽 | 100Mbps | |
软件环境 | 操作系统 | Windows Server 2019 |
数据库 | MySQL 8.0 | |
Web服务器 | Tomcat 9.0 | |
开发框架 | SpringBoot 2.5 | |
前端框架 | Vue.js 2.6 | |
Java版本 | JDK 11 | |
浏览器 | Chrome 88, Firefox 85 |
本系统测试的目的是验证基于SpringBoot的考试管理系统在功能、性能、安全性及用户体验等方面是否满足设计需求,确保其能够稳定、高效地运行。通过系统测试,发现并修复开发过程中可能存在的功能缺陷、逻辑错误和潜在漏洞,保障系统的完整性与可靠性。功能测试主要验证各模块是否按照预期实现,如用户注册登录、在线考试、成绩查询、题库管理、异议申请处理等;性能测试则关注系统在高并发、大数据量情况下的响应速度与稳定性,确保其具备良好的承载能力;兼容性测试用于验证系统在不同浏览器、操作系统及设备上的运行效果,提升用户的使用适应范围。此外,测试还涵盖异常处理机制,确保系统在输入错误、网络中断等异常情况下仍能正确提示与恢复。最终,通过全面测试,确保系统具备上线运行的条件,为学生、教师和管理员提供安全、稳定、高效的考试管理服务。
为全面验证基于SpringBoot的考试管理系统的功能完整性与性能稳定性,系统测试采用了多种测试方法相结合的方式。功能测试主要采用黑盒测试法,依据需求文档设计测试用例,针对学生、教师和管理员的主要功能模块进行验证,如用户登录、在线考试、试题管理、成绩查询、异议申请等,确保各项操作在正常与异常输入下均能正确响应。性能测试通过压力测试和负载测试模拟多用户并发访问、大量数据处理等场景,评估系统在高负载下的响应时间、吞吐能力和资源占用情况,确保系统具备良好的稳定性和扩展性。兼容性测试则在不同操作系统(如Windows、macOS)、浏览器(如Chrome、Firefox、Edge)及屏幕分辨率下运行系统,验证其界面显示和功能执行的一致性。异常测试通过对边界值、非法输入和网络中断等情况的模拟,检验系统对异常情况的容错能力与恢复机制。所有测试用例覆盖了系统核心模块和关键接口,确保测试工作的完整性和有效性。通过上述测试方法的综合应用,能够有效发现系统缺陷,并为后续优化和部署提供有力支持。
系统的测试用例表格如下图所示。
表6-2 系统测试用例表
测试项 | 测试用例描述 | 问题 | 结论 |
登录功能测试 | 打开登录页面,输入正确的用户名和密码,点击“登录”按钮 | 无 | 符合预期 |
登录功能测试 | 打开登录页面,输入错误的用户名,点击“登录”按钮 | 无 | 符合预期 |
登录功能测试 | 打开登录页面,输入错误的密码,点击“登录”按钮 | 无 | 符合预期 |
登录功能测试 | 打开登录页面,输入不存在的用户名和密码,点击“登录”按钮 | 无 | 符合预期 |
注册功能测试 | 打开注册页面,输入合法的用户名、密码、邮箱等信息,点击“注册”按钮 | 无 | 符合预期 |
注册功能测试 | 输入已存在的用户名,其他信息合法,点击“注册”按钮 | 无 | 符合预期 |
注册功能测试 | 用户名合法但密码不符合要求(如长度不足),点击“注册”按钮 | 无 | 符合预期 |
注册功能测试 | 用户名和密码合法但邮箱格式错误,点击“注册”按钮 | 无 | 符合预期 |
在线考试功能测试 | 学生登录后选择科目进行考试,完成答题并提交试卷 | 无 | 符合预期 |
在线考试功能测试 | 学生考试中途刷新页面或关闭浏览器,重新进入是否恢复作答 | 无 | 符合预期 |
成绩查询功能测试 | 考试结束后,学生查看个人考试成绩 | 无 | 符合预期 |
成绩查询功能测试 | 教师查看某科目的整体考试成绩统计 | 无 | 符合预期 |
题库管理功能测试 | 教师添加一道单选题,包括题目内容、选项、答案、分值 | 无 | 符合预期 |
题库管理功能测试 | 教师导入试题文档,验证数据是否完整导入 | 无 | 符合预期 |
异议申请功能测试 | 学生对成绩提出异议申请,填写相关内容并提交 | 无 | 符合预期 |
异议申请功能测试 | 教师审核学生的异议申请,并给出审核结果 | 无 | 符合预期 |
经过对基于SpringBoot的考试管理系统的全面测试,涵盖了登录注册、在线考试、成绩查询、题库管理、异议申请处理等核心功能模块。测试结果表明,系统在正常及异常输入条件下均能按照预期运行,功能完整,响应准确。登录与注册模块能够有效验证用户信息,具备良好的输入校验能力;在线考试与试卷生成功能运行稳定,支持手动和自动组卷,满足教师灵活出题需求;成绩与错题管理功能准确记录学生答题情况,便于复习与分析;异议申请流程清晰,支持学生与教师之间的信息反馈与处理。性能测试显示系统在高并发场景下仍保持良好响应速度与稳定性,兼容性测试也验证了系统在不同浏览器和设备上的良好适配性。整体来看,系统未发现严重缺陷,功能实现符合设计要求,具备良好的可靠性与可维护性,达到了预期目标,具备正式部署上线的条件。
本研究围绕《基于SpringBoot的考试管理系统》展开,系统地完成了从需求分析、系统设计、功能实现到测试验证的全过程开发工作。在需求分析阶段,通过技术、操作和经济可行性分析,明确了系统的开发价值与实施路径,并对学生、教师和管理员三类用户的功能需求进行了详细梳理。在系统设计阶段,采用B/S架构,结合SpringBoot后端框架、Vue前端技术和MySQL数据库,构建了高效、稳定的系统架构体系;完成了核心功能模块的流程设计与数据库实体模型设计,为系统实现提供了清晰的技术蓝图。在系统实现过程中,实现了用户注册登录、个人信息管理、在线考试、试题与试卷管理、成绩查询、异议申请处理、通知公告浏览等多项功能,界面交互清晰,操作逻辑合理。在系统测试阶段,针对核心功能进行了全面测试,包括功能测试、性能测试和兼容性测试,测试结果表明各模块运行稳定、响应准确,系统具备良好的稳定性、可靠性和可扩展性。综上所述,本系统满足了考试管理的实际应用需求,具有较强的实用性与推广价值,为教育机构提供了一个高效、智能的在线考试管理平台。
- 刘江涛,王亮亮,吴庆茹,等.基于B/S模式的铁路勘测设计案例信息化管理系统设计与实现[J].铁路计算机应用,2021,30(03):32-35.
- 张丹丹,李弘.基于B/S架构的办公管理系统设计与开发[J].铁路通信信号工程技术,2024,21(09):44-48+106.
- 王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.
- 熊永平.基于SpringBoot框架应用开发技术的分析与研究[J].电脑知识与技术,2021,15(36):76-77.
- 赵媛.基于Vue的Web系统前端性能优化分析[J].电脑编程技巧与维护,2024,(09):44-46.
- 秦冬.浅析Vue框架在前端开发中的应用[J].信息与电脑(理论版),2024,36(13):61-63.
- 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
- 相景丽.MySQL数据库技术在校园信息管理中的应用研究[J].信息记录材料,2025,26(03):104-106+131.
- Santos C ,Rocha Á ,Silva A .Management accounting as a business intelligence system. Examination in Portuguese small and medium enterprises[J].Neural Computing and Applications,2025,(prepublish):1-15.
- 陈丽颖.基于Spring Boot的自开课网上考试管理系统设计[J].中国新通信,2025,27(06):83-85.
- 谭雄飞.基于分布式技术的考试信息管理系统设计[J].软件,2025,46(01):144-146.
- Yang H .Design of Intelligent Exam Management Optimization System Based on Improved Genetic Algorithm[J].International Journal of High Speed Electronics and Systems,2024,(prepublish):
- 吴晓云,袁昊东.基于Spring Boot的在线考试管理系统[J].微型电脑应用,2024,40(11):199-204.
- 李艳.英语口译考试信息管理系统设计及测试分析[J].电脑编程技巧与维护,2022,(02):89-91.
- 黎君霞.基于遗传算法的在线考试管理系统的设计与实现[D].华中科技大学,2022.
- 袁月.职业技能培训管理系统的设计与实现[D].贵州大学,2021.
- 蔡劲.丹阳市人事考试管理系统的设计与实现[D].江苏科技大学,2021.
- 薛峰.学分制教学管理制度下高等院校考试管理系统的设计与实现[J].教育教学论坛,2020,(28):18-19.
本论文的顺利完成离不开导师、同学、亲友以及相关支持者的帮助与鼓励。在整个研究过程中,导师展现出严谨的治学态度和扎实的专业素养,为论文的选题、结构设计以及内容完善提供了有力指导。从系统需求分析到最终测试验证,导师均给予了细致而专业的建议,确保了研究工作的科学性和完整性。同时,感谢同学们在学习过程中提供的技术交流与资源共享,为系统的开发和论文的撰写营造了良好的学术氛围。朋友们的关心和支持也为研究工作注入了动力,缓解了学业压力,营造了积极的学习环境。特别感谢家人的理解与支持,他们始终给予默默鼓励和精神支撑,为研究工作的顺利推进提供了坚实保障。此外,也感谢所有在系统开发和论文写作过程中提供帮助的机构和个人。
谨以此文,向所有对本研究给予支持和帮助的人员致以诚挚谢意。
附录
系统核心代码设计
用户注册
注册页UserController.java,传入user对象,并将"user_id"、 "state"、 "user_group"、"login_time"、"phone"、"phone_state"、 "username"、"nickname"、"password"、"email"、"email_state"、"avatar"、"create_time"输入,重点是 "username"、"nickname"、"password"必须输入,通过获取username,数据库查询是否有该用户,如果存在,则提示“用户已存在”,否则执行将UserId置为空(数据库表中该字段已设置自动递增),代码如图所示。
图注册核心代码图
用户登录
登录页,首先传入"username"、"email"、"phone"、"password",用户可通过用户名、邮箱、手机号进行登陆,通过判断resultList来确定查询结果,然后执行查询用户组UserGroup,用户组里面不存在,依然报“用户不存在”,执行完以上代码,最后涉及到用户带有“审核”的,会查询examine_state(用户的审核状态),数据库表user_group中含有source_table和source_field进行查询,以上步骤完成,对输入的密码进行存储Token到数据库,匹对账号和密码,数据库中的AccessToken为令牌,用于身份认证,代码如图所示。
用户登录核心代码图
修改密码
修改密码,通过请求data,获取旧密码,并将新密码重新赋值,期间都是需要通过加密,代码如图所示。
修改密码核心代码图
修改数据
修改一个数据,原理与add基本一致,不同点在于通过readConfig()读取关键字,以及通过readQuery()获取URL后面?指定位置的标识,转成Map对象后,执行update操作,同样通过拼接的sql语句执行,执行过程读取query,toWhereSql()语句完成数据库操作,body为修改对象的值,代码如图所示。
修改数据核心代码图
删除数据
删除一条数据,通过readQuery(),获取URL后面的对象地址,删除FROM具体的table,query删除查询FindConfig语句,代码如图示。
图4-11删除数据核心代码图
获取列表
通过请求的参数获取列表数据,代码如图所示。
图获取列表核心代码图
图片上传
通过请求的参数获取列表数据,代码如图4-13所示。
图片上传核心代码图
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~