云计算百科
云计算领域专业知识百科平台

Python学生管理系统:JSON持久化实战

好的!下面我将详细介绍如何使用Python实现一个功能完整的学生管理系统,包括基础功能(增删改查)和数据持久化(使用JSON文件存储)。教程包含完整源码及详细注释。


学生管理系统设计

系统主要功能模块:

  • 添加学生信息
  • 删除学生信息
  • 修改学生信息
  • 查询学生信息
  • 显示所有学生
  • 数据持久化(JSON文件存储)

  • 核心代码实现

    1. 数据结构设计

    每个学生信息包含:

    • 学号(ID)
    • 姓名(name)
    • 年龄(age)
    • 班级(class)

    # 学生信息结构示例
    student = {
    "id": "2023001",
    "name": "张三",
    "age": 18,
    "class": "计算机1班"
    }


    2. 主程序框架

    import json
    import os

    # 数据存储文件名
    DATA_FILE = "students.json"

    def load_data():
    """从文件加载学生数据"""
    if os.path.exists(DATA_FILE):
    with open(DATA_FILE, 'r') as f:
    return json.load(f)
    return []

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

    def add_student(students):
    """添加学生信息"""
    student_id = input("请输入学号: ")
    # 检查学号是否重复
    if any(s['id'] == student_id for s in students):
    print("学号已存在!")
    return

    name = input("请输入姓名: ")
    age = input("请输入年龄: ")
    class_name = input("请输入班级: ")

    students.append({
    "id": student_id,
    "name": name,
    "age": age,
    "class": class_name
    })
    save_data(students)
    print("添加成功!")

    # 其他功能函数(删除、修改、查询等)类似实现


    3. 完整功能代码

    import json
    import os

    DATA_FILE = "students.json"

    def load_data():
    if not os.path.exists(DATA_FILE):
    return []
    try:
    with open(DATA_FILE, 'r') as f:
    return json.load(f)
    except:
    return []

    def save_data(students):
    with open(DATA_FILE, 'w') as f:
    json.dump(students, f, ensure_ascii=False, indent=4)

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

    def add_student(students):
    student_id = input("学号: ")
    if any(s['id'] == student_id for s in students):
    print("错误:学号重复!")
    return

    name = input("姓名: ")
    age = input("年龄: ")
    class_name = input("班级: ")

    students.append({
    "id": student_id,
    "name": name,
    "age": age,
    "class": class_name
    })
    save_data(students)
    print(f"成功添加学生: {name}")

    def delete_student(students):
    student_id = input("输入要删除的学号: ")
    for i, s in enumerate(students):
    if s['id'] == student_id:
    students.pop(i)
    save_data(students)
    print("删除成功!")
    return
    print("未找到该学生!")

    def modify_student(students):
    student_id = input("输入要修改的学号: ")
    for s in students:
    if s['id'] == student_id:
    s['name'] = input(f"新姓名 (原: {s['name']}): ") or s['name']
    s['age'] = input(f"新年龄 (原: {s['age']}): ") or s['age']
    s['class'] = input(f"新班级 (原: {s['class']}): ") or s['class']
    save_data(students)
    print("修改成功!")
    return
    print("未找到该学生!")

    def search_student(students):
    keyword = input("输入学号或姓名: ")
    results = [
    s for s in students
    if keyword in s['id'] or keyword in s['name']
    ]
    if results:
    print("查询结果:")
    for s in results:
    print(f"学号: {s['id']}, 姓名: {s['name']}, 年龄: {s['age']}, 班级: {s['class']}")
    else:
    print("未找到匹配记录!")

    def show_all(students):
    if not students:
    print("暂无学生记录!")
    return
    print("\\n===== 所有学生信息 =====")
    for s in students:
    print(f"学号: {s['id']}, 姓名: {s['name']}, 年龄: {s['age']}, 班级: {s['class']}")

    def main():
    students = load_data()
    while True:
    show_menu()
    choice = input("请选择操作: ")
    if choice == '1':
    add_student(students)
    elif choice == '2':
    delete_student(students)
    elif choice == '3':
    modify_student(students)
    elif choice == '4':
    search_student(students)
    elif choice == '5':
    show_all(students)
    elif choice == '0':
    print("系统已退出!")
    break
    else:
    print("无效选项!")

    if __name__ == "__main__":
    main()


    功能测试

  • 运行程序后选择操作: ===== 学生管理系统 =====
    1. 添加学生
    2. 删除学生
    3. 修改学生
    4. 查询学生
    5. 显示所有学生
    0. 退出系统

  • 数据持久化验证: 程序关闭后,数据保存在students.json文件中,格式如下: [
    {
    "id": "2023001",
    "name": "张三",
    "age": "18",
    "class": "计算机1班"
    }
    ]


  • 扩展建议

  • 异常处理:增加输入校验(如年龄需为数字)
  • 数据加密:敏感信息加密存储
  • 多条件查询:支持按班级、年龄范围查询

  • 源码获取

    完整代码已托管至GitHub仓库: 👉 点击获取完整源码


    通过本教程,您已掌握如何构建一个具有数据持久化功能的学生管理系统。欢迎在项目中实践并扩展更多功能!

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Python学生管理系统:JSON持久化实战
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!