技术栈设计

后端技术栈

  • 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;
}


以上设计可实现一个覆盖学生、教师、管理员角色的学业预警系统,如需完整源码或进一步扩展(如多级预警、家长端对接),可基于此框架迭代开发。

更多推荐