版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、A A 學(xué)校排課系統(tǒng)的設(shè)計(jì)學(xué)校排課系統(tǒng)的設(shè)計(jì) 摘摘要要 當(dāng)?shù)谝慌_(tái)計(jì)算機(jī)出現(xiàn)時(shí),不僅意味著新型革命的到來(lái),也預(yù)示著科技時(shí)代的 來(lái)臨。尤其是踏入 21 世紀(jì)后,計(jì)算機(jī)技術(shù)得到了空前的發(fā)展,而網(wǎng)絡(luò)的普及使 得各行各業(yè)逐漸離不開電腦。對(duì)于高校而言,在教務(wù)辦公中已經(jīng)越來(lái)越多的實(shí)現(xiàn) 了自動(dòng)化,既提高了工作的效率,也規(guī)范了教學(xué)的操作,增加了科學(xué)性。 在分析以往一些排課系統(tǒng)的基礎(chǔ)上,本設(shè)計(jì)提出一個(gè)基于動(dòng)態(tài)加權(quán)算法(即 貪婪法)的排課系統(tǒng)設(shè)計(jì)方法,采用手動(dòng)預(yù)排、自動(dòng)排課、手動(dòng)調(diào)節(jié)的三級(jí)排課 模式,并對(duì)一些具體的技術(shù)問(wèn)題做出相應(yīng)安排。在功能方面,它能實(shí)現(xiàn)查閱、修 改、添加等比較基本的功能,也能夠?qū)崿F(xiàn)自動(dòng)排課、權(quán)限
2、管理等較復(fù)雜的功能。 本設(shè)計(jì)采用 C/S 模式,主要用 Delphi7.0 作為前臺(tái)開發(fā)工具,用 SQL Server 2003 作為后臺(tái)數(shù)據(jù)庫(kù)。經(jīng)過(guò)測(cè)試后,本設(shè)計(jì)已可達(dá)到預(yù)想中的效果,能夠?qū)崿F(xiàn)簡(jiǎn)易的 功能。 關(guān)鍵字關(guān)鍵字:動(dòng)態(tài)加權(quán)算法;自動(dòng)化;C/S 模式;三級(jí)排課模式 Design and Implementation of a University Academic Course Scheduling System Abstract The appearance of the first computer means not only the arrival of a new type
3、of revolution, also herald the advent of the technological era. Particularly in the advent of the 21st century, computer technology has been unprecedented development, and the popularity of the network made businesses do nothing without the assistance of computer. For colleges and universities, the
4、automation of the teaching office has been more and more achieved, which could improve the efficiency of the work, standardize the operation of the teaching, and increase scientific. Based on the analysis of the former Course Scheduling System, the design put forward to a method which is based on a
5、dynamic weighted algorithm (greedy methods), it uses the manual pre-arrangement, automatic timetable and manual adjustment of the three models, and gets the necessary arrangements to some specific technical problems. Concerning the function of system, it achieves basic functions which include access
6、, modify, add, and complex functions like automatically schedule and competence of management. The design uses C/S mode, with Delphi as front development tool, and SQL Server 2003 as backstage database. Though testing, the design can reach the desired effect and achieve the simple function. Key word
7、s:Dynamic weighted algorithm; Automation; C/S mode; Three Levels Course Scheduling Model 目目錄錄 論文總頁(yè)數(shù):25 頁(yè) 1 1 引引言言. 1 2 2 基本理論知識(shí)介紹基本理論知識(shí)介紹. 1 2.1 SQL SERVER2003 數(shù)據(jù)庫(kù)簡(jiǎn)介. 1 2.2 DELPHI7.0 簡(jiǎn)介. 2 2.3 C/S 模式介紹. 4 3 3 教務(wù)排課系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)教務(wù)排課系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn). 4 3.1 教務(wù)排課系統(tǒng)簡(jiǎn)介. 4 3.2 教務(wù)排課系統(tǒng)分析. 5 3.2.1算法分析.5 3.2.2 算法流程圖.6 3.2.3
8、 功能分析.6 3.2.4 需求分析.6 3.3 排課系統(tǒng)的功能模塊. 6 3.4 數(shù)據(jù)庫(kù)設(shè)計(jì). 7 3.5 系統(tǒng)流程及代碼分析. 9 3.5.1 系統(tǒng)流程圖.9 3.5.2 代碼分析.10 4 4 系統(tǒng)測(cè)試系統(tǒng)測(cè)試. 16 4.1 測(cè)試環(huán)境. 16 4.2 主要模塊測(cè)試. 17 4.3 測(cè)試結(jié)果. 20 結(jié)結(jié)論論.20 參考文獻(xiàn)參考文獻(xiàn). 21 第 1 頁(yè) 共 25 頁(yè) 1 1 引引言言 隨著計(jì)算機(jī)的發(fā)展和教育改革的不斷深入,計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的不斷成熟,綜 合教學(xué)網(wǎng)絡(luò)已廣泛應(yīng)用于學(xué)校教學(xué)、管理的各個(gè)領(lǐng)域,特別是教務(wù)排課系統(tǒng)的應(yīng) 用。它代表著學(xué)校教學(xué)管理的水平,是現(xiàn)代化管理的手段。目前大多數(shù)教務(wù)
9、排課 系統(tǒng)是采用各教學(xué)單位進(jìn)行教學(xué)任務(wù)的指派,然后將教學(xué)任務(wù)單提交教務(wù)科,教 務(wù)人員將數(shù)據(jù)輸入計(jì)算機(jī),進(jìn)行排課、打印課程表等工作。這種教務(wù)排課系統(tǒng)只 是在一定程度上減輕了教務(wù)人員排課的負(fù)擔(dān)。 近幾年來(lái),我國(guó)高等教育事業(yè)的快速發(fā)展,高校新生的擴(kuò)招力度加大,各個(gè) 高校中的多個(gè)校區(qū)、多個(gè)學(xué)院的教學(xué)管理模式已經(jīng)隨處可見(jiàn),各高校都面臨著教 室資源緊張的問(wèn)題。原來(lái)每個(gè)班有一個(gè)固定教室的模式已不存在,甚至原來(lái)一個(gè) 系專用的教學(xué)樓也要考慮參加全校的教室資源統(tǒng)一調(diào)整。 現(xiàn)在的本科院校包括研 究生在內(nèi),一般都有上萬(wàn)人或幾萬(wàn)人的規(guī)模。要在每個(gè)學(xué)期末的一個(gè)短時(shí)間內(nèi)拿 出一份涉及到有關(guān)全校教室統(tǒng)調(diào)的課表來(lái), 對(duì)高校的教
10、務(wù)處來(lái)說(shuō)確實(shí)是一個(gè)很艱 巨的任務(wù)。 排課系統(tǒng)的主要任務(wù)是根據(jù)現(xiàn)有的教學(xué)資源對(duì)課程進(jìn)行合理的安排。 由于高 校班級(jí)數(shù)、課程門數(shù)較多,每門課有涉及很多信息,如果用手工進(jìn)行排課,不可 避免地出現(xiàn)教室資源沖突或教師資源沖突的情況。 如何更有效地利用人力、物力資源,充分發(fā)揮計(jì)算機(jī)的輔助作用,減輕教務(wù) 人員的工作強(qiáng)度,在對(duì)需求進(jìn)行詳細(xì)的分析后,本文提出了基于教學(xué)大綱的教務(wù) 排課設(shè)計(jì)思想,并對(duì)其算法進(jìn)行了描述。本論文就該教務(wù)排課系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)進(jìn) 行了分析探討: 首先對(duì)系統(tǒng)的需求分析做了敘述, 然后介紹了系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn), 最后進(jìn)行了系統(tǒng)測(cè)試。 本系統(tǒng)采用Delphi7.0作為前臺(tái)開發(fā)工具, 采用SQL Se
11、rver 2003 作為后臺(tái)數(shù)據(jù)庫(kù)。 2 2 基本理論知識(shí)介紹基本理論知識(shí)介紹 2 2. .1 1 SQLSQL ServerServer 20032003 數(shù)據(jù)庫(kù)簡(jiǎn)介數(shù)據(jù)庫(kù)簡(jiǎn)介 Microsoft SQL Server 2003 是 Microsoft 公司繼 SQL Server 6.5 和 SQL Server 7.0 以后,推出的又一改進(jìn)的新版關(guān)系型數(shù)據(jù)管理系統(tǒng)。它能使用戶快 捷地管理數(shù)據(jù)庫(kù)和開發(fā)應(yīng)用程序。SQL Server 2003 使用了先進(jìn)的數(shù)據(jù)庫(kù)結(jié)構(gòu), 與 Windows DNA 緊密集成,具有強(qiáng)大的 Web 功能,它可以利用高端硬件平臺(tái)以及 最新網(wǎng)絡(luò)和存儲(chǔ)技術(shù), 可以為最大
12、的 Web 站點(diǎn)和企業(yè)應(yīng)用提供優(yōu)良的擴(kuò)展性和可 靠性,使用戶能夠在 Internet 領(lǐng)域快速建立服務(wù)系統(tǒng),為占領(lǐng)市場(chǎng)贏得寶貴的 時(shí)間。同時(shí),SQL Server 2003 還為用戶提供了重要的安全性功能的增強(qiáng),為用 戶的數(shù)據(jù)安全提供了可靠的保證。另外,SQL Server 2003 在數(shù)據(jù)庫(kù)服務(wù)器自動(dòng) 管理技術(shù)方面處于數(shù)據(jù)庫(kù)領(lǐng)域的領(lǐng)先地位,它可以使用戶免去繁瑣復(fù)雜的工作 第 2 頁(yè) 共 25 頁(yè) 量,從而有精力處理更重要的問(wèn)題,使用系統(tǒng)在商業(yè)戰(zhàn)略上占得先機(jī)。 關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)是當(dāng)前最流行的數(shù)據(jù)庫(kù)管理系統(tǒng)。 它是一個(gè)非常復(fù)雜的系 統(tǒng)軟件,對(duì)數(shù)據(jù)庫(kù)的所有操作,包括定義、查詢、更新和各種運(yùn)行控制最
13、終都通 過(guò)它來(lái)實(shí)現(xiàn)的,因此它是使數(shù)據(jù)庫(kù)系統(tǒng)具有數(shù)據(jù)共享、并發(fā)訪問(wèn)、數(shù)據(jù)獨(dú)立等特 性的根本保證。目前,Microsoft SQL Server 2003 是在成熟和強(qiáng)大的關(guān)系型數(shù) 據(jù)庫(kù)中最受歡迎、應(yīng)用最廣泛的一個(gè)。 就關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)而言,它是位于用戶與操作系統(tǒng)之間的一層 數(shù)據(jù)管理軟件,它主要負(fù)責(zé)強(qiáng)化數(shù)據(jù)庫(kù)的結(jié)構(gòu),簡(jiǎn)單來(lái)說(shuō)包括如下功能: (1) 維持?jǐn)?shù)據(jù)庫(kù)中數(shù)據(jù)的關(guān)系。 (2) 保障數(shù)據(jù)的正確存儲(chǔ), 即保障定義數(shù)據(jù)之間的關(guān)系的種種規(guī)則不會(huì)被違 背。 (3) 在系統(tǒng)出錯(cuò)時(shí),把數(shù)據(jù)恢復(fù)到一個(gè)能保證一致性的狀態(tài)。 SQL Server 2003 系統(tǒng)之所以成為目前流行的大型商用數(shù)據(jù)庫(kù)系
14、統(tǒng),有著其 深刻的內(nèi)在因素,這與它鮮明的特點(diǎn)是分不開的: (1) 與 Internet 的高度集成。 (2) 高伸縮性和適應(yīng)性。 (3) 企業(yè)級(jí)數(shù)據(jù)庫(kù)功能強(qiáng)。 (4) 易于安裝和使用。 (5) 具有決策支持的資料倉(cāng)庫(kù)。 2 2. .2 2 Delphi7.0Delphi7.0 簡(jiǎn)介簡(jiǎn)介 Delphi 是 Borland 公司發(fā)布的用于開發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序的工具,它是目前 開發(fā)客戶/服務(wù)器數(shù)據(jù)庫(kù)應(yīng)用程序的強(qiáng)有力的工具。Delphi 是具有可視化界面的 面向?qū)ο缶幊陶Z(yǔ)言.而最新的 Delphi 7.0 具有以下新特點(diǎn): 和以往 Delphi 的每一個(gè)新版本一樣,Delphi 7 繼續(xù)改善了開發(fā)環(huán)境,
15、幫助 程序員提高效率。Delphi 7 在集成開發(fā)環(huán)境中加入了很多讓程序員愛(ài)不釋手的 新功能,下面是對(duì)它們的一個(gè)簡(jiǎn)單介紹。 (1)Code Complete(代碼完成) Code Complete 功能在 Delphi 5 中就已經(jīng)加入了,這項(xiàng)功能非常受程序員 的歡迎,因?yàn)?Code Complete 可以大幅度地減少程序員需要鍵入的程序代碼,并 且減少鍵入錯(cuò)誤。 Delphi 7 的 Code Complete 功能在原有的基礎(chǔ)上繼續(xù)改善, 新的 Code Complete 窗口不但可以由程序員自行調(diào)整大小,而且可以使用不同的 顏色代表不同的對(duì)象,例如變量、方法和特性等。 (2)Object
16、 TreeView(對(duì)象樹視圖) 另外一個(gè)新功能就是 Delphi 7 的 Object TreeView 窗口。這個(gè)新的窗口除 第 3 頁(yè) 共 25 頁(yè) 了可以顯示窗體中所有的對(duì)象之外,也可以以分層方式表達(dá)組件之間的關(guān)系。當(dāng) 程序員在 Object TreeView 窗口中單擊了一個(gè)組件之后,這個(gè)組件會(huì)立刻出現(xiàn)在 對(duì)象查看器之中,這時(shí)程序員可以改變這個(gè)對(duì)象的特性值和事件處理程序。 當(dāng)窗體復(fù)雜,擁有大量的組件時(shí),Object TreeView 窗口可以讓用戶迅速找 到這個(gè)組件,并且知道與當(dāng)前組件相關(guān)的組件,非常方便。 (3)可定制的 View 窗口 Delphi 7最強(qiáng)勁的集成開發(fā)環(huán)境功能應(yīng)該
17、要算是新的可定制的View窗口了。 在 Delphi 7 中,編輯器不但可以讓程序員觀看和編輯 Object Pascal 的程序代 碼,而且如果程序員編輯的是 Web 應(yīng)用程序,那么還可以直接在編輯器中查看 HTML 程序代碼、腳本語(yǔ)言程序代碼,預(yù)覽 Web 應(yīng)用程序執(zhí)行結(jié)果的畫面以及 Web 應(yīng)用程序產(chǎn)生的 HTML 程序代碼。 (4)新添加 Indy Intercepts 和 Indy I/O Handler 構(gòu)件組 企業(yè)版的 Delphi 7 中,這兩個(gè)構(gòu)件組基本上提供了針對(duì)現(xiàn)今流行的 Internet 協(xié)議編程的構(gòu)件??梢赃M(jìn)行更為底層的操作。 (5)新添加 IW Standard、I
18、W Data、IW Client Side 和 IW Control 構(gòu)件 組 這些構(gòu)件也是 Delphi 7 的顯著改革之一,將 Intraweb 集成到了標(biāo)準(zhǔn)的構(gòu)件 板中,我們就可以很方便地開發(fā)基于 Web 的應(yīng)用程序。 (6)新添加的 Rave 報(bào)表構(gòu)件組 Delphi 7 的標(biāo)準(zhǔn)構(gòu)件板中已經(jīng)沒(méi)有了原來(lái)的 QuickReport 構(gòu)件組,取而代 之的是 RAVE 報(bào)表制作組件,并且提供專門的報(bào)表制作工具 Rave Designer。 Rave 報(bào)表構(gòu)件是一個(gè)可視化的報(bào)表設(shè)計(jì)工具,大大簡(jiǎn)化了在應(yīng)用程序中加 入報(bào)表的工作。用 Rave 報(bào)表構(gòu)件可以做出各種不同的報(bào)表,從最簡(jiǎn)單的到非常 復(fù)雜、
19、個(gè)性化的報(bào)表都可以完成。它的功能包括:圖片支持、對(duì)齊、精確頁(yè)面定 位、打印機(jī)設(shè)置、字體控制、打印預(yù)覽、報(bào)表內(nèi)容重用,并支持 PDF、HTML、RTF 等文本格式。隨著 Active X 數(shù)據(jù)對(duì)象(ADO)的推出,它能讓應(yīng)用程序通過(guò)任意 的 OLE DB 提供者訪問(wèn)和操作數(shù)據(jù)庫(kù),其強(qiáng)大功能使得任何數(shù)據(jù)訪問(wèn)技術(shù)都黯然 失色。 而在數(shù)據(jù)集方面, 與BDE 不同ADO是Microsoft推出的新一代數(shù)據(jù)訪問(wèn)規(guī)范, 在 Delphi7 中它的地位等同于一個(gè)和 BDE 并列的數(shù)據(jù)引擎。本系統(tǒng)采用的就是 ADO 數(shù)據(jù)集。 雖然ADO 的功能比BDE 比起來(lái)弱一些,但和 BDE相比 ADO有一些重要的優(yōu)勢(shì),
20、比如: ADO 將會(huì)內(nèi)制在從 Windows2000 開始 Microsoft 新出的所有操作系統(tǒng)中,單 第 4 頁(yè) 共 25 頁(yè) 就這一點(diǎn)就足以給其他的數(shù)據(jù)訪問(wèn)方式畫上問(wèn)號(hào)。 在 Delphi7 中提供了對(duì) ADO 的全力支持,提供了很多 ADO 組件,還增加了一 些新的字段類型如:WideString,GUID,Variant,interface,IDispatch 等。 ADO 是面向各種數(shù)據(jù)的層次很高的接口,它提供了強(qiáng)大的數(shù)據(jù)訪問(wèn)功能,可 以訪問(wèn)的數(shù)據(jù)對(duì)象有: a.關(guān)系數(shù)據(jù)庫(kù)中的各種數(shù)據(jù); b.非關(guān)系型數(shù)據(jù)庫(kù),如層次型數(shù)據(jù)庫(kù),網(wǎng)狀數(shù)據(jù)庫(kù)等; c.電子郵件與文件系統(tǒng); d.文本與圖象,聲
21、音; e.客戶事務(wù)對(duì)象。 Delphi5.0版本成功地引入了這項(xiàng)技術(shù), 極大程度地?cái)U(kuò)展了數(shù)據(jù)庫(kù)處理能力, 為 Delphi 程序員帶來(lái)前所未有的廣闊空間。Delphi 以其功能強(qiáng)大、簡(jiǎn)單易用等 諸多特性,深受編程人員的歡迎。所以我選擇了 Delphi7.0 作為開發(fā)工具。 2.32.3 C/SC/S 模式介紹模式介紹 C/S (Client/Server)結(jié)構(gòu),即大家熟知的客戶機(jī)和服務(wù)器結(jié)構(gòu)。它是軟 件系統(tǒng)體系結(jié)構(gòu),通過(guò)它可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到 Client 端和 Server 端來(lái)實(shí)現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應(yīng)用軟件系 統(tǒng)都是 Client/Server
22、形式的兩層結(jié)構(gòu), 由于現(xiàn)在的軟件應(yīng)用系統(tǒng)正在向分布式 的 Web 應(yīng)用發(fā)展,Web 和 Client/Server 應(yīng)用都可以進(jìn)行同樣的業(yè)務(wù)處理,應(yīng)用 不同的模塊共享邏輯組件;因此,內(nèi)部的和外部的用戶都可以訪問(wèn)新的和現(xiàn)有的 應(yīng)用系統(tǒng),通過(guò)現(xiàn)有應(yīng)用系統(tǒng)中的邏輯可以擴(kuò)展出新的應(yīng)用系統(tǒng)。這也就是目前 應(yīng)用系統(tǒng)的發(fā)展方向。 3 3教務(wù)排課系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)教務(wù)排課系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 3.13.1 教務(wù)排課系統(tǒng)簡(jiǎn)介教務(wù)排課系統(tǒng)簡(jiǎn)介 課程編排作為高等院校教務(wù)管理中的一項(xiàng)重要而且繁重的工作, 從一般意義 上講, 其實(shí)質(zhì)就是對(duì)學(xué)校學(xué)期開設(shè)的每門課程合理地分配時(shí)間資源和教室資源的 過(guò)程。其中涉及教師、教室、時(shí)間和學(xué)
23、生等多種因素,人為要求也比較多,另外 由于這幾年的高校擴(kuò)招導(dǎo)致教室資源比較緊張, 諸多因素就加重了課程編排工作 的難度和復(fù)雜度。如果完全由人工來(lái)編排課表,費(fèi)時(shí)費(fèi)力,其科學(xué)性、方便性更 是難以保證,所以利用計(jì)算機(jī)進(jìn)行自動(dòng)排課的想法自然而生。目前,經(jīng)研究用來(lái) 解決排課問(wèn)題的方法有:模擬手工排課法、圖論方法、模擬退火法等。國(guó)內(nèi)針對(duì) 課表問(wèn)題也相繼研制出了一些排課軟件,但是軟件的通用性差,因各學(xué)校教學(xué)資 源不盡相同,管理課表的方法也不乏個(gè)性,很難完全規(guī)范化、程序化。本文根據(jù) 某高校的實(shí)際情況,結(jié)合以往的排課經(jīng)驗(yàn),通過(guò)靜態(tài)設(shè)置教學(xué)任務(wù)的優(yōu)先級(jí)、分 第 5 頁(yè) 共 25 頁(yè) 配時(shí)間片資源和教室資源時(shí)根據(jù)相
24、關(guān)參數(shù)動(dòng)態(tài)設(shè)置其優(yōu)先級(jí)的算法設(shè)計(jì)并實(shí)現(xiàn) 了一個(gè)高校智能排課系統(tǒng)。如何充分利用有限的教室和時(shí)間資源合理地編排課 表,是本文致力研究的主要問(wèn)題。 3.23.2 教務(wù)排課系統(tǒng)分析教務(wù)排課系統(tǒng)分析 3 3. .2 2.1.1算法分析算法分析 在排課系統(tǒng)中,關(guān)鍵的部分在于算法的選擇。好的算法不僅可以節(jié)省時(shí)間, 更可以提高效率。 幾種排課算法比較: (1)自動(dòng)排課算法:此算法以課程為中心,進(jìn)行搜索匹配,取最先匹配的 值;具有占有空間少,運(yùn)算速度快的特點(diǎn)。但其未對(duì)數(shù)據(jù)進(jìn)行擇優(yōu)選取,所以不 能對(duì)教學(xué)資源(教師、教室)合理分配,也不能滿足一些特殊要求(比如有些老 師喜歡上午上課,有些老師偏向于集中式上課;有些課
25、程安排在上午更合適些, 有些課程不能安排到上午等) 。 (2)基于優(yōu)先級(jí)的排課算法:從數(shù)學(xué)上講, 排課問(wèn)題是一個(gè)在時(shí)間、教師、 學(xué)生和教室四維空間, 以教學(xué)計(jì)劃和各種特殊要求為約束條件的組合規(guī)劃問(wèn)題。 其實(shí)質(zhì)就是解決各因素之間的沖突。 在設(shè)計(jì)算法時(shí), 為了降低課程調(diào)度的算法復(fù) 雜性, 可采用化整為零的思想 此算法對(duì)班級(jí)及教室劃分等價(jià)類,對(duì)學(xué)校資源進(jìn)行了合理的利用。但對(duì)一些 特殊要求還是無(wú)法具體體現(xiàn)出來(lái)。 (3)基于時(shí)間片優(yōu)先級(jí)排課算法:此算法屬于貪婪算法。每次對(duì)教師、教 室資源的選取都是取當(dāng)前最優(yōu)的數(shù)據(jù)。 按照教師、 教室、 班級(jí)的優(yōu)先級(jí)取最優(yōu)值, 所以對(duì)各對(duì)象的一些特殊要求會(huì)很明顯的體現(xiàn)出來(lái)
26、,在教師、教室資源不緊缺的 情況下,此算法能排出相對(duì)合理的課程。相對(duì)于之前介紹的兩個(gè)算法,在處理各 種特殊要求的能力上有明顯的優(yōu)勢(shì)。 本系統(tǒng)采用的是動(dòng)態(tài)加權(quán)算法即貪婪算法。貪婪法是一種不追求最優(yōu)解,只 希望得到較為滿意解的方法。貪婪法一般可以快速得到滿意的解,因?yàn)樗∪チ?為找最優(yōu)解要窮盡所有可能而必須耗費(fèi)的大量時(shí)間。 貪婪法常以當(dāng)前情況為基礎(chǔ) 作最優(yōu)選擇,而不考慮各種可能的整體情況。在解決排課沖突時(shí),為減少貪婪法 的缺點(diǎn),特在自動(dòng)排課功能后加入手動(dòng)調(diào)節(jié)功能,使用者可對(duì)不滿意的課程再次 調(diào)節(jié)。以下為算法過(guò)程: (1) 初始化排課數(shù)組、課程申請(qǐng)數(shù)組。 (2) 賦初始權(quán)值并對(duì)課程申請(qǐng)數(shù)組排序。 (
27、3) 將課程申請(qǐng)碼按序進(jìn)行排課,結(jié)果存儲(chǔ)在排課數(shù)組中。 (4) 排課思想是將一星期分為幾個(gè)層:星期一至五的上午和下午一二節(jié)、 第 6 頁(yè) 共 25 頁(yè) 星期一至五的上午及下午三四節(jié)、星期六全天、星期一至五的晚間。對(duì)不同的層 進(jìn)行排課,可避免同一天同一老師授同一門課的問(wèn)題。 (5) 若全部排完,則轉(zhuǎn)(7) ;否則,計(jì)算并重新賦相應(yīng)權(quán)值。 (6) 對(duì)申請(qǐng)數(shù)組重新排序,轉(zhuǎn)到(3) 。 (7) 結(jié)束。 3 3. .2 2. .2 2 算法流程圖算法流程圖 3.2.33.2.3 功能分析功能分析 3.2.43.2.4 需求分析需求分析 3 3. .3 3 排課系統(tǒng)的功能模塊排課系統(tǒng)的功能模塊 在系統(tǒng)分析
28、的基礎(chǔ)上,我們提出了系統(tǒng)的功能模塊,如圖 2 所示。 圖 2 功能模塊圖 前面描述了教務(wù)排課系統(tǒng)的功能模塊劃分,但沒(méi)給出各模塊之間的關(guān)系。在 本系統(tǒng)中,可以把模塊分為三個(gè)功能集合: (1) 系統(tǒng)管理功能集合。該集合包括權(quán)限管理和系統(tǒng)幫助兩個(gè)模塊。當(dāng)使用 者為管理員時(shí)可進(jìn)行權(quán)限管理功能,它能夠添加新的使用者,也可對(duì)已有的用戶 進(jìn)行名稱、密碼的修改和刪除。系統(tǒng)幫助功能介紹了開發(fā)系統(tǒng)的相干信息。 (2) 基本信息管理功能集合。該集合包括教師信息管理、教室信息管理、班 級(jí)信息管理、課程信息管理、課程申請(qǐng)管理五個(gè)模塊。在該集合內(nèi)可查看相應(yīng)的 數(shù)據(jù)表, 對(duì)于管理員級(jí)別的用戶可對(duì)以上表的內(nèi)容進(jìn)行添加、 修改
29、、 刪除的功能。 第 7 頁(yè) 共 25 頁(yè) 對(duì)于一般用戶,只能實(shí)現(xiàn)查看信息的基本功能。 (3) 排課管理功能集合。在基本信息設(shè)置模塊中,可查看當(dāng)前日期,又可設(shè) 置限制排課的條件,如不加限制排課、不在晚上和星期六排課等。而一般用戶只 能查看管理員設(shè)置的條件。在排課時(shí),管理員先在課程信息管理中設(shè)置好要預(yù)先 排課的課程,然后調(diào)節(jié)限制排課的條件,就可以使用自動(dòng)排課功能。用戶可在排 好后的課表中查看課表,對(duì)于不滿意的課程安排可用手動(dòng)進(jìn)行相應(yīng)的調(diào)節(jié),而手 動(dòng)排課也可針對(duì)實(shí)驗(yàn)課等靈活性的課程。 3 3. .4 4 數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì) (1)課程信息數(shù)據(jù)表 其中課程代碼唯一標(biāo)識(shí)一門課程,課程類型用來(lái)確定課程
30、優(yōu)先級(jí),而課程性 質(zhì)是課程所需教室條件的信息。如表 1 所示。 表 1 課程信息表 字段名稱數(shù)據(jù)結(jié)構(gòu)說(shuō)明 課程名稱varchar 課程類別varchar 考核方式varchar有考試、考查等 課程性質(zhì)varchar有公共課、必修課等 說(shuō)明varchar (2)班級(jí)信息數(shù)據(jù)表 其中申請(qǐng)代碼唯一標(biāo)識(shí)一個(gè)申請(qǐng)記錄,是否合班,合班班級(jí),是否分班分別 針對(duì)合班課與分班課設(shè)置。如表 2 所示。 表 2 班級(jí)信息表 字段名稱數(shù)據(jù)結(jié)構(gòu)說(shuō)明 班級(jí)名稱varchar 班級(jí)人數(shù)int 專業(yè)varchar包括系別 年級(jí)varchar 班級(jí)碼int班級(jí)的編號(hào) (3)教室信息數(shù)據(jù)表 其中教室代碼唯一標(biāo)識(shí)一個(gè)教室, 教室容
31、量和性質(zhì)分別判斷是否與班級(jí)和課 程性質(zhì)的相匹配。如表 3 所示。 第 8 頁(yè) 共 25 頁(yè) 表 3 教室信息表 字段名稱數(shù)據(jù)結(jié)構(gòu)說(shuō)明 教室名稱varchar 教室容量int即最大限度的上課人數(shù) 教室性質(zhì)varchar一般教室、 多媒體教室等 教室碼int教室的編號(hào) (4)老師信息數(shù)據(jù)表 其中教師代碼唯一標(biāo)識(shí)一位教師,教師職稱和學(xué)位確定教師優(yōu)先級(jí),住所判 斷老師是否在校外居住,排課時(shí)給予一定的優(yōu)先級(jí)。如表 4 所示。 表 4 老師信息表 字段名稱數(shù)據(jù)結(jié)構(gòu)說(shuō)明 老師姓名varchar無(wú) 職稱varchar無(wú) 學(xué)位varchar本科、碩士、博士 住所varchar校內(nèi)、校外 (5)課表信息數(shù)據(jù)表 表
32、 5 是在用戶使用系統(tǒng)的 “保存課表” 功能鍵時(shí)自動(dòng)生成。 它實(shí)現(xiàn)自動(dòng)清除、 自動(dòng)添加,具有流動(dòng)性和可操作性。如表 5 所示。 表 5 課程安排信息表 字段名稱數(shù)據(jù)結(jié)構(gòu)說(shuō)明 申請(qǐng)碼int課程的編號(hào) 課程名varchar無(wú) 星期一varchar無(wú) 星期二varchar無(wú) 星期三varchar無(wú) 星期四varchar無(wú) 星期五varchar無(wú) 星期六varchar無(wú) 教室名varchar無(wú) 老師名varchar無(wú) 第 9 頁(yè) 共 25 頁(yè) 班級(jí)名varchar無(wú) 周課數(shù)int一周上課的次數(shù) 學(xué)分int無(wú) 開始周int從第幾周開始上課 周數(shù)int共上幾周的課時(shí) 是否預(yù)排課bit無(wú) 3 3. .5 5
33、 系統(tǒng)流程及代碼分析系統(tǒng)流程及代碼分析 3 3. .5 5.1.1 系統(tǒng)流程圖系統(tǒng)流程圖 系統(tǒng)流程圖,如圖 3 所示。 圖 3 系統(tǒng)流程圖 系統(tǒng)流程圖主要針對(duì)排課過(guò)程,即當(dāng)用戶設(shè)置好相應(yīng)的排課條件、點(diǎn)擊“自 動(dòng)排課”項(xiàng),系統(tǒng)所進(jìn)行的流程。其中的“沖突解決”項(xiàng)有兩種解決方法:一是 第 10 頁(yè) 共 25 頁(yè) 在系統(tǒng)運(yùn)行時(shí)進(jìn)行的自我調(diào)節(jié),另一種是運(yùn)用手動(dòng)排課功能解決?!皩懭胝n表” 項(xiàng),是在運(yùn)行時(shí)已完成寫入課表的功能,若用戶需要,可單擊“保存課表”項(xiàng)生 成 Excel 格式的文本。 3 3. .5 5.2.2 代碼分析代碼分析 本系統(tǒng)主要由三部分構(gòu)成:權(quán)限管理,各類信息管理,排課管理。 (1)權(quán)限管
34、理模塊 該模塊可實(shí)現(xiàn)管理員級(jí)別用戶可以對(duì)所有用戶進(jìn)行添加、 刪除、 修改的功能。 以下摘錄保存功能的代碼: procedure Tfrm_yh.save_ButtonClick(Sender: TObject); begin if ( bSign = 0 ) then MessageDlg(請(qǐng)先添加或修改記錄!, mtInformation, mbOk,0) else begin if ( bSign = 1 )/添加 then with Table1 do begin Table1.First; while (not Eof) and (FieldValues用戶名稱Name_Edit.Te
35、xt) do Next; if FieldValues用戶名稱=Name_Edit.Text then ShowMessageFmt(已有一個(gè)名為%s 的用戶+#13+請(qǐng)選另一個(gè)用戶名 ,Name_Edit.Text) else if( Name_Edit.Text = )or (PW_Edit.Text = )or ( QX_ComboBox.Text = ) then ShowMessage(你輸入的信息不全!) else InsertRecord(Name_Edit.Text, PW_Edit.Text, QX_ComboBox.Text); ShowMessage(添加用戶成功!);
36、end 第 11 頁(yè) 共 25 頁(yè) else begin Table1.Delete; Table1.InsertRecord(Name_Edit.Text, PW_Edit.Text, QX_ComboBox.Text); MessageDlg(修改成功!, mtInformation, mbOk, 0); end; Name_Edit.Text:= ; PW_Edit.Text:= ; QX_ComboBox.Text :=; Name_Edit.SetFocus; Delete_Button.Enabled := true; Modify_Button.Enabled := true;
37、end (2)各類信息管理模塊 該模塊包括課程申請(qǐng)管理、教室管理、老師管理、班級(jí)管理、課程信息管 理。以下摘錄課程申請(qǐng)管理中的保存功能代碼: procedure Tfrm_Apply.Save_ButtonClick(Sender: TObject); begin if ( iSign = 0 ) then ShowMessage(請(qǐng)先添加或修改記錄!) else if ( iSign = 1 ) /添加 then begin if( kcname_ComboBox.Text = ) or ( lsname_ComboBox.Text = ) or ( bjname_ComboBox.Text
38、 = ) or ( zks_Edit.Text =0) or ( xf_Edit.Text =0) 第 12 頁(yè) 共 25 頁(yè) or ( bweek_edit.Text=0) or ( weeknum_edit.Text=0) then ShowMessage(你輸入的信息不全!) else begin Apply_ADOTable.InsertRecord(NULL, kcname_ComboBox.Text,lsname_ComboBox.Text,bjname_ComboBo x.Text,(StrToInt(zks_edit.Text),(StrToInt(xf_edit.Text),
39、(StrToInt(bweek_edit.Text),( StrToInt(weeknum_edit.Text),YP_RadioButton.Checked); ShowMessage(添加成功!); ClearCaption; EditUnEnable; ButtonEnable; end end else begin withApply_ADOTable do begin Edit; FieldValues課程名稱:=kcname_ComboBox.Text; FieldValues教師姓名:=lsname_ComboBox.Text; FieldValues班級(jí)名稱:=bjname_C
40、omboBox.Text; FieldValues周課數(shù):=StrToInt(zks_edit.Text); FieldValues學(xué)分:=StrToInt(xf_edit.Text); FieldValues開始周:=StrToInt(bweek_edit.Text); FieldValues周數(shù):=StrToInt(weeknum_edit.Text); FieldValues是否預(yù)排課:= YP_RadioButton.Checked; Post; end; ShowMessage(修改成功!); ClearCaption; bSign := false; EditUnEnable; 第
41、 13 頁(yè) 共 25 頁(yè) ButtonEnable; end; iSign := 0; Save_Button.Enabled := false; end; (3)排課管理模塊 該模塊可進(jìn)行預(yù)排課的設(shè)置、自動(dòng)排課、手動(dòng)調(diào)節(jié)功能。在自動(dòng)排課中分 為三步:首先賦權(quán)值,其次再檢測(cè)各種沖突,最后實(shí)現(xiàn)排課過(guò)程。 a.權(quán)值計(jì)算: 設(shè)置的權(quán)值有:課程信息的權(quán)值(包括課程類別、課程性質(zhì)) ,班級(jí)信息的 權(quán)值(包括年級(jí)) ,教師信息的權(quán)值(包括職稱、學(xué)位) 。 以班級(jí)信息權(quán)值設(shè)置為例: with bjADOTable do for i := 0 to appNum - 1 do begin First; whi
42、le FieldValues班級(jí)名稱 appi.className do Next; ifFieldValues年級(jí) = 1 年級(jí) then appi.currentValue := appi.currentValue + 12 else if FieldValues年級(jí) = 2 年級(jí) then appi.currentValue := appi.currentValue + 9 else if FieldValues年級(jí) = 3 年級(jí) then appi.currentValue := appi.currentValue + 6 else if FieldValues年級(jí) = 4 年級(jí) th
43、en appi.currentValue := appi.currentValue + 3; b.檢測(cè)沖突: 檢測(cè)的沖突有:在同一天是否已經(jīng)排過(guò)課, (預(yù))排課的教室沖突,所安排 的教室是否合適(包括教室人數(shù)、容量、性質(zhì)) 。 以(預(yù))排課的教室沖突為例: functionTfrm_Main.dynamicTest( day : integer; time : integer; current : integer ):Boolean; var t1,t2,room:integer; 第 14 頁(yè) 共 25 頁(yè) begin dynamicTest := true; for room := 0 t
44、o roomNum - 1 do if( arrdaytimeroom0 = 0 ) then continue else begin t1 := 0; t2 := 0; while appt1.appKey arrdaytimeroom0 do t1 := t1 + 1; if arrdaytimeroom1 0 then while appt2.appKey arrdaytimeroom1 do t2 := t2 + 1 else t2 := t1; if( appt1.teaName = appcurrent.teaName ) or ( appt1.className = appcur
45、rent.className ) or ( appt2.teaName = appcurrent.teaName ) or ( appt2.className = appcurrent.className ) then begin dynamicTest := false; break; end; end; end; c.排課算法: 摘錄設(shè)置為“不加限制排課”的代碼為例: procedure Tfrm_Main.FirstFind1(m : integer;var a : appRecord ); var i, j, k : Integer; succ: boolean; begin i := 0;/星期 第 15 頁(yè) 共 25 頁(yè) j := 0;/節(jié)數(shù) k := 0;/教室號(hào) succ := true; while( arrijk0 0 )or (not RoomCheck(a,k)or (not dynamicTest( i, j, m ) ) do if( k roomNum - 1 ) then k := k + 1 else if (i5) and (j=0)or(j=2) then begin j:=j+1; k:=0; end elseif (i4) and (j=1)or(j=3) then begin i:=i+1;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 我國(guó)上市公司收購(gòu)法律制度的完善:基于實(shí)踐與國(guó)際經(jīng)驗(yàn)的審視
- 我國(guó)上市公司并購(gòu)交易模式的多維度剖析與展望
- 印刷設(shè)備電氣裝調(diào)工發(fā)展趨勢(shì)評(píng)優(yōu)考核試卷含答案
- 燃?xì)庥脩舭惭b檢修工道德知識(shí)考核試卷含答案
- 寶劍工安全理論能力考核試卷含答案
- 制漿工崗前技術(shù)實(shí)務(wù)考核試卷含答案
- 飛機(jī)操縱系統(tǒng)安裝調(diào)試工安全知識(shí)宣貫測(cè)試考核試卷含答案
- 企業(yè)產(chǎn)品質(zhì)量控制制度
- 2026新疆兵投檢驗(yàn)檢測(cè)有限責(zé)任公司招聘15人備考題庫(kù)及一套完整答案詳解
- 大單元整合·深度復(fù)習(xí):新中國(guó)成就的立體透視與中考備考
- 勾股定理復(fù)習(xí)導(dǎo)學(xué)案
- GB/T 22900-2022科學(xué)技術(shù)研究項(xiàng)目評(píng)價(jià)通則
- SB/T 11094-2014中藥材倉(cāng)儲(chǔ)管理規(guī)范
- GB/T 6418-2008銅基釬料
- GB/T 3452.4-2020液壓氣動(dòng)用O形橡膠密封圈第4部分:抗擠壓環(huán)(擋環(huán))
- GB/T 16621-1996母樹林營(yíng)建技術(shù)
- GB/T 14518-1993膠粘劑的pH值測(cè)定
- GB/T 14072-1993林木種質(zhì)資源保存原則與方法
- GA/T 1310-2016法庭科學(xué)筆跡鑒定意見(jiàn)規(guī)范
- 垃圾分類科普指南課件(21張PPT)
- DB37-T 4328-2021 建筑消防設(shè)施維護(hù)保養(yǎng)技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論