# 學生課程選課管理系統 - 報告講稿
## 開場白
各位老師、同學大家好,我是第三組的代表。今天要向大家介紹我們的專題:「學生課程選課管理系統」。
---
## 一、發想過程
首先談談我們為什麼選擇這個題目。
選課系統是每位大學生都會使用的重要系統,具有實際應用價值與教育意義。我們認為透過開發這個系統,可以達到幾個學習目標:
- **學習真實世界中多角色權限管理的實作** - 這是實務上非常重要的能力
- **理解教務系統的運作邏輯** - 深入了解我們每天使用的系統背後的設計
- **練習資料庫與關聯設計** - 這是本課程的核心學習目標
- **體驗完整的系統開發流程** - 從需求分析到測試的完整經驗
---
## 二、系統用途及設計說明
### 系統用途
本系統提供三種角色使用:
1. **管理員** - 擁有完整的後台管理功能
2. **教師** - 負責課程與學生管理
3. **學生** - 進行選課與課表查詢
### 資料庫設計
我們的資料庫總共設計了五張表:
- 使用者帳號表
- 學生資料表
- 教師資料表
- 課程資料表
- 選課紀錄表
這五張表透過適當的關聯設計,能夠支援所有系統功能。
---
## 三、大致功能
接下來介紹各角色的功能規劃。
### 管理員功能
管理員擁有最完整的權限,包括:
- 學生資料管理、教師資料管理、課程資料管理
- 帳號管理與權限設定
- 選課統計報表、課程開課狀況報表
- 系統參數設定,例如選課時間、學分上限等
### 教師功能
教師可以:
- 查看授課課程列表
- 查詢選課學生名單並匯出名單
- 檢視個人課表
- 修改個人資料
### 學生功能
學生使用者能夠:
- 課程查詢、選課與退選
- 檢視個人課表
- 查看已選學分統計
- 修改個人資料
---
## 四、小組分工
我們七位組員的分工如下:
- **組員1**: 資料庫設計、關聯設定、整體協調
- **組員2**: 管理員介面、資料管理功能
- **組員3**: 教師介面、課程管理功能
- **組員4**: 學生介面、選課功能
- **組員5**: 各類查詢設計、報表製作
- **組員6**: 核心邏輯、驗證函式、權限控制
- **組員7**: 介面美化、測試、文件撰寫
每個人都有明確的任務,同時也會互相支援。
---
## 五、時程預估
我們預計用(八)六週完成這個專題:
**第1-2週:需求分析與資料庫設計**
- 完成資料表設計與關聯圖(ERD)
- 建立Access資料庫檔案
- 輸入測試資料
**第3-4週:核心功能開發**
- 完成基本的CRUD功能
**第5-6週:進階功能開發**
- 選課邏輯實作,包括衝堂檢查、人數限制
- 報表設計,如課表、名單、統計
- 查詢表單優化,加入篩選、排序功能
**第7-8週:整合測試與優化** (已經是報告的時間,所以會再往前調整)
- 系統整合測試
- 使用者介面優化
---
## 六、可能用到的技術或技巧
在開發過程中,我們會運用以下技術:
- 資料表設計
- 查詢(Query)設計
- 表單設計
- 報表設計
- VBA程式設計
---
## 七、可能遇到的障礙或問題及解決方法
我們也預想到幾個可能遇到的問題,並準備了解決方案:
### 問題1: 多使用者權限控制
**挑戰**: Access不像網頁系統有session機制,如何記錄當前登入者?
**解決方案**:
- 使用全域變數(模組層級)儲存登入資訊
- 建立登入表單,驗證後將UserID、Role存入全域變數
- 在各表單開啟時檢查權限,控制功能顯示或隱藏
### 問題2: 選課衝堂檢查
**挑戰**: 如何判斷新選課程是否與已選課程時間衝突?
**解決方案**:
- 在課程資料表設計時,統一上課時間格式,例如:"(一)3-4、(三)7-8"
- 使用查詢檢查是否存在相同時段的已選課程
### 問題3: 避免重複選課
**挑戰**: 如何防止學生重複選同一門課?
**解決方案**:
- 在選課表單檢查是否已選過該課程
- 資料表設定複合主鍵(StudentID + CourseID)
- 設定驗證規則防止重複
---
## 結語
以上就是我們第三組的專題提案。這個選課管理系統不僅具有實用性,更能讓我們學習到完整的資料庫設計與系統開發技能。我們會按照規劃的時程,努力完成這個專題。
謝謝各位的聆聽,如果有任何問題,歡迎提出討論!