【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.pswp.cn/web/13023.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13023.shtml
英文地址,請注明出處:http://en.pswp.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…