快捷教務系統(Easy Educational Administration Management System, EasyEAMS)
項目簡介
EasyEAMS 是一個基于 Flask + Jinja2 的現代化教務系統 Web 應用。學生可通過網頁端登錄,在線查詢個人信息、成績、課表、學業生涯、通知、選課等。系統界面美觀,交互友好,適合高校學生自助使用和二次開發。
本項目的 api.py 文件內容參考并引用了 Github 上openschoolcn的正方教務系統 API 項目,并在此基礎上做了適配和優化。
適配/更新說明
該程序當前已經適配PC Web端以及移動設備Web端。同時我會及時項目,感興趣的朋友可以點擊鏈接查看/下載最新版本。
主要功能
- 用戶登錄:支持學號和密碼登錄,部分情況支持驗證碼登錄。
- 個人信息:展示學生基本信息、學籍、聯系方式等。
- 成績查詢:按學年/學期查詢課程成績,支持全年成績一覽。
- 課表查詢:按學年/學期展示課程表,課程時間、地點、教師一目了然。
- 學業生涯:統計學分績點、計劃內外課程完成情況,課程分項明細,計劃內總課程餅圖可視化。
- 通知公告:查看系統通知、公告等消息。
- 已選課程:查詢當前學年/學期已選課程,含課程詳情。
- 板塊課列表:按板塊編號查詢可選課程。
- 考試安排:查看當前學期考試考場安排信息。
- 安全退出:一鍵安全退出系統。
適配不同學校教務系統說明
本系統以我的學校新版正方教務管理系統為例開發。只要你的學校使用的是新版正方教務管理系統(即新版“正方教務系統”Web端),均可直接使用本程序,無需修改核心代碼。
切換學校教務系統網址教程
-
找到你學校教務系統的網址
一般格式為:https://zfjw.學校域名/jwglxt/
例如:
- 我學校教務管理系統網址為
https://zfjw.ntit.edu.cn/jwglxt/
- 其他學校請在瀏覽器登錄教務系統后,復制瀏覽器地址欄的前綴部分(直到
/jwglxt/
)。
- 我學校教務管理系統網址為
-
修改后端配置
打開項目根目錄下的app.py
文件,找到如下代碼(一般在前面幾行):BASE_URL = "https://zfjw.ntit.edu.cn/jwglxt/"
將其修改為你學校的教務系統網址。例如:
BASE_URL = "https://zfjw.你的學校域名/jwglxt/"
-
保存并重啟服務
保存app.py
文件后,重啟 Flask 服務:python app.py
-
重新登錄
在瀏覽器訪問首頁,使用你學校的學號和密碼登錄即可。
注意事項:
- 僅支持新版正方教務系統(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),可在 login
、login_with_kaptcha
方法中調整:
login_data = {"csrftoken": csrf_token,"yhm": sid,"mm": encrypt_password,# 可能還需要其他參數
}
如有參數名不同,按實際接口文檔或抓包結果修改。
步驟三:調整數據接口
如成績、課表、個人信息等接口路徑或參數不同,找到對應的 get_grade
、get_schedule
、get_info
等方法,修改 url
和 data
字典即可。
步驟四:調試與驗證
- 可用瀏覽器開發者工具或抓包工具(如 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 # 中文說明文檔
使用說明
- 啟動后訪問首頁,輸入學號和密碼登錄。
- 登錄成功后進入菜單頁,點擊各功能卡片進入相應頁面。
- 各頁面均可通過左上角“返回菜單”按鈕返回主菜單。
- 頂欄顯示當前登錄學生信息,右側可一鍵退出。
- 頁面底部可查看開源聲明,點擊彈窗顯示詳細內容。
- 如需顯示學校logo,僅需將學校的logo下載并命名為”school_logo.png",放置在static/img目錄下,刷新頁面即可顯示。
注意事項
- 本系統僅供學習交流使用,嚴禁用于商業或非法用途。
- 僅支持已開通教務系統賬號的學生使用。
- 登錄信息、操作日志僅保留必要內容,敏感信息不會被記錄。
- 日志自動清理,最多保留近 1 個月內容。
開源協議
本項目遵循 GNU GPL v3 開源協議。
如需二次開發或遇到問題,歡迎 issue !