- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
简易电脑排课系统
簡易電腦排課系統【周文光】
系統功能, 輸入及輸出資料
在大學由於教室不固定,每位老師授課的科目時數也不固定,即使以一個學系為單位來排該系老師的課表都不是一件容易的事。大學教授自主性強,對於排課時段總有一些特殊的要求,例如星期一上午、星期五下五不排課…等,使排課問題的複雜度提高。這裡所謂的「簡易電腦排課系統」是將排課問題予以簡化並撰寫程式來執行自動排課;基本上,我們要輸入老師的基本資料,例如授課科目數、每門科目的代碼、不排課時段的特殊要求…等,而系統的輸出便是系上所使用教室的課表以及每位老師的個人的課表。
為了簡化程式設計的複雜度且滿足問題描述的要求,我資料結構說明
在程式當中,我們使用了兩個二維陣列(2D array)以及一個三維陣列(3D array)。第一個二維陣列(mask_array[8][5])是用來在指定某位老師教室時,協助判斷該位老師有哪些時段可以指定;第二個二維陣列(data_array[20][12])是用來儲存所有輸入的教師相關資料。在三維陣列(classroom[4][8][5])的部份,我們加上了結構(structure)的概念,用這個三維陣列分別儲存四間教室的資料(包含:教師職等、教師編號、科目代號與一個用來幫助判斷該教室特定時段是否有被使用的指示旗標(flag))。這三個所使用的陣列所表示的內容如下所示:
mask_array[8][5]
第一個索引值”[8]”代表課表共有8列(第1 ~ 8節課)
第二個索引值”[5]”代表課表共有5行(星期一 ~ 星期五)
mask_array [0] [1] [2] [3] [4] [0] 0 0 0 0 0 [1] 0 0 0 0 0 [2] 0 0 0 0 0 [3] 0 0 0 0 0 [4] 0 0 1 1 0 [5] 0 0 1 1 0 [6] 0 0 1 1 0 [7] 0 0 1 1 0
說明:若在程式執行中,若mask_array[][]的值等於”1”,表示該老師在該時段不能排課;若mask_array[][]的值等於”0”, 表示該老師在該時段可以排課。在上圖中表示該老師在星期三、四的下午不能排課。
data_array[20][12]
第一個索引值”[20]”代表共有20列(1 ~ 20位老師)
第二個索引值”[12]”代表共有12行(分別表示不同的資料,如下所示)
【一列代表一位老師的資料】
第二個索引值 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] 代表資料 教師職等 教師編號 教授科目數 限制時段個數 教授科目代號#1 教授科目代號#2 教授科目代號#3 教授科目代號#4 限制時段編號#1 限制時段編號#2 限制時段編號#3 限制時段編號#4 資料數值範圍 0~4 01~99 1~4 0~4 0000~9999 0~9
說明:若data_array[][]第一個索引值為”[1]”而第二個索引值”[0~11]”的資料分別為”1,3,2,2,3,17,0,0,5,7,0,0”其代表的意義為:在此陣列中第二位教師的職等為”TP”【 1:TP、2:TA、3:TT以及4:TL】、該教師的編號為”03”、所教授的科目共有兩科(分別為位於第二個索引值”[4]”與”[5]”的”0003”與”0017”)以及有兩個限制排課的時段(分別為位於第二個索引值”[8]”與”[9]”的”5”與”7”)【0:MA、1MP:、2TA:、3:TP、4:WA、5:WP、6:HA、7:HP、8:FA以及9:FP】。
classroom[4][8][5]
第一個索引值”[4]”代表教室共有四間【0:M01、1:M02、2:M03以及3:M04】
第二個索引值”[8]”代表該教室的課表共有8列(第1 ~ 8節課)
第三個索引值”[5]”代表該教室的課表共有5行(星期一 ~ 星期五)
說明:classroom[3][4][4].teacher_level用來存放被指定在M04教室、星期五的第五節課的教師職等。
classroom[3][4][4].teacher_no用來存放被指定在M04教室、星期五的第五節課的教師編號。
classroom[3][4][4].score_no用來存放被指定在M04教室、星期五的第五節課的科目編號。
classroom[3][4][4].flag用來指示M04教室、星期五的第五節課的時間是否有被使用【0:沒有被使用;1:有被使用】。
程式剖析
1 主程式
說明/功能
輸入參數:無
傳回參數:無
流程圖
程式碼
void main() {
int t_no=0; /* 宣告t_no變數:用來儲存欲輸入的教師人數 */
int
文档评论(0)