基于微信公众号小程序的课表管理平台设计与实现
1、系统架构

2、公众号小程序
(1)公告通知/教务通知/考试安排
管理员发布通知后,教师/学生能实时接收通知,通知内容包括文本、图片、视频、链接等。根据教师所属院系定向推送相关通知,避免信息干扰。
(2)上课提醒:
教师/学生用户在微信端登录平台后获取该用户对应课表信息,系统自动识别用户课表中第一节课的开始时间,并以此为基础提前1小时触发提醒。例如用户周一上午8:00有课程,系统会在周一上午7:00向用户发出提醒,提醒内容包括课程、时间、教室信息等。
(3)教室申请:
需要申请使用教室时,可点击教室申请查看教室的使用状况及相关设备。确定好需要的教室后,按学期、校区、教学楼、周次、星期、节次、等维度筛选,并备注用途。
例如:当我点击该教室申请占用后,该教室状态第一节为红色表示已占用,到第二节课后又可以为正常为未使用状态。
(4)我的课表:
管理员通过后台管理将课表信息上传后,教师/学生能实时获取课表信息方便查看自己的课表。课表会显示周一至周日的课程信息,内容包括课程名称、授课教师/授课班级、教室位置、上课时间等信息。
(5)个人中心:
(6)交流反馈:
可在交流社区发布教学经验分享、教学资源(如课件、教案等),支持搜索。学生可编辑个人反馈内容(如标题、详细内容),可添加图片或文件进行说明,支持反馈内容模糊搜索。可发出帖子提问课程、教学安排等相关问题,可查看其他同学的提问及教师回复,可对其他反馈内容进行评论。
(7)调课申请:
教师微信端登录后点击选择申请调课按钮,教师根据实际需求选择需要调整的课程,接着详细选择调课的具体周次、节次、以及教室信息。对于调课理由,教师既可以选择预设的常见理由,如"参加学术会议""身体突发不适"等,也可以手动输入详细的特殊原因。为增强申请的可信度,教师还能上传相关证明材料,如会议邀请函、医院的诊断书等。点击提交后,发送到后台管理员审核,教师可在平台上随时查看审核状态。若调课成功,系统会向相关教师和学生发出调课通知。调课成功即发出调课通知并实时更新相关人员课表,若审核不通过及时驳回申请并告知教师原因和修改建议,例如调课时间与其他教学活动冲突等,方便后续教师重新提交。
能选择周次、时间(第几节课到第几节课)、教室地点、上课班级等。
在管理员驳回之后,教师能够看到驳回的理由。
(8)课程统计
根据学生课表统计出学生已修课程的学分、学时、(按学期、课程类型等)。学生可将课程统计结果导出为报告文件,便于存档或与教师交流。
根据课程统计计算出学生已获得的课程学分、学时等(按学期、课程类型等)情况设置学业预警(低于2),对可能存在学业风险的学生进行预警提示。















3、数据库设计
php
// 课表集合
db.createCollection('courses', {
validator: {
$jsonSchema: {
required: ['userId', 'courseName', 'time', 'classroom'],
properties: {
userId: {bsonType: 'string'}, // 关联用户ID
semester: {bsonType: 'string'}, // 学期信息
weekdays: {
type: 'array', // 周一至周日课程
items: {
lessons: {
type: 'array',
items: {
courseName: 'string',
teacher: 'string',
startTime: 'date',
endTime: 'date',
classroom: 'string'
}
}
}
}
}
}
}
});
// 教室状态集合
db.createCollection('classrooms', {
validator: {
$jsonSchema: {
required: ['building', 'roomNumber', 'schedule'],
properties: {
schedule: {
type: 'array', // 按周次存储占用状态
items: {
week: 'int',
days: {
type: 'array',
items: {
periods: {
type: 'array', // 每节课的状态
items: {
status: {
enum: ['available', 'reserved', 'in_use']
}
}
}
}
}
}
}
}
}
}
});
4、核心功能实现
- 上课提醒(cloud/functions/reminder)
php
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {
// 每天凌晨获取次日课程
const now = new Date()
const tomorrow = new Date(now.setDate(now.getDate() + 1))
const res = await db.collection('courses').aggregate()
.match({
userId: event.userInfo.openId,
'weekdays.days.lessons.startTime': _.gte(tomorrow)
})
.project({
firstLesson: { $arrayElemAt: ['$weekdays.days.lessons', 0] }
})
.end()
// 发送订阅消息
await cloud.openapi.subscribeMessage.send({
touser: event.userInfo.openId,
templateId: 'REMINDER_TEMPLATE_ID',
data: {
thing1: { value: res.data[0].courseName },
time2: { value: formatTime(res.data[0].startTime) },
thing3: { value: res.data[0].classroom }
}
})
}
function formatTime(date) {
// 时间格式化逻辑...
}
- 教室申请(cloud/functions/classroom)
javascript
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {
const { building, room, week, day, periods } = event
// 检查教室状态
const classroom = await db.collection('classrooms').doc(`${building}-${room}`)
.update({
data: {
[`schedule.${week-1}.days.${day-1}.periods`]: periods.map(p => ({
status: 'reserved'
}))
}
})
// 更新申请记录
await db.collection('reservations').add({
data: {
userId: event.userInfo.openId,
status: 'pending',
applyTime: new Date(),
...event
}
})
}
5、前端核心组件
- 课表展示(miniprogram/components/schedule)
javascript
Component({
data: {
currentWeek: 1,
schedule: []
},
methods: {
async loadSchedule() {
const res = await wx.cloud.callFunction({
name: 'course',
data: {
action: 'get',
week: this.data.currentWeek
}
})
this.setData({
schedule: res.result.data.map(day => ({
...day,
lessons: day.lessons.map(lesson => ({
...lesson,
timeRange: `${lesson.startTime}~${lesson.endTime}`
}))
}))
})
}
}
})
6、管理员后台
(1) 用户管理:赋予用户权限。
(2)学生管理:姓名、学号、学院、专业、班级、身份证号码、电话号、性别、密码、备注等信息。
(3)课表管理:(教师课表、学生课表)管理课程实现课表的更新与展示,提供准确的课程时间与地点等信息。
(4)课程管理:支撑课程基础数据的建档维护工作,涵盖课程命名、学分设置、课程属性等核心要素的标准化录入。
(5)院系班级管理:统筹院系专业结构配置与班级动态调整,实现组织结构信息的全生命周期维护。
(6)公告通知管理:构建即时化信息传递通道,精准投放校园公告、活动预告等公共资讯至目标用户群体。
(7)教务通知管理:推送教学计划变更、教务规章更新等关键信息至师生端,确保管理决策的及时传达。
(8)调课申请管理:构建调课申请全流程监管机制,涵盖申请审核、资源调配、课表同步等核心环节。
(9)考试安排:用于向师生传递相关考试信息,包括科目设置、时间规划、监考人员配置等关键维度。
(10)教室信息管理:动态维护教学场所资源档案,实时更新教室占用状态、设备清单等核心参数。
(11)交流反馈管理:构建师生双向沟通平台,支撑教学问题提报、经验交流等互动场景,驱动管理服务持续优化。