当前位置:首页>python>Day 19–20|综合项目(python零基础入门)

Day 19–20|综合项目(python零基础入门)

  • 2026-09-08 23:17:51
Day 19–20|综合项目(python零基础入门)
🐍 Day 19–20|综合项目
📘 文件版学生管理系统(终极入门版)

🎯 项目目标

  • 把 OOP + 文件操作 + 异常处理 + 函数 全部串起来

  • 做一个“关了再开数据还在”的程序

  • 代码结构清晰,接近真实项目写法


一、项目功能清单(最终版)
✅ 必备功能
  1. 程序启动时 从文件加载数据

  2. 显示菜单

  3. 添加 / 修改学生成绩

  4. 删除学生

  5. 查看所有学生

  6. 统计信息(平均 / 最高 / 最低)

  7. 退出前 自动保存到文件


二、项目整体设计(非常重要)
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
  • 把成绩改为 float

  • 保留 1 位小数

🔥 挑战 3
  • 拆成多个 .py 文件

    • student.py

    • manager.py

    • main.py


八、阶段性里程碑(恭喜)

🎉 你已经完成了 Python 系统入门的“最难一关”

你现在已经:

  • 能写完整程序

  • 能保存和读取数据

  • 理解程序结构

  • 不再是“只会语法”的初学者

最新文章

随机文章