【Python】学生管理系统

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

示例代码

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.mzph.cn/web/13023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深视 线扫相机 获取点云数据

Qt hello - 专注于Qt的技术分享平台 最近项目上用到了深视的线扫相机,集成了三天才搞定,分享下代码。 顺便吐槽一下,想用相机取图,这么简单的功能,搞得如此麻烦。 1,文档有三份,就不能集成到…

【计算机毕业设计】springboot反诈科普平台的设计与实现

相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低反诈科普平台的运营人员成本,实现了反诈科普平台的 标准化、制度化、程序化的管理,有效地防止了反诈科普平台的随意管理,提高了信息的处理速度和精确度,能够…

python中字符串的 format() 方法

文章目录 前言1、位置参数2、索引参数3、命名参数3、格式化参数 前言 format() 是 Python 字符串对象的方法,用于将值插入到格式化字符串的占位符中。它是一种灵活和强大的字符串格式化工具。format() 方法可以在字符串中使用占位符 {},并通过传递参数将…

[vue] nvm

nvm ls // 看安装的所有node.js的版本nvm list available // 查显示可以安装的所有node.js的版本可以在可选列表里。选择任意版本安装,比如安装16.15.0 执行: nvm install 16.15.0安装好了之后。可以执行: …

字符数组以及字符串相关的几个函数

一.字符数组 1.定义:格式如下 char a[10]; //此处就表示定义了一个长度为10的字符数组 2.引用: 也和其余的数组一样,是下标引用。 3.初始化: 如下代码为字符数组初始化的几种情况: int main() {char arr[5] {…

25考研英语长难句Day03

25考研英语长难句Day03 【a.词组】【b.断句】 多亏了电子学和微力学的不断小型化,现在已经有一些机器人系统可以进行精确到毫米以下的脑部和骨骼手术,比技术高超的医生用手能做到的精确得多。 【a.词组】 词组翻译thanks to多亏了,由于cont…

【JavaEE进阶】 Bean的作用域与生命周期

文章目录 🍃Bean的作用域🚩作用域的使用🚩观察Bean的作用域🎈单例作用域🎈多例作用域🎈请求作用域🎈会话作⽤域🎈Application作⽤域 🎄Bean的⽣命周期⭕总结 &#x1f34…

win11家庭中文版安装docker,报错 Docker Engine stopped

先引一下这位博主的链接超详细Windows11家庭中文版系统安装Docker-20230401_windows11安装docker-CSDN博客,我到前五步(跳出页面重启)和博主都是一样的,但是第六步我并没有报错,直接跳出docker界面 记录一下我的解决办法,首先按照…

金价又双叒涨了!现货黄金什么比较好

虽然近期有新闻显示,国内的实物黄金价格出现大幅的下跌,但是从整体看,多个黄金投资品种的长期上升趋势还是比较稳定的,因此我们会看到,很多投资者会趁现在这波下跌重新入场做多。那么投资黄金买什么比较好呢&#xff1…

Java中的类与对象-深入探索

在Java编程的世界里,类(Class)和对象(Object)是两个核心概念。它们是面向对象编程(OOP)的基石,使得Java能够处理复杂的数据结构和交互。本文将深入解析Java中的类和对象,…

浅述遥感技术在农业领域的应用

虽久未更新,但本文依旧延续以前叙述风格,即以通俗易懂方式描述关键问题。 本文章节安排如下: 简述背景;介绍在农业领域的主要应用技术的关键问题;总结和实例介绍。 1 背景描述-何为遥感图像? 一般来说&a…

如何向全国各大新闻网站投稿?

在信息爆炸的时代,新闻媒体的投稿工作对于单位的信息宣传员来说,既是一项重要的职责,也是一项充满挑战的任务。作为一名信息宣传员,我负责着单位的对外信息宣传投稿工作,每个月都需要在各大媒体上发表文章,以展示单位的成果和风采。 然而,刚开始的投稿之路并不顺畅。我习惯性地…

4种企业防泄密的办法,强烈推荐第二种

4种企业防泄密的办法,强烈推荐第二种 企业信息泄密常见的原因有内部人员、黑客、违规收集信息、第三方合作商,以下将为你详细分析这些泄密原因以及应对的方法。 1、内部人员泄密 内部员工由于能够接触到敏感数据,成为主要的泄露数据群体。这…

springboot 序列化和反序列化

介绍 在Java中,序列化和反序列化是一种将对象转换为字节流或将字节流转换为对象的机制。通过序列化,可以将对象存储到文件中、传输到网络上,或者在分布式系统中进行对象的传递。本文将详细介绍Java序列化和反序列化的原理、使用方法和常见应用…

优路教育:以实干、创新、永不言败的精神内核,推动新时代职教发展

随着“教育家精神”的提出,新时代下人民教师的职业内涵更为丰富,同时也被赋予了更为崇高的教育使命。强教必先强师,加强教师队伍建设是建设教育强国重要的基础工作。由此,打造一批勤勉敬业、创新实干的教师队伍,成为了…

2024最新洗地机推荐,洗地机怎么选?热门品牌哪个最好用?

在现代生活中,忙碌的日常让家庭清洁变得更加繁重和耗时。然而,洗地机的引入彻底改变了这一状况。凭借其强大的清洁效果和简便的使用方式,洗地机能够迅速清除地面上的各种污垢,使清洁工作变得轻松自如。正因为如此,洗地…

JWT生成token工具类实现

JWT简介 JWT定义 JWT全称为Json web token,也就是 Json 格式的 web token JWT数据结构 1.JWT由三段字符串组成,中间用.分隔 Project_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwiZXhwIjoxNzE2MzcwMTM0LCJpYXQiOjE3MTU3NjUzMzQsImp0aSI6IjllO…

cookie,session, token 的特点与区别

Cookie、Session 和 Token 在 Web 开发中扮演着不同的角色,各自具有特点和区别: Cookie 存储在用户的浏览器中,是由服务器发送到客户端并存储在客户端的小型文本文件。可以包含有关用户的信息,如身份验证令牌、用户偏好设置等。可…

MySQL触发器 ,视图索引 , 事务

MySQL进阶二 补充触发器知识 # 删除触发器代码 drop trigger 触发器名;# 当一个学员发生转班,班级对应的总数进行同步变化# 当一个学员发生转班,班级对应的总数进行同步变化delimiter !!create trigger movestudent after update on stu1 for each ROW…

力扣HOT100 - 152. 乘积最大子数组

解题思路&#xff1a; 方法一&#xff1a;暴力 class Solution {public int maxProduct(int[] nums) {int max Integer.MIN_VALUE;int s 1;for (int i 0; i < nums.length; i) {s 1;for (int j i ; j < nums.length; j) {s * nums[j];max Math.max(max, s);}}ret…