从零开始写一个命令行学生管理系统(CRUD)—— 面向过程的巅峰 不需要框架不需要数据库一个命令行工具就能让你掌握编程的“增删改查”。 你好我是 Evan一名计算机专业的学长也是《大一突围》专栏的作者。如果你问我“学完基础语法后该做什么项目”我会毫不犹豫地推荐学生管理系统。它涵盖了编程最核心的操作Create创建、Read读取、Update更新、Delete删除。这是面向过程编程的集大成之作也是你迈向复杂项目的基石。今天我就带你从零开始写一个完整的学生管理系统。我会逐行拆解代码并列出每一个用到的知识点。欢迎来到《大一突围》专栏。一、项目需求与功能预览数据存储使用 Python 的列表list存储字典dict每个学生是一个字典包含学号、姓名、成绩。运行方式命令行菜单循环用户输入数字选择功能。二、需要掌握的知识点清单大一版在动手写代码之前请确保你了解以下知识点。我会在代码中标注对应位置 如果你对其中某些概念还不熟悉建议先复习再跟着敲。三、代码实现逐模块讲解3.1 全局数据结构# 用一个列表存储所有学生每个学生是一个字典 students []3.2 显示菜单def show_menu(): print(\n *30) print( 学生管理系统) print(1. 添加学生) print(2. 查看所有学生) print(3. 查找学生) print(4. 修改学生信息) print(5. 删除学生) print(6. 按成绩排序) print(7. 退出系统) print(*30)3.3 添加学生Createdef add_student(): print(\n--- 添加学生 ---) stu_id input(请输入学号: ) # 检查学号是否已存在 for stu in students: if stu[id] stu_id: print(学号已存在) return name input(请输入姓名: ) # 异常处理成绩必须是数字 try: score float(input(请输入成绩: )) except ValueError: print(成绩必须是数字) return students.append({id: stu_id, name: name, score: score}) print(添加成功)知识点循环检查、异常处理、字典追加。3.4 查看所有学生Readdef list_students(): if not students: print(暂无学生数据) return print(\n--- 学生列表 ---) print(学号\t\t姓名\t成绩) for stu in students: print(f{stu[id]}\t\t{stu[name]}\t{stu[score]})3.5 查找学生python def find_student(): stu_id input(请输入要查找的学号: ) for stu in students: if stu[id] stu_id: print(f找到{stu[id]} {stu[name]} {stu[score]}) return print(未找到该学生)3.6 修改学生信息Updatepython def update_student(): stu_id input(请输入要修改的学号: ) for stu in students: if stu[id] stu_id: print(f原信息{stu[id]} {stu[name]} {stu[score]}) new_name input(请输入新姓名直接回车保留原值: ) if new_name: stu[name] new_name try: new_score input(请输入新成绩直接回车保留原值: ) if new_score: stu[score] float(new_score) except ValueError: print(成绩格式错误未修改) print(修改完成) return print(未找到该学生)3.7 删除学生Deletepython def delete_student(): stu_id input(请输入要删除的学号: ) for i, stu in enumerate(students): if stu[id] stu_id: students.pop(i) print(删除成功) return print(未找到该学生)3.8 按成绩排序显示python def sort_by_score(): if not students: print(暂无学生) return sorted_students sorted(students, keylambda x: x[score], reverseTrue) print(\n--- 按成绩从高到低排序 ---) print(排名\t学号\t姓名\t成绩) for idx, stu in enumerate(sorted_students, 1): print(f{idx}\t{stu[id]}\t{stu[name]}\t{stu[score]})3.9 主程序循环python def main(): while True: show_menu() choice input(请输入你的选择(1-7): ) if choice 1: add_student() elif choice 2: list_students() elif choice 3: find_student() elif choice 4: update_student() elif choice 5: delete_student() elif choice 6: sort_by_score() elif choice 7: print(感谢使用再见) break else: print(无效输入请重新选择) if __name__ __main__: main()四、完整代码整合可直接运行你可以将上面所有代码块按顺序复制到一个.py文件中运行即可体验。五、扩展挑战文件持久化保存到文件目前的程序关闭后数据会丢失。你可以添加保存/加载功能使用 JSON 文件import json def save_data(): with open(students.json, w, encodingutf-8) as f: json.dump(students, f, ensure_asciiFalse, indent2) def load_data(): global students try: with open(students.json, r, encodingutf-8) as f: students json.load(f) except FileNotFoundError: students []然后在main开始时调用load_data()每次修改后调用save_data()。六、面向过程的“巅峰”意味着什么这个项目虽然简单但它包含了几乎所有编程语言通用的逻辑输入-处理-输出。学会它你再遇到任何“管理系统”图书、工资、库存都能轻松拿下。❓ 问题你在写这个管理系统时遇到了什么问题或者你给它加了什么有趣的功能比如文件保存、模糊查找欢迎在评论区分享你的代码片段我会选出 3 位同学送出《学生管理系统完整代码 练习题》PDF。如果本文带你完成了第一个完整项目请点 赞 关注本专栏《大一突围》持续输出编程实战与成长干货。收藏本文随时回看代码模板你的每个管理系统都从这里起步。