【Python】学生管理系统

为了了解Json以及在python中如何处理Json数据,我在这里整理了一段全面详细的 Python 代码,演示了如何加载、处理和操作 JSON 数据。该代码包括读取 JSON 数据、查询学生信息、添加新学生、更新课程信息等操作。

示例代码

python 复制代码
import json

# 示例 JSON 数据
data = '''
{
  "students": [
    {
      "id": 1,
      "name": "Alice Johnson",
      "age": 20,
      "email": "alice.johnson@example.com",
      "major": "Computer Science",
      "courses": [101, 102]
    },
    {
      "id": 2,
      "name": "Bob Smith",
      "age": 21,
      "email": "bob.smith@example.com",
      "major": "Mathematics",
      "courses": [101, 103]
    },
    {
      "id": 3,
      "name": "Charlie Brown",
      "age": 22,
      "email": "charlie.brown@example.com",
      "major": "Physics",
      "courses": [102, 104]
    }
  ],
  "courses": [
    {
      "course_id": 101,
      "course_name": "Introduction to Programming",
      "instructor": "Dr. Emily White",
      "credits": 3
    },
    {
      "course_id": 102,
      "course_name": "Data Structures",
      "instructor": "Dr. John Doe",
      "credits": 3
    },
    {
      "course_id": 103,
      "course_name": "Calculus I",
      "instructor": "Dr. Jane Smith",
      "credits": 4
    },
    {
      "course_id": 104,
      "course_name": "General Physics",
      "instructor": "Dr. Alan Turing",
      "credits": 4
    }
  ],
  "registrations": [
    {
      "student_id": 1,
      "course_id": 101,
      "semester": "Fall 2023",
      "grade": "A"
    },
    {
      "student_id": 1,
      "course_id": 102,
      "semester": "Fall 2023",
      "grade": "B"
    },
    {
      "student_id": 2,
      "course_id": 101,
      "semester": "Fall 2023",
      "grade": "B+"
    },
    {
      "student_id": 2,
      "course_id": 103,
      "semester": "Fall 2023",
      "grade": "A-"
    },
    {
      "student_id": 3,
      "course_id": 102,
      "semester": "Fall 2023",
      "grade": "A"
    },
    {
      "student_id": 3,
      "course_id": 104,
      "semester": "Fall 2023",
      "grade": "B+"
    }
  ]
}
'''

# 解析 JSON 数据
data_dict = json.loads(data)

print(data_dict)

# 打印整个 JSON 数据
print("JSON 数据:")
print(json.dumps(data_dict, indent=4))

# 获取所有学生的信息
def get_all_students():
    return data_dict['students']

# 获取特定学生的信息
def get_student_by_id(student_id):
    for student in data_dict['students']:
        if student['id'] == student_id:
            return student
    return None

# 添加新学生
def add_student(student):
    data_dict['students'].append(student)

# 更新学生信息
def update_student(student_id, updated_info):
    for student in data_dict['students']:
        if student['id'] == student_id:
            student.update(updated_info)
            return True
    return False

# 删除学生
def delete_student(student_id):
    for student in data_dict['students']:
        if student['id'] == student_id:
            data_dict['students'].remove(student)
            return True
    return False

# 获取所有课程的信息
def get_all_courses():
    return data_dict['courses']

# 获取特定课程的信息
def get_course_by_id(course_id):
    for course in data_dict['courses']:
        if course['course_id'] == course_id:
            return course
    return None

# 打印所有学生的信息
print("\n所有学生的信息:")
for student in get_all_students():
    print(student)

# 打印特定学生的信息
student_id = 1
print(f"\n学生 ID 为 {student_id} 的信息:")
print(get_student_by_id(student_id))

# 添加新学生
new_student = {
    "id": 4,
    "name": "David Wilson",
    "age": 23,
    "email": "david.wilson@example.com",
    "major": "Chemistry",
    "courses": [103, 104]
}
add_student(new_student)
print("\n添加新学生后所有学生的信息:")
for student in get_all_students():
    print(student)

# 更新学生信息
updated_info = {
    "age": 24,
    "email": "david.wilson24@example.com"
}
update_student(4, updated_info)
print("\n更新学生信息后 ID 为 4 的学生信息:")
print(get_student_by_id(4))

# 删除学生
delete_student(4)
print("\n删除学生后所有学生的信息:")
for student in get_all_students():
    print(student)

# 打印所有课程的信息
print("\n所有课程的信息:")
for course in get_all_courses():
    print(course)

# 打印特定课程的信息
course_id = 102
print(f"\n课程 ID 为 {course_id} 的课程信息:")
print(get_course_by_id(course_id))

代码说明

  1. 导入和解析 JSON 数据 :
    • 使用 json 模块导入 JSON 数据并解析为 Python 字典。
  2. 基本操作函数 :
    • get_all_students():获取所有学生信息。
    • get_student_by_id(student_id):根据学生 ID 获取特定学生信息。
    • add_student(student):添加新学生。
    • update_student(student_id, updated_info):更新特定学生信息。
    • delete_student(student_id):删除特定学生。
    • get_all_courses():获取所有课程信息。
    • get_course_by_id(course_id):根据课程 ID 获取特定课程信息。
  3. 演示各项操作 :
    • 打印所有学生信息。
    • 获取并打印特定学生信息。
    • 添加新学生并打印更新后的学生列表。
    • 更新特定学生信息并打印更新后的学生信息。
    • 删除特定学生并打印更新后的学生列表。
    • 打印所有课程信息。
    • 获取并打印特定课程信息。

通过这些代码示例,你可以学习如何在 Python 中加载、解析和操作 JSON 数据。这些操作包括读取、添加、更新和删除数据,涵盖了基本的 JSON 数据处理技能。

相关推荐
wangchunyu1143 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
2501_944521595 小时前
Immer 跨端三方库仓颉适配全流程
python·eclipse·django
信誓旦旦的程序猿5 小时前
【Python量化实战宝典 #26】止损与回撤控制手册:移动止损、最大回撤(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
2501_944521595 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
Patrick在香港5 小时前
同一行 strftime,两台机器跑出两种日期
python·datetime·时区·locale·日期处理
2601_967987375 小时前
用Python+OpenCV+YOLO写个游戏脚本:从自动瞄准到自动采集的保姆级教程
python·opencv·yolo·目标检测·游戏自动化
meiying88385 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
人工智能导论实践课6 小时前
【GUI桌面开发3】PyCharm配置外部工具
ide·python·pycharm
一千柯橘6 小时前
LangChain 的实时输出处理: stream_events 和 Streaming
python·langchain·agent
贾公子6 小时前
图片 AIGC 检测接入实战——URL 与 Base64 的取舍、体积校验与「你送过去的可能不是那张图」
python·aigc