系统功能
基于Spring Boot框架的在线考试系统是一个集用户管理、权限控制[4]、试题管理、在线考试、成绩管理等功能于一体的综合性系统。该系统在构建时充分考虑了现代Web应用的最佳实践,采用了前后端分离架构,使得前端与后端能够各自独立开发、部署和扩展,通过恰当的注释和规范的编码来增强代码的可维护性。
在后端方面,使用Spring Boot框架来处理业务逻辑和数据交互。Spring Boot凭借其“约定大于配置”的理念,通过大量的自动配置和开箱即用的功能,极大地简化了Java Web应用的开发过程。开发者可以专注于业务逻辑的实现,而无需过多关注底层技术细节。Spring Boot还支持多种数据库连接和事务管理,使得与MySQL数据库的交互变得简单而高效。
在前端方面,使用Vue框架来实现界面展示和用户交互。Vue以其简洁、轻量、高效的特点,赢得了众多开发者的喜爱。它采用组件化的设计思想,使得开发者可以构建可复用的界面元素,提高代码的可维护性和可重用性。Vue还支持数据驱动的视图更新,使得前端界面能够实时反映数据的变化,增强了用户体验。
为了实现前后端的数据交互,系统采用了JSON作为数据交换格式。JSON具有轻量级、易读易写的特点,能够在不同平台和语言之间实现数据的无障碍传输。后端将数据以JSON格式返回给前端,前端通过解析JSON数据来展示用户界面和更新用户状态。这种基于JSON的数据交互方式使得前后端之间的耦合度降低,提高了系统的可扩展性和可维护性。
在数据持久化存储方面,系统选择了MySQL作为关系型数据库。MySQL以其稳定、可靠、高效的特点,在Web应用中得到了广泛应用。
系统使用Mybatis作为持久层框架,通过ORM(对象关系映射)的方式将Java对象与数据库表进行映射。Mybatis还支持自定义SQL语句和结果映射,使得开发者能够灵活地进行数据库操作。
综上所述,该系统通过采用前后端分离架构、Spring Boot框架、Vue框架、Mybatis框架、JSON数据交换格式以及MySQL数据库等技术栈实现在线考试系统,在该是一个集先进性、高效性、可扩展性与用户友好性于一体的综合性管理平台。该系统凭借其强大的功能和先进的技术,不仅满足了现代教育对考试管理的严苛要求,而且显著提升了考试管理的效率和公正性,为学校、教师和学生提供了前所未有的便捷和优质服务。随着技术的不断进步和应用的深入,我们有理由相信该系统将在未来继续发挥更加重要的作用,推动教育事业的持续发展和进步。
- 概要设计
本系统对学生用户和教师用户、管理员用户分别开发,其中学生用户登录后可以参加教师用户发表的考试、练习并且可以对于已经考试完的成绩进行查看,并且可以对系统留言。教师用户可以登录后添加考试、习题,也能添加学生信息。管理员登录后可以对学生和教师进行统一管理。系统功能结构图如1所示。
图1 系统功能结构图
- 详细设计(重点)
系统用户角色分为三种,分别是:管理员、教师和学生。管理员功能包含,创建、更新和删除学生和教师信息,题目的录入、更新和分类以及下发考试功能。学生功能包含,修改自身账号信息、进入教师或者管理员下发的考试中进行在线答题和查询自身所有的历史考试成绩。教师功能包含,试题管理,支持试题的录入、更新和分类、修改自身账号信息和查看所有学生的历史考试的所有成绩。
本系统采用的后端开发工具为 IntelliJ IDEA(简称 IDEA)和前端开发工具Visual Studio Code(简称 VSCode),后端使用的是基于Java语言的SpringBoot框架,前端使用 Vue.js 框架,在数据的持久化存储方面,选择了关系型数据库MySQL,使用持久层框架Mybatis通过ORM(对象关系映射)的方式将Java对象映射为数据库的行,实现简单操作操作数据库实现增删改查,使用Maven作为项目自动化构建工具来简化了 Java 项目的开发、构建和部署过程,提高了开发效率和系统质量。
3.1 前端设计
3.2 后端接口设计
3.3 数据库设计
系统用户角色分为三种,分别是:管理员、教师和学生。管理员功能包含,创建、更新和删除学生和教师信息,题目的录入、更新和分类以及下发考试功能。学生功能包含,修改自身账号信息、进入教师或者管理员下发的考试中进行在线答题和查询自身所有的历史考试成绩。教师功能包含,试题管理,支持试题的录入、更新和分类、修改自身账号信息和查看所有学生的历史考试的所有成绩。
(1)管理员信息表:存储管理员的相关信息,如表4.1所示。
表4.1 管理员信息表
字段名 |
字段类型 |
宽度 |
索引 |
标题 |
adminId |
int |
9 |
主索引 |
管理员ID |
adminName |
varchar |
20 |
管理员名 |
|
sex |
varchar |
2 |
性别 |
|
pwd |
varchar |
50 |
密码 |
|
cardId |
varchar |
18 |
身份证号 |
|
role |
varchar |
1 |
角色 |
(2)留言回复信息表:存储回复的留言的信息,如表4.2所示。
表4.2留言回复信息表
字段名 |
字段类型 |
宽度 |
索引 |
标题 |
replayId |
int |
9 |
主索引 |
回复编号 |
messaheId |
int |
255 |
留言编号 |
|
replay |
varchar |
255 |
回复内容 |
|
replaytime |
date |
10 |
回复时间 |
(3)学生信息表:存储学生的相关信息,如表4.3所示。
表4.3 学生信息表
字段名 |
字段类型 |
宽度 |
索引 |
标题 |
studentId |
int |
9 |
主索引 |
学号 |
studentName |
varchar |
20 |
姓名 |
|
grade |
varchar |
4 |
年级 |
|
major |
varchar |
20 |
专业 |
|
clazz |
varchar |
10 |
班级号 |
|
institute |
varchar |
30 |
学院 |
|
pwd |
varchar |
50 |
密码 |
|
sex |
varchar |
2 |
性别 |
|
role |
varch |