中职院校 · 学生管理系统建设方案

学生管理系统功能规划

教务系统管教学数据,学生系统管住校与学工数据。两套后台独立建站、独立存库;微信小程序合成一个入口,按角色分功能。下面以功能模块和关系图为主,说明怎么拆、怎么连。

01 · 系统分工

教务与学生系统的边界

教务系统已承担排课、成绩、课堂考勤;其学生档案不开放在线改档。学生管理系统独立建站、独立数据库,承担学工可维护的档案及住校、通行、家校等模块。小程序合为一个入口,后台与数据必须分开。

教务系统

教学域 · 已有站点

  • 班级、课程、排课、课表
  • 成绩、课堂点名、教学材料
  • 教师测评
  • 学生名单只读(不提供在线改档)

学生管理系统

学工 / 住校域 · 新建站点

  • 学生信息维护(回写教务)
  • 宿舍、报修、查寝
  • 人脸、闸机、无感签到
  • 请假、评分、备注、家校、相册、统计
02 · 功能关系总图

校园里两套系统、一个入口、两类设备如何接在一起

下图是功能规划的总关系:小程序只做入口;教务与学生系统按域提供功能;闸机和摄像头只挂在学生系统上。箭头表示功能依赖或数据方向,不是页面跳转。

微信小程序(同一 AppID,按角色切换功能) 学生端 教师端 家长端 PC 管理端 教学功能 → 教务 学工 / 住校功能 → 学生系统 教务系统(独立库) 排课 / 课表 成绩 课堂考勤 教学材料 教师测评 学生档案只读 · 不在线改档 学生管理系统(独立库) 学生信息 档案维护 宿舍管理 楼栋 / 床位 宿舍报修 工单 查寝 在寝标注 人脸录入 审核 / 下发 门禁闸机 进出记录 无感签到 宿舍摄像头 请假 审批 班级/个人评分 加减分 备注 内部记录 家校 绑定 / 通知 班级相册 审核发布 设备网关 人脸下发 · 事件接入 · 心跳 PC 统计 在校 / 未归 / 报修 / 设备 档案回写 课表成绩只读 请假批准 → 课堂考勤 校门人脸闸机 进出 · 权限 宿舍无感摄像头 进楼识别 下发人脸 进出事件 识别事件 设备不连接教务。教务与学生系统之间只走接口,不共用一张业务表。
教务功能 学生系统功能 现场设备 绿箭头:读取 / 下发 棕箭头:回写 / 事件上报
03 · 模块规划

学生系统按 5 组功能建设,小程序与 PC 共用这套模块

分组是规划结构,不是五个独立产品。学生档案是主数据,其余模块都挂在学号上。教务侧已有模块不在学生系统里重做,只读调用。

功能组 模块 主数据 依赖 入口
主数据 学生信息管理、备注 学号、班级、联系方式、内部备注 与教务按学号同步 PC;小程序「我的」
住校 宿舍管理、报修、查寝 楼栋/房间/床位、工单、查寝批次 依赖学生档案;查寝读取请假与摄像头结果 PC 调配;小程序办理/标注
通行 人脸录入、闸机、无感签到 人脸档案、设备、进出/识别事件 依赖学生档案;设备网关统一接入 小程序录入;设备现场;PC 审核与监控
日常事务 请假、班级/个人评分 假单、评分流水 请假结果回写教务考勤,并影响查寝、闸机离校 小程序;PC 汇总
家校与展示 家校、班级相册、PC 统计 家长绑定、相册、聚合指标 读通行事件、请假、查寝、评分,不另造名单 家长端;班主任发布;PC 大屏
05 · 角色与入口

同一功能,按角色裁剪;教师与学生菜单必须分开

小程序一个,底栏两套。家长第三套身份,不与教师共用登录。下图是功能对角色的可见性,不是操作说明书。

