跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
|注册
博客列表

目录

  1. 系统概述
  2. 数据库设计
  3. 考生信息数据表
  4. 考试信息数据表
  5. 报名记录数据表
  6. 技术架构
  7. 核心代码实现
Java大前端java

基于 SpringBoot 和 Vue 的语言考试信息报名系统设计

一套基于 SpringBoot 和 Vue.js 开发的语言考试信息报名系统。该系统旨在解决传统线下报名效率低、信息不对称等问题,实现考生信息管理、考试发布、在线报名及成绩查询等功能。后端采用 SpringBoot 框架配合 MySQL 数据库,前端使用 Vue.js 构建交互界面,并引入 JWT 进行安全认证。文章包含数据库表结构设计、技术架构分析及核心控制器代码示例,展示了前后端分离架构下的具体实现方案。

山野来信发布于 2026/4/5更新于 2026/4/131 浏览
基于 SpringBoot 和 Vue 的语言考试信息报名系统设计

系统概述

随着全球化进程的加快,语言能力成为个人职业发展和学术研究的重要基础。语言考试作为衡量语言水平的重要工具,其报名和管理流程的数字化需求日益增长。传统线下报名方式存在效率低、信息不对称、管理成本高等问题,亟需通过信息化手段优化。本系统采用 SpringBoot 作为后端框架,结合 Vue.js 前端技术,实现了前后端分离的高效开发模式。系统功能涵盖用户注册与登录、考试信息发布、在线报名、成绩查询以及后台管理等多个模块。数据库使用 MySQL 存储考生信息、考试安排及成绩数据,并通过 SQL 脚本实现数据的规范化管理。系统设计注重安全性和可扩展性,采用 JWT 进行用户认证。

数据库设计

考生信息数据表

考生信息数据表中,注册时间是通过函数自动获取的,考生 ID 是该表的主键,存储考生的个人基本信息和账户状态。

字段名数据类型是否为空描述
candidate_idBIGINT否考生唯一标识(主键)
usernameVARCHAR(50)否考生用户名
password_hashVARCHAR(100)否密码加密存储
real_nameVARCHAR(30)是考生真实姓名
genderCHAR(1)是性别(M/F)
birth_dateDATE是出生日期
contact_phoneVARCHAR(20)否联系电话
emailVARCHAR(50)是电子邮箱
register_timeDATETIME否注册时间
account_statusTINYINT否账户状态(0-禁用,1-启用)

考试信息数据表

考试信息数据表中,创建时间是通过函数自动获取的,考试 ID 是该表的主键,存储考试的基本信息和状态。

字段名数据类型是否为空描述
exam_idBIGINT否考试唯一标识(主键)
exam_nameVARCHAR(100)否考试名称
exam_typeVARCHAR(30)否考试类型
start_timeDATETIME否考试开始时间
end_timeDATETIME否考试结束时间
location
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog

更多推荐文章

查看全部
  • OpenCode + GitHub Copilot:Claude Code 开源平替与高性价比方案
  • HunyuanOCR 接入 RPA 机器人:UiPath 与影刀兼容性测试
  • 星闪模组智能家居中控方案:AT 指令控制 RGB 灯及多设备透传
  • 5 款免费 AI 降重与去痕工具推荐
  • Dify 入门:从 Web 到 API 的交付与集成方案
  • llama.cpp 启动效率优化指南:加载延迟与系统调优

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

VARCHAR(200)
否
考试地点
max_candidatesINT是最大考生人数
current_statusTINYINT否考试状态(0-未开始,1-进行中,2-已结束)
create_timeDATETIME否创建时间

报名记录数据表

报名记录数据表中,报名时间是通过函数自动获取的,记录 ID 是该表的主键,存储考生的报名信息和状态。

字段名数据类型是否为空描述
record_idBIGINT否报名记录唯一标识(主键)
candidate_idBIGINT否考生 ID(外键)
exam_idBIGINT否考试 ID(外键)
enroll_timeDATETIME否报名时间
payment_statusTINYINT否支付状态(0-未支付,1-已支付)
exam_scoreDECIMAL(5,2)是考试成绩
remarkVARCHAR(200)是备注信息

技术架构

后端技术:Spring Boot Spring Boot 作为现代 Java 企业级开发的核心框架,以其'约定优于配置'的设计哲学重新定义了应用开发模式。核心特性包括零配置启动、嵌入式服务器支持独立 JAR 包部署、集成 Actuator 监控组件以及微服务友好架构。

前端技术:Vue.js Vue.js 以其渐进式框架设计和卓越的开发体验,成为现代前端开发的首选解决方案。技术亮点包括响应式数据流、组件化架构(单文件组件)、灵活的渐进式设计以及丰富的生态系统(Vue Router、Vuex/Pinia 等)。

核心代码实现

package com.controller;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UsersEntity;
import com.service.TokenService;
import com.service.UsersService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UsersController{
    @Autowired
    private UsersService userService;
    @Autowired
    private TokenService tokenService;

    /**
     * 登录
     */
    @IgnoreAuth
    @PostMapping(value = "/login")
    public R login(String username, String password, String captcha, HttpServletRequest request) {
        UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
        if(user==null || !user.getPassword().equals(password)) {
            return R.error("账号或密码不正确");
        }
        String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
        return R.ok().put("token", token);
    }

    /**
     * 注册
     */
    @IgnoreAuth
    @PostMapping(value = "/register")
    public R register(@RequestBody UsersEntity user){
        // ValidatorUtils.validateEntity(user);
        if(userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
            return R.error("用户已存在");
        }
        userService.insert(user);
        return R.ok();
    }

    /**
     * 退出
     */
    @GetMapping(value = "logout")
    public R logout(HttpServletRequest request) {
        request.getSession().invalidate();
        return R.ok("退出成功");
    }

    /**
     * 密码重置
     */
    @IgnoreAuth
    @RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
        UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
        if(user==null) {
            return R.error("账号不存在");
        }
        user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }

    /**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UsersEntity user){
        EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
        PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

    /**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UsersEntity user){
        EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
        ew.allEq(MPUtil.allEQMapPre( user, "user"));
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UsersEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 获取用户的 session 用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
        Long id = (Long)request.getSession().getAttribute("userId");
        UsersEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UsersEntity user){
        // ValidatorUtils.validateEntity(user);
        if(userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
            return R.error("用户已存在");
        }
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UsersEntity user){
        // ValidatorUtils.validateEntity(user);
        UsersEntity u = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername()));
        if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
            return R.error("用户名已存在。");
        }
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}
Flutter pathfinding 组件在 OpenHarmony 上的适配实战
  • 银河麒麟 V10 服务器版 Docker 部署 .NET 8 WebAPI 教程
  • Spring Boot Web 三大核心交互案例:表单、AJAX 与 JSON
  • Web 后端安全系列:PHP 基础语法与序列化
  • Flutter 三方库 discord_interactions 的鸿蒙化适配指南
  • Ubuntu 下 libwebkit2gtk-4.1-0 安装指南
  • 人工智能:自然语言处理在金融领域的应用与实战
  • 基于 .NET Core 3.1 与 Vue 2.6 的工业 CPS 系统架构解析
  • 通义万相 2.1 多模态 AI 生成技术与应用场景分析
  • 基于分布式光纤声波传感(DAS)的无人机入侵探测技术与应用
  • Antfarm:基于 OpenClaw 的 AI 代理团队智能工作流引擎
  • AI Skills:用元编程思维重构前端开发工作流
  • Spatial Joy 2025 全球 AR&AI 赛事:资源、玩法与避坑指南
  • WSDL 详解:WebService 接口描述语言入门