阶段验收:函数化程序设计
上一节跟随步骤重构了学生信息管理系统。这次换一个业务场景:如果不依赖可变的全局数据,也不复制相同的查找逻辑,能否独立完成一个可运行的管理系统?本次验收要求你从需求出发完成函数拆分,检查自己是否真正掌握了参数、返回值、作用域和主流程组织。
验收任务
问题:如何把课程报名管理拆成职责清楚的函数,并让新增、查询、修改、删除和统计在同一个主流程中协同工作?
编写一个命令行课程报名管理系统,至少支持下面六项功能:
text
1. 新增报名
2. 显示全部报名
3. 按姓名查询
4. 修改学习状态
5. 删除报名
6. 显示课程统计
0. 退出系统每条报名记录使用字典保存:
python
{
"name": "张三",
"course": "Python",
"status": "学习中",
}课程统计需要输出每门课程的报名人数。例如:
text
Python:3 人
Web:2 人
MySQL:1 人函数设计要求
程序至少包含下面这些函数,名称可以自行调整:
python
show_menu()
find_registration(registrations, name, course)
add_registration(registrations)
show_registrations(registrations)
search_registrations(registrations)
update_status(registrations)
delete_registration(registrations)
show_statistics(registrations)
main()同时满足以下要求:
- 经常变化的报名数据不能放在全局变量中。
- 查找函数通过返回值交出结果,不在函数内部完成所有后续操作。
- 不复制三份相同的查找循环。
- 每个业务函数能用一句话说明自己的主要职责。
- 输入错误的功能编号后,程序能够继续运行。
实现顺序
先完成显示、新增和查询,再完成修改、删除与统计。每写完一个函数就单独调用一次,不要等全部写完后再运行。
必测场景
功能写完不等于验收完成。完成程序后,按顺序测试下面这些场景,确认每个函数都能在真实操作中协同工作:
- 空列表时显示全部报名,程序给出明确提示。
- 新增两门不同课程,再新增一条同名但不同课程的记录。
- 重复添加同名、同课程记录,程序拒绝重复报名。
- 查询不存在的姓名,程序继续运行。
- 修改一条报名状态,再检查原列表中的数据已经变化。
- 删除一条记录,课程统计同步变化。
- 输入错误菜单编号,再输入
0正常退出。
验收标准
| 等级 | 达成情况 | 下一步 |
|---|---|---|
| 通过 | 六项功能完整,必测场景全部通过,函数职责清楚 | 进入类与对象 |
| 基本通过 | 功能可用,但存在重复查找或依赖可变全局数据 | 回看函数参数、返回值和作用域 |
| 需要巩固 | 主流程仍是一段连续代码,无法独立拆分函数 | 重新完成上一节的学生管理重构 |
通过后,保留这份代码。学习类与对象时,再回看这份程序并思考:哪些数据和操作应该组合成一个对象?