基于Flask+Jinja2的快捷教務系統(后端鏈接到新版正方教務系統)

快捷教務系統(Easy Educational Administration Management System, EasyEAMS)

項目簡介

EasyEAMS 是一個基于 Flask + Jinja2 的現代化教務系統 Web 應用。學生可通過網頁端登錄,在線查詢個人信息、成績、課表、學業生涯、通知、選課等。系統界面美觀,交互友好,適合高校學生自助使用和二次開發。

本項目的 api.py 文件內容參考并引用了 Github 上openschoolcn的正方教務系統 API 項目,并在此基礎上做了適配和優化。

適配/更新說明

該程序當前已經適配PC Web端以及移動設備Web端。同時我會及時項目,感興趣的朋友可以點擊鏈接查看/下載最新版本。

主要功能

  • 用戶登錄:支持學號和密碼登錄,部分情況支持驗證碼登錄。
  • 個人信息:展示學生基本信息、學籍、聯系方式等。
  • 成績查詢:按學年/學期查詢課程成績,支持全年成績一覽。
  • 課表查詢:按學年/學期展示課程表,課程時間、地點、教師一目了然。
  • 學業生涯:統計學分績點、計劃內外課程完成情況,課程分項明細,計劃內總課程餅圖可視化。
  • 通知公告:查看系統通知、公告等消息。
  • 已選課程:查詢當前學年/學期已選課程,含課程詳情。
  • 板塊課列表:按板塊編號查詢可選課程。
  • 考試安排:查看當前學期考試考場安排信息。
  • 安全退出:一鍵安全退出系統。

登錄頁
主頁

適配不同學校教務系統說明

本系統以我的學校新版正方教務管理系統為例開發。只要你的學校使用的是新版正方教務管理系統(即新版“正方教務系統”Web端),均可直接使用本程序,無需修改核心代碼。

切換學校教務系統網址教程

  1. 找到你學校教務系統的網址
    一般格式為:

    https://zfjw.學校域名/jwglxt/
    

    例如:

    • 我學校教務管理系統網址為 https://zfjw.ntit.edu.cn/jwglxt/
    • 其他學校請在瀏覽器登錄教務系統后,復制瀏覽器地址欄的前綴部分(直到 /jwglxt/)。
  2. 修改后端配置
    打開項目根目錄下的 app.py 文件,找到如下代碼(一般在前面幾行):

    BASE_URL = "https://zfjw.ntit.edu.cn/jwglxt/"
    

    將其修改為你學校的教務系統網址。例如:

    BASE_URL = "https://zfjw.你的學校域名/jwglxt/"
    
  3. 保存并重啟服務
    保存 app.py 文件后,重啟 Flask 服務:

    python app.py
    
  4. 重新登錄
    在瀏覽器訪問首頁,使用你學校的學號和密碼登錄即可。

注意事項:

  • 僅支持新版正方教務系統(URL 結構和頁面風格與南通理工學院類似)。
  • 若遇到兼容性問題或接口變動,請反饋 issue 或自行適配 api.py 相關接口。

api.py 教務系統接口適配教程

有些學校的新版正方教務系統雖然大體接口一致,但部分接口路徑、參數或登錄方式可能略有不同。你可以通過修改 api.py 文件進行適配。

1. 主要適配點
  • BASE_URL:主機地址(已在 app.py 說明)
  • 登錄接口路徑、參數(如 login_url、key_url、kaptcha_url 等)
  • 數據接口路徑(如個人信息、成績、課表、通知等接口的 URL)
  • 請求參數/字段名(部分學校字段名可能不同)
  • 驗證碼、加密方式(部分學校登錄需要驗證碼或特殊加密)
2. 具體修改方法

步驟一:定位接口配置

打開 api.py,在 Client 類的 __init__ 方法中,找到如下代碼:

self.base_url = kwargs.get("base_url")
self.key_url = urljoin(self.base_url, "xtgl/login_getPublicKey.html")
self.login_url = urljoin(self.base_url, "xtgl/login_slogin.html")
self.kaptcha_url = urljoin(self.base_url, "kaptcha")
# 其他接口路徑...

如果你學校的接口路徑不同,請將上述路徑修改為實際路徑。

步驟二:調整接口參數

如登錄參數名不同(如 csrftoken、yhm、mm),可在 loginlogin_with_kaptcha 方法中調整:

login_data = {"csrftoken": csrf_token,"yhm": sid,"mm": encrypt_password,# 可能還需要其他參數
}

如有參數名不同,按實際接口文檔或抓包結果修改。

步驟三:調整數據接口

如成績、課表、個人信息等接口路徑或參數不同,找到對應的 get_gradeget_scheduleget_info 等方法,修改 urldata 字典即可。

步驟四:調試與驗證

  • 可用瀏覽器開發者工具或抓包工具(如 Fiddler、Charles)對比你學校教務系統的實際請求和響應。
  • 若遇到接口報錯、數據為空等,優先檢查 URL 和參數是否與實際一致。

