这几年高校教务系统一直是很多开发者练手的热门方向尤其是学生选课管理系统业务场景清晰、技术栈覆盖广、坑点也很典型。我之前完整做了一套基于 Python 和 Vue 的前后端分离版本用 PyCharm 作为主力开发工具框架层面对比过 Django 和 Flask 两套方案走了不少弯路也沉淀了一些实际经验。这篇文章就把整个开发过程拆开揉碎从选型到落地的每个关键节点都讲清楚希望给正在做同类项目或者准备拿这个题目交作业的朋友一些参考。1. 系统定位选课管理到底在管什么开始写代码之前建议先把业务边界想清楚。选课管理系统听起来不大但真正做起来会发现它牵扯到三方角色学生要查课、选课、退课、看课表教师要维护课程信息、查看选课名单管理员要管学生信息、教师信息、课程审核、选课规则配置。如果不提前拆分模块后面很容易陷入越写越乱的怪圈。从实际需求来看核心流程有这几个学生登录后浏览可选课程列表按培养方案或者兴趣筛选提交选课请求后系统扣减课程余量同时生成选课记录退课则反向操作释放余量。看似就是一个简单的增删改查但选课的业务规则比表面复杂得多。我当时做的版本里选课约束条件有这几类课程容量限制一门课有选课上限满了就不能再选时间冲突检测同一学期两门课的授课时间不能重叠学分上限控制一个学生每学期选的课程总学分不能超过阈值选课时间窗口教务系统在某个时间段内开放选课窗口外不允许操作课程先修关系某些高阶课程要求先修完前置课程才能选这套约束看着不算多但每一条都在后端要有对应的校验逻辑。尤其是时间冲突检测和选课并发控制是整个系统里最容易出 bug 的地方之一。先把这些业务规则吃透再去定技术方案顺序千万不能反。很多开发者一上来就搭框架、写代码后面发现业务逻辑撑不起表结构设计返工的成本是很高的。我个人的习惯是先用用户故事或者简单的流程图把核心链路画出来标清楚每个环节谁在操