基于springboot+vue的微信小程序的高校学生学业预警系统
·
技术栈设计
后端技术栈
- Spring Boot 2.x:提供RESTful API支持,集成MyBatis-Plus、Spring Security等框架。
- MySQL 8.0:存储学生信息、课程成绩、预警规则等结构化数据。
- Redis:缓存高频访问数据(如预警规则、学生成绩汇总)。
- 微信小程序SDK:实现用户登录、消息推送等微信生态能力。
前端技术栈
- Vue 3 + TypeScript:构建管理后台的单页应用。
- Uni-app:跨平台开发框架,编译为微信小程序代码。
- Vant Weapp:小程序端UI组件库,提供表单、弹窗等交互组件。
辅助工具
- Jenkins:自动化部署后端服务及前端应用。
- Swagger:API文档生成与调试。
功能模块设计
1. 学生端(微信小程序)
- 学业数据查询:实时查看课程成绩、学分完成进度、GPA排名。
- 预警通知:接收挂科风险、学分不足等预警消息(微信模板消息推送)。
- 学习建议:基于历史成绩推荐选课或重修计划。
2. 教师端(管理后台)
- 成绩录入:批量导入或手动录入学生课程成绩。
- 预警规则配置:设置触发条件(如连续挂科2门、学分低于标准80%)。
- 预警名单审核:手动调整系统生成的预警学生名单。
3. 管理员端(管理后台)
- 学生信息管理:维护班级、专业、学生档案等基础数据。
- 系统监控:查看预警触发日志、消息推送成功率等运行指标。
数据库设计(核心表)
表1:学生表(student)
CREATE TABLE `student` (
`id` bigint NOT NULL AUTO_INCREMENT,
`student_no` varchar(20) NOT NULL COMMENT '学号',
`name` varchar(50) NOT NULL COMMENT '姓名',
`class_id` bigint NOT NULL COMMENT '班级ID',
`credit_required` int DEFAULT '160' COMMENT '毕业要求学分',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_student_no` (`student_no`)
);
表2:成绩表(course_score)
CREATE TABLE `course_score` (
`id` bigint NOT NULL AUTO_INCREMENT,
`student_id` bigint NOT NULL COMMENT '学生ID',
`course_id` bigint NOT NULL COMMENT '课程ID',
`score` decimal(5,2) DEFAULT NULL COMMENT '成绩',
`term` varchar(20) NOT NULL COMMENT '学期(如2023-2024-1)',
PRIMARY KEY (`id`),
KEY `idx_student_id` (`student_id`)
);
表3:预警规则表(warning_rule)
CREATE TABLE `warning_rule` (
`id` bigint NOT NULL AUTO_INCREMENT,
`rule_name` varchar(100) NOT NULL COMMENT '规则名称',
`condition_expression` varchar(500) NOT NULL COMMENT '条件表达式(如: credit_earned/credit_required < 0.7)',
`priority` int DEFAULT '1' COMMENT '优先级',
PRIMARY KEY (`id`)
);
系统测试设计
1. 接口测试(Postman)
- 成绩录入接口:模拟批量导入1000条成绩数据,验证响应时间与数据一致性。
- 预警触发接口:构造临界值成绩数据,检查是否符合规则条件。
2. 小程序端测试(微信开发者工具)
- 登录流程:测试微信授权登录与Session维护机制。
- 消息推送:模拟触发预警后,检查用户是否收到模板消息。
3. 性能测试(JMeter)
- 并发200请求查询成绩接口,验证Redis缓存减轻数据库压力的效果。
源码结构示例
后端项目结构
src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── edu/
│ │ ├── controller/ # 控制器层
│ │ ├── service/ # 业务逻辑层
│ │ ├── mapper/ # MyBatis接口
│ │ └── entity/ # 数据库实体类
│ └── resources/
│ ├── application.yml # 多环境配置
│ └── mapper/ # XML映射文件
小程序端关键代码(Vue)
// 获取预警信息
async fetchWarningData() {
const res = await uni.request({
url: '/api/warning/list',
method: 'GET',
header: { 'Authorization': 'Bearer ' + this.token }
});
this.warningList = res.data.data;
}
以上设计可实现一个覆盖学生、教师、管理员角色的学业预警系统,如需完整源码或进一步扩展(如多级预警、家长端对接),可基于此框架迭代开发。
技术栈设计
后端技术栈
- Spring Boot 2.x:提供RESTful API支持,集成MyBatis-Plus、Spring Security等框架。
- MySQL 8.0:存储学生信息、课程成绩、预警规则等结构化数据。
- Redis:缓存高频访问数据(如预警规则、学生成绩汇总)。
- 微信小程序SDK:实现用户登录、消息推送等微信生态能力。
前端技术栈
- Vue 3 + TypeScript:构建管理后台的单页应用。
- Uni-app:跨平台开发框架,编译为微信小程序代码。
- Vant Weapp:小程序端UI组件库,提供表单、弹窗等交互组件。
辅助工具
- Jenkins:自动化部署后端服务及前端应用。
- Swagger:API文档生成与调试。
功能模块设计
1. 学生端(微信小程序)
- 学业数据查询:实时查看课程成绩、学分完成进度、GPA排名。
- 预警通知:接收挂科风险、学分不足等预警消息(微信模板消息推送)。
- 学习建议:基于历史成绩推荐选课或重修计划。
2. 教师端(管理后台)
- 成绩录入:批量导入或手动录入学生课程成绩。
- 预警规则配置:设置触发条件(如连续挂科2门、学分低于标准80%)。
- 预警名单审核:手动调整系统生成的预警学生名单。
3. 管理员端(管理后台)
- 学生信息管理:维护班级、专业、学生档案等基础数据。
- 系统监控:查看预警触发日志、消息推送成功率等运行指标。
数据库设计(核心表)
表1:学生表(student)
CREATE TABLE `student` (
`id` bigint NOT NULL AUTO_INCREMENT,
`student_no` varchar(20) NOT NULL COMMENT '学号',
`name` varchar(50) NOT NULL COMMENT '姓名',
`class_id` bigint NOT NULL COMMENT '班级ID',
`credit_required` int DEFAULT '160' COMMENT '毕业要求学分',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_student_no` (`student_no`)
);
表2:成绩表(course_score)
CREATE TABLE `course_score` (
`id` bigint NOT NULL AUTO_INCREMENT,
`student_id` bigint NOT NULL COMMENT '学生ID',
`course_id` bigint NOT NULL COMMENT '课程ID',
`score` decimal(5,2) DEFAULT NULL COMMENT '成绩',
`term` varchar(20) NOT NULL COMMENT '学期(如2023-2024-1)',
PRIMARY KEY (`id`),
KEY `idx_student_id` (`student_id`)
);
表3:预警规则表(warning_rule)
CREATE TABLE `warning_rule` (
`id` bigint NOT NULL AUTO_INCREMENT,
`rule_name` varchar(100) NOT NULL COMMENT '规则名称',
`condition_expression` varchar(500) NOT NULL COMMENT '条件表达式(如: credit_earned/credit_required < 0.7)',
`priority` int DEFAULT '1' COMMENT '优先级',
PRIMARY KEY (`id`)
);
系统测试设计
1. 接口测试(Postman)
- 成绩录入接口:模拟批量导入1000条成绩数据,验证响应时间与数据一致性。
- 预警触发接口:构造临界值成绩数据,检查是否符合规则条件。
2. 小程序端测试(微信开发者工具)
- 登录流程:测试微信授权登录与Session维护机制。
- 消息推送:模拟触发预警后,检查用户是否收到模板消息。
3. 性能测试(JMeter)
- 并发200请求查询成绩接口,验证Redis缓存减轻数据库压力的效果。
源码结构示例
后端项目结构
src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── edu/
│ │ ├── controller/ # 控制器层
│ │ ├── service/ # 业务逻辑层
│ │ ├── mapper/ # MyBatis接口
│ │ └── entity/ # 数据库实体类
│ └── resources/
│ ├── application.yml # 多环境配置
│ └── mapper/ # XML映射文件
小程序端关键代码(Vue)
// 获取预警信息
async fetchWarningData() {
const res = await uni.request({
url: '/api/warning/list',
method: 'GET',
header: { 'Authorization': 'Bearer ' + this.token }
});
this.warningList = res.data.data;
}
以上设计可实现一个覆盖学生、教师、管理员角色的学业预警系统,如需完整源码或进一步扩展(如多级预警、家长端对接),可基于此框架迭代开发。
更多推荐

















所有评论(0)