springboot+vue考试管理系统

基于springboot和vue的考试管理系统

001
springboot vue前后端分离项目
本文设计了一个基于Springboot+vue的前后端分离的在线考试管理系统,采用M(model)V(view)C(controller)三层体系结构,通过 SpringBoot +Vue+Maven+mysql来实现。分为学生,老师,超级管理员三类用户。

技术栈

前端
Vue:Vue 是构建前端界面的核心框架,本系统采用 2.6.14 版本。
后端
Spring Boot:构建系统核心逻辑的后端框架,本系统采用 2.7.0 版本。
MyBatis / MyBatis Plus:后端连接数据库的框架,本系统采用 3.5.2 版本。
数据库
MySQL:本项目的主数据库,本系统采用 8.0.29 版本。
开发环境
VsCode:项目前端的开发工具,使用版本为 1.68.0。
IntelliJ IDEA :项目后端的开发工具,使用版本为 2021.3.2。
Jdk:Java 的开发环境,使用版本为 17.0.3.1。
Maven:后端项目的打包工具,使用版本为 3.6.2。
NodeJs:前端项目的开发环境,使用版本为 16.13.0。

主要功能:

(1)登录模块
系统用户在输入账户和密码登录信息后,服务器对用户信息进行验证,验证正确,根据用户身份进入不同界面。
在这里插入图片描述
(2)发布考试
老师选择对应的班级,试题进行发布,学生可以接收到提醒,进行作答。

(3)考试模块
学生收到考试提醒后,在规定时间内作答,如果超出时间未作答,则失去考生失去考试资格,如果作答但超出考试试卷,自动提交保存的部分。
(4)考试管理模块
选择题,填空题,后台系统可以根据老师设计的答案进行自动批改,老师也可以查看每个同学的答题进行分数的修改。
在这里插入图片描述

(5)成绩管理模块
老师可以查看每个同学的答题,批改完成可以生成该考试的成绩表,老师可以将成绩导出为表格。学生接收到成绩单,可以查看自己的得分情况。
(6)题库管理模块
老师可以添加、删除、修改、题库。发布的考试的题目需从题库中选择。
(7)用户管理模块
管理员可以添加、删除、查询、修改用户信息。

文件展示
在这里插入图片描述
在这里插入图片描述
学生端
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

教师和管理员端
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
部分代码如下:

<!-- 添加考试 -->
<template>
  <section class="add">
    <el-form ref="form" :model="form" label-width="80px">
      <el-form-item label="试卷名称">
        <el-input v-model="form.source"></el-input>
      </el-form-item>
      <el-form-item label="介绍">
        <el-input v-model="form.description"></el-input>
      </el-form-item>
      <el-form-item label="所属学院">
        <el-input v-model="form.institute"></el-input>
      </el-form-item>
      <el-form-item label="所属专业">
        <el-input v-model="form.major"></el-input>
      </el-form-item>
      <el-form-item label="年级">
        <el-input v-model="form.grade"></el-input>
      </el-form-item>
      <el-form-item label="考试日期">
        <el-col :span="11">
          <el-date-picker placeholder="选择日期" v-model="form.examDate" style="width: 100%;"></el-date-picker>
        </el-col>
      </el-form-item>
      <el-form-item label="持续时间">
        <el-input v-model="form.totalTime"></el-input>
      </el-form-item>
      <el-form-item label="总分">
        <el-input v-model="form.totalScore"></el-input>
      </el-form-item>
      <el-form-item label="考试类型">
        <el-input v-model="form.type"></el-input>
      </el-form-item>
      <el-form-item label="考生提示">
        <el-input type="textarea" v-model="form.tips"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="onSubmit()">立即创建</el-button>
        <el-button type="text" @click="cancel()">取消</el-button>
      </el-form-item>
    </el-form>
  </section>
</template>

<script>
export default {
  data() {
    return {
      form: { //表单数据初始化
        source: null,
        description: null,
        institute: null,
        major: null,
        grade: null,
        examDate: null,
        totalTime: null,
        totalScore: null,
        type: null,
        tips: null,
        paperId: null,
      }
    };
  },
  methods: {
    formatTime(date) { //日期格式化
      let year = date.getFullYear()
      let month= date.getMonth()+ 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
      let day=date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
      let hours=date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
      let minutes=date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
      let seconds=date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
      // 拼接
      return year+"-"+month+"-"+day+" "+hours+":"+minutes+":"+seconds;
    },
    onSubmit() {
      let examDate = this.formatTime(this.form.examDate)
      this.form.examDate = examDate.substr(0,10)
      this.$axios(`/api/examManagePaperId`).then(res => {
        this.form.paperId = res.data.data.paperId + 1 //实现paperId自增1
        this.$axios({
          url: '/api/exam',
          method: 'post',
          data: {
            ...this.form
          }
        }).then(res => {
          if(res.data.code == 200) {
            this.$message({
              message: '数据添加成功',
              type: 'success'
            })
            this.$router.push({path: '/selectExam'})
          }
        })
      })
    },
    cancel() { //取消按钮
      this.form = {}
    },
    
  }
};
</script>
<style lang="scss" scoped>
.add {
  padding: 0px 40px;
  width: 400px;
}
</style>


