【正文】
突。每門(mén)課程的上課時(shí)間在可能的情況下盡量采取隔一天(或幾天)上一次的方式。 由于某些公共課學(xué)校已給出統(tǒng)一的上課時(shí)間,要求系統(tǒng)要有手動(dòng)排課功能,在生成排課計(jì)劃前能手 動(dòng)指定某些課程的安排時(shí)間。 要有較自由度較高的結(jié)果修改功能,能夠自由的對(duì)排課結(jié)果時(shí)行調(diào)整。 條件限制: 公共課老師基本全由學(xué)校指定,專業(yè)課基本由各教研室學(xué)院的老師負(fù)責(zé)。 一般大學(xué)各校區(qū)分布在該學(xué)校所在地區(qū)的各處,即使同一個(gè)校區(qū),個(gè)別教學(xué)樓或各學(xué)院之間距離相距也很遠(yuǎn),不能讓學(xué)生把上課時(shí)間放在走路上。 服表、服設(shè)專業(yè)開(kāi)設(shè)的某些專業(yè)課程是以周為單位連續(xù)開(kāi)設(shè)的,其同年級(jí)班級(jí)的大部分課是在一起上的。 有部分課程要求多班合上。 教室數(shù)量有限,原則上是讓所有的教室都充分利用。 體育課的開(kāi)設(shè)是以年級(jí)為單位,開(kāi)課時(shí)間由學(xué) 校統(tǒng)一安排。 很多課程一門(mén)課要求多個(gè)教師在不同類型的教師中授課,需要對(duì)各類型的課程劃分等級(jí) ( 三 )系統(tǒng)開(kāi)發(fā)環(huán)境 編程語(yǔ)言的采用: 系統(tǒng)采用 Borland 的 進(jìn)行開(kāi)發(fā)。 Delphi 是全新的可視化編程環(huán)境,為我們提供了一種方便、快捷的 Windows 應(yīng)用程序開(kāi)發(fā)工具。它使用了 Microsoft Windows 圖形用戶界面的許多先進(jìn)特性和設(shè)計(jì)思想,采用了彈性可重復(fù)利用的完整的面向?qū)ο蟪绦蛘Z(yǔ)言 (ObjectOriented Language)、當(dāng)今世界上最快的編輯器、最為領(lǐng)先的數(shù)據(jù)庫(kù)技術(shù)。 對(duì)于廣大的程序開(kāi)發(fā)人員來(lái)講,使用 Delphi 開(kāi)發(fā)應(yīng)用軟件,無(wú)疑會(huì)大大地提高編程效率 ③ 。 不同的數(shù)據(jù)庫(kù)開(kāi)發(fā)軟件對(duì)數(shù)據(jù)庫(kù)的操作是不一樣的,在 Delphi 中,數(shù)據(jù)庫(kù)應(yīng) 用程序可以通過(guò) Borland 數(shù)據(jù)庫(kù)引擎 BDE (Borland DataBase Engine) 來(lái)操作數(shù)據(jù)庫(kù)中的數(shù)據(jù)。事實(shí)上,應(yīng)用程序是通過(guò)數(shù)據(jù)訪問(wèn)組件和 BDE 連接,再由 BDE去訪問(wèn)數(shù)據(jù)庫(kù)來(lái)完成對(duì)數(shù)據(jù)庫(kù)的操作的,并非直接操作 BDE。這樣用戶只需關(guān)心數(shù)據(jù)組件即可,不用去直接和 BDE 打交道。 數(shù)據(jù)庫(kù)引擎 (BDE) Delphi 內(nèi)置了數(shù)據(jù)庫(kù)引擎( BORLANFD DATABASE ENGINE)( BDE), 為開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序提供了靈活性和通用性工具。它基于驅(qū)動(dòng)程序的體系結(jié)構(gòu)和面向?qū)ο蟮奶卣鳛樵L問(wèn)各種數(shù)據(jù)庫(kù)提供了一致的接口。 在 Delphi 中,數(shù)據(jù)庫(kù)應(yīng)用程序必須與數(shù)據(jù)庫(kù)建立聯(lián)系,而這個(gè)聯(lián)系則通過(guò)BDE 來(lái)完成,所有的數(shù)據(jù)庫(kù)的存取也都是由 BDE 來(lái)完成的。要使 Delphi 的數(shù)據(jù)庫(kù)應(yīng)用程序可以訪問(wèn)數(shù)據(jù),通常必須在用戶端配置 BDE 和建立數(shù)據(jù)庫(kù)別名( Alias)。例如, Paradox 用一個(gè)目錄來(lái)表示數(shù)據(jù)庫(kù),目錄中的每一個(gè)文件表示一個(gè)數(shù) 據(jù)庫(kù)表?;?BDE 的數(shù)據(jù)庫(kù)應(yīng)用程序的結(jié)構(gòu)如下圖: ④ 圖 BDE 數(shù)據(jù)庫(kù)應(yīng)用程序的結(jié)構(gòu) [8] 數(shù)據(jù)庫(kù)的選擇: 因?yàn)楸鞠到y(tǒng)要使用多個(gè)數(shù)據(jù)庫(kù),所以綜合多方面因素,我決定采用的應(yīng)用比較廣泛,操作容易的界面化數(shù)據(jù)庫(kù)是 Paradox dBase 數(shù)據(jù)庫(kù)。 因?yàn)楸救藢?duì)數(shù)據(jù)庫(kù)的操作主要是通過(guò) Borland 數(shù)據(jù)庫(kù)引擎 BDE,所以在設(shè)置系統(tǒng)環(huán)境變量的 時(shí)候,把數(shù)據(jù)庫(kù)的連接文件加入到目錄中,來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的連接。 (三) 系統(tǒng)流程圖 根據(jù)系統(tǒng)要求,設(shè)計(jì)系統(tǒng)流程圖,如下圖: 基于 BDE 的數(shù)據(jù)庫(kù)應(yīng)用程序 BORLANFD DATABASE ENGINE ODBC Socket ODBC 驅(qū)動(dòng)程序 ODBC 數(shù)據(jù)源 SQL Links 網(wǎng)絡(luò)協(xié)議 Oracle Sybase SQL Server DB2 Informix Paradox dBase 圖 排課系統(tǒng)系統(tǒng)流程圖 教室信息 信息處理程序 信息存儲(chǔ)數(shù)據(jù)庫(kù) 排課處理程序 課程調(diào)配數(shù)據(jù)庫(kù) 顯示課程表 表格生成程序 學(xué)院機(jī)構(gòu)相鄰關(guān)系程序 學(xué)院機(jī)構(gòu)相鄰關(guān)系數(shù)據(jù)庫(kù) 學(xué)生信息數(shù)據(jù)庫(kù) 教師信息數(shù)據(jù) 教室數(shù)據(jù) 學(xué)生信息 教師信息 學(xué)院信息 數(shù)據(jù)轉(zhuǎn)換程序 第三章 整體設(shè)計(jì) (一)系統(tǒng)功能模塊設(shè)計(jì) 本系統(tǒng)的主要功能是根據(jù)開(kāi)課表的內(nèi)容結(jié)合班級(jí)表、教師表和教室表的信息生成排課結(jié)果,其功能模塊劃分如圖 : 圖 排課系模塊示意圖 高校排課系統(tǒng) 學(xué)生信息劃分模塊 學(xué)生公共課分班劃分 學(xué)生年級(jí)、校區(qū)、各學(xué)院距離、學(xué)院的劃分 學(xué)生課程科目信息、教學(xué)區(qū)域的劃分 課程排列模塊 學(xué)生課程 科目、課類對(duì)應(yīng) 分配學(xué)生科目對(duì)應(yīng)教室 形成課程表 分配對(duì)應(yīng)科目上課時(shí)間、地點(diǎn) 調(diào)整教師、教室和上課時(shí)間 從數(shù)據(jù)庫(kù)中取數(shù)據(jù)打印課程表 排課結(jié)果放入數(shù)據(jù)庫(kù) (二)數(shù)據(jù)流程圖 數(shù)據(jù)流程圖( Data Flow Diagram,簡(jiǎn)稱 DFD)是新系統(tǒng)邏輯模型的主要組成部分,它可以反映出新系統(tǒng)的主要功能、系統(tǒng)與外部環(huán)境間的輸入輸出、系統(tǒng)內(nèi)部的處理、數(shù)據(jù)傳送、數(shù)據(jù)存儲(chǔ)等情況。它的繪制依據(jù)是現(xiàn)行系統(tǒng)流程圖,數(shù)據(jù)流程圖是管理信息系統(tǒng)的總體設(shè)計(jì)圖。 ⑤ 通過(guò)以上對(duì)數(shù)據(jù)的處理過(guò)程分析,得到如下數(shù)據(jù)流程圖: 開(kāi) 課計(jì) 劃教 務(wù) 辦審 批開(kāi) 課 信息班 級(jí)名 單教 師名 單教 室名 單教 務(wù) 辦調(diào) 整教 室 信息班 級(jí) 信息教 師 信息排 課計(jì) 劃教 務(wù) 辦調(diào) 整排 課信 息 圖 (三)數(shù)據(jù)庫(kù)設(shè)計(jì) 數(shù)據(jù)庫(kù)需分析表 根據(jù)以上數(shù)據(jù)流程圖的分析,排課系統(tǒng)需要以下基本信息: 表 1 classtoom (教 室(場(chǎng)地))表 數(shù)據(jù)項(xiàng)名稱 含義 說(shuō)明 數(shù)據(jù)類型 長(zhǎng)度 是否空 主鍵 classroomnumber 教室編號(hào) 唯一標(biāo)識(shí)一個(gè)教室 int 4 N Y college 教室所屬教學(xué)樓、機(jī)構(gòu) 教室在那個(gè)教學(xué)樓 /學(xué)院 char 10 N N numberlimit 教室人數(shù)限制 教室一次性容納上課人數(shù) int 4 N N schoolarea 教室所屬校區(qū) 教室是哪個(gè)校區(qū)的 char 10 N N classroomtype 教室類型 教室是什么類型的 char 10 N N remarks 備注 改進(jìn)系統(tǒng)可能會(huì)用到 char 10 Y N classroomtypenumber 表示教室類型 根據(jù)需要檢索對(duì)應(yīng)類型教室 int 4 N N 表 2 teaching plan ( 教學(xué)計(jì)劃)表 數(shù)據(jù)項(xiàng)名稱 含義 說(shuō)明 數(shù)據(jù)類型 長(zhǎng)度 是否空 主鍵 coursnumber 課程代碼 課程科目編號(hào) int 4 N Y semester 學(xué)期 著名課程講授年度 char 10 N N coursehours 講授學(xué)時(shí) 講授時(shí)間 /學(xué)期 int 4 N N classroomtype 該科目需要的 教室類型 該科目需要什么類型的教室 char 10 N N credit 學(xué)分 科目學(xué)分 int 4 N N teachernumber 授課教師編號(hào) 給對(duì)應(yīng)專業(yè)講授該科目的教師編號(hào) char 10 N N classnumber 班級(jí)編號(hào) 對(duì)應(yīng)教師教給哪些班講授該科目 char 10 N N 表 3 profession Information ( 專業(yè)信息 ) 表 數(shù)據(jù)項(xiàng)名稱 含義 說(shuō)明 數(shù)據(jù)類型 長(zhǎng)度 是否空 主鍵 professionnumber 專業(yè)編號(hào) 唯一標(biāo)識(shí)一個(gè)專業(yè) int 4 N Y professionname 專業(yè)名稱 專業(yè)名稱 char 10 N N department 所在系名稱 對(duì)應(yīng)專業(yè)所在系 char 10 N N grade 年級(jí) 對(duì)應(yīng)專業(yè)學(xué)生入學(xué)時(shí)間 char 10 N N college 學(xué)院名稱 對(duì)應(yīng)專業(yè)、系所在教學(xué)樓 /機(jī)構(gòu) char 10 N N schoolearea 學(xué)院所在校區(qū) 學(xué)院所屬校區(qū) char 10 N N countn 專業(yè)人數(shù) 該年級(jí)該專業(yè)對(duì)應(yīng)的人數(shù) int 10 N N remarks 備注 系統(tǒng)升級(jí)和改進(jìn)時(shí)備用 char 10 N N 表 4 course (課程科目)表 不同類型的課程,對(duì)于一個(gè)專業(yè)來(lái)說(shuō),重要性不同,別的專業(yè)認(rèn)為是重要的課程科目,這個(gè)專業(yè)認(rèn)為是不重要得,所以 數(shù)據(jù)項(xiàng)名稱 含義 說(shuō)明 數(shù)據(jù)類型 長(zhǎng)度 是否空 主鍵 coursnumber 課程編號(hào) 唯一標(biāo)識(shí)一門(mén)課程 int 4 N Y coursename 課程名稱 課程科目名稱 char 10 N N coursetype 課程所屬課類 上課科目所屬課類 char 10 N N courseclass 課程級(jí)別 該科目是‘ A’、‘ B’級(jí)課 char 10 N N remarks 備注 備用字段 char 10 Y N 表 5 weektime (星期 — 時(shí)間 )表 不同性質(zhì)科目的課程要在合理的時(shí)間講授,可以提高學(xué)生對(duì)知識(shí)掌握的熟練成都,所以要為上課時(shí)間互分級(jí)別是必須的。 數(shù)據(jù)項(xiàng)名稱 含義 說(shuō)明 數(shù)據(jù)類型 長(zhǎng)度 是否空 主鍵 days 排課天數(shù) 上課日期的星期數(shù)用阿拉伯?dāng)?shù)字表示 int 4 N Y times 上課課節(jié)數(shù) 上課每節(jié)課課節(jié)數(shù)用阿拉伯?dāng)?shù)字表示 int 4 N N timeclass 時(shí)間級(jí)別 該上課時(shí)間級(jí)別 char 2 N N remarks 備注 備用字段 char 10 Y N 表 6 college relate 教學(xué)樓相鄰關(guān)系表(該表是根據(jù)每個(gè)學(xué)校實(shí)際情況由電腦自動(dòng)生成而定,學(xué)校不相同表不會(huì)相同) relate college1 college2 ?? collegen college1 college2 ?? collegen 表 7 courseplanblank(課程任務(wù) )表 數(shù)據(jù)項(xiàng)名稱 含義 說(shuō)明 數(shù)據(jù)類型 長(zhǎng)度 是否空 主鍵 coursenumber 唯一標(biāo)識(shí)一個(gè)科目 課程科 目代號(hào) int 4 N Y teachernumber 教師編號(hào) 講授該科目的教師編號(hào) int 4 N N dayt 排課天數(shù) 上課日期的星期數(shù)用阿拉伯?dāng)?shù)字表示 int 4 N Y timet 上課課節(jié)數(shù) 上課每節(jié)課課節(jié)數(shù)用阿拉伯?dāng)?shù)字表示 int 4 N N classroommumber 上課教室編號(hào) 學(xué)生上課的教室編號(hào) char 10 N N sameteachernumber 教師同時(shí)上課號(hào) “1”表示教師上課中“ 0”表示無(wú)課 int 4 N N classnumber 學(xué)生分班班級(jí)號(hào) 學(xué) 生分班上課的班級(jí)號(hào) int 4 N N sameroomnumber 教室使用標(biāo)識(shí) “1”表示教室使用中“ 0”表示空閑 int 4 N N samestudentnumber 學(xué)生上課標(biāo)識(shí) “1”表示學(xué)生上課中“ 0”表示學(xué)生無(wú)課 int 4 N N 表 8 courseform( 課程)表 數(shù)據(jù)項(xiàng)名稱 含義 說(shuō)明 數(shù)據(jù)類型 長(zhǎng)度 是否空 主鍵 coursnumberber 唯一標(biāo)識(shí)一個(gè)科目 課程科目代號(hào) int 4 N Y teachernumber 教師編號(hào) 講授該科目教師編號(hào) int 4 N N days 上課日期星期 上課日期是星期幾 char 10 N N times 上課課節(jié)數(shù) 是該星期的第幾節(jié)課 char 10 N N classroommumber 上課教室編號(hào) 學(xué)生上課的教室編號(hào) int 4 N N classnumber 學(xué)生分班班級(jí)號(hào) 學(xué)生分班上課的班級(jí)號(hào) int 4 N N 表 9 classroomnarea(教室區(qū)域關(guān)系 )表(該表是根據(jù)學(xué)校實(shí)際情況形成的,和獨(dú)立教學(xué)區(qū)域不相關(guān)) 數(shù)據(jù)項(xiàng)名稱 含義 說(shuō)明 數(shù)據(jù)類型 長(zhǎng)度 是否空 主鍵 classroomnumber 上課教室編號(hào) 學(xué)生上課的教室編號(hào) int 4 N Y