步驟五:如需特殊適配

  • 某些學校可能有自定義加密、驗證碼、二次認證等特殊邏輯,可在對應方法中補充實現。
  • 如需幫助,可將抓包信息或接口文檔反饋給開發者。

示例:如何修改登錄接口路徑

假設你學校的登錄接口為 /auth/login.html,公鑰接口為 /auth/getKey.html,則只需在 api.py__init__ 方法中:

self.key_url = urljoin(self.base_url, "auth/getKey.html")
self.login_url = urljoin(self.base_url, "auth/login.html")

溫馨提示
  • 大部分新版正方系統接口結構類似,通常只需改 URL 前綴即可。
  • 若遇到復雜適配問題,建議先抓包分析,再逐步修改代碼。

安裝與運行

1. 克隆項目

git clone https://gitee.com/JXX_CODE/easy-eam.git
cd easy-eam

2. 安裝依賴

建議使用 Python 3.8 及以上版本,推薦使用虛擬環境。

pip install -r requirements.txt

3. 準備加密用戶登錄信息

當前使用rsa生成公鑰和私鑰分別對應前端和后端,第一次使用本程序需要先運行rsa_key.py生成兩串鑰匙,命令如下:

python rsa_key.py

4. 啟動服務

python app.py

默認訪問地址為 http://127.0.0.1:5000/,可在瀏覽器中打開。

目錄結構

easy-eam/
├── app.py                # Flask 主程序
├── api.py                # 教務系統核心邏輯
├── copyright.py          # 開源聲明
├── requirements.txt      # 依賴包
├── static/               # 靜態資源(圖片、SVG等)
├── templates/            # 前端頁面模板
└── README_zh.md          # 中文說明文檔

使用說明

  1. 啟動后訪問首頁,輸入學號和密碼登錄。
  2. 登錄成功后進入菜單頁,點擊各功能卡片進入相應頁面。
  3. 各頁面均可通過左上角“返回菜單”按鈕返回主菜單。
  4. 頂欄顯示當前登錄學生信息,右側可一鍵退出。
  5. 頁面底部可查看開源聲明,點擊彈窗顯示詳細內容。
  6. 如需顯示學校logo,僅需將學校的logo下載并命名為”school_logo.png",放置在static/img目錄下,刷新頁面即可顯示。

注意事項

  • 本系統僅供學習交流使用,嚴禁用于商業或非法用途。
  • 僅支持已開通教務系統賬號的學生使用。
  • 登錄信息、操作日志僅保留必要內容,敏感信息不會被記錄。
  • 日志自動清理,最多保留近 1 個月內容。

開源協議

本項目遵循 GNU GPL v3 開源協議。


如需二次開發或遇到問題,歡迎 issue !

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/88015.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/88015.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/88015.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

EDM自動化與出海獨立開發實用教程

隨著互聯網全球化發展,越來越多的獨立開發者(Indie Developer)選擇將自己的產品推向海外市場。如何高效地獲客、激活用戶、提升轉化率,成為出海過程中必須解決的問題。EDM(電子郵件營銷)自動化,…

「日拱一碼」017 深度學習常用庫——TensorFlow

目錄 基礎操作 張量操作: tf.constant 用于創建常量張量 tf.Variable 用于創建可訓練的變量張量 tf.reshape 可改變張量的形狀 tf.concat 可將多個張量沿指定維度拼接 tf.split 則可將張量沿指定維度分割 數學運算: tf.add 張量的加運算 tf.su…

ARM DStream仿真器腳本常用命令

以下是ARM DStream仿真器腳本中常用的命令及其功能分類,結合調試流程和典型應用場景整理: ?? 一、連接與初始化命令 connect 建立與目標設備的連接,需指定接口類型(如JTAG/SWD)和處理器核心。 示例:conne…

vscode 調試unity

lanch.json { “version”: “0.2.0”, “configurations”: [ { “name”: “Attach to Unity”, “type”: “vstuc”, “request”: “attach” } ] }

金融IT入門知識點

銀行金融IT核心知識點全解析:架構、技術與實踐 一、金融IT的戰略地位與行業特性 金融IT作為銀行業務的核心支撐體系,其發展水平直接決定了銀行服務的效率、安全性與創新能力。截至 2025年,中國銀行業線上化業務占比已達97%,手機銀…

C++——手撕智能指針、單例模式、線程池、String

智能指針今天我們來學習一下C中的智能指針,如果有人不知道C中的智能指針的概念的話:C智能指針是一種基于RAII(Resource Acquisition Is Initialization,資源獲取即初始化)機制的高級內存管理工具,用于自動化…

Mybatis----留言板

基礎項目:留言板 截止到目前為止,我們已經學習了 Spring(只學習了DI)、Spring MVC、SpringBoot、Mybatis 這些知識了,已經滿足了做簡單項目的基本要求了,所以接下來我們就從0到1實現表白墻項目。 需求分析…

Web-API-day3 DOM事件進階

