🐍 Day 19–20|综合项目
📘 文件版学生管理系统(终极入门版)
🎯 项目目标
一、项目功能清单(最终版)
✅ 必备功能
程序启动时 从文件加载数据
显示菜单
添加 / 修改学生成绩
删除学生
查看所有学生
统计信息(平均 / 最高 / 最低)
退出前 自动保存到文件
二、项目整体设计(非常重要)
1️⃣ 数据文件格式(简单可靠)
文件名:students.txt
小明,85小红,92小刚,78
2️⃣ 类设计
Student → 单个学生(name, score)StudentManager → 管理学生 + 文件读写
三、核心类设计
1️⃣ Student 类(数据模型)
class Student: def __init__(self, name, score): self.name = name self.score = score
2️⃣ StudentManager 类(核心)
class StudentManager: def __init__(self, filename): self.filename = filename self.students = [] self.load_from_file()
四、完整项目代码(强烈建议:分段手敲)
class Student: def __init__(self, name, score): self.name = name self.score = scoreclass StudentManager: def __init__(self, filename): self.filename = filename self.students = [] self.load_from_file() # ===== 文件相关 ===== def load_from_file(self): try: with open(self.filename, "r", encoding="utf-8") as f: for line in f: name, score = line.strip().split(",") self.students.append(Student(name, int(score))) except FileNotFoundError: # 第一次运行没有文件是正常的 pass def save_to_file(self): with open(self.filename, "w", encoding="utf-8") as f: for stu in self.students: f.write(f"{stu.name},{stu.score}\n") # ===== 业务功能 ===== def add_student(self): name = input("学生姓名:") try: score = int(input("学生成绩:")) if not 0 <= score <= 100: print("成绩必须在 0~100") return except ValueError: print("成绩必须是数字") return for stu in self.students: if stu.name == name: print("学生已存在,成绩已更新") stu.score = score return self.students.append(Student(name, score)) print("添加成功") def delete_student(self): name = input("要删除的学生姓名:") for stu in self.students: if stu.name == name: self.students.remove(stu) print("删除成功") return print("未找到该学生") def show_students(self): if not self.students: print("暂无学生数据") return for stu in self.students: print(f"{stu.name}:{stu.score}") def show_stats(self): if not self.students: print("暂无数据") return scores = [stu.score for stu in self.students] print("平均分:", sum(scores) / len(scores)) print("最高分:", max(scores)) print("最低分:", min(scores)) def show_menu(self): print("\n===== 学生管理系统 =====") print("1. 添加/修改学生") print("2. 删除学生") print("3. 查看所有学生") print("4. 统计信息") print("5. 退出")def main(): manager = StudentManager("students.txt") while True: manager.show_menu() choice = input("请选择(1-5):") if choice == "1": manager.add_student() elif choice == "2": manager.delete_student() elif choice == "3": manager.show_students() elif choice == "4": manager.show_stats() elif choice == "5": manager.save_to_file() print("数据已保存,程序结束") break else: print("无效选择")if __name__ == "__main__": main()
五、你在这个项目中真正掌握了什么?(非常重要)
✅ 面向对象建模(Student / Manager)
✅ 文件读写(加载 + 保存)
✅ 异常处理(防崩溃)
✅ 列表推导式
✅ 程序入口 main()
✅ 真实项目结构思维
👉 这是“能放进作品集”的入门项目
六、Day 19 & Day 20 学习建议
🗓 Day 19(建议)
🗓 Day 20(建议)
不看答案,自己再写一遍
改菜单顺序
改文件名 / 类名
尝试加一个功能
七、进阶挑战(强烈推荐)
🔥 挑战 1
🔥 挑战 2
🔥 挑战 3
拆成多个 .py 文件
student.py
manager.py
main.py
八、阶段性里程碑(恭喜)
🎉 你已经完成了 Python 系统入门的“最难一关”
你现在已经:
能写完整程序
能保存和读取数据
理解程序结构
不再是“只会语法”的初学者