学生小程序 教师小程序 家长小程序 PC 学生系统后台 学生 教师 / 班主任 / 宿管 家长 学工管理员 底栏:首页 课表 生活 消息 我的 底栏:点名 班级 审批 查寝 我的 首页即子女动态 独立站点,不做进教务菜单 读:课表、成绩、课堂考勤(教务) 写:请假、报修、人脸提交、相册投稿 读:本人宿舍、在寝、评分、假单 不可:改学号、审批、看内部备注 教务:课堂点名、课表、材料 班主任:假审批、评分、备注、人脸审 班主任 / 宿管:查寝 宿管:床位、报修工单、本楼设备 任课教师无班主任身份则无查寝 读:子女到校、在寝、请假结果 读:通知、已发布相册 可选:请假知情确认 不可:看全班、改档案、查他人 档案维护与教务同步任务 宿舍调配、报修总台、人脸队列 设备与心跳、全校统计大屏 不替代教务排课与成绩录入

教师登录仍走教务账号,再换学生系统教师令牌。学生、家长只持学生系统令牌。小程序内:点「课表 / 点名」请求教务;点「查寝 / 报修 / 人脸」请求学生系统。

06 · 数据对齐

字段级归属,避免两本花名册

教务库 课表 · 成绩 · 课堂考勤 学生名单镜像 学生系统库 档案维护 · 住校 · 通行 请假 · 家校 · 设备事件 课表 / 成绩 / 出勤 · 只读 档案 upsert · 请假回写考勤 业务键:学号。同步走服务账号,小程序不直调同步接口。
信息权威系统学生系统能否改
学号入学生成,全校唯一不能。改学号等于换人
姓名、班级、在籍学生系统维护,回写教务可以。教务后台不提供改档页
课表、成绩、课堂点名教务只显示,不另存权威副本
宿舍、人脸、报修、查寝、评分、相册、家长学生系统可以
生活请假学生系统审批可以;批准后通知教务考勤
手机号、家长电话学生系统可以;按规则回写教务备查
07 · 技术架构

在现有教务和小程序上扩展,不另起一套入口

教务已经是 ASP.NET Core 8 + SQL Server,微信小程序也已经同时连学生端接口(默认 5001)和教务接口(默认 5002)。学生管理系统沿用同一技术栈:独立站点、独立数据库 StudentSystem,小程序继续用现有 AppID,按角色切换页面和接口。

接入层 · 一个微信小程序
学生端学号登录 / 后续可绑微信。课表成绩走教务,生活功能走学生系统。
教师端工号登录,独立底栏。点名走教务 JWT;查寝、审批生活假换学生系统教师令牌。
家长端微信登录后绑定孩子学号。只调学生系统,数据范围限自己的孩子。
业务层 · 两套独立站点
教务 EduSystem排课、成绩、课堂考勤、教学材料。学生改档接口只接受服务间同步,不开放后台在线编辑。
学生系统 StudentSystem档案维护、宿舍、报修、人脸、闸机、摄像头、请假、查寝、评分、备注、家校、相册、统计。
数据层 · 两库隔离
EduSystem_DB学籍镜像、课表、成绩、edu_attendance。学生系统不再跨库直写这套表。
StudentSystem 库生活域全量表、设备事件、同步发件箱。可与教务同实例不同库,部署上完全可拆开。
设备层 · 适配器,不绑死一家厂商
统一设备网关鉴权、验签、补传、心跳。业务只认标准事件。
闸机适配下发人脸、收回权限、接收进/出结果。
摄像头适配接收无感识别;失败降级为人工查寝。

技术选型

选型原因
后端 ASP.NET Core 8,分层 API / BLL / DAL / Model,Dapper 与教务同一套,运维和人员技能连续
数据库 SQL Server,库名 StudentSystem,按租户 tenant_id 隔离 与现网教务一致;两库可同机也可分机
认证 各自签发 JWT;教师用「教务令牌换学生系统教师令牌」 不把两套密钥揉成一把,权限边界清楚
PC 管理端 学生系统独立静态站点(与教务 wwwroot 模式相同)+ ECharts 不把学工页面做进教务菜单,避免权限缠在一起
小程序 现有原生微信小程序扩展页面,config.js 继续配 STUDENT_API / EDU_API 已经能按角色切底栏,直接加生活模块
文件 人脸、报修图、相册先落本地磁盘,按租户分目录;量大再上对象存储 人脸图不走公网直链,接口鉴权后输出
消息 微信订阅消息 + 服务端发件箱重试 到校、请假结果、报修完工通知家长和老师

