<output id="r87xx"></output>
    1. 
      
      <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
        •   

               當(dāng)前位置:首頁(yè)>軟件介紹>學(xué)校排課系統(tǒng)的設(shè)計(jì) 查詢(xún):
               
          學(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è)逐漸離不開(kāi)電腦。對(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)限管理等較復(fù)雜的功能。本設(shè)計(jì)采用C/S模式,主要用Delphi7.0作為前臺(tái)開(kāi)發(fā)工具,用SQL Server2003作為后臺(tái)數(shù)據(jù)庫(kù)。經(jīng)過(guò)測(cè)試后,本設(shè)計(jì)已可達(dá)到預(yù)想中的效果,能夠?qū)崿F(xiàn)簡(jiǎn)易的功能。

                  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ù)排課系統(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è)系專(zhuān)用的教學(xué)樓也要考慮參加全校的教室資源統(tǒng)一調(diào)整?,F(xiàn)在的本科院校包括研究生在內(nèi),一般都有上萬(wàn)人或幾萬(wàn)人的規(guī)模。要在每個(gè)學(xué)期末的一個(gè)短時(shí)間內(nèi)拿出一份涉及到有關(guān)全校教室統(tǒng)調(diào)的課表來(lái),對(duì)高校的教務(wù)處來(lái)說(shuō)確實(shí)是一個(gè)很艱巨的任務(wù)。

                  排課系統(tǒng)的主要任務(wù)是根據(jù)現(xiàn)有的教學(xué)資源對(duì)課程進(jìn)行合理的安排。由于高校班級(jí)數(shù)、課程門(mén)數(shù)較多,每門(mén)課有涉及很多信息,如果用手工進(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)開(kāi)發(fā)工具,采用SQL Server 2003作為后臺(tái)數(shù)據(jù)庫(kù)。

                  2基本理論知識(shí)介紹

                  2.1SQL Server2003數(shù)據(jù)庫(kù)簡(jiǎn)介

                  Microsoft SQL Server2003是Microsoft公司繼SQL Server   6.5和SQL Server7.0以后,推出的又一改進(jìn)的新版關(guān)系型數(shù)據(jù)管理系統(tǒng)。它能使用戶(hù)快捷地管理數(shù)據(jù)庫(kù)和開(kāi)發(fā)應(yīng)用程序。SQL Server2003使用了先進(jìn)的數(shù)據(jù)庫(kù)結(jié)構(gòu),與Windows DNA緊密集成,具有強(qiáng)大的Web功能,它可以利用高端硬件平臺(tái)以及最新網(wǎng)絡(luò)和存儲(chǔ)技術(shù),可以為最大的Web站點(diǎn)和企業(yè)應(yīng)用提供優(yōu)良的擴(kuò)展性和可靠性,使用戶(hù)能夠在Internet領(lǐng)域快速建立服務(wù)系統(tǒng),為占領(lǐng)市場(chǎng)贏(yíng)得寶貴的時(shí)間。同時(shí),SQL Server2003還為用戶(hù)提供了重要的安全性功能的增強(qiáng),為用戶(hù)的數(shù)據(jù)安全提供了可靠的保證。另外,SQL Server2003在數(shù)據(jù)庫(kù)服務(wù)器自動(dòng)管理技術(shù)方面處于數(shù)據(jù)庫(kù)領(lǐng)域的領(lǐng)先地位,它可以使用戶(hù)免去繁瑣復(fù)雜的工作

                  量,從而有精力處理更重要的問(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ù)的所有操作,包括定義、查詢(xún)、更新和各種運(yùn)行控制最終都通過(guò)它來(lái)實(shí)現(xiàn)的,因此它是使數(shù)據(jù)庫(kù)系統(tǒng)具有數(shù)據(jù)共享、并發(fā)訪(fǎng)問(wèn)、數(shù)據(jù)獨(dú)立等特性的根本保證。目前,Microsoft SQL Server2003是在成熟和強(qiáng)大的關(guān)系型數(shù)據(jù)庫(kù)中最受歡迎、應(yīng)用最廣泛的一個(gè)。

                  就關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)而言,它是位于用戶(hù)與操作系統(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 Server2003系統(tǒng)之所以成為目前流行的大型商用數(shù)據(jù)庫(kù)系統(tǒng),有著其深刻的內(nèi)在因素,這與它鮮明的特點(diǎn)是分不開(kāi)的:

                  (1)與Internet的高度集成。

                  (2)高伸縮性和適應(yīng)性。

                  (3)企業(yè)級(jí)數(shù)據(jù)庫(kù)功能強(qiáng)。

                  (4)易于安裝和使用。

                  (5)具有決策支持的資料倉(cāng)庫(kù)。

                  2.2Delphi7.0簡(jiǎn)介

                  Delphi是Borland公司發(fā)布的用于開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序的工具,它是目前開(kāi)發(fā)客戶(hù)/服務(wù)器數(shù)據(jù)庫(kù)應(yīng)用程序的強(qiáng)有力的工具。Delphi是具有可視化界面的面向?qū)ο缶幊陶Z(yǔ)言.而最新的Delphi7.0具有以下新特點(diǎn):

                  和以往Delphi的每一個(gè)新版本一樣,Delphi7繼續(xù)改善了開(kāi)發(fā)環(huán)境,幫助程序員提高效率。Delphi7在集成開(kāi)發(fā)環(huán)境中加入了很多讓程序員愛(ài)不釋手的新功能,下面是對(duì)它們的一個(gè)簡(jiǎn)單介紹。

                  (1)Code Complete(代碼完成)

                  Code Complete功能在Delphi5中就已經(jīng)加入了,這項(xiàng)功能非常受程序員的歡迎,因?yàn)镃ode Complete可以大幅度地減少程序員需要鍵入的程序代碼,并且減少鍵入錯(cuò)誤。Delphi7的Code Complete功能在原有的基礎(chǔ)上繼續(xù)改善,新的Code Complete窗口不但可以由程序員自行調(diào)整大小,而且可以使用不同的顏色代表不同的對(duì)象,例如變量、方法和特性等。

                  (2)Object TreeView(對(duì)象樹(shù)視圖)

                  另外一個(gè)新功能就是Delphi7的Object TreeView窗口。這個(gè)新的窗口除

                  了可以顯示窗體中所有的對(duì)象之外,也可以以分層方式表達(dá)組件之間的關(guān)系。當(dāng)程序員在Object TreeView窗口中單擊了一個(gè)組件之后,這個(gè)組件會(huì)立刻出現(xiàn)在對(duì)象查看器之中,這時(shí)程序員可以改變這個(gè)對(duì)象的特性值和事件處理程序。

                  當(dāng)窗體復(fù)雜,擁有大量的組件時(shí),Object TreeView窗口可以讓用戶(hù)迅速找到這個(gè)組件,并且知道與當(dāng)前組件相關(guān)的組件,非常方便。

                  (3)可定制的View窗口

                  Delphi7最強(qiáng)勁的集成開(kāi)發(fā)環(huán)境功能應(yīng)該要算是新的可定制的View窗口了。在Delphi7中,編輯器不但可以讓程序員觀(guān)看和編輯Object Pascal的程序代碼,而且如果程序員編輯的是Web應(yīng)用程序,那么還可以直接在編輯器中查看HTML程序代碼、腳本語(yǔ)言程序代碼,預(yù)覽Web應(yīng)用程序執(zhí)行結(jié)果的畫(huà)面以及Web 應(yīng)用程序產(chǎn)生的HTML程序代碼。

                  (4)新添加Indy Intercepts和Indy I/O Handler構(gòu)件組

                  企業(yè)版的Delphi7中,這兩個(gè)構(gòu)件組基本上提供了針對(duì)現(xiàn)今流行的Internet協(xié)議編程的構(gòu)件。可以進(jìn)行更為底層的操作。

                  (5)新添加IW Standard、IW Data、IW Client Side和IW Control構(gòu)件組

                  這些構(gòu)件也是Delphi7的顯著改革之一,將Intraweb集成到了標(biāo)準(zhǔn)的構(gòu)件板中,我們就可以很方便地開(kāi)發(fā)基于Web的應(yīng)用程序。

                  (6)新添加的Rave報(bào)表構(gòu)件組

                  Delphi7的標(biāo)準(zhǔn)構(gòu)件板中已經(jīng)沒(méi)有了原來(lái)的QuickReport構(gòu)件組,取而代之的是RAVE報(bào)表制作組件,并且提供專(zhuān)門(mén)的報(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ù)雜、個(gè)性化的報(bào)表都可以完成。它的功能包括:圖片支持、對(duì)齊、精確頁(yè)面定位、打印機(jī)設(shè)置、字體控制、打印預(yù)覽、報(bào)表內(nèi)容重用,并支持PDF、HTML、RTF 等文本格式。隨著Active X數(shù)據(jù)對(duì)象(ADO)的推出,它能讓?xiě)?yīng)用程序通過(guò)任意的OLE DB提供者訪(fǎng)問(wèn)和操作數(shù)據(jù)庫(kù),其強(qiáng)大功能使得任何數(shù)據(jù)訪(fǎng)問(wèn)技術(shù)都黯然失色。

                  而在數(shù)據(jù)集方面,與BDE不同ADO是Microsoft推出的新一代數(shù)據(jù)訪(fǎng)問(wèn)規(guī)范,在Delphi7中它的地位等同于一個(gè)和BDE并列的數(shù)據(jù)引擎。本系統(tǒng)采用的就是ADO數(shù)據(jù)集。

                  雖然ADO的功能比BDE比起來(lái)弱一些,但和BDE相比ADO有一些重要的優(yōu)勢(shì),比如:

                  ADO將會(huì)內(nèi)制在從Windows2000開(kāi)始Microsoft新出的所有操作系統(tǒng)中,單

                  就這一點(diǎn)就足以給其他的數(shù)據(jù)訪(fǎng)問(wèn)方式畫(huà)上問(wèn)號(hào)。

                  在Delphi7中提供了對(duì)ADO的全力支持,提供了很多ADO組件,還增加了一些新的字段類(lèi)型如:WideString,GUID,Variant,interface,IDispatch等。

                  ADO是面向各種數(shù)據(jù)的層次很高的接口,它提供了強(qiáng)大的數(shù)據(jù)訪(fǎng)問(wèn)功能,可以訪(fǎng)問(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.文本與圖象,聲音;

                  e.客戶(hù)事務(wù)對(duì)象。

                  Delphi5.0版本成功地引入了這項(xiàng)技術(shù),極大程度地?cái)U(kuò)展了數(shù)據(jù)庫(kù)處理能力,為Delphi程序員帶來(lái)前所未有的廣闊空間。Delphi以其功能強(qiáng)大、簡(jiǎn)單易用等諸多特性,深受編程人員的歡迎。所以我選擇了Delphi7.0作為開(kāi)發(fā)工具。

                  2.3C/S模式介紹

                  C/S(Client/Server)結(jié)構(gòu),即大家熟知的客戶(hù)機(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)的通訊開(kāi)銷(xiāo)。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(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)部的和外部的用戶(hù)都可以訪(fǎng)問(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教務(wù)排課系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

                  3.1教務(wù)排課系統(tǒng)簡(jiǎn)介

                  課程編排作為高等院校教務(wù)管理中的一項(xiàng)重要而且繁重的工作,從一般意義上講,其實(shí)質(zhì)就是對(duì)學(xué)校學(xué)期開(kāi)設(shè)的每門(mén)課程合理地分配時(shí)間資源和教室資源的過(guò)程。其中涉及教師、教室、時(shí)間和學(xué)生等多種因素,人為要求也比較多,另外由于這幾年的高校擴(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í)、分

                  配時(shí)間片資源和教室資源時(shí)根據(jù)相關(guān)參數(shù)動(dòng)態(tài)設(shè)置其優(yōu)先級(jí)的算法設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)高校智能排課系統(tǒng)。如何充分利用有限的教室和時(shí)間資源合理地編排課表,是本文致力研究的主要問(wèn)題。

                  3.2教務(wù)排課系統(tǒng)分析

                  3.2.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é)資源(教師、教室)合理分配,也不能滿(mǎn)足一些特殊要求(比如有些老師喜歡上午上課,有些老師偏向于集中式上課;有些課程安排在上午更合適些,有些課程不能安排到上午等)。

                  (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à)類(lèi),對(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),在教師、教室資源不緊缺的情況下,此算法能排出相對(duì)合理的課程。相對(duì)于之前介紹的兩個(gè)算法,在處理各種特殊要求的能力上有明顯的優(yōu)勢(shì)。

                  本系統(tǒng)采用的是動(dòng)態(tài)加權(quán)算法即貪婪算法。貪婪法是一種不追求最優(yōu)解,只希望得到較為滿(mǎn)意解的方法。貪婪法一般可以快速得到滿(mǎn)意的解,因?yàn)樗∪チ藶檎易顑?yōu)解要窮盡所有可能而必須耗費(fèi)的大量時(shí)間。貪婪法常以當(dāng)前情況為基礎(chǔ)作最優(yōu)選擇,而不考慮各種可能的整體情況。在解決排課沖突時(shí),為減少貪婪法的缺點(diǎn),特在自動(dòng)排課功能后加入手動(dòng)調(diào)節(jié)功能,使用者可對(duì)不滿(mǎn)意的課程再次調(diào)節(jié)。以下為算法過(guò)程:

                  (1)初始化排課數(shù)組、課程申請(qǐng)數(shù)組。

                  (2)賦初始權(quán)值并對(duì)課程申請(qǐng)數(shù)組排序。

                  (3)將課程申請(qǐng)碼按序進(jìn)行排課,結(jié)果存儲(chǔ)在排課數(shù)組中。

                  (4)排課思想是將一星期分為幾個(gè)層:星期一至五的上午和下午一二節(jié)、

                  星期一至五的上午及下午三四節(jié)、星期六全天、星期一至五的晚間。對(duì)不同的層進(jìn)行排課,可避免同一天同一老師授同一門(mén)課的問(wèn)題。

                  (5)若全部排完,則轉(zhuǎn)(7);否則,計(jì)算并重新賦相應(yīng)權(quán)值。

                  (6)對(duì)申請(qǐng)數(shù)組重新排序,轉(zhuǎn)到(3)。

                  (7)結(jié)束。

                  3.2.2算法流程圖

                  3.2.3功能分析

                  3.2.4需求分析

                  3.3排課系統(tǒng)的功能模塊

                  在系統(tǒng)分析的基礎(chǔ)上,我們提出了系統(tǒng)的功能模塊

                  前面描述了教務(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ì)已有的用戶(hù)進(jìn)行名稱(chēng)、密碼的修改和刪除。系統(tǒng)幫助功能介紹了開(kāi)發(fā)系統(tǒng)的相干信息。

                  (2)基本信息管理功能集合。該集合包括教師信息管理、教室信息管理、班級(jí)信息管理、課程信息管理、課程申請(qǐng)管理五個(gè)模塊。在該集合內(nèi)可查看相應(yīng)的數(shù)據(jù)表,對(duì)于管理員級(jí)別的用戶(hù)可對(duì)以上表的內(nèi)容進(jìn)行添加、修改、刪除的功能。

                  對(duì)于一般用戶(hù),只能實(shí)現(xiàn)查看信息的基本功能。

                  (3)排課管理功能集合。在基本信息設(shè)置模塊中,可查看當(dāng)前日期,又可設(shè)置限制排課的條件,如不加限制排課、不在晚上和星期六排課等。而一般用戶(hù)只能查看管理員設(shè)置的條件。在排課時(shí),管理員先在課程信息管理中設(shè)置好要預(yù)先排課的課程,然后調(diào)節(jié)限制排課的條件,就可以使用自動(dòng)排課功能。用戶(hù)可在排好后的課表中查看課表,對(duì)于不滿(mǎn)意的課程安排可用手動(dòng)進(jìn)行相應(yīng)的調(diào)節(jié),而手動(dòng)排課也可針對(duì)實(shí)驗(yàn)課等靈活性的課程。

                  3.4數(shù)據(jù)庫(kù)設(shè)計(jì)

                  (1)課程信息數(shù)據(jù)表

                  其中課程代碼唯一標(biāo)識(shí)一門(mén)課程,課程類(lèi)型用來(lái)確定課程優(yōu)先級(jí),而課程性質(zhì)是課程所需教室條件的信息。

                  字段名稱(chēng)數(shù)據(jù)結(jié)構(gòu)說(shuō)明

                  課程名稱(chēng)varchar

                  課程類(lèi)別varchar

                  考核方式varchar有考試、考查等

                  課程性質(zhì)varchar有公共課、必修課等

                  說(shuō)明varchar

                  (2)班級(jí)信息數(shù)據(jù)表

                  其中申請(qǐng)代碼唯一標(biāo)識(shí)一個(gè)申請(qǐng)記錄,是否合班,合班班級(jí),是否分班分別針對(duì)合班課與分班課設(shè)置。

                  字段名稱(chēng)數(shù)據(jù)結(jié)構(gòu)說(shuō)明

                  班級(jí)名稱(chēng)varchar

                  班級(jí)人數(shù)int

                  專(zhuān)業(yè)varchar包括系別

                  年級(jí)varchar

                  班級(jí)碼int班級(jí)的編號(hào)

                  (3)教室信息數(shù)據(jù)表

                  其中教室代碼唯一標(biāo)識(shí)一個(gè)教室,教室容量和性質(zhì)分別判斷是否與班級(jí)和課程性質(zhì)的相匹配。

                  字段名稱(chēng)數(shù)據(jù)結(jié)構(gòu)說(shuō)明

                  教室名稱(chēng)varchar

                  教室容量int即最大限度的上課人數(shù)

                  教室性質(zhì)varchar一般教室、多媒體教室等

                  教室碼int教室的編號(hào)

                  (4)老師信息數(shù)據(jù)表

                  其中教師代碼唯一標(biāo)識(shí)一位教師,教師職稱(chēng)和學(xué)位確定教師優(yōu)先級(jí),住所判斷老師是否在校外居住,排課時(shí)給予一定的優(yōu)先級(jí)。

                  (5)課表信息數(shù)據(jù)表

                  表5是在用戶(hù)使用系統(tǒng)的“保存課表”功能鍵時(shí)自動(dòng)生成。它實(shí)現(xiàn)自動(dòng)清除、自動(dòng)添加,具有流動(dòng)性和可操作性。

                  字段名稱(chēng)數(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ú)

                  班級(jí)名varchar無(wú)

                  周課數(shù)int一周上課的次數(shù)

                  學(xué)分int無(wú)

                  開(kāi)始周int從第幾周開(kāi)始上課

                  周數(shù)int共上幾周的課時(shí)

                  是否預(yù)排課bit無(wú)

                  3.5系統(tǒng)流程及代碼分析

                  3.5.1系統(tǒng)流程圖

                   timg (1).jpg

                  系統(tǒng)流程圖主要針對(duì)排課過(guò)程,即當(dāng)用戶(hù)設(shè)置好相應(yīng)的排課條件、點(diǎn)擊“自動(dòng)排課”項(xiàng),系統(tǒng)所進(jìn)行的流程。其中的“沖突解決”項(xiàng)有兩種解決方法:一是

                  在系統(tǒng)運(yùn)行時(shí)進(jìn)行的自我調(diào)節(jié),另一種是運(yùn)用手動(dòng)排課功能解決?!皩?xiě)入課表”項(xiàng),是在運(yùn)行時(shí)已完成寫(xiě)入課表的功能,若用戶(hù)需要,可單擊“保存課表”項(xiàng)生成Excel格式的文本。

                  3.5.2代碼分析

                  本系統(tǒng)主要由三部分構(gòu)成:權(quán)限管理,各類(lèi)信息管理,排課管理。

                  (1)權(quán)限管理模塊

                  該模塊可實(shí)現(xiàn)管理員級(jí)別用戶(hù)可以對(duì)所有用戶(hù)進(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 Table1do

                  begin

                  Table1.First;

                  while(not Eof)and(FieldValues['用戶(hù)名稱(chēng)']Name_Edit.Text)do Next;

                  if FieldValues['用戶(hù)名稱(chēng)']=Name_Edit.Text then

                  ShowMessageFmt('已有一個(gè)名為%s的用戶(hù)' #13 '請(qǐng)選另一個(gè)用戶(hù)名',[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('添加用戶(hù)成功!');

                  end

                  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;

                  end

                  (2)各類(lèi)信息管理模塊

                  該模塊包括課程申請(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='')

                  or(zks_Edit.Text='0')

                  or(xf_Edit.Text='0')

                  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)),(StrToInt(bweek_edit.Text)),( StrToInt(weeknum_edit.Text)),YP_RadioButton.Checked]);

                  ShowMessage('添加成功!');

                  ClearCaption;

                  EditUnEnable;

                  ButtonEnable;

                  end

                  end

                  else

                  begin

                  with Apply_ADOTable do

                  begin

                  Edit;

                  FieldValues['課程名稱(chēng)']:=kcname_ComboBox.Text;

                  FieldValues['教師姓名']:=lsname_ComboBox.Text;

                  FieldValues['班級(jí)名稱(chēng)']:=bjname_ComboBox.Text;

                  FieldValues['周課數(shù)']:=StrToInt(zks_edit.Text);

                  FieldValues['學(xué)分']:=StrToInt(xf_edit.Text);

                  FieldValues['開(kāi)始周']:=StrToInt(bweek_edit.Text);

                  FieldValues['周數(shù)']:=StrToInt(weeknum_edit.Text);

                  FieldValues['是否預(yù)排課']:=YP_RadioButton.Checked;

                  Post;

                  end;

                  ShowMessage('修改成功!');

                  ClearCaption;

                  bSign:=false;

                  EditUnEnable;

                  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)值(包括課程類(lèi)別、課程性質(zhì)),班級(jí)信息的權(quán)值(包括年級(jí)),教師信息的權(quán)值(包括職稱(chēng)、學(xué)位)。

                  以班級(jí)信息權(quán)值設(shè)置為例:

                  with bjADOTable do

                  for i:=0to appNum-1do

                  begin

                  First;

                  while FieldValues['班級(jí)名稱(chēng)']app[i].className do

                  Next;

                  if FieldValues['年級(jí)']='1年級(jí)'then

                  app[i].currentValue:=app[i].currentValue 12

                  else if FieldValues['年級(jí)']='2年級(jí)'then

                  app[i].currentValue:=app[i].currentValue 9

                  else if FieldValues['年級(jí)']='3年級(jí)'then

                  app[i].currentValue:=app[i].currentValue 6

                  else if FieldValues['年級(jí)']='4年級(jí)'then

                  app[i].currentValue:=app[i].currentValue 3;

                  b.檢測(cè)沖突:

                  檢測(cè)的沖突有:在同一天是否已經(jīng)排過(guò)課,(預(yù))排課的教室沖突,所安排的教室是否合適(包括教室人數(shù)、容量、性質(zhì))。

                  以(預(yù))排課的教室沖突為例:

                  function Tfrm_Main.dynamicTest(day:integer;time:integer;current: integer):Boolean;

                  var

                  t1,t2,room:integer;

                  begin

                  dynamicTest:=true;

                  for room:=0to roomNum-1dor

                  if(arr[day][time][room][0]=0)then

                  continue

                  else

                  begin

                  t1:=0;

                  t2:=0;

                  while app[t1].appKeyarr[day][time][room][0]do

                  t1:=t1 1;

                  if arr[day][time][room][1]0then

                  while app[t2].appKeyarr[day][time][room][1]do

                  t2:=t2 1

                  else

                  t2:=t1;

                  if((app[t1].teaName=app[current].teaName)or

                  (app[t1].className=app[current].className)or

                  (app[t2].teaName=app[current].teaName)or

                  (app[t2].className=app[current].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;//星期

                  j:=0;//節(jié)數(shù)

                  k:=0;//教室號(hào)

                  succ:=true;

                  while((arr[i][j][k][0]0)or

                  (not RoomCheck(a,k))or

                  (not dynamicTest(i,j,m))

                  )do

                  if(k

                  k:=k 1

                  else

                  if((i

                  j:=j 1;

                  k:=0;

                  end

                  else if((i

                  i:=i 1;

                  j:=j-1;

                  k:=0;

                  end

                  else if((i=4)and((j=1)or(j=3)))then begin

                  i:=i-4;

                  j:=j 1;

                  k:=0;

                  end

                  else if((i

                  i:=i 1;

                  k:=0;

                  end

                  else if((i=4)and(j=4))then begin

                  i:=i 1;

                  j:=j-4;

                  k:=0;

                  end

                  else if((i=5)and(j

                  begin

                  j:=j 1;

                  k:=0;

                  end

                  else

                  begin

                  succ:=false;

                  break;

                  end;

                  if(succ=true)then

                  begin

                  arr[i][j][k][0]:=a.appkey;

                  a.courseNum:=a.courseNum-1;

                  TotalCourseNum:=TotalCourseNum-1;

                  a.roomkey:=k;

                  a.isFirst:=false;

                  end

                  else SetException(a);

                  end;

                  4系統(tǒng)測(cè)試

                  4.1測(cè)試環(huán)境

                  1.硬件環(huán)境

                  ?CPU:Intel Pentium3500MHz

                  ?硬盤(pán):40GB

                  ?內(nèi)存:256MB

                  2.軟件環(huán)境

                  ?系統(tǒng)軟件:Windows XP

                  ?工具軟件:Delphi7.0、SQL Server2003

                  4.2主要模塊測(cè)試

                  (1)管理員權(quán)限

                  經(jīng)過(guò)上面各節(jié)的工作后,基本上完成了一個(gè)檔案管理系統(tǒng)的開(kāi)發(fā)。經(jīng)過(guò)編譯后,在菜單中選擇Run-->Run命令,則會(huì)出現(xiàn)系統(tǒng)的登錄界面。

                  a.登錄界面

                  說(shuō)明:輸入用戶(hù)名和密碼,單擊“確定”按鈕,當(dāng)身份驗(yàn)證成功后進(jìn)入檔案管理系統(tǒng)主界面。單擊“取消”退出登錄窗口。

                  b.主界面,

                  說(shuō)明:主界面由三部分組成:基本信息管理、基本條件設(shè)置、預(yù)排課、自動(dòng)排課及手動(dòng)調(diào)節(jié)。在菜單欄中,分為系統(tǒng)、信息管理、幫助菜單。“系統(tǒng)”菜單含用戶(hù)管理和退出功能。“信息管理”可查看基本信息?!皫椭敝锌刹榭唇虅?wù)排課系統(tǒng)的相應(yīng)信息。

                  c.如身份驗(yàn)證失敗,則出現(xiàn)如圖7所示的提示信息框

                  說(shuō)明:點(diǎn)擊“OK”返回登錄界面,重新輸入用戶(hù)名和密碼。

                  d.點(diǎn)擊“基本信息管理”中的課程申請(qǐng)管理界面為例

                  說(shuō)明:選中某一記錄后可進(jìn)行刪除和修改的功能,也可直接添加記錄,修改完后點(diǎn)擊保存或退出完成管理。

                  e.基本條件設(shè)置管理界面

                  說(shuō)明:教學(xué)公歷上顯示為當(dāng)前日期,“排課條件設(shè)置”中設(shè)置需要的排課條件。

                  f.排課管理界面

                  說(shuō)明:點(diǎn)擊“清空”可清空上次所排信息,點(diǎn)擊“自動(dòng)排課”能實(shí)現(xiàn)自動(dòng)排課功能,點(diǎn)擊“檢測(cè)沖突”可檢測(cè)當(dāng)前排課有無(wú)沖突。點(diǎn)擊“保存課表”能將排課信息保存為excel格式。

                  g.權(quán)限管理界面

                  說(shuō)明:權(quán)限管理是當(dāng)管理員用戶(hù)在“系統(tǒng)”菜單內(nèi)的設(shè)置。在這里可進(jìn)行用戶(hù)的添加、刪除、修改等功能。

                  (2)一般用戶(hù)權(quán)限

                  一般用戶(hù)與管理員用戶(hù)的區(qū)別在于他只能查看相應(yīng)信息,不能進(jìn)行其他操作。以排課管理界面為例

                  說(shuō)明:一般用戶(hù)的界面設(shè)計(jì)上與管理員用戶(hù)基本相同,只有某些按鈕被屏蔽,不能實(shí)現(xiàn)相應(yīng)功能。

                  其中的清空、自動(dòng)排課、保存課表鍵被屏蔽,用戶(hù)無(wú)法進(jìn)行操作。

                  4.3測(cè)試結(jié)果

                  教務(wù)排課系統(tǒng)是一款基于動(dòng)態(tài)加權(quán)算法的人性化的教務(wù)軟件,它采用手動(dòng)預(yù)排—>自動(dòng)排課—>手動(dòng)調(diào)節(jié)的三步排課模式,具有以下特點(diǎn):

                  (1)課表合理:具有預(yù)排,合班等功能,排出的課表合理性較強(qiáng)。

                  (2)排課靈活:采用了局部范圍內(nèi)的動(dòng)態(tài)隨機(jī)加權(quán),排出的課表具有靈活的特點(diǎn),使用者可以在多次排課中選擇自己認(rèn)為合適的課表。

                  (3)操作便捷:系統(tǒng)界面簡(jiǎn)單明了,用戶(hù)很容易掌握對(duì)排課軟件的使用。

                  (4)人性化:系統(tǒng)界面美觀(guān),具有很強(qiáng)的交互性。

                  結(jié)論

                  在分析以往一些排課系統(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)安排。該方案采用C/S模式,采用Delphi7.0作為前臺(tái)開(kāi)發(fā)工具,用SQL Server2003作為后臺(tái)數(shù)據(jù)庫(kù)。系統(tǒng)能實(shí)現(xiàn)查閱、修改、添加等比較基本的功能,也能夠?qū)崿F(xiàn)自動(dòng)排課、權(quán)限管理等較復(fù)雜的功能。經(jīng)過(guò)測(cè)試后,該系統(tǒng)達(dá)到了預(yù)想中的效果,能夠?qū)崿F(xiàn)簡(jiǎn)易的功能。

                  本文的主要工作有:

                  1)介紹了教務(wù)排課系統(tǒng)在高校教學(xué)日常工作中使用的必要性和重要性,對(duì)CS模式、SQL Server及Delphi都進(jìn)行了簡(jiǎn)單的介紹;

                  2)闡述了貪婪法的基本實(shí)現(xiàn)原理和算法流程;

                  3)模擬了高校教務(wù)排課系統(tǒng)的開(kāi)發(fā)需求,提出了比較詳細(xì)的解決方案,闡明了系統(tǒng)的功能模塊的劃分及相互之間的關(guān)系,并詳細(xì)描述了每個(gè)模塊的實(shí)現(xiàn)過(guò)程或者實(shí)現(xiàn)方法;

                  本系統(tǒng)也有一些不盡人意的地方。需求分析并沒(méi)有非常細(xì)致全面,軟件的性能、健壯性、使用方便及美觀(guān)等方面離真正的商業(yè)軟件還有一定的差距;系統(tǒng)并沒(méi)有嚴(yán)格考慮安全因素;另外,本系統(tǒng)并沒(méi)有考慮與高校其他軟件系統(tǒng)之間的關(guān)系,比如數(shù)據(jù)一致性等問(wèn)題。這些都有待今后的完善。

                  經(jīng)過(guò)幾個(gè)月來(lái)的設(shè)計(jì),系統(tǒng)基本滿(mǎn)足排課管理方面的需要。完成后的系統(tǒng)可以實(shí)現(xiàn)諸如權(quán)限管理;不同級(jí)別用戶(hù)的查閱功能;管理員用戶(hù)對(duì)數(shù)據(jù)庫(kù)的管理功能;管理員進(jìn)行的手動(dòng)預(yù)排、自動(dòng)排課、手動(dòng)調(diào)節(jié)等功能。數(shù)據(jù)庫(kù)方面,設(shè)置了教師信息表、課程信息表等基本信息,也有課程申請(qǐng)這類(lèi)動(dòng)態(tài)數(shù)據(jù)表。綜合而言,系統(tǒng)能實(shí)現(xiàn)完整的功能,達(dá)到了預(yù)期的目的。系統(tǒng)設(shè)計(jì)期間,學(xué)習(xí)到了很多課堂上沒(méi)有的知識(shí),增強(qiáng)了動(dòng)手能力和解決實(shí)際問(wèn)題的能力,提高了認(rèn)識(shí)和學(xué)習(xí)新事物的能力,特別是增強(qiáng)了自己在程序設(shè)計(jì)方面的信心和動(dòng)手實(shí)踐能力,這些對(duì)于未來(lái)的工作無(wú)疑將是一筆寶貴的財(cái)富。

                  


          高校圖書(shū)館管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)高校教職工信息管理系統(tǒng)
          基于jsp的高校宿舍管理系統(tǒng)pb學(xué)生成績(jī)管理系統(tǒng)
          vs學(xué)生成績(jī)管理系統(tǒng)基于Web的學(xué)生成績(jī)管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
          學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告匯編課程設(shè)計(jì)成績(jī)管理系統(tǒng)
          學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)高校排課系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
          學(xué)生成績(jī)查詢(xún)管理系統(tǒng)通用學(xué)生信息管理系統(tǒng)
          學(xué)生平時(shí)成績(jī)管理系統(tǒng)學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)報(bào)告
          學(xué)生成績(jī)管理系統(tǒng)基于java的教務(wù)排課系統(tǒng)
          信息發(fā)布:廣州名易軟件有限公司 http://m.jetlc.com
          • 勁爆價(jià):
            不限功能
            不限用戶(hù)
            1998元/年

          • 微信客服

            <output id="r87xx"></output>
          1. 
            
            <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
              • 成人黄色在线看 | 久久综合五月婷婷 | 高清无码视频在线观看不卡 | 最近中文字幕完整视频高清1最近中文 | 久久嫩操| 亚洲AV五月天 | 欧美变态性爱一区二区三区 | 欧美精品操逼视频 | 3p超刺激珍藏了三年极品人妻 | 97福利|