python写一个学生管理系统豆包版

92 阅读3分钟
import json
import os

# 定义数据文件路径
DATA_FILE = "students.json"

# 初始化学生数据
def init_data():
    if os.path.exists(DATA_FILE):
        with open(DATA_FILE, "r", encoding="utf-8") as f:
            return json.load(f)
    return []

# 保存学生数据到文件
def save_data(students):
    with open(DATA_FILE, "w", encoding="utf-8") as f:
        json.dump(students, f, ensure_ascii=False, indent=4)

# 添加学生信息
def add_student(students):
    student_id = input("请输入学生学号:")
    # 检查学号是否已存在
    for student in students:
        if student["id"] == student_id:
            print("该学号已存在!")
            return
    name = input("请输入学生姓名:")
    age = input("请输入学生年龄:")
    gender = input("请输入学生性别:")
    major = input("请输入学生专业:")
    
    student = {
        "id": student_id,
        "name": name,
        "age": age,
        "gender": gender,
        "major": major
    }
    students.append(student)
    save_data(students)
    print("学生信息添加成功!")

# 查询学生信息
def query_student(students):
    query_type = input("请选择查询方式(1-按学号查询,2-按姓名查询,3-查询所有):")
    if query_type == "1":
        student_id = input("请输入学生学号:")
        for student in students:
            if student["id"] == student_id:
                print_student(student)
                return
        print("未找到该学生!")
    elif query_type == "2":
        name = input("请输入学生姓名:")
        found = False
        for student in students:
            if student["name"] == name:
                print_student(student)
                found = True
        if not found:
            print("未找到该学生!")
    elif query_type == "3":
        if not students:
            print("暂无学生信息!")
            return
        print("-" * 60)
        for student in students:
            print_student(student)
            print("-" * 60)
    else:
        print("无效的查询方式!")

# 打印学生信息
def print_student(student):
    print(f"学号:{student['id']}")
    print(f"姓名:{student['name']}")
    print(f"年龄:{student['age']}")
    print(f"性别:{student['gender']}")
    print(f"专业:{student['major']}")

# 修改学生信息
def modify_student(students):
    student_id = input("请输入要修改的学生学号:")
    for student in students:
        if student["id"] == student_id:
            print("当前学生信息:")
            print_student(student)
            student["name"] = input("请输入新姓名(回车保持不变):") or student["name"]
            student["age"] = input("请输入新年龄(回车保持不变):") or student["age"]
            student["gender"] = input("请输入新性别(回车保持不变):") or student["gender"]
            student["major"] = input("请输入新专业(回车保持不变):") or student["major"]
            save_data(students)
            print("学生信息修改成功!")
            return
    print("未找到该学生!")

# 删除学生信息
def delete_student(students):
    student_id = input("请输入要删除的学生学号:")
    for i, student in enumerate(students):
        if student["id"] == student_id:
            confirm = input(f"确定要删除{student['name']}的信息吗?(y/n):")
            if confirm.lower() == "y":
                del students[i]
                save_data(students)
                print("学生信息删除成功!")
            return
    print("未找到该学生!")

# 显示菜单
def show_menu():
    print("\n===== 学生管理系统 =====")
    print("1. 添加学生信息")
    print("2. 查询学生信息")
    print("3. 修改学生信息")
    print("4. 删除学生信息")
    print("5. 退出系统")
    print("========================")

def main():
    students = init_data()
    while True:
        show_menu()
        choice = input("请输入操作序号:")
        if choice == "1":
            add_student(students)
        elif choice == "2":
            query_student(students)
        elif choice == "3":
            modify_student(students)
        elif choice == "4":
            delete_student(students)
        elif choice == "5":
            print("感谢使用学生管理系统,再见!")
            break
        else:
            print("无效的操作序号,请重新输入!")

if __name__ == "__main__":
    main()

系统功能特点

  1. 数据持久化:采用 JSON 文件存储学生数据,即便程序退出,数据也不会丢失。
  2. 完整的 CRUD 操作:涵盖添加(Create)、查询(Read)、修改(Update)和删除(Delete)学生信息的功能。
  3. 多种查询方式:支持按学号查询、按姓名查询以及查看所有学生信息。
  4. 数据验证:添加学生时会检查学号是否重复,避免出现重复数据。
  5. 友好的交互界面:拥有清晰的菜单提示和操作反馈,提升用户体验。