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

🎯 今日目标

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

🗂️ 项目说明

该系统具有以下功能:

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

📋 示例界面效果

python 复制代码
==== 学生信息管理系统 ====
1. 添加学生
2. 查看所有学生
3. 查询学生
4. 删除学生
5. 退出系统
请输入操作编号(1-5):

💡 操作建议

  • 运行程序后,输入数字 1 开始添加学生信息;
  • 输入 2 可以查看已添加的所有学生;
  • 输入 3 查询某个学生的详细信息;
  • 输入 4 删除某位学生;
  • 输入 5 退出程序。

🧱 示例代码

python 复制代码
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 = False
        for s in students:
            if s["name"] == search_name:
                print(f"🎯 找到:年龄: {s['age']} | 成绩: {s['score']}")
                found = True
                break
        if not found:
            print("❌ 没有找到该学生。")

    elif choice == "4":
        del_name = input("请输入要删除的姓名:")
        for s in students:
            if s["name"] == del_name:
                students.remove(s)
                print("🗑️ 删除成功!")
                break
        else:
            print("❌ 没有找到该学生。")

    elif choice == "5":
        print("👋 再见!感谢使用学生信息管理系统!")
        break

    else:
        print("⚠️ 输入错误,请重新选择。")

输出结果为:

python 复制代码
==== 学生信息管理系统 ====
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
👋 再见!感谢使用学生信息管理系统!

🔁 建议你练习的变式功能

  • 学生成绩排序显示(高到低)
  • 修改指定学生信息
  • 将信息保存到文本文件中(以后学习文件处理时扩展)
  • 增加性别字段,或者支持多个字段的搜索
python 复制代码
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 = False
    for s in students:
        if s["name"] == keyword or s["gender"] == keyword:
            print(f"🎯 找到:姓名: {s['name']} | 年龄: {s['age']} | 性别: {s['gender']} | 成绩: {s['score']}")
            found = True
    if not found:
        print("❌ 没有找到匹配的学生。")

def delete_student():
    del_name = input("请输入要删除的学生姓名:")
    for s in students:
        if s["name"] == del_name:
            students.remove(s)
            print("🗑️ 删除成功!")
            return
    print("❌ 没有找到该学生。")

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("✅ 修改成功!")
            return
    print("❌ 没有找到该学生。")

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("👋 再见!感谢使用学生信息管理系统!")
        break
    else:
        print("⚠️ 输入有误,请重新选择。")

输出结果为:

1.添加学生

python 复制代码
==== 🧠 学生信息管理系统(进阶版) ====
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.查看所有学生(按成绩排序)

python 复制代码
==== 🧠 学生信息管理系统(进阶版) ====
1. 添加学生
2. 查看所有学生(按成绩排序)
3. 查询学生(按姓名/性别)
4. 删除学生
5. 修改学生信息
6. 保存信息到文件
7. 退出系统
请输入操作编号(1-7):2
📋 学生信息(按成绩降序):
姓名: Tom | 年龄: 22 | 性别: 女 | 成绩: 99
姓名: Sally | 年龄: 23 | 性别: 男 | 成绩: 90

3.查询学生(按姓名/性别)

python 复制代码
==== 🧠 学生信息管理系统(进阶版) ====
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.修改学生信息

python 复制代码
==== 🧠 学生信息管理系统(进阶版) ====
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.保存信息到文件

python 复制代码
==== 🧠 学生信息管理系统(进阶版) ====
1. 添加学生
2. 查看所有学生(按成绩排序)
3. 查询学生(按姓名/性别)
4. 删除学生
5. 修改学生信息
6. 保存信息到文件
7. 退出系统
请输入操作编号(1-7):6
💾 信息已保存到 students.txt 文件

保存的students.txt文件:

4.删除学生:

python 复制代码
==== 🧠 学生信息管理系统(进阶版) ====
1. 添加学生
2. 查看所有学生(按成绩排序)
3. 查询学生(按姓名/性别)
4. 删除学生
5. 修改学生信息
6. 保存信息到文件
7. 退出系统
请输入操作编号(1-7):4
请输入要删除的学生姓名:Sally
🗑️ 删除成功!

✅ 今日小结

通过这个项目,你将:

  • 熟悉基本的 CRUD(增删改查)逻辑
  • 巩固 dict 与 list 的组合使用
  • 增强对输入判断、循环控制的理解
相关推荐
FreakStudio1 小时前
一文速通Python并行计算:11 Python多进程编程-进程之间的数据安全传输-基于队列和管道
python·嵌入式·面向对象·并行计算·电子diy
老神在在0012 小时前
javaEE1
java·开发语言·学习·java-ee
魔道不误砍柴功2 小时前
《接口和抽象类到底怎么选?设计原则与经典误区解析》
java·开发语言
small_white_robot3 小时前
Tomcat- AJP协议文件读取/命令执行漏洞(幽灵猫复现)详细步骤
java·linux·网络·安全·web安全·网络安全·tomcat
Always_away3 小时前
26考研|高等代数:λ-矩阵
笔记·学习·线性代数·矩阵
DevangLic3 小时前
ffmpeg baidu
人工智能·pytorch·python·学习·ai·ffmpeg
图梓灵3 小时前
Maven与Spring核心技术解析:构建管理、依赖注入与应用实践
java·笔记·spring·maven
pop_xiaoli3 小时前
OC—UI学习-1
学习·ui·objective-c
deephub3 小时前
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
人工智能·python·深度学习·神经网络·架构·大语言模型
职业考试资料墙3 小时前
登高架设作业考试中常见的安全规范考点是什么?
学习·考试·题库·考证