和小程序、教务的请求关系

微信小程序(同一 AppID)
  ├─ 学生登录  POST {STUDENT_API}/auth/login          → 学生 JWT
  ├─ 教师登录  POST {EDU_API}/auth/login               → 教务 JWT
  ├─ 教师换票  POST {STUDENT_API}/auth/from-edu        → 学生系统教师 JWT
  ├─ 家长登录  POST {STUDENT_API}/auth/wx-parent       → 家长 JWT(openid 绑学号)
  │
  ├─ 课表/成绩/课堂点名/教学材料/教师测评  → EDU_API 或经学生系统只读代理
  └─ 宿舍/报修/人脸/请假/查寝/评分/相册   → STUDENT_API

学生系统 ──同步──▶ 教务 POST /api/student/sync   (已有,请求头 X-Sync-Key)
学生系统 ──通知──▶ 教务请假/考勤写入接口
教务只读 API ──拉取──▶ 学生系统(班级、课表、成绩,避免再跨库直连)
08 · 如何实现

接口、表结构、同步、设备和权限怎么落地

1. 先收口现状:学生系统不再跨库写教务

当前学生端部分模块(考勤、教学材料、质量考评)是直接查 EduSystem_DB。这样短期能出功能,但把两套系统焊在同一台库上,独立部署和权限都做不干净。目标形态:

2. 学生系统核心表(独立库)

作用关键字段
stu_student 学生主档 student_code(业务主键)、姓名、班级、手机、家长电话、在籍状态、同步版本号
stu_note 内部备注 student_id、作者、可见范围、内容、时间
dorm_building / room / bed / occupancy 宿舍与入住 楼栋、房间、床号、入住/退宿时间,一床同时仅一人
repair_ticket 报修工单 位置、故障、照片、状态机:待接单→处理中→完成/关闭
face_profile / face_push_log 人脸与下发 照片路径、审核状态、特征版本、下发到哪些 device_id、成功/失败
device / device_event 闸机与摄像头 设备类型、位置、心跳;事件:时间、方向、学号、成功、离线序号
leave_request 生活请假 时段、类型、审批链、是否离校、是否已通知教务考勤
dorm_check / dorm_check_item 查寝 日期、查寝人;每人:在寝/未归/请假 + 摄像头对照结果
score_record 班级或个人评分 对象(人/班)、分值、项目、原因、记录人、可追溯
parent_bind / album_photo 家校与相册 openid、孩子学号、审核关系;照片、班级、是否对家长可见
sync_outbox 同步发件箱 目标系统、载荷、重试次数、下次发送时间。保证教务短暂故障也不丢

3. 和教务的同步协议

学号是两边唯一业务键。同步分三条通道,都走 HTTPS,服务账号鉴权,不允许小程序直调同步接口。

方向用途实现
学生系统 → 教务 档案 upsert(姓名、班级、电话等) 复用已有 POST /api/student/sync + X-Sync-Key;生产改为密钥 + IP 白名单。空值不覆盖。学号不可变。
学生系统 → 教务 生活假批准后写入课堂考勤 发件箱投递教务请假接口;教务侧按学号+日期写请假,避免再记缺勤。
教务 → 学生系统 班级、课表、成绩、课堂出勤只读 教务提供只读 API;学生系统定时拉或小程序按需读。学生系统不二次存储成绩为权威副本。
# 档案回写(已有能力上收口字段)
POST /api/student/sync
X-Sync-Key: ***
{
  "tenantId": 2,
  "items": [
    { "studentCode": "PZ20260101", "studentName": "…", "className": "…", "phone": "…" }
  ]
}