一、 事件流 1.事件冒泡 const fa document.querySelector(.father)const son document.querySelector(.son)document.addEventListener(click, function () {alert(我是爺爺)})fa.addEventListener(click, function () {alert(我是爸爸)})son.addEventListener(click, fun…

小波增強型KAN網絡 + SHAP可解釋性分析(Pytorch實現)

效果一覽一、傳統KAN網絡的痛點與突破 1. 傳統KAN的局限性 傳統Kolmogorov-Arnold網絡(KAN)雖在理論上有可靠的多變量函數逼近能力,但存在顯著瓶頸: 計算效率低:訓練速度慢于MLP,資源消耗大,尤其…

tomcat部署多個端口以及制定路徑部署-vue3

vue3項目tomcat部署記錄 使用hash路由 字符串拼接的圖片地址可以使用import.meta.env.BASE_URL 默認8080 如果部署地址為8080/xc 則設置 vite.config.js中設置base為’/xc/’ outDir設置為xc 打包產物直接拖到webapps目錄下 如果另開一個端口 如8081 設置根目錄訪問 conf/ser…

LeetCode三數之和-js題解

給你一個整數數組 nums ,判斷是否存在三元組 [nums[i], nums[j], nums[k]] 滿足 i ! j、i ! k且 j ! k ,同時還滿足 nums[i] nums[j] nums[k] 0 。請你返回所有和為 0 且不重復的三元組。 注意:答案中不可以包含重復的三元組。 示例 1&…

Flink SQLServer CDC 環境配置與驗證

一、SQL Server 數據庫核心配置 1. 啟用 CDC 功能(Change Data Capture) SQL Server CDC 依賴數據庫級別的 CDC 功能及表級別的捕獲配置,需按以下步驟啟用: 啟用數據庫 CDC -- 以管理員身份連接數據庫 USE master; GO-- 檢查數…

軟考(軟件設計師)存儲管理—設備管理,磁盤調度

I/O軟件的核心目標是管理硬件差異、提供統一接口、實現高效可靠的數據傳輸。 核心目標: 設備無關性: 應用程序無需關心具體硬件細節。錯誤處理: 處理硬件錯誤和傳輸異常。同步/異步傳輸: 支持阻塞(等待完成&#xff09…

[C語言] C語言數學函數庫概覽

C語言數學函數庫概覽 文章目錄 C語言數學函數庫概覽一、概述二、基本數學函數詳解1. 平方根函數 sqrt(x)2. 冪函數 pow(x, y)3. 絕對值函數 fabs(x)4. 向上取整函數 ceil(x)5. 向下取整函數 floor(x) 三、三角函數與雙曲函數詳解1. 正弦函數 double sin(double x)2. 余弦函數 d…

【簡單三步】Stable diffusion Webai本地部署無法加載模型并報openai/clip-vit-large-patch14錯誤的解決方法

問題描述 Stable diffusion Webai本地部署成功后,手動加載本地模型checkpoint時,始終無法加載進去,確定模型存放位置無誤(位于models\Stable-diffusion)查看cmd窗口時,發現一個報錯提示:Can’t …

Java 命令行參數詳解:系統屬性、JVM 選項與應用配置

Java 命令行參數詳解:系統屬性、JVM 選項與應用配置 在 Java 應用啟動命令中,如: java -jar -Dserver.port8088 xdr-demo-1.0-SNAPSHOT-assembly.jar &-Dserver.port8088是一個 系統屬性(System Property) 設置。…

【論文筆記】World Models for Autonomous Driving: An Initial Survey

原文鏈接:https://ieeexplore.ieee.org/abstract/document/10522953 1. 世界模型的發展 A. 世界模型的結構基礎 世界模型包含4個關鍵組件,以模擬人類連貫的思考和決策過程。 a)感知模塊使用如變分自編碼器(VAE)、掩…

Spring Cloud Config(微服務配置中心詳解)

關鍵詞:Spring Cloud Config、配置中心、遠程倉庫、動態刷新、加密解密 ? 摘要 在微服務架構中,隨著服務數量的增加,統一管理各服務的配置信息變得尤為重要。傳統的本地配置文件方式難以滿足多環境、多實例、集中化的需求。 Spring Cloud …

【Note】《深入理解Linux內核》 第二十章:深入理解 Linux 程序執行機制

《深入理解Linux內核》 第二十章:深入理解 Linux 程序執行機制(Program Execution)關鍵詞:exec 系列系統調用、可執行文件格式(ELF)、用戶地址空間、內存映射、動態鏈接、棧初始化、入口點、共享庫、內核態…

服務器如何配置防火墻規則以阻止惡意流量和DDoS攻擊?

防火墻是保護服務器免受惡意流量和 DDoS 攻擊的第一道防線。通過合理配置防火墻規則,可以有效阻止惡意訪問、限制不必要的流量,并減少攻擊對服務器的影響。以下是配置防火墻規則的全面指南,包括基礎規則設置、防御 DDoS 攻擊的高級策略和最佳…