当前位置: 首页 > news >正文

6个月Python学习计划 Day 6 - 综合实战:学生信息管理系统

🎯 今日目标

  • 巩固列表、字典、条件、循环等基础知识
  • 练习程序结构设计和模块拆解能力
  • 完成一个小型终端项目:学生信息管理系统

🗂️ 项目说明

该系统具有以下功能:

  1. 添加学生信息(姓名、年龄、成绩)
  2. 显示所有学生信息
  3. 查询指定学生
  4. 删除学生信息
  5. 退出系统

📋 示例界面效果

==== 学生信息管理系统 ====
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 的组合使用
  • 增强对输入判断、循环控制的理解

相关文章:

  • 【系分】论文模版
  • 开源酷炫大数据可视化大屏html+eacher 100+套
  • 2025 海外短剧 CPS 系统开发:技术驱动下的全球化内容分销新范式
  • Spark、Hadoop对比
  • Day04
  • cursor-stats 实时监控 Cursor IDE 的使用情况和订阅状态
  • 体现物联网环境下安全防护的紧迫性 :物联网环境下的个人信息安全:隐忧与防护之道
  • Linux升级内核回退到旧内核启动
  • 2025上半年软考系统架构设计师选择题试题与答案
  • spring4第2课-ioc控制反转-依赖注入,是为了解决耦合问题
  • springboot--实战--大事件--用户接口开发
  • TS.43规范-1
  • winsock对话设计框架
  • 全志V853 mpp程序开发
  • [小白]Docker部署kingbase(人大金仓)数据库[超详细]
  • Linux `pwd` 命令深度解析与高阶应用指南
  • js判断当前设备是否为移动端
  • CSV数据处理全指南:从基础到实战
  • java 项目登录请求业务解耦模块全面
  • mysql 合集
  • 做网站用到java吗/网站查询ip地址
  • 机器ip后面加个端口做网站/推广引流平台app大全
  • 做最好的色书网站/重庆seo代理计费
  • wp做的网站打开域名会跳转到其他网站/b站视频推广app
  • 做门窗的 在哪个网站跑业务跑业务/小程序开发教程全集免费
  • 专业的集团网站建设/教育培训网站设计