# 设备回传(学生系统新增,闸机/摄像头共用)
POST /api/device/v1/events
Authorization: Bearer {device_token}
{
  "deviceId": "GATE-01",
  "type": "face_pass",          // 或 camera_seen
  "direction": "in",
  "occurredAt": "2026-09-01T07:12:03+08:00",
  "personNo": "PZ20260101",
  "success": true,
  "offlineSeq": 1288
}

4. 小程序:一个程序,三套身份,两套令牌

  1. 登录页先选身份。学生走学生系统登录;教师走教务登录,成功后再换学生系统教师令牌,本地同时存两套 token。
  2. 请求封装:eduRequest 自动带教务 JWT 和 tenantId;stuRequest 自动带学生系统 JWT。页面禁止裸写域名。
  3. 底栏按角色动态配置(现有教师端已是独立 tabBar)。学生底栏:首页、课表、生活、消息、我的。教师底栏:点名、班级、审批、查寝、我的。家长无底栏杂项,首页即孩子动态。
  4. 人脸录入用小程序相机,前端压缩后上传;服务端做人脸检测(是否有脸、是否过暗)。通过后进入教师审核,审核通过才进入下发队列。
  5. 微信公众平台配置两个 request 合法域名(学生系统、教务)。订阅消息模板:到校、请假结果、报修完工。

5. 硬件:适配器 + 统一事件,业务不写厂家协议

闸机和摄像头品牌不同、接口不同。学生系统只实现一个设备网关:

人脸下发流程:审核通过 → 写入 face_push_log → 后台任务按楼栋/校门分组推送 → 失败重试 → 仍失败则工单给管理员。学生退学或退宿,先收回闸机权限,再改在籍状态。

6. 权限与审计

角色数据范围可写
学生 本人 请假、报修、人脸提交、相册投稿。不能改学号、不能看内部备注
任课教师 所任课班级(教务) 课堂点名(教务)。无查寝权限除非兼班主任
班主任 所带行政班 生活假审批、评分、备注、查寝、人脸审核
宿管 所负责楼栋 床位、报修、本楼查寝。不碰课表成绩
家长 已绑定子女 只读动态;请假知情确认(若学校开启)
学工管理员 本校租户 档案、同步任务、设备、全校统计

所有写操作记审计日志(谁、何时、对哪条、改前改后)。人脸照片接口必须带令牌,禁止把存储路径暴露成公开 URL。

7. PC 统计如何算

今日在校:校门当日最后一次成功记录为“进”且未有对应“出”,再扣已批准的离校假。未归:查寝批次里状态为未归,或宿舍摄像头在规定时点后无进楼记录且无请假。报修、闸机失败按工单状态和事件 success=false 聚合。大屏 30 秒轮询即可,不必上消息总线。

09 · 分步建设

按依赖关系排期,硬件可以后接,人脸不用重录

软件先把身份、宿舍、请假和同步跑通。闸机、摄像头接上后,已审核人脸从同一张表下发,不必重新采集。

第一期

独立站点 + 小程序融合 + 档案宿舍请假

StudentSystem 库与 PC 后台;stu_student / 宿舍 / 请假 / 备注;教务 sync 回写与只读课表;小程序学生生活页、教师换票与审批。停止学生系统跨库写教务。

第二期

人脸、闸机、报修、查寝、家长

手机录入与审核队列;设备网关 + 第一家闸机适配;报修状态机;人工查寝;家长绑定与订阅消息。

第三期

无感摄像头、评分、相册、统计大屏

摄像头适配接入同一事件表;班级/个人评分;相册审核;PC 今日概览与设备心跳;发件箱与失败告警打磨。

每期验收标准

期次可以认定做完的标志
学生系统改班级或电话后,教务花名册一致;老师学生同一个小程序、底栏不同;请假批准后课堂考勤不再记缺勤。
手机录脸、教师审核后闸机可过;断网补传不重复;家长能收到孩子进校提醒;宿管能关报修单。
宿舍摄像头记录能对上查寝名单;PC 能看出哪台设备掉线;相册和评分有完整操作记录。

全程约束