6个月Python学习计划 Day 6 - 综合实战:学生信息管理系统
🎯 今日目标
- 巩固列表、字典、条件、循环等基础知识
- 练习程序结构设计和模块拆解能力
- 完成一个小型终端项目:学生信息管理系统
🗂️ 项目说明
该系统具有以下功能:
- 添加学生信息(姓名、年龄、成绩)
- 显示所有学生信息
- 查询指定学生
- 删除学生信息
- 退出系统
📋 示例界面效果
==== 学生信息管理系统 ====
1. 添加学生
2. 查看所有学生
3. 查询学生
4. 删除学生
5. 退出系统
请输入操作编号(1-5):
💡 操作建议
- 运行程序后,输入数字 1 开始添加学生信息;
- 输入 2 可以查看已添加的所有学生;
- 输入 3 查询某个学生的详细信息;
- 输入 4 删除某位学生;
- 输入 5 退出程序。
🧱 示例代码
students = []while True:print("\n==== 学生信息管理系统 ====")print("1. 添加学生")print("2. 查看所有学生")print("3. 查询学生")print("4. 删除学生")print("5. 退出系统")choice = input("请输入操作编号(1-5):")if choice == "1":name = input("请输入姓名:")age = int(input("请输入年龄:"))score = float(input("请输入成绩:"))student = {"name": name, "age": age, "score": score}students.append(student)print("✅ 添加成功!")elif choice == "2":if not students:print("📭 当前无学生信息")else:print("📋 所有学生信息:")for s in students:print(f"姓名: {s['name']} | 年龄: {s['age']} | 成绩: {s['score']}")elif choice == "3":search_name = input("请输入要查询的姓名:")found = Falsefor s in students:if s["name"] == search_name:print(f"🎯 找到:年龄: {s['age']} | 成绩: {s['score']}")found = Truebreakif not found:print("❌ 没有找到该学生。")elif choice == "4":del_name = input("请输入要删除的姓名:")for s in students:if s["name"] == del_name:students.remove(s)print("🗑️ 删除成功!")breakelse:print("❌ 没有找到该学生。")elif choice == "5":print("👋 再见!感谢使用学生信息管理系统!")breakelse:print("⚠️ 输入错误,请重新选择。")
输出结果为:
==== 学生信息管理系统 ====
1. 添加学生
2. 查看所有学生
3. 查询学生
4. 删除学生
5. 退出系统
请输入操作编号(1-5):1
请输入姓名:Sally
请输入年龄:22
请输入成绩:90
✅ 添加成功!==== 学生信息管理系统 ====
1. 添加学生
2. 查看所有学生
3. 查询学生
4. 删除学生
5. 退出系统
请输入操作编号(1-5):2
📋 所有学生信息:
姓名: Sally | 年龄: 22 | 成绩: 90.0==== 学生信息管理系统 ====
1. 添加学生
2. 查看所有学生
3. 查询学生
4. 删除学生
5. 退出系统
请输入操作编号(1-5):3
请输入要查询的姓名:Sally
🎯 找到:年龄: 22 | 成绩: 90.0==== 学生信息管理系统 ====
1. 添加学生
2. 查看所有学生
3. 查询学生
4. 删除学生
5. 退出系统
请输入操作编号(1-5):4
请输入要删除的姓名:Sally
🗑️ 删除成功!==== 学生信息管理系统 ====
1. 添加学生
2. 查看所有学生
3. 查询学生
4. 删除学生
5. 退出系统
请输入操作编号(1-5):5
👋 再见!感谢使用学生信息管理系统!
🔁 建议你练习的变式功能
- 学生成绩排序显示(高到低)
- 修改指定学生信息
- 将信息保存到文本文件中(以后学习文件处理时扩展)
- 增加性别字段,或者支持多个字段的搜索
students = []def add_student():name = input("请输入姓名:")age = input("请输入年龄:")gender = input("请输入性别(男/女):")score = input("请输入成绩:")student = {"name": name, "age": age, "gender": gender, "score": score}students.append(student)print("添加成功")def show_students():if not students:print("📭 当前无学生信息")else:sorted_students = sorted(students, key = lambda s : s['score'], reverse = True)print("📋 学生信息(按成绩降序):")for s in sorted_students:print(f"姓名: {s['name']} | 年龄: {s['age']} | 性别: {s['gender']} | 成绩: {s['score']}")def search_student():keyword = input("请输入要查询的姓名或性别:")found = Falsefor s in students:if s["name"] == keyword or s["gender"] == keyword:print(f"🎯 找到:姓名: {s['name']} | 年龄: {s['age']} | 性别: {s['gender']} | 成绩: {s['score']}")found = Trueif not found:print("❌ 没有找到匹配的学生。")def delete_student():del_name = input("请输入要删除的学生姓名:")for s in students:if s["name"] == del_name:students.remove(s)print("🗑️ 删除成功!")returnprint("❌ 没有找到该学生。")def update_student():name = input("请输入要修改的学生姓名:")for s in students:if s["name"] == name:print(f"当前信息:年龄: {s['age']} | 性别: {s['gender']} | 成绩: {s['score']}")s["age"] = int(input("请输入新的年龄:"))s["gender"] = input("请输入新的性别:")s["score"] = float(input("请输入新的成绩:"))print("✅ 修改成功!")returnprint("❌ 没有找到该学生。")def save_to_file():with open("students.txt", "w", encoding="utf-8") as f:for s in students:line = f"{s['name']},{s['age']},{s['gender']},{s['score']}\n"f.write(line)print("💾 信息已保存到 students.txt 文件")# 主程序入口
while True:print("\n==== 🧠 学生信息管理系统(进阶版) ====")print("1. 添加学生")print("2. 查看所有学生(按成绩排序)")print("3. 查询学生(按姓名/性别)")print("4. 删除学生")print("5. 修改学生信息")print("6. 保存信息到文件")print("7. 退出系统")choice = input("请输入操作编号(1-7):")if choice == "1":add_student()elif choice == "2":show_students()elif choice == "3":search_student()elif choice == "4":delete_student()elif choice == "5":update_student()elif choice == "6":save_to_file()elif choice == "7":print("👋 再见!感谢使用学生信息管理系统!")breakelse:print("⚠️ 输入有误,请重新选择。")
输出结果为:
1.添加学生
==== 🧠 学生信息管理系统(进阶版) ====
1. 添加学生
2. 查看所有学生(按成绩排序)
3. 查询学生(按姓名/性别)
4. 删除学生
5. 修改学生信息
6. 保存信息到文件
7. 退出系统
请输入操作编号(1-7):1
请输入姓名:Sally
请输入年龄:23
请输入性别(男/女):男
请输入成绩:90
添加成功==== 🧠 学生信息管理系统(进阶版) ====
1. 添加学生
2. 查看所有学生(按成绩排序)
3. 查询学生(按姓名/性别)
4. 删除学生
5. 修改学生信息
6. 保存信息到文件
7. 退出系统
请输入操作编号(1-7):1
请输入姓名:Tom
请输入年龄:22
请输入性别(男/女):女
请输入成绩:99
添加成功
2.查看所有学生(按成绩排序)
==== 🧠 学生信息管理系统(进阶版) ====
1. 添加学生
2. 查看所有学生(按成绩排序)
3. 查询学生(按姓名/性别)
4. 删除学生
5. 修改学生信息
6. 保存信息到文件
7. 退出系统
请输入操作编号(1-7):2
📋 学生信息(按成绩降序):
姓名: Tom | 年龄: 22 | 性别: 女 | 成绩: 99
姓名: Sally | 年龄: 23 | 性别: 男 | 成绩: 90
3.查询学生(按姓名/性别)
==== 🧠 学生信息管理系统(进阶版) ====
1. 添加学生
2. 查看所有学生(按成绩排序)
3. 查询学生(按姓名/性别)
4. 删除学生
5. 修改学生信息
6. 保存信息到文件
7. 退出系统
请输入操作编号(1-7):3
请输入要查询的姓名或性别:Sally
🎯 找到:姓名: Sally | 年龄: 23 | 性别: 男 | 成绩: 90==== 🧠 学生信息管理系统(进阶版) ====
1. 添加学生
2. 查看所有学生(按成绩排序)
3. 查询学生(按姓名/性别)
4. 删除学生
5. 修改学生信息
6. 保存信息到文件
7. 退出系统
请输入操作编号(1-7):3
请输入要查询的姓名或性别:Tom
🎯 找到:姓名: Tom | 年龄: 22 | 性别: 女 | 成绩: 99
5.修改学生信息
==== 🧠 学生信息管理系统(进阶版) ====
1. 添加学生
2. 查看所有学生(按成绩排序)
3. 查询学生(按姓名/性别)
4. 删除学生
5. 修改学生信息
6. 保存信息到文件
7. 退出系统
请输入操作编号(1-7):5
请输入要修改的学生姓名:Sally
当前信息:年龄: 23 | 性别: 男 | 成绩: 90
请输入新的年龄:23
请输入新的性别:女
请输入新的成绩:90
✅ 修改成功!==== 🧠 学生信息管理系统(进阶版) ====
1. 添加学生
2. 查看所有学生(按成绩排序)
3. 查询学生(按姓名/性别)
4. 删除学生
5. 修改学生信息
6. 保存信息到文件
7. 退出系统
请输入操作编号(1-7):5
请输入要修改的学生姓名:Tom
当前信息:年龄: 22 | 性别: 女 | 成绩: 99
请输入新的年龄:22
请输入新的性别:男
请输入新的成绩:99
✅ 修改成功!
6.保存信息到文件
==== 🧠 学生信息管理系统(进阶版) ====
1. 添加学生
2. 查看所有学生(按成绩排序)
3. 查询学生(按姓名/性别)
4. 删除学生
5. 修改学生信息
6. 保存信息到文件
7. 退出系统
请输入操作编号(1-7):6
💾 信息已保存到 students.txt 文件
保存的students.txt文件:
4.删除学生:
==== 🧠 学生信息管理系统(进阶版) ====
1. 添加学生
2. 查看所有学生(按成绩排序)
3. 查询学生(按姓名/性别)
4. 删除学生
5. 修改学生信息
6. 保存信息到文件
7. 退出系统
请输入操作编号(1-7):4
请输入要删除的学生姓名:Sally
🗑️ 删除成功!
✅ 今日小结
通过这个项目,你将:
- 熟悉基本的 CRUD(增删改查)逻辑
- 巩固 dict 与 list 的组合使用
- 增强对输入判断、循环控制的理解