【Python】学生管理系统

devtools/2024/12/22 2:30:15/

为了了解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 studentreturn 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 Truereturn False# 删除学生
def delete_student(student_id):for student in data_dict['students']:if student['id'] == student_id:data_dict['students'].remove(student)return Truereturn 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 coursereturn 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 数据处理技能。


http://www.ppmy.cn/devtools/42184.html

相关文章

Java 中 String 类的 split() 方法

split() 方法 是 Java 中 String 类的一个常用方法,用于将字符串按照指定的分隔符分割成一个字符串数组。 它是一个非常强大的工具,可以用于各种字符串处理任务,例如: 从字符串中提取单词将字符串解析成不同的部分将字符串转换为…

Linux(九) 信号

目录 一、什么是信号 二、信号的种类 三、信号的产生 3.1 通过终端按键产生信号 Core Dump 核心转储 3.2 调用系统函数向进程发信号 3.3 由软件条件产生信号 3.4 硬件异常产生信号 四、信号的注册 五、信号的注销 六、信号的三种处理方式 七、信号的递达阻塞未决 八…

基于springboot+mybatis+vue的项目实战之增删改查CRUD—Restful风格

整个代码与前面的案例基于springbootmybatisvue的项目实战之增删改查CRUD-CSDN博客 mapper和servie没有任何的变化。 有变化的主要是controller和html页面 1、controller package com.example.controller;import com.example.pojo.Peot; import com.example.pojo.Result; i…

Maven 依赖排查

先从项目去看显而易见,假如我们有一个项目,父工程中包含一些子工程,如下: 我们想看一下samples-account中的依赖关系,那么我们可以打开 samples-account的pom文件,查看其maven依赖关系图。 我们可以看到此项…

Kibana使用

一、什么是Kibana   Kibana 是一个开源的分析和可视化平台,Kibana 提供搜索、查看和与存储在 Elasticsearch 索引中的数据进行交互的功能。开发者或运维人员可以轻松地执行高级数据分析,并在各种图表、表格和地图中可视化数据。 Kibana使用&#xff1a…

【Maven】Nexus私服简介_下载安装_登录

1、简介 1.1介绍 Nexus私服,也被称为Maven仓库管理器,是许多公司在自己的局域网内搭建的远程仓库服务器。提供了强大的仓库管理功能和构件搜索功能,使得开发人员能够更方便地管理和使用Maven项目中的依赖库。 1.2作用 内网访问&#xff1…

网络安全快速入门(十三)linux及vmware软件的网络配置

13.1 前言 在通过我们前面的了解,我们现在已经对Linux的基础知识有了大致的了解,今天我们来大概讲一下关于linux系统及vmware的网络配置问题,在这之前,我们需要对网络有一个大概的认识和了解,话不多说,我们…

【JS】基于原生JavaScript的大文件切片上传及断点续传实现

基于原生JavaScript的大文件切片上传及断点续传实现 在现代Web应用中,大文件上传是一个常见但具有挑战性的功能。随着文件大小的增加,如何高效可靠地上传文件至服务器成为亟待解决的问题。在本文中,我将介绍如何使用原生JavaScript实现大文件切片上传及断点续传功能。 为什…