项目背景与目标
随着教育信息化的深入,传统线下考试模式在效率、成本及数据分析方面逐渐显露疲态。在线考试系统通过自动化组卷、远程监考和智能判卷,能显著提升管理效率并为教学决策提供数据支撑。
当前市面上的部分系统存在功能单一、扩展性差、高并发下性能瓶颈明显以及数据可视化不足等问题。本项目的核心目标是构建一个全流程覆盖的在线考试平台,支持万人同时在线,响应时间控制在 1 秒以内,并提供可视化的成绩分析。
技术选型与架构规划
为了保证系统的稳定性与可维护性,我们采用了以下技术栈:
- 前端:Vue 3 + Element Plus(UI 组件)+ ECharts(图表展示)
- 后端:Spring Boot + MyBatis-Plus(持久层框架)
- 数据库:MySQL(主存储)+ Redis(缓存热点数据)
- 安全:JWT(身份认证)+ HTTPS(传输加密)
- 部署:Docker 容器化 + Nginx 反向代理
系统设计了学生、教师、管理员三种角色权限,涵盖题库管理、试卷生成、在线考试、自动判卷及统计分析等核心模块。
核心功能实现
用户管理模块
用户登录是系统的第一道防线。我们使用 JWT 令牌进行无状态认证,密码采用 BCrypt 加密存储。
// UserController.java
@RestController
@RequestMapping("/api/user")
public class UserController {
@Autowired
private UserService userService;
// 用户登录(返回 JWT 令牌)
@PostMapping("/login")
public Result<LoginResponse> login(@RequestBody LoginRequest request) {
return userService.login(request.getUsername(), request.getPassword());
}
// 用户注册
@PostMapping("/register")
public Result<String> register(@RequestBody RegisterRequest request) {
return userService.register(request);
}
}
// UserServiceImpl.java
@Service
public class UserServiceImpl {
UserMapper userMapper;
JwtUtil jwtUtil;
Result<LoginResponse> {
userMapper.selectByUsername(username);
(user == || !BCrypt.checkpw(password, user.getPassword())) {
Result.error();
}
jwtUtil.generateToken(user.getId(), user.getRole());
Result.success( (token, user.getRole()));
}
}


