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

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 的组合使用
  • 增强对输入判断、循环控制的理解
http://www.xdnf.cn/news/9174.html

相关文章:

  • ai写歌平台:AnKo开启音乐创作的智能时代!
  • java类加载器
  • 树莓派超全系列教程文档--(50)如何查找树莓派的IP地址
  • 计算机组成与体系结构:硬盘驱动器(Hard Disk Drives)
  • OpenGL Chan视频学习-9 Index Buffers inOpenGL
  • STM32F407VET6学习笔记6:定时器TIM2的配置使用
  • MPLS实验复现
  • 70页精品PPT | 休闲食品行业数据分析平台建设方案快消BI大数据解决方案BI方案
  • [ Qt ] | 常用控件(三):
  • AR眼镜+AI视频盒子+视频监控联网平台:消防救援的智能革命
  • 板凳-------Mysql cookbook学习 (七)
  • 钠离子电池循环寿命突破万次
  • [网页五子棋][用户模块]客户端开发(登录功能和注册功能)
  • 【C语言】排序方法
  • web常见的攻击方式(下)
  • nvm和node的环境配置与下载
  • Windows Telnet 正在连接xxx...无法打开到主机的连接。 在端口 xxx: 连接失败
  • 电脑主板VGA长亮白灯
  • 2025-05-27 学习记录--Python-模块
  • NGINX HTTP/3 实验指南安装、配置与调优
  • PromQL 从基础入门教程
  • LVS负载均衡
  • 【免费】【无需登录/关注】卫星影像在线下载网页
  • 实战分享:DolphinScheduler 中 Shell 任务环境变量最佳配置方式
  • K8s边缘集群赋能工业自动化:从传感器监控到智能决策的全流程升级
  • Pic手机拼图软件:创意拼图,轻松上手
  • React JSX语法介绍(JS XML)(一种JS语法扩展,允许在JS代码中编写类似HTML的标记语言)Babel编译
  • ​扣子Coze飞书多维表插件-查询数据
  • 【无标题】使用JEasyOpc开发OPCDA采集中间件
  • Lua中的`self`参数:揭秘隐藏的“对象上下文”