package com.exam.controller;

import com.exam.entity.*;
import com.exam.serviceimpl.LoginServiceImpl;
import com.exam.util.ApiResultHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class LoginController {

    @Autowired
    private LoginServiceImpl loginService;

    @PostMapping("/login")
    public ApiResult login(@RequestBody Login login) {

        Integer username = login.getUsername();
        String password = login.getPassword();
        Admin adminRes = loginService.adminLogin(username, password);
        if (adminRes != null) {
            return ApiResultHandler.buildApiResult(200, "请求成功", adminRes);
        }

        Teacher teacherRes = loginService.teacherLogin(username,password);
        if (teacherRes != null) {
            return ApiResultHandler.buildApiResult(200, "请求成功", teacherRes);
        }

        Student studentRes = loginService.studentLogin(username,password);
        if (studentRes != null) {
            return ApiResultHandler.buildApiResult(200, "请求成功", studentRes);
        }

        return ApiResultHandler.buildApiResult(400, "请求失败", null);
    }
}

源码私聊:q1917671527
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

000_coolprop_in_matlab在Matlab中使用CoolProp

在Matlab中使用CoolProp 简介 CoolProp是一个开源的热力学性质库&#xff0c;可以计算多种流体的热力学性质。CoolProp支持多种编程语言&#xff0c;包括Python、C、Matlab等。本文将介绍如何在Matlab中使用CoolProp。 CoolProp官网 本文所使用的Matlab版本为R2021a。 在Ma…

大数据分析-基于Python的网络爬虫及数据处理---智联招聘人才招聘特征分析与挖掘的算法实现

概要 随着科学技术的发展&#xff0c;人类进入了互联网时代&#xff0c;不仅数据量庞大&#xff0c;而且数据种类繁多&#xff0c;Python简单易学, 语法清晰&#xff0c;在数据操作方面有着一定优势&#xff0c;成为了数据采集和可视化领域的热门语言。本论文主要是使用Python来…

SG5032VAN差分晶振X1G004261001100专用于5G通讯设备

差分晶体振荡器(DXO)是目前行业中公认高技术&#xff0c;高要求的一款晶体振荡器&#xff0c;是指输出差分信号使用2种相位彼此完全相反的信号,从而消除了共模噪声,并产生一个更高性能的系统。差分晶振一般为六脚贴片晶振&#xff0c;输出类型分为好几种,LVDS&#xff0c;LV-PE…

MySQL | 视图

视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表&#xff0c;基表的数据变化也会影响到视图。 1. 基本使用 1.1. 创建视图 create view 视图名 as select语句&#xff1b; 创建测…

(2023,图像放大与超分辨率,扩散,缩放堆叠表示,多分辨率混合,多尺度联合抽样)Ten 的生成能力

Generative Powers of Ten 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 2. 相关工作 4. 方法 4.1. 缩放堆叠表示 4.2. 多分辨率混合 4.3. 多尺度一致抽样 4.4. 基于照片…

全球大型语言模型(LLMS)现状与比较

我用上个博文的工具将一篇ppt转换成了图片&#xff0c;现分享给各位看官。 第一部分&#xff1a;国外大语言模型介绍 1&#xff0c;openai的Chatgpt 免费使用方法1&#xff1a;choose-carhttps://share.freegpts.org/list 免费使用方法2&#xff1a;Shared Chathttps://share…

查看文件内容的指令:cat,tac,nl,more,less,head,tail.file

目录 cat 介绍 输入重定向 选项 -b -n -s tac 介绍 输入重定向 nl 介绍 示例 more 介绍 选项 less 介绍 搜索文本 选项 head 介绍 示例 选项 -n tail 介绍 示例 选项 file cat 介绍 将标准输入(键盘输入)的内容打印到标准输出: 输入重定向 本应…

Docker 存储

目录 1、概念介绍 Storage Driver 无状态容器 有状态容器 Data Volume 2、bind mount 指定挂载文件只读权限 bind mount 挂载目录 3、docker manage volume 查看 volume 自定义 volume 使用 NFS 存储 4、共享数据 容器与host共享数据 volume container data-pa…

