Download presentation
Presentation is loading. Please wait.
1
第二十一章 教務處排課專題製作-使用ADO
21-1 編班 21-2 排課 21-3 跨班選修作業 21-4 重補修作業 21-5 本章回顧
2
什麼是學年學分制? 學年學分制已從八十九年八月於全國高中職同步實施,此學制的重大改變為改用學年學分制取代傳統學年制、實施跨班跨年級或跨校選修、不及格科目的重補修教學及未能如期畢業的延修等新措施。其次,並取消留級制,學生於規定年限內修畢一定學分數,即可領取畢業證書。其排課方式也接近大學,可跨班與跨校選修,亦有跨年級、跨校的重補修制,當然也有延修生的隨班附讀,所以教務處的電腦化作業系統勢必全面換新。
3
程式外包還是自行開發? 程式換新的方式有兩種,其一是外包,另一為本校自行開發。外包的優點為省事,但其缺點是程式有問題時,必須苦等程式設計師的光臨,且往往各校的繁忙時刻都相同,程式設計師當然分身乏術,只好一再延遲公佈成績的時間,並影響後續的重補修教學。此外教育局常要求各式統計報表,或各大學推甄報名時常要求個別學生的特殊統計資料,外包的程式通常程式與資料庫均加密,使用者完全無法對資料庫進行任何簡單查詢。目前由於資料庫及資料庫語言功能日益強大,資訊教育日益普及,學校教職員資訊素養亦日益提升,所以各校一定有能力自行開發屬於各校需求的應用程式。 深入探索本章範例,讀者將會發現,只要使用簡單的步驟即可完成驚人效果。此外,自行開發的另一優點為程式量身定作,而不是該校的作業程序去配合制式化的規格。
4
本章的研讀對象為何? 其次,除了教務處的行政人員可研讀本書撰寫自己的程式外,目前的實習老師及有心從事教育工作的教育學程學生亦應研讀本章。因為教育制度的變革及社會環境的變遷,使得原本是肥缺的行政兼職日漸成為燙手山芋,欲兼任行政工作的老師漸趨凋零,或兼任年數日益縮短,在大家意願不是很高的情況,遇有教師缺額待聘,即以有行政經驗或有行政工作意願者優先錄取,其考題亦已加入行政電腦化的題目。 所以有志從事教育工作者若能對行政電腦化工作有進一步了解,一定比別人更容易錄取,並快速進入狀況。
5
21-1 編班 要去教務處兼任組長工作,如果沒有先對教務處的作業程序有些了解,保證天天滿頭包回家,8月1日新組長就任,5日左右領到新生名單,10日要完成編班,月底就要完成全校師生課表。所以對任何新手而言,與其說是夢魘,亦可稱為跳火坑,其挑戰性一定不輸甫接任行政院長即要面對的總質詢。 以下即是編班的作業程序。 一、規劃學生年班別基本資料 新生報到第一件事就是編班,所以應先規劃學生年班別資料表如下,請參考school.mdb的stgrade資料表,本例的school.mdb係使用Access 2000所建置,所以資料庫的提供者應點選或輸入OLEDB.4.0。
6
資料表名稱 說 明 學生年班別資料表 用 途 記載每一學生的科、年、班級等資料 Stgrade 欄位 順序 標題 欄位名稱 型態 長度 索引
說 明 學生年班別資料表 用 途 記載每一學生的科、年、班級等資料 欄位 順序 標題 欄位名稱 型態 長度 索引 允許 空白 學號 id 字串 5 ˇ 第1碼:入學年度 1 姓名 name 8 2 性別編號 sex 位元組 0:女 1:男 3 科別編號 depart 0:普通 1:資訊 2:電子 4 年級 grade 班級編號 class 6 座號 no 7 入學考試別 exam 0:聯考 1:申請 2:推薦 3:技保 4:學保 5:運動專長 入學總成績 score 單精度 9 校碼 schid 0:代表本校 (因為可跨校選修及 重補修)
7
二、匯入或填入資料表 聯招會或本校召生委員會除了提供每一位新生一份書面資料外,通常也會提供一張磁片,此一磁片含有新生的姓名、性別、錄取科別及入學總成績等資料,所以可使用資料庫的“匯入/匯出”功能將已有的學生資料匯入,若沒有現成磁片檔,也可參考範例21-1a (與範例20-1a相同)鍵入以上資料 待會所要進行的編班、填入學號、填入座號及列印各班名條等工作,也都會使用stgrade資料表
8
範例 21-1a 請設計一個程式可以新增、修改及刪除school.mdb 的 stgrade資料表。
9
三、編班 編班為求公允,通常學生的分配原則如下: 1. 男女生平均分配各班。
1. 男女生平均分配各班。 2. 不同的入學方式,如聯招、申請入學或推薦入學的學生平均分配各班。 3. 每種入學方式依入學成績採 “之”字方式平均分配到各班。 以上原則,若要以ADO模式完成,可以利用Sort屬性協助完成,先將全部資料以性別、入學方式及入學成績排序,再將此資料集以“之” 字順序填入班別。綜合高中或職業學校則應先分科再編班,分科的方法可使用Filter屬性依序搜尋各科名單,再依次填入班別。
10
四、填入座號 為了方便任課教師快速的於名條找到學生,填入座號的原則通常是先分男女,再依姓氏筆劃由小而大排列。
11
五、填入學號 學號的第一碼通常是代表入學學年度,依次的流水號才是每位學生的編號。學號的填入可依班級、座號將全部學生排序,再填入學號即可。
12
範例 21-1b 如何編班,填入座號及填入學號。
13
六、列印班級名條 學生年班別基本資料表(stgrade)大部份的欄位都是代碼,例如性別、科別、班別及入學考試別等都是代碼,代碼的優點為符合資料庫正規化的原則,可節省資料庫空間、便於維護資料庫及保持資料的一致性。但若將這些欄位以代碼方式列印,則其可讀性較低,解決的方式為運用資料庫關聯的特性,製作這些欄位的對照表,如此即可印出可讀性高的名條,其操作步驟如下: 1. 於stgrade中將欲製作關聯欄位製作索引。 本例使用Access 2000,將學號(id)、性別(sex)、科別(depart)、年級(grade)、班級(class)、入學考試別(exam)及校碼(schid)製作索引,其中只有學號為不可重複,其餘皆可重複。
14
2. 製作性別關聯資料表(sext) 欄位名稱及型態如下:
資料表名稱 sext 說 明 性別關聯資料表 用 途 將學生年級別資料表(stgrade)中的性別代碼 0轉為"女“,1轉為 "男" 欄位 順序 標題 名稱 型 態 長度 索引 性別編號 no 位元組 ˇ 1 性別 name 字串 2 資料記錄如下: No name 女 1 男
15
3. 製作班級關聯資料表classt 資料記錄如下: 資料表名稱 classt 說 明 班級關聯資料表 用 途
說 明 班級關聯資料表 用 途 將學生年級別資料表(stgrade)中的班級代碼轉為班級名稱 欄位順序 標題 欄位 名稱 型 態 長度 索引 說 明 班級編號 no 位元組 ˇ 1 班級名稱 name 字串 8 資料記錄如下: no name 101 普通一真 102 電子一真 103 資訊一真 104 資訊一善
16
4. 製作報表
17
21-2 排課 排課的程序為: 一、基本資料之建立 (1) 建立科目資料表。 (2) 建立教師資料表。
21-2 排課 排課的程序為: 一、基本資料之建立 (1) 建立科目資料表。 (2) 建立教師資料表。 (3) 建立設備(教室、工場及實驗室)資料表。 (4) 建立課程資料表。 (5) 建立課程時間資料表。 二、排課 排定課程資料表的程序為: (1)排定各班的科目。 (2)排定各班科目任課教師。 (3) 排定各班科目使用設備。 (4) 排定各班科目的上課時間。 三、 列印 (1) 列印各班課程表。 (2) 列印各設備課程表。 (3) 列印各教師課程表。
18
一、 建立資料表 (1) 建立科目資料表(course) 科目資料表欄位名稱及型態如下:
資料表名稱 course 說 明 科目資料表 用 途 記錄每一科目的基本資料 欄位 順序 標題 欄 位 名 稱 型 態 長度 索引 說 明 科目編號 id String 3 ˇ 1 科目名稱 name 16 2 必選修別 required string 0:必修 1:指導選修 2:跨班選修 學分數 unit Byte 4 切割方式 cut
19
(2) 建立教師資料表(teacher) 教師資料表欄位名稱及型態如下:
資料表名稱 teacher 說 明 教師資料表 用 途 記錄所有教師的基本資料 欄位 順序 標題 名稱 型 態 長度 索引 說 明 教師編號 id String 3 ˇ 1 教師姓名 name 8 2 職務 duty string 0:校長 1:主任 2:組長 3:科主任 4:導師 5:科任 基本時數 hour Byte 4 專長 skill
20
建立設備資料表(room) 設備資料表欄位名稱及型態如下:
資料表名稱 room 說 明 設備資料表 用 途 記錄每一可使用教室、工場及實驗室基本資料 欄位 順序 標題 名稱 型 態 長度 索引 說 明 設備編號 id String 4 ˇ 1 設備名稱 name 8 2 座位數 seat Byte 3 保管班級 class
21
(4) 建立各班級課程資料表(clco) 建立各班級課程資料表欄位名稱及型態如下:
資料表名稱 clco 說 明 課程資料表 用 途 記錄每一課程的基本資料 欄位 順序 標題 名稱 型 態 長度 索引 說 明 課程編號 id String 5 ˇ 前三碼為班級編號 後兩碼為流水號 1 班級編號 clid 3 2 科目編號 coid 教師編號 teid 4 設備編號 roid 月考 exam Booleean 是否計算月考成績 6 印卷 paper 是否由教務處統一
22
製卷與考試 建立各班級課程時間資料表 每一課程的上課次數不同, 所以應另建立一個班級課程與時間資料表如下:
製卷與考試 建立各班級課程時間資料表 每一課程的上課次數不同, 所以應另建立一個班級課程與時間資料表如下: 資料表名稱 clcoti 說 明 課程時間資料表 用 途 每一課程的上課時間 欄位 順序 標題 名稱 型 態 長度 索引 課程編號 id String 5 ˇ 1 時間 ti 2 第一碼為星期 第二碼為節次
23
二、 排課 (1) 排定各班所要開設科目。 本例共有四班,分別是普通一真、電子一真、資訊一真及資訊一善,普通一真所要開設的科目如下,其中跨班選修是指將同年級學生打散,由學生自由選修
課程 編號 班級 科目 名稱 學分 數 任課 教師 使用設備 編號 切割 方式 國文一 c01 4 22 英文一 n01 數學一 m01 自概一 m02 2 社概一 c02 計概一 t01 生物一 m03 3 21 軍訓一 p01 體育一 p02 週會 o01 1 班會 b02 圖學一 e05 美學一 c03 跨班選修 b03 科技與 人生一 e04 合計 35
24
將各課程填入 使用設備及任課教師 每一位任課老師均有其基本授課時數規定,此時數與此位老師所兼的職務有關。排課應先能滿足其基本授課時數,兼課是指每位老師除了基本授課時數外,還可合法兼任的時數,此時數則公私立學校有別,公立學校上限為4小時,私立學校則希望每一老師多兼一些課,以降低人事成本;代課是指有人請長假,例如服兵役,進修或育嬰假等,原則上這些請長假的人也要排基本時數給他,若有請專人代課,則那位代課老師即要完成那位請假的人全部課程。 若沒有專任代課教師則應將這些課平均分給其它人,公立學校規定每位老師至多可代5小時的課,兼、代課時數的上限當然是保障每一教師的授課品質。茲將上表普通一真的班級課表填入任課教師及使用設備、增加課程編號與班級編號,並使用Access輸入
25
範例 21-2a 請設計一個程式,提供clco資料表的輸入與修改 與範例20-1a相同,可於此新增、刪除及修改記錄。
26
範例 21-2b 請寫一程式可以 1.瀏覽每一任課教師的授課班級。 2.瀏覽每一班級的所有科目及任課教師。 3.瀏覽每一教室的課表。
以上三項功能都是“主副明細” 的應用,以下僅以“瀏覽每一任課教師的授課班級”為例,說明“主副明細”製作,其餘請自行發揮。
27
(3) 將各班課程填入時間 將各班課程填入時間是教學組長最有挑戰性的工作,所有課程填入時間的原則如下:
(3) 將各班課程填入時間 將各班課程填入時間是教學組長最有挑戰性的工作,所有課程填入時間的原則如下: 先填入全校共同的時段,例如週會,班會及共同跨班選修課。 其次填入需要使用特殊設備的科目,例如電腦教室、工場、實驗室及視聽教室等科目。 再其次填入教學時數長的科目,一般除了實習課外,超過3小時的課都要折開,以免上課效果不佳,所以若有一門課為3小時,若折成21方式上課,則應先填入2小時的時段,再填1小時的時段。所以若是專門上1學分課的老師,他的課也就會像天女散花一樣零零落落。 比較刁鑽蠻橫的同事先排,除非你的角很硬,否則日以繼夜辛苦的公平排課,換來的是少數蠻橫者的咆哮,任誰也不願意如此辛勤的付出。
28
同一門課,不要排在同一天,例如早上已有二節數學,
下午當然不要再排數學。 目前雖然有些排課軟體,可以將已完成的班級課程資料表自動填入時間,且可以輸入每個老師那些時段不排課,但若限制條件太多,根本電腦無法求得結果,往往還是要先將限制 條件一一解開,待求得解答時,再以人工調整。一個教學組長面對眾多老師的要求,應先列一清單先與長官討論,尋求一個合理的模式,例如有些老師要求,每天四、五節不排課,每天一二節或第七節不排課,面對這樣的設定、往往電腦和人腦均是較難接受的條件。合理的要求應是那一天、或那兩個半天不排課。最後等到時間定案了,難免會有些人抗議他的第四、五節課較多,或有些老師喜歡課程集中,有些老師喜歡分散較能休息,這些因素難免較難控制,有時只好先做記錄,待明年再審慎優先處理。 電腦排課因牽涉較複雜的演算法,要能寫出這種程式,要有排課實務的人才能勝任,其次也要具有堆疊理論基礎。關於堆疊程式的撰寫,可參考老鼠走迷宮的程式(請看筆者Visual Basic 5.0專業版範例入門,松崗)。本書先以人工的方式植入每一門課的時間,其步驟請看以下範例。
29
範例 21-2c 試說明人工排課的步驟
30
範例 21-2d 請設計一個程式,可以供使用者鍵入班級課程時間表,並可協助使用者發現排課的小錯誤,如上課時數錯誤、漏排某科目等。
31
範例 21-2e 請寫一個程式,可以於螢幕及列表機列印每一班級的課表。
32
自我練習: 請寫一個副程式,可以一次列印所有老師的課表。
33
範例 21-2f 請寫一個程式,可以於螢幕及列表機列印所有任課教師課表。 補充說明:
1. 本例與範例21-2e均相同,唯SQL陳述式與轉換資料集至物件不同。 2. 資料集的時間欄位與物件對照如下:
34
以上k與i、j關係以數學式表示為: k=7*(i-1)+j-1 時間欄位 內容 (ij) 物件編號 (k) 11 21 7 31 14 41
21 7 31 14 41 51 28 12 1 22 8 32 15 42 52 29 13 2 23 9 33 16 43 53 30 3 24 10 34 17 44 54 4 25 35 18 45 55 5 26 36 19 46 56 6 27 37 20 47 57 以上k與i、j關係以數學式表示為: k=7*(i-1)+j-1
35
自我練習: 1. 同上範例,但增加一個副程式, 可一次列印所有任課教師課表。 2. 請寫一程式,可列印所有特殊教室的課表。
36
21-3 跨班選修作業 跨班選修以往只有大學才有,現在則延伸至高中職。但為了保障每位老師均有課上及適當的教學品質,所以應訂定每一班級人數的上下限。十年前若干大學採用先登記先上課的方法,導致男同學需徹夜為女朋友排隊的奇特景觀,現在由於大學生電腦非常普及,所以跨班選修是使用電腦作業,只要該班人數滿了就無法再選,高中職由於電腦教室沒有大學普及,且若採用現場登記制,恐怕場面會失控,互相推擠,並不是好方法。 本例雖也是採用現場登記,但是若登記人數超過上限,則現場馬上抽籤,未抽中者繼續游走各攤位,約十分鐘後抽第二次籤,每十分鐘重複抽籤可能費事又費時,此時可以叫學生排成一列,每人出一支或零支手指頭,再點手指頭的數量,即可完成人數的確定,例如50人要抽40人,若共有25支手指頭,則從第25號循環點40人,此40人即為中籤,即可完成抽籤動作。
37
範例 21-3a 說明跨班選修的作業程序。
38
範例 21-3b 請寫一個程式 1. 可以將跨班選修登記表的課程編號自動依各班登記人數填入。 2. 可由使用者輸入每個選修班級的學生學號。
1. 可以將跨班選修登記表的課程編號自動依各班登記人數填入。 2. 可由使用者輸入每個選修班級的學生學號。 3. 由電腦自動填入座號。
39
21-4 重補修作業 重補修報名的編班作業與跨班選修非常類似,其不同點為報名登記作業不同而已,其編班與列印名單可說是完全相同,本節僅將作業程序寫出,程式部份請讀者參考範例21-3自由發揮。
40
範例 21-4a 試寫出重修作業程序。 作業程序 1. 統計各科目不及格人數。
41
2. 依各科不及格人數開設重補修課程,本例假設 4班如下,並將以下資料使用Access輸入clco資料表
課程編號 班級編號 科目編號 教師編號 教室編號 50001 500 m01 1101 50002 n01 1102 50003 e01 1103 50004 e02 1104
42
3. 建立資料表如下(與跨班選修相同) 資料表名稱 repair 說 明 重修資料表 用 途 建立每一重修課程的學生學號 欄位 順序 標題
說 明 重修資料表 用 途 建立每一重修課程的學生學號 欄位 順序 標題 名稱 型 態 長度 索引 說 明 課程編號 coid String 5 ˇ 1 學生學號 stid 2 座號 no
43
4. 設計重補修登記繳費三聯單, 此三聯內容均相同,第一聯由學生收執,第二聯由主辦單位作為輸入資料 的依據,第三聯由總務處存查。 5. 接受報名。
44
6. 輸入資料 假設第一張報名表如下: 使用Access輸入如下,其中coid為課程編號, stid為學號。 學號:90002 課程編號
6. 輸入資料 假設第一張報名表如下: 學號:90002 課程編號 科目名稱 學分數 學分費 合計 50001 數學一 4 600 2400 50003 基電一 3 1800 小計 7 4200 使用Access輸入如下,其中coid為課程編號, stid為學號。
45
7. 統計各班人數。 選修資料表elect中各課程的修課人數,本例的重補修資料表repair的各班人數,請自行發揮。 8. 列印各班名單。 請完成重修編班作業,印製重修點名條、缺曠課統計表及成績單回條。
46
自我練習: 請完成重修編班作業,印製重修點名條、缺曠課統計表及成績單回條。
47
21-5 本章回顧 為了使讀者閱讀本章範例時,能更方便查閱關聯的設定方式,茲將本章資料表整理如下:
48
1. 學生年班別資料表(stgrade) 資料表名稱 stgrade 說 明 學生年班別資料表 用 途 記載每一學生的科、年、班級等資料
說 明 學生年班別資料表 用 途 記載每一學生的科、年、班級等資料 欄位 順序 標題 欄位名稱 型態 長度 索引 允許 空白 說 明 學號 id 字串 5 ˇ 第1碼:入學年度 1 姓名 name 8 2 性別編號 sex 位元組 0:女 1:男 3 科別編號 depart 0:普通 1:資訊 2:電子 4 年級 grade 班級編號 class 6 座號 no 7 入學考試別 exam 0:聯考 1:申請 2:推薦 3:技保 4:學保 5:運動專長 入學總成績 score 單精度 9 校碼 schid 0代表本校(因為可跨校選修及重補修)
49
2. 性別關聯資料表(sext) 資料表名稱 sext 說 明 性別關聯資料表 用 途 將學生年級別資料表(stgrade)中的性別代碼0轉
說 明 性別關聯資料表 用 途 將學生年級別資料表(stgrade)中的性別代碼0轉 為 "女" ,1轉為 "男" 欄位 順序 標題 名稱 型 態 長度 索引 說 明 性別編號 no 位元組 ˇ 1 性別 name 字串 2
50
3. 班級關聯資料表(classt) 欄位 順序 標題 名稱 型 態 長度 索引 說 明 班級編號 no 位元組 ˇ 1 班級名稱 name
資料表名稱 classt 說 明 班級關聯資料表 用 途 將學生年級別資料表(stgrade)中的班級代碼轉為班級名稱 欄位 順序 標題 名稱 型 態 長度 索引 說 明 班級編號 no 位元組 ˇ 1 班級名稱 name 字串 8
51
4. 科目資料表(course) course 說 明 科目資料表 用 途 記錄每一科目的基本資料 欄位 順序 標題 名稱 型 態 長度
資料表名稱 course 說 明 科目資料表 用 途 記錄每一科目的基本資料 欄位 順序 標題 名稱 型 態 長度 索引 科目編號 id String 3 ˇ 1 科目名稱 name 16 2 必選修別 required string 0:必修 1:指導選修 2:跨班選修 學分數 unit Byte 4 切割方式 cut
52
5. 教師資料表(teacher) 資料表名稱 teacher 說 明 教師資料表 用 途 記錄每一教師的基本資料 欄位 順序 標題 名稱
說 明 教師資料表 用 途 記錄每一教師的基本資料 欄位 順序 標題 名稱 型 態 長度 索引 說 明 教師編號 id String 3 ˇ 1 教師姓名 name 8 2 職務 duty string 0:校長 1:主任 2:組長 3:科主任 4:導師 5:科任 基本時數 hour Byte 4 專長 skill
53
6. 設備資料表(room) 資料表名稱 room 說 明 設備資料表 用 途 記錄每一可使用教室、工場及實驗室基本資料 欄位 順序 標題
說 明 設備資料表 用 途 記錄每一可使用教室、工場及實驗室基本資料 欄位 順序 標題 名稱 型 態 長度 索引 說明 設備編號 id String 4 ˇ 1 設備名稱 name 8 2 座位數 seat Byte 3 保管班級 class
54
7. 課程資料表(clco) 資料表名稱 clco 說 明 課程資料表 用 途 記錄每一課程的基本資料 欄位 順序 標題 名稱 型 態 長度
說 明 課程資料表 用 途 記錄每一課程的基本資料 欄位 順序 標題 名稱 型 態 長度 索引 說 明 課程編號 id String 5 ˇ 前三碼為班級編號 後兩碼為流水號 1 班級編號 clid 3 2 科目編號 coid 教師編號 teid 4 設備編號 roid 月考 exam Booleean 是否計算月考成績 6 印卷 paper 是否由教務處統一 製卷與考試
55
8. 課程時間資料表(clcoti) 資料表名稱 clcoti 說明 課程時間資料表 用途 每一課程的上課時間 欄位 順序 標題 名稱
標題 名稱 型 態 長度 索引 說 明 課程編號 id String 5 ˇ 1 時間 ti 2 第一碼為星期 第二碼為節次
56
9. 選修資料表(elect) 資料表名稱 elect 說 明 選修資料表 用 途 記錄每一選修課程的學生學號 欄位 順序 標題 名稱
說 明 選修資料表 用 途 記錄每一選修課程的學生學號 欄位 順序 標題 名稱 型 態 長度 索引 說 明 課程編號 String 5 ˇ 1 學生學號 2 座號
57
10. 重修班學生資料表(repair) 資料表名稱 repair 說 明 重修資料表 用 途 建立每一重修課程的學生學號 欄位 順序 標題
說 明 重修資料表 用 途 建立每一重修課程的學生學號 欄位 順序 標題 名稱 型 態 長度 索引 課程編號 coid String 5 ˇ 1 學生學號 stid 2 座號 no
Similar presentations