這是一個專為高雄大學學生設計的桌面應用程式,旨在幫助學生分析自己的學分修習狀況、查詢最新的課程資訊,並輔助排課。
本系統整合了兩大核心功能:
- 學分分析系統:登入學校的學分查詢系統,抓取學生的修課成績,並與畢業學分要求進行比對,幫助學生了解尚缺少的學分。
- 課程查詢與排課系統:提供一個介面來查詢學校開設的課程,並能即時從學校網站獲取特定課程的最新資訊(例如剩餘名額)。
- 自動學分分析:
- 使用 Selenium 自動化登入學生資訊系統並下載歷年成績資料。
- 解析成績資料,並根據系所畢業要求計算目前已修、尚缺的學分。
- 即時課程查詢:
- 提供所有課程的快取資料庫,加快查詢速度。
- 可針對特定課程向學校伺服器發送請求,獲取最即時的剩餘名額等資訊。
- Web 介面:
- 使用 Flask 作為後端伺服器,提供 API 接口。
- 啟動程式時會自動在瀏覽器中開啟操作介面,方便使用。
- 效能優化:
- 設有記憶體內快取機制 (In-Memory Cache),避免在短時間內重複向學校伺服器請求相同資料,減少等待時間。
- 設有請求頻率限制 (Rate Limiter),防止對學校伺服器造成過大壓力。
環境需求
- Python 3.x
- Google Chrome 瀏覽器
安裝步驟
-
複製專案
git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.git cd YOUR_REPOSITORY -
建立虛擬環境 (建議)
python -m venv venv
- Windows:
venv\Scripts\activate - macOS/Linux:
source venv/bin/activate
- Windows:
-
安裝依賴套件 從
requirements.txt檔案安裝所有必要的 Python 套件。pip install -r requirements.txt
-
啟動應用程式 執行後端的 Flask 應用程式。
python backend/app.py
程式啟動後,會自動在您的預設瀏覽器開啟
http://localhost:5000。
-
學分分析:
- 在主畫面上,點擊「啟動學分分析」按鈕。
- 程式會自動開啟一個 Chrome 瀏覽器視窗,並導向高雄大學的登入頁面。
- 請在該瀏覽器視窗中手動輸入您的學號與密碼以登入系統。
- 登入成功後,程式會自動抓取您的歷年成績並進行分析,最後將結果顯示在介面上。
-
課程查詢:
- 在主畫面的課程查詢區塊,您可以透過關鍵字搜尋課程。
- 點擊任一課程,可以查看詳細資訊。
- 點擊「更新即時資訊」之類的按鈕,系統會向學校伺服器請求該課程的最新狀態並更新在介面上。
本專案使用了以下的技術與函式庫:
- 後端 (Backend):
- Flask: 輕量級的 Web 框架,用於建立 API 伺服器。
- Flask-Cors: 處理跨域請求。
- Flask-Limiter: 用於 API 的請求頻率限制。
- Waitress: 用於生產環境的 WSGI 伺服器。
- 網頁爬蟲 (Web Scraping):
- Selenium: 用於模擬瀏覽器操作,自動登入與抓取學分資料。
- BeautifulSoup4: 用於解析 HTML 網頁內容。
- Requests: 用於發送 HTTP 請求以獲取課程資訊。
- 前端 (Frontend):
- HTML, CSS, JavaScript (詳細請見
frontend資料夾)。
- HTML, CSS, JavaScript (詳細請見
本專案採用 MIT License 授權。