200基于matlab的利用神经网络算法训练图片

基于matlab的利用神经网络算法训练图片&#xff0c;并利用GUI界面读取图片&#xff0c;最后将识别出的图片数值返回到GUI界面上。0-10数字数据库已有&#xff0c;可自行添加其他数据库进行训练和识别。程序已调通&#xff0c;可直接运行。 200 matlab BP神经网络 手写数字识别 …

liunx centos7 下通过yum删除安装已经安装的php

执行下面命令查看php相关的包 rpm -qa | grep php 只需要卸载几个名为common的包即可&#xff0c;其他同版本依赖会被全部删除&#xff0c;删除php71w-common&#xff0c;71w版本的依赖包全部会被删除。 查看php包的命令 rpm -qa | grep php 或 yum list installed | gre…

单引号 vs 双引号:在MyBatis条件判断中的选择困境

哈喽&#xff0c;大家好呀&#xff0c;好久不见&#xff01;今天是一篇浅记。MyBatis的条件判断中&#xff0c;使用单引号或双引号来判定字符串类型数值的坑… 一、单引号与双引号的区别 在MyBatis的条件判断中&#xff0c;使用单引号或双引号来括起字符串值都是可以的。但是在…

Linux systemd详解

1、概念 1.1 systemd systemd 是一个用于管理 Linux 系统启动过程和系统服务的系统和服务管理器。它被设计为取代传统的 System V init 系统&#xff0c;提供了更快的启动时间、并行启动服务、更好的日志记录和更强大的管理功能。 1.2 unit Unit 是 systemd 中所有配置文件…

区块链技术下的新篇章:DAPP与消费增值的深度融合

随着区块链技术的持续演进&#xff0c;去中心化应用&#xff08;DAPP&#xff09;正逐渐受到人们的瞩目。DAPP&#xff0c;这种在分布式网络上运行的应用&#xff0c;以其去中心化、安全可靠、透明公开的特性&#xff0c;为用户提供了更为便捷和安全的消费体验。近年来&#xf…

苏州城市学院芮国强一行莅临聚合数据走访调研

3月19日&#xff0c;苏州城市学院校党委书记芮国强、校长赵志宏一行莅临聚合数据&#xff0c;就数据科技赋能行业升级展开调研。聚合数据董事长左磊接待来访。 城市学院党委理论学习中心组一行参观了聚合数据展厅&#xff0c;了解了聚合数据的发展历程、数据产品、应用案例、奖…

能强优品木业:打造高品质混凝土支撑模板,铸就建筑精品

在现代建筑施工中,高质量的混凝土支撑模板是确保工程质量和施工安全的关键所在。贵港市能强优品木业有限公司作为一家专业建筑模板生产厂家,凭借25年的丰富经验和先进的生产工艺,为建筑行业提供了多层板芯、高强度承重、防潮不变形、施工安全抗弯曲性强的优质混凝土支撑模板。 …

day16-环形链表

问题描述&#xff1a; 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0…

linux下的打包/解包命令(tar,zip/unzip)

目录 打包/解包 作用 zip -r选项 unzip -d选项 如果不使用递归压缩 -l / -v选项 tar 介绍 选项 示例 打包/解包 作用 使多个文件变成一个文件,不易造成数据缺失使下载时间变短 zip 将目录或文件压缩成zip格式 -r选项 递归式压缩某目录及其所有子目录中的文件 如果不…

【大数据】五、yarn基础

Yarn Yarn 是用来做分布式系统中的资源协调技术 MapReduce 1.x 对于 MapReduce 1.x 的版本上&#xff1a; 由 Client 发起计算请求&#xff0c;Job Tracker 接收请求之后分发给各个TaskTrack进行执行 在这个阶段&#xff0c;资源的管理与请求的计算是集成在 mapreduce 上的…

大模型+强化学习_在线交互调参_GLAM

英文名称: Grounding Large Language Models in Interactive Environments with Online Reinforcement Learning 中文名称: 通过在线强化学习在交互式环境中建立大型语言模型 链接: https://arxiv.org/pdf/2302.02662.pdf 代码: https://github.com/flowersteam/Grounding_LLMs…

Listary 清除无效的搜索历史记录

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 listary 用过一段时间后&#xff0c;搜索其他东西总会显示一个感叹号的之前的文件&#xff0c;强迫症很难受啊。 二、原因分析 猜测是历史记录的问题记录历史搜索的文件没有重建 三、解决方案 提示…