自動(dòng)排課系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
自動(dòng)排課系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
自動(dòng)排課系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
自動(dòng)排課系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
自動(dòng)排課系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

i目錄摘要.............................................................................................................................I第1章緒論..................................................................................................................11.1系統(tǒng)開發(fā)背景...................................................................................................11.2國(guó)內(nèi)外的研究現(xiàn)狀...........................................................................................11.3系統(tǒng)解決的主要問(wèn)題.......................................................................................31.4本文的主要工作...............................................................................................31.5本文的組織結(jié)構(gòu)...............................................................................................3第2章需求分析..........................................................................................................52.1系統(tǒng)概述...........................................................................................................52.2系統(tǒng)需求問(wèn)題描述...........................................................................................9第3章系統(tǒng)構(gòu)架設(shè)計(jì)................................................................................................143.1構(gòu)架的目標(biāo)和約束.........................................................................................143.2構(gòu)架設(shè)計(jì).........................................................................................................15第4章系統(tǒng)詳細(xì)設(shè)計(jì)................................................................................................204.1系統(tǒng)建模........................................................................................................204.2系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)............................................................................................24第5章計(jì)算機(jī)排課系統(tǒng)的實(shí)現(xiàn)................................................................................355.1系統(tǒng)總體實(shí)現(xiàn).................................................................................................355.2教學(xué)計(jì)劃的關(guān)鍵實(shí)現(xiàn).....................................................................................485.3排課算法的關(guān)鍵實(shí)現(xiàn).....................................................................................51第6章總結(jié)與展望....................................................................................................66參考文獻(xiàn)...............................................................................................................67致謝......................................................................................................................69I摘要隨著高職院校招生人數(shù)的持續(xù)增加,教師規(guī)模的不斷擴(kuò)大,手工排課的缺點(diǎn)就越來(lái)越突出。而采用計(jì)算機(jī)排課,教學(xué)中的信息可以一目了然,對(duì)于優(yōu)化學(xué)生的學(xué)習(xí)進(jìn)程,評(píng)估每位教師對(duì)教學(xué)的貢獻(xiàn),領(lǐng)導(dǎo)合理決策等都具有重要的意義。本論文所研究設(shè)計(jì)的主要內(nèi)容是使用計(jì)算機(jī)實(shí)現(xiàn)課表的編排、基礎(chǔ)數(shù)據(jù)的處理、課表的查詢和報(bào)表的輸出等多種功能,運(yùn)用計(jì)算機(jī)排課代替?zhèn)鹘y(tǒng)的手工排課,提高排課效率,使教務(wù)管理人員的從繁重的排課工作中解脫出來(lái),提高教務(wù)人員的工作效率,同時(shí)也對(duì)教學(xué)管理的規(guī)范化也起到積極的作用。排課問(wèn)題從數(shù)學(xué)上講,是一個(gè)在時(shí)間、教師、學(xué)生和教室四維空間,以教學(xué)計(jì)劃和各種特殊要求為約束條件的組合規(guī)劃問(wèn)題,其實(shí)質(zhì)就是解決各因素之間的沖突。我們分析了國(guó)內(nèi)外對(duì)排課問(wèn)題的研究,根據(jù)高職院校的教學(xué)體制的特點(diǎn),采用了化整為零的思想及優(yōu)先級(jí)算法。該算法通過(guò)劃分等價(jià)類、計(jì)算優(yōu)先級(jí)等方法降低了課程調(diào)度的算法復(fù)雜性,從而可以以較快的速度獲得較為滿意的排課結(jié)果。本文采用Rational統(tǒng)一過(guò)程(RUP)為軟件開發(fā)方法,以統(tǒng)一建模語(yǔ)言(UML)為分析設(shè)計(jì)描述語(yǔ)言,以淄博職業(yè)學(xué)院的排課業(yè)務(wù)為對(duì)象進(jìn)行需求分析,對(duì)計(jì)算機(jī)排課系統(tǒng)進(jìn)行了系統(tǒng)設(shè)計(jì),具體分析設(shè)計(jì)了用戶管理、自動(dòng)排課、課程管理、課表查詢、課表輸出等功能模塊。本文介紹了系統(tǒng)開發(fā)的背景和國(guó)內(nèi)外排課問(wèn)題的發(fā)展現(xiàn)狀,簡(jiǎn)要描述了系統(tǒng)需要解決的主要問(wèn)題和系統(tǒng)的開發(fā)模式,對(duì)系統(tǒng)的需求分析和架構(gòu)設(shè)計(jì)進(jìn)行了詳細(xì)描述,對(duì)系統(tǒng)部分功能的實(shí)現(xiàn)進(jìn)行了介紹,并對(duì)教學(xué)計(jì)劃和排課算法兩個(gè)關(guān)鍵問(wèn)題進(jìn)行描述。關(guān)鍵詞:Rational統(tǒng)一過(guò)程RUP、統(tǒng)一建模語(yǔ)言UML、計(jì)算機(jī)自動(dòng)排課、等價(jià)類、優(yōu)先級(jí)、時(shí)間模式IIABSTRACTThenumbercontinuingforincreasesbywiththefactthattalldutyuniversitiesandcollegesenrollsnewstudents,teacherscaleceaselessnessexpands,theshortcomingarrangingclassbyhandismoreandmoreoutstanding.Butadoptacomputertoarrangeclass,informationinteachingcanbeclearataglance,studyacoursetooptimizingastudent's,thecontributionappraisingeveryplaceteachertoteaching,leadstherationaldecision-makingtowaittohaveimportantsignificance.Variousfunctionssuchastreatment,theschooltimetableinquiryandtheformforreportoutputstudiedthemaincontentdesigningthatistouseacomputertorealizetheschooltimetablearrangement,thebasisdatabythesis,thattheclasswieldingthecomputerrowreplacethetraditionbyhandtoarrangeclass,improvesrowclassefficiency,makescomplyingwithofeducationaladministrationhandlingcrewextricateselfinstrenuousrowclassjob,improveavailabilityofeducationaladministrationpersonnel,alsoatthesametimealsoplayarriveatactiveroletoadministrativestandardizationofteaching.Rowofclassproblemtalksonsecondarymathematics,isthatacombinationtakingteachingprogrammeandvariouspeculiarrequestasconstraintconditionintime,teacher,studentandclassroomfour-dimensionalspace,plansaproblem,whoseessenceistoresolvetheconflictbetweeneveryfactor.Wehaveanalysedthelargeamountofhomeandabroadresearchtorowclassproblemaccordingtoteachingoftalldutyuniversitiesandcollegessystemcharacteristic.Whendesigninganalgorithm,havemanagedalgorithmiccomplexityforreducingacourse,hasadoptthethoughtbreakingupthewholeintopartsandthepreferentialstepalgorithm.Beanalgorithm'sturntobeabletogaincomparativelysatisfiedrowclassresultwithquickerspeedtherebybythefactthatmethodsuchasdividingtheequivalencekind,calculatingpreferentialstephasreducedthealgorithmcomplexitythatthecoursemanagesgreatly.Atthesametime,payattentiontowhoseconflictsolvingalsoverymuchindesigningalgorithmicprocess.Andthethesishassetforththeconsumerneedwhoadoptacomputertoarrangeclass,accordingtogooddutyuniversitiesandcollegesteachingprogramme,theautomationhasbeenorderedfromthecomputereveryschooltermcoursedesignplan,describesthattoteachingprogrammethegeneratedalgorithmhavebeeninprogress.Andhaveintroducedthealgorithmicrowclassdesigndesignwithrealization,thedatabaseandhavecometruedetailedly.Aspectsuchasdividing,reducingalgorithmcomplexityresemblingintimechoiceflexibility,preferentialstepcalculation,equivalencehascarriedoutdetailedanalysis.ApplybeIIIgearedtotheneedsofmarriagepartnertechnologytorowclasssystem,thealgorithmanalysishavingdiscussedthatrowclassrealizesprocessandkey,thecausethatconflictproduces,hasgivenoutaproblemresolvingascheme.Keywords:Automaticcoursescheduling,Algorithm,Priority,Equivalent,Timemode1第1章緒論1.1系統(tǒng)開發(fā)背景2002年7月,經(jīng)山東省政府批準(zhǔn),教育部備案,由原淄博商業(yè)學(xué)校、淄博市化工學(xué)校、淄博市城建中專和淄博市工貿(mào)中專四所學(xué)校合并組建淄博職業(yè)學(xué)院。在學(xué)院的教學(xué)管理工作中,排課是教學(xué)管理中最基本、最重要、同時(shí)也是最復(fù)雜的管理工作之一。目前,我院的排課主要采用手工編排方法。一般是由經(jīng)驗(yàn)豐富的教務(wù)人員在學(xué)期末依據(jù)人才培養(yǎng)方案、教學(xué)計(jì)劃等資料集中時(shí)間、精力進(jìn)行編排,協(xié)調(diào)出現(xiàn)的各種矛盾,在這個(gè)基礎(chǔ)上再由排課專家反復(fù)檢查合理性,修正課表,直至符合要求為止。近幾年,隨著我院招生人數(shù)的持續(xù)增加,教師規(guī)模的不斷擴(kuò)大,手工排課的缺點(diǎn)就越來(lái)越突出。排課實(shí)際過(guò)程中涉及數(shù)十個(gè)院系和部門、數(shù)千教師,上萬(wàn)學(xué)生、教師跨系上課和班級(jí)合班上課等復(fù)雜情況,排出合理的課表需要耗費(fèi)大量的時(shí)間,且排出的課表調(diào)整起來(lái)困難。同時(shí)因?yàn)槿说乃季S的隨意性,排課表時(shí)非常靈活,沒有嚴(yán)格的工作步驟,所以人工排出的課表隨意性大。計(jì)算機(jī)由于具有運(yùn)算速度快、處理能力強(qiáng)等特點(diǎn),在教學(xué)工作中得到了普及應(yīng)用。用計(jì)算機(jī)來(lái)代替勞動(dòng)強(qiáng)度大、工作效率低的手工排課勢(shì)在必行。為了解決手工排課的問(wèn)題,我院決定通過(guò)信息化手段來(lái)提高教務(wù)管理水平,用計(jì)算機(jī)排課來(lái)代替?zhèn)鹘y(tǒng)的手工排課。1.2國(guó)內(nèi)外的研究現(xiàn)狀計(jì)算機(jī)排課,它是把排課問(wèn)題化為計(jì)算領(lǐng)域的有約束的時(shí)空組合優(yōu)化問(wèn)題進(jìn)行求解的。它對(duì)課表上的時(shí)間進(jìn)行了分片和編號(hào)處理,使分成的每個(gè)時(shí)間片和每個(gè)教室空間組合,構(gòu)建了一個(gè)個(gè)大小不等的時(shí)空組合塊,并根據(jù)求解規(guī)則,對(duì)每個(gè)教學(xué)計(jì)劃進(jìn)行時(shí)空組合塊分配,并且分配的組合,必須在目標(biāo)空間中表現(xiàn)出良好的人為滿意度。2國(guó)外研究人員從20世紀(jì)50年代就開始對(duì)課表編排問(wèn)題的數(shù)學(xué)模型、解的存在性以及計(jì)算機(jī)求解算法等問(wèn)題進(jìn)行了研究。1962年Gotlieb提出了課表編排問(wèn)題的數(shù)學(xué)模型,使之成為數(shù)學(xué)家和計(jì)算機(jī)應(yīng)用專家共同研究的課題。由于實(shí)際中遇到種種難題,并未能取得滿意成果。1976年Bondy提出了一個(gè)簡(jiǎn)單的排課表問(wèn)題,將問(wèn)題歸結(jié)為一個(gè)圖的邊染色問(wèn)題,并且對(duì)提出的簡(jiǎn)單排課表問(wèn)題給出了一個(gè)算法。但實(shí)際教學(xué)活動(dòng)中提出的排課表問(wèn)題遠(yuǎn)非如此簡(jiǎn)單,且由于它必須滿足各種復(fù)雜約束條件而使這種算法實(shí)際上是無(wú)能為力的。1976年Even等人證明了課表問(wèn)題屬于NP完全類問(wèn)題,把人們對(duì)計(jì)算機(jī)編排課表的復(fù)雜性的認(rèn)識(shí)提高到了理論的高度。進(jìn)入20世界90年代以后,國(guó)外對(duì)課表問(wèn)題的研究仍然十分活躍,比較有代表性的有印度的Vastapur大學(xué)管理學(xué)院的ArabindaTripathy、加拿大Montreal大學(xué)的JeanAubin和JacquesFerland等。目前,國(guó)外解決課表問(wèn)題的方法主要有:模擬手工排課法、圖論方法、拉格朗日松弛法、二次分配型法等。在國(guó)內(nèi),對(duì)排課問(wèn)題的研究始于20世紀(jì)80年代初期。例如,西南交通大學(xué)在分析高校課表編排所遵循的基本原則和模糊性原則的基礎(chǔ)上,定義了課元之間,關(guān)于教師的相關(guān)關(guān)系和關(guān)于自然班的相關(guān)關(guān)系,提出以課元相關(guān)運(yùn)算和課元的候選時(shí)空片計(jì)算為核心的計(jì)算機(jī)排課算法;延邊大學(xué)根據(jù)高校課程表的制作特點(diǎn),設(shè)計(jì)了計(jì)算機(jī)自動(dòng)排課的數(shù)據(jù)結(jié)構(gòu)與算法;沈陽(yáng)電力高等專科學(xué)校研制了基于Client/Server的開放式智能排課系統(tǒng);山西大學(xué)在總結(jié)排課工作經(jīng)驗(yàn)的基礎(chǔ)上,提出了一種解決問(wèn)題的形式化描述,在這種想法上實(shí)現(xiàn)了基于知識(shí)推理的排課系統(tǒng);大連理工大學(xué)的智能教學(xué)組織管理與課程調(diào)度系統(tǒng),清華大學(xué)的TISER系統(tǒng)等等,所有這些系統(tǒng)都是模擬手工排課過(guò)程,以“班”為單位,運(yùn)用啟發(fā)式函數(shù)來(lái)進(jìn)行編排的。但是這些課表編排系統(tǒng)往往比較依賴于各個(gè)學(xué)校的教學(xué)體制,不宜于進(jìn)行廣泛推廣。高職教育在培養(yǎng)目標(biāo)和辦學(xué)模式、教學(xué)方式等方面都有別于傳統(tǒng)學(xué)科式教育。遵循理論“必需”,“夠用”為度,理論為實(shí)踐服務(wù)的原則,著重培養(yǎng)學(xué)生的實(shí)踐能力,培養(yǎng)面向生產(chǎn)、建設(shè)、管理及服務(wù)一線的高等技術(shù)應(yīng)用型人才。由于培養(yǎng)目標(biāo)和培養(yǎng)方式的特點(diǎn),決定了高職教育的教務(wù)工作面臨許多新的困難,其中在排課、調(diào)課、檢查教學(xué)進(jìn)度、質(zhì)量、溝通教學(xué)雙方信息等常規(guī)性工作中的問(wèn)題尤為突出。如何利用有限的師資力量和有限的教室資源,排出一個(gè)合理的課表,3對(duì)維護(hù)高職院校正常的教學(xué)秩序和提高教學(xué)效果有重要的作用。1.3系統(tǒng)解決的主要問(wèn)題隨著我院辦學(xué)規(guī)模的不斷擴(kuò)大,辦學(xué)層次的不斷提高,課表的編排管理工作也顯得越來(lái)越重要。我院在日常的手工排課過(guò)程中主要存在以下幾個(gè)方面的問(wèn)題:1、需要大量的有經(jīng)驗(yàn)的教務(wù)人員進(jìn)行排課;2、手工排課需要大量的時(shí)間,周期長(zhǎng);3、課表編排完畢后很難進(jìn)行調(diào)整;4、容易出現(xiàn)教師沖突和教室沖突的現(xiàn)象;5、排課沒有嚴(yán)格的步驟,排出的課表隨意性大;6、課表信息共享程度低。1.4本文的主要工作本文通過(guò)對(duì)淄博職業(yè)學(xué)院教務(wù)管理中排課業(yè)務(wù)的需求分析,借鑒RUP模式,從架構(gòu)設(shè)計(jì)開始,完成了學(xué)院計(jì)算機(jī)排課系統(tǒng)的需求分析和系統(tǒng)設(shè)計(jì)。采用VisualBasic為開發(fā)工具,完成了系統(tǒng)功能的開發(fā)。本系統(tǒng)開發(fā)過(guò)程總體上采用RUP模式,由于計(jì)算機(jī)排課系統(tǒng)開發(fā)的生命周期較短,因此,我們?cè)谑褂肦UP進(jìn)行軟件開發(fā)時(shí),對(duì)RUP過(guò)程進(jìn)行了適當(dāng)?shù)牟脺p,保留了RUP的特點(diǎn),即仍然是一個(gè)用例驅(qū)動(dòng)、以架構(gòu)為中心、迭代的開發(fā)過(guò)程。對(duì)裁減后的RUP,我們?nèi)∠嗽瓉?lái)RUP四個(gè)階段的定義,只給出了一些工作流程和一些原則,并且結(jié)合了UML建模機(jī)制,合理的選擇了UML中的各種建模元素。1.5本文的組織結(jié)構(gòu)全文共分為六章。第一章是緒論,主要介紹了系統(tǒng)的開發(fā)背景,以及國(guó)內(nèi)計(jì)算機(jī)排課的研究現(xiàn)狀,說(shuō)明了系統(tǒng)需要解決的主要問(wèn)題和本文的組織結(jié)構(gòu)。第二章是需求分析,主要通過(guò)對(duì)淄博職業(yè)學(xué)院排課業(yè)務(wù)的描述,說(shuō)明了排課4系統(tǒng)的目標(biāo)和解決的主要問(wèn)題,并介紹了系統(tǒng)的開發(fā)模式,對(duì)系統(tǒng)的功能性需求和非功能性需求進(jìn)行了詳細(xì)的描述。第三章系統(tǒng)構(gòu)架技術(shù),主要介紹了系統(tǒng)構(gòu)架設(shè)計(jì)的目標(biāo)和約束,分別對(duì)系統(tǒng)的總體框架、功能構(gòu)架、技術(shù)構(gòu)架和安全構(gòu)架等進(jìn)行詳細(xì)描述。第四章是計(jì)算機(jī)排課系統(tǒng)的詳細(xì)設(shè)計(jì),主要通過(guò)排課管理實(shí)體關(guān)系圖和自動(dòng)排課的序列圖來(lái)介紹了系統(tǒng)的詳細(xì)設(shè)計(jì),并對(duì)數(shù)據(jù)庫(kù)的構(gòu)建進(jìn)行了描述。第五章是計(jì)算機(jī)排課系統(tǒng)的實(shí)現(xiàn)過(guò)程,簡(jiǎn)要介紹了排課系統(tǒng)的幾個(gè)功能模塊的實(shí)現(xiàn)過(guò)程,同時(shí)對(duì)教學(xué)計(jì)劃和排課算法兩個(gè)關(guān)鍵問(wèn)題進(jìn)行描述,說(shuō)明了排課系統(tǒng)設(shè)計(jì)的理論依據(jù)。第六章總結(jié)與展望部分,對(duì)本文進(jìn)行了總結(jié),并對(duì)下一步的工作進(jìn)行了展望。山東大學(xué)碩士畢業(yè)論文5第2章需求分析2.1系統(tǒng)概述淄博職業(yè)學(xué)院管理體系實(shí)行系部的二級(jí)管理體制,在全院有13個(gè)系部和1000多名教師。學(xué)院排課管理系統(tǒng)的應(yīng)用范圍包括教務(wù)處、系部和教師三級(jí)單位。教務(wù)處和系部作為課表的設(shè)計(jì)者和管理者,重點(diǎn)在于對(duì)課程的安排和統(tǒng)計(jì)數(shù)據(jù)的分析;教師作為教學(xué)計(jì)劃的執(zhí)行者,是信息的源頭。在排課管理中,教務(wù)處以教學(xué)計(jì)劃為依據(jù),安排出一學(xué)期各個(gè)班級(jí)所開的課程,教師根據(jù)自己的專業(yè)選擇自己能上的課程,各系部負(fù)責(zé)協(xié)調(diào)安排每門課程的具體上課的教師。總體來(lái)看,淄博職業(yè)學(xué)院排課業(yè)務(wù)流程如圖2-1所示:圖2-1排課業(yè)務(wù)流程圖根據(jù)淄博職業(yè)學(xué)院信息化建設(shè)的總體要求,淄博職業(yè)學(xué)院計(jì)算機(jī)自動(dòng)排課系統(tǒng)的目標(biāo)是:運(yùn)用計(jì)算機(jī)排課代替?zhèn)鹘y(tǒng)的手工排課,提高排課效率,使教務(wù)管理安排全院的課程表6人員的從繁重的排課工作中解脫出來(lái),提高教務(wù)人員的工作效率,加強(qiáng)對(duì)學(xué)院基本信息的管理,同時(shí)實(shí)現(xiàn)教學(xué)管理規(guī)范化的目標(biāo)。本系統(tǒng)的主要內(nèi)容就是使用計(jì)算機(jī)實(shí)現(xiàn)課表的編排、基礎(chǔ)數(shù)據(jù)的處理、課表的查詢和報(bào)表的輸出等多種功能,作為一個(gè)完整的排課系統(tǒng),主要解決以下問(wèn)題:1、基礎(chǔ)數(shù)據(jù)的處理排課過(guò)程中涉及到許多基礎(chǔ)數(shù)據(jù),這些基礎(chǔ)數(shù)據(jù)包括院系、教師、學(xué)生、教室、課程等信息,對(duì)于這些基礎(chǔ)信息要能夠根據(jù)實(shí)際情況靈活進(jìn)行增加、刪除、修改等處理。2、排課處理課程的編排不是任意的,它是一個(gè)時(shí)間、教師、學(xué)生、教室四者的組合規(guī)劃問(wèn)題,為了達(dá)到最好的教學(xué)效果應(yīng)遵循一定的要求。這些要求主要有:(1)要盡量為所排課程安排上該類課程效果最好的時(shí)間;(2)課程在一周上多次時(shí)要有一定的時(shí)間間隔;(3)公共課等涉及面廣、學(xué)時(shí)多的課程應(yīng)優(yōu)先處理;(4)對(duì)同一教師,同一上課對(duì)象應(yīng)盡量選擇相對(duì)固定的幾個(gè)教室;(5)對(duì)于教師、學(xué)生、課程等提出特殊要求的情況,要根據(jù)具體情況予以處理。另外,對(duì)于計(jì)算機(jī)初排的結(jié)果還應(yīng)可以通過(guò)人工交互進(jìn)行少量的修改等。3、排課結(jié)果的處理計(jì)算機(jī)編排完課程后,對(duì)這個(gè)結(jié)果進(jìn)行各種條件的查詢,并可以根據(jù)情況輸出各種形式的表格,以便于教務(wù)人員進(jìn)行處理。例如:可查詢某班的課程安排、某位教師的課程安排、以及某個(gè)教室的使用情況。4、充分利用網(wǎng)絡(luò)優(yōu)勢(shì)充分利用網(wǎng)絡(luò)優(yōu)勢(shì),實(shí)行計(jì)算機(jī)分布式排課。計(jì)算機(jī)排課需要計(jì)算機(jī)在全校范田內(nèi)對(duì)各種時(shí)間是否發(fā)生沖突進(jìn)行檢查,因此早期的計(jì)算機(jī)排課系統(tǒng)大多實(shí)行集中式排課,一般由教務(wù)處負(fù)責(zé)完成。但目前各校均在擴(kuò)招,從而造成學(xué)生多、班級(jí)多,排課時(shí)所需要輸入的基礎(chǔ)數(shù)據(jù)多排課任務(wù)都由一個(gè)部門來(lái)完成是很不現(xiàn)實(shí)的。實(shí)行計(jì)算機(jī)排課的唯一出路就是將排課任務(wù)分解,化整為零,實(shí)行分布式計(jì)算機(jī)排課。現(xiàn)在各高校大多建立了校園網(wǎng)絡(luò),這使得實(shí)行分布式計(jì)算機(jī)排課成為可能。課程、教師、學(xué)生班級(jí)、教室等基本信息既可臨時(shí)錄入,又可從其它教山東大學(xué)碩士畢業(yè)論文7學(xué)管理系統(tǒng)或校園網(wǎng)中獲取,以減少數(shù)據(jù)錄入工作量。RUP是一個(gè)將用戶需求轉(zhuǎn)化為軟件系統(tǒng)所需要的活動(dòng)的集合,即軟件開發(fā)過(guò)程。RUP不是一個(gè)簡(jiǎn)單的過(guò)程,而是一個(gè)通用的過(guò)程框架,可用于各種不同類型的軟件系統(tǒng)、各種不同的應(yīng)用領(lǐng)域、各種不同類型的組織、各種不同的功能級(jí)別以及各種不同的項(xiàng)目規(guī)模。RUP可以用二維坐標(biāo)來(lái)描述。橫軸通過(guò)時(shí)間組織,是過(guò)程展開的生命周期特征,體現(xiàn)開發(fā)過(guò)程的動(dòng)態(tài)結(jié)構(gòu),用來(lái)描述它的術(shù)語(yǔ)主要包括周期、階段、迭代和里程碑;縱軸以內(nèi)容來(lái)組織為自然的邏輯活動(dòng),體現(xiàn)開發(fā)過(guò)程的靜態(tài)結(jié)構(gòu),用來(lái)描述它的術(shù)語(yǔ)主要包括活動(dòng)、產(chǎn)物、工作者和工作流,如圖2-2所示。圖2-2RUP二維開發(fā)模型RUP是一個(gè)以用例為驅(qū)動(dòng)、以架構(gòu)為中心、迭代和增量式開發(fā)過(guò)程。RUP中的軟件生命周期在時(shí)間上被分解為四個(gè)順序的階段,分別是:初始階段(Inception、細(xì)化階段(Elaboration、構(gòu)造階段(Construction和交付階段(Transition。本系統(tǒng)開發(fā)過(guò)程總體上采用RUP模式,由于計(jì)算機(jī)排課系統(tǒng)開發(fā)的生命周期較短,因此,我們?cè)谑褂肦UP進(jìn)行軟件開發(fā)時(shí),對(duì)RUP過(guò)程進(jìn)行了適當(dāng)?shù)牟脺p,保留了RUP的特點(diǎn),即仍然是一個(gè)用例驅(qū)動(dòng)、以架構(gòu)為中心、迭代的開發(fā)過(guò)程。對(duì)裁減后的RUP,我們?nèi)∠嗽瓉?lái)RUP四個(gè)階段的定義,只給出了一些工作流程8和一些原則,并且結(jié)合了UML建模機(jī)制,合理的選擇了UML中的各種建模元素。裁減后RUP流程是一個(gè)不斷迭代的開發(fā)流程,每一個(gè)迭代過(guò)程都需要經(jīng)過(guò)下列步驟:第一步:找出系統(tǒng)的功能需求和非功能性需求,功能需求使用用例表示,非功能性需求,可以使用規(guī)定格式的文檔表示;項(xiàng)目開始時(shí),找出一些主要的關(guān)鍵的用例即可,其他次要的用例可在以后的迭代中補(bǔ)充,對(duì)這些主要用例的描述應(yīng)該保持盡量簡(jiǎn)單,對(duì)用例的描述可以使用文檔來(lái)表示,也可以使用UML中的建模元素來(lái)表示,本文在模型中,選擇了UML中的活動(dòng)圖來(lái)表示。對(duì)這些用例要標(biāo)明其重要程度,對(duì)那些影響系統(tǒng)架構(gòu)的用例要標(biāo)以很高的重要程度。第二步:為這些用例建立簡(jiǎn)單的系統(tǒng)初始模型(可多個(gè),可以使用用例圖來(lái)表示。從系統(tǒng)整個(gè)初始模型可以看出一個(gè)用例是否得當(dāng);也可以根據(jù)初始模型來(lái)確定團(tuán)隊(duì)的開發(fā)進(jìn)度;并且根據(jù)系統(tǒng)原型能夠得到系統(tǒng)潛在的一些系統(tǒng)架構(gòu);能夠這些系統(tǒng)架構(gòu)中考慮選擇一個(gè)最恰當(dāng)?shù)南到y(tǒng)架構(gòu)。第三步:找出待開發(fā)系統(tǒng)領(lǐng)域的類,第一次可以找主要的類;并定義個(gè)各類的主要職責(zé)和各類之間的關(guān)系,創(chuàng)建UML中的類圖來(lái)表示;將類分為邊界類、控制類和實(shí)體類這三種類,并為實(shí)體類之間的關(guān)系創(chuàng)建一個(gè)類圖,以便為以后的數(shù)據(jù)庫(kù)設(shè)計(jì)打下基礎(chǔ)。第四步:編寫整個(gè)項(xiàng)目全部迭代計(jì)劃(只此一次,每個(gè)迭代周期為1周~2周,迭代周期必應(yīng)該過(guò)長(zhǎng)。選擇要進(jìn)行迭代開發(fā)的用例,這些用例的開發(fā)周期不能超過(guò)迭代周期。迭代應(yīng)該注意:迭代計(jì)劃內(nèi)容應(yīng)該包括迭代目標(biāo)、人員安排、迭代時(shí)間表、存在的風(fēng)險(xiǎn)、可交付的迭代結(jié)果;每個(gè)迭代期間按照需求,分析,設(shè)計(jì),實(shí)現(xiàn)和測(cè)試來(lái)進(jìn)行管理。第五步:將要開發(fā)用例所應(yīng)有的功能和類結(jié)合起來(lái),即用類的對(duì)象來(lái)表示用力所具有的功能;創(chuàng)建UML中的序列圖或者協(xié)作圖來(lái)表示;通過(guò)討論驗(yàn)證修改序列圖/協(xié)作圖。第六步:如果某個(gè)類的對(duì)象,具有一些非常重要的狀態(tài),則為該類創(chuàng)建狀態(tài)圖,狀態(tài)圖中的事件,動(dòng)作和行為最后會(huì)轉(zhuǎn)化成相應(yīng)類的操作。第七步:在設(shè)計(jì)的層次上加強(qiáng)上面兩個(gè)步驟中確定的序列圖/協(xié)作圖和狀態(tài)圖,討論是否還有別的操作和類所需訪問(wèn)的數(shù)據(jù),定義實(shí)體類的屬性,并開始進(jìn)行數(shù)據(jù)庫(kù)的設(shè)計(jì)。山東大學(xué)碩士畢業(yè)論文9第八步:根據(jù)上面的工作,對(duì)類圖進(jìn)行細(xì)化與更新,在實(shí)體類不斷精化的基礎(chǔ)上,完成數(shù)據(jù)庫(kù)的設(shè)計(jì)。第九步:對(duì)當(dāng)前迭代的用例進(jìn)行編碼。根據(jù)所確定的UML模型,將設(shè)計(jì)階段所確定的類圖和定義的類,轉(zhuǎn)換成實(shí)際開發(fā)工具中所支持的類,并編寫代碼完成各個(gè)類的函數(shù)實(shí)現(xiàn),在編寫代碼的過(guò)程中,可以對(duì)設(shè)計(jì)模型中的缺陷與不足進(jìn)行相應(yīng)的修改;創(chuàng)建系統(tǒng)的實(shí)現(xiàn)模型,可以使用組件圖和配之圖來(lái)表示。如果有條件,在編碼的時(shí)候,進(jìn)行成對(duì)編程,提高代碼的質(zhì)量。第十步:對(duì)當(dāng)前的迭代進(jìn)行測(cè)試,看系統(tǒng)是否完成了用例所描述的所有功能。2.2系統(tǒng)需求問(wèn)題描述按照RUP的要求,系統(tǒng)的功能性需求描述工具主要是用例(UseCase),即將系統(tǒng)的功能性需求分解到每一個(gè)系統(tǒng)用例。RUP模式的最大優(yōu)點(diǎn)是按照角色(Actor)識(shí)別用例(UseCase)的方法,該方法可以較為直觀地建立起系統(tǒng)的架構(gòu),通過(guò)反復(fù)識(shí)別,避免需求中的漏項(xiàng)。為了清晰地描述系統(tǒng)用例的層次結(jié)構(gòu),可以采用將系統(tǒng)用例分為不同的包,每一個(gè)包表示一組相關(guān)的系統(tǒng)用例。為了清晰起見,本系統(tǒng)引入了包圖來(lái)將不同的功能用例進(jìn)行分類,每個(gè)包圖作一個(gè)子系統(tǒng),如圖2-3所示。從功能上看,淄博職業(yè)學(xué)院排課系統(tǒng)可以分為五個(gè)子系統(tǒng):用戶管理、數(shù)據(jù)錄入、自動(dòng)排課、查詢課表、報(bào)表輸出。10用戶管理自動(dòng)排課基礎(chǔ)數(shù)據(jù)錄入課表查詢課表輸出圖2-3系統(tǒng)功能包圖在每個(gè)包中,通過(guò)用例圖來(lái)描述系統(tǒng)的參與者(Actor)和系統(tǒng)的用例(UseCase),每一個(gè)用例通過(guò)用例活動(dòng)圖進(jìn)行詳細(xì)的描述。在項(xiàng)目開始階段,需求不是非常全面,但是,其需求的中心內(nèi)容仍然是上面幾點(diǎn),在通過(guò)對(duì)需求的分析,我們確立了如下幾個(gè)非常重要的用例:用戶管理、基礎(chǔ)數(shù)據(jù)錄入、自動(dòng)排課、課表調(diào)整、課表輸出等。根據(jù)這些主要用例,在項(xiàng)目的初始階段,為排課管理系統(tǒng)確定了初始用例模型,描述了排課管理系統(tǒng)應(yīng)該完成的功能,即從用戶的角度看,系統(tǒng)應(yīng)該具有哪些功能。初始用例模型如圖2-4所示。圖2-4排課管理初始用例山東大學(xué)碩士畢業(yè)論文11上面所列出的用例模型,基本上描述了排課系統(tǒng)的主要的功能,將這些基本功能實(shí)現(xiàn),就形成了一個(gè)簡(jiǎn)單的排課管理系統(tǒng)。在項(xiàng)目開發(fā)的第一次迭代開發(fā)中,就是以上面確定的系統(tǒng)原型為基礎(chǔ)的,這也確定了系統(tǒng)排課管理系統(tǒng)的初始架構(gòu)。在排課管理系統(tǒng)以后的迭代開發(fā)中,都是在該模型的基礎(chǔ)上進(jìn)行擴(kuò)展的。通過(guò)幾次迭代,在新的需求的增加下和對(duì)系統(tǒng)的進(jìn)一步理解,逐步完善了排課管理系統(tǒng)的用例模型,下面給出的用例圖(圖2-5)是當(dāng)前排課系統(tǒng)的最新的用例模型。教師圖2-5排課管理用例圖這里給出的用例模型是當(dāng)前迭代中進(jìn)行的,并不表示該模型是最優(yōu)最全的,模型會(huì)隨著迭代開發(fā)的不斷深入而不斷優(yōu)化和完善。在對(duì)排課系統(tǒng)的用例描述中,我們通過(guò)UML中的活動(dòng)圖來(lái)表示。例如:為了說(shuō)明如何使用活動(dòng)圖來(lái)表示一個(gè)用例的行為,這里給出“自動(dòng)排課”用例的活動(dòng)圖(如圖2-6所示)。自動(dòng)排課活動(dòng)圖詳細(xì)地描述了自動(dòng)排課用例在實(shí)際的執(zhí)行的時(shí)候,它應(yīng)該有哪些步驟,包括了它成功之行得到用戶期望的結(jié)果和不成功執(zhí)行所走的步驟。在使用活動(dòng)圖對(duì)自動(dòng)排課用例進(jìn)行描述的步驟中,有些活動(dòng)可能需要優(yōu)化,包括增加一些活動(dòng)或者合并一些步驟,這些都會(huì)隨著迭代開發(fā)的不斷進(jìn)行而進(jìn)行優(yōu)化。當(dāng)然,對(duì)用例的描述也可以使用用例說(shuō)明文檔來(lái)表示。12非功能性需求規(guī)定了系統(tǒng)必須滿足的服務(wù)水平、系統(tǒng)非運(yùn)行時(shí)間的屬性以及系統(tǒng)必須遵守的約束。非功能性需求雖然不直接影響系統(tǒng)功能,但在用戶和系統(tǒng)支持人員對(duì)該信息系統(tǒng)的認(rèn)可方面具有很大的影響。非功能性需求主要包括系統(tǒng)的約束與假設(shè)條件,系統(tǒng)的可用性、可靠性、性能、擴(kuò)展性、可支持性、系統(tǒng)接口。在本系統(tǒng)中,為了保證非功能性需求的準(zhǔn)確性和可測(cè)試性,主要采用了量化的指標(biāo)要求來(lái)描述。例如對(duì)于系統(tǒng)的可用性要求,一般只需要采用非量化的指標(biāo)描述即可,例如可以描述為“要求系統(tǒng)采用簡(jiǎn)潔、友好的人機(jī)界面使用戶能夠方便、快捷地應(yīng)用系統(tǒng)進(jìn)行業(yè)務(wù)處理;同時(shí)提供豐富、便捷的輔助功能,提高業(yè)務(wù)處理效率”。由于淄博職業(yè)學(xué)院使用系統(tǒng)的人員信息化水平差別很大,必須保證對(duì)業(yè)務(wù)比較熟悉的用戶經(jīng)過(guò)短時(shí)間培訓(xùn)后即可熟練地應(yīng)用本系統(tǒng),因此在本系統(tǒng)中對(duì)于可用性的要求則采用了用戶培訓(xùn)時(shí)間這樣一個(gè)量化的指標(biāo)來(lái)規(guī)定,即只有山東大學(xué)碩士畢業(yè)論文13在規(guī)定的培訓(xùn)時(shí)間內(nèi)相應(yīng)的用戶可以掌握系統(tǒng)的操作,系統(tǒng)的可用性才能滿足要求。具體的系統(tǒng)可用性要求如表2-1所示。系統(tǒng)的可靠性包括系統(tǒng)的故障率、可恢復(fù)性和可維護(hù)性,具體形成如表2-2所示的技術(shù)指標(biāo)要求。山東大學(xué)碩士畢業(yè)論文14第3章系統(tǒng)構(gòu)架設(shè)計(jì)淄博職業(yè)學(xué)院排課系統(tǒng)是一個(gè)用戶管理、基礎(chǔ)信息錄入、自動(dòng)排課、課表查詢等業(yè)務(wù)的管理信息系統(tǒng)。系統(tǒng)架構(gòu)必須從各個(gè)方面滿足實(shí)際需求,這是架構(gòu)的設(shè)計(jì)目標(biāo)。同時(shí)在設(shè)計(jì)與開發(fā)的過(guò)程中嚴(yán)格遵守架構(gòu)的特殊約束,從而保證可以實(shí)現(xiàn)架構(gòu)設(shè)計(jì)的目標(biāo)。3.1構(gòu)架的目標(biāo)和約束系統(tǒng)架構(gòu)設(shè)計(jì)的目標(biāo)包括安全目標(biāo)、保密目標(biāo)、最大化的重用、簡(jiǎn)潔、靈活等方面的規(guī)定。1、安全目標(biāo)。架構(gòu)從管理安全、系統(tǒng)安全、數(shù)據(jù)安全三個(gè)方面來(lái)具體考慮和保障系統(tǒng)安全。管理安全是指建立相應(yīng)的安全管理制度,最終決定是否安全是人來(lái)決定的。系統(tǒng)安全從網(wǎng)絡(luò)、硬件、系統(tǒng)軟件、應(yīng)用軟件方面考慮如何加強(qiáng)整個(gè)系統(tǒng)的安全性。數(shù)據(jù)安全是指企業(yè)數(shù)據(jù)的安全,包括備份策略、加密等。2、保密目標(biāo)。對(duì)于校園內(nèi)重要的數(shù)據(jù)實(shí)行單獨(dú)保存,對(duì)排課系統(tǒng)設(shè)計(jì)安全級(jí)別,對(duì)于需要在校園網(wǎng)上傳輸?shù)闹匾獢?shù)據(jù),需要加密處理,3、最大化的重用。重用是減少冗余的一個(gè)有效的途徑,包括組件級(jí)別的重用。組件的實(shí)現(xiàn)通常會(huì)應(yīng)用一種或幾種設(shè)計(jì)模式,這些模式與組件的結(jié)合使用大大提升了架構(gòu)的質(zhì)量。4、簡(jiǎn)潔。把復(fù)雜問(wèn)題簡(jiǎn)單化是架構(gòu)設(shè)計(jì)的一個(gè)重要的目標(biāo),明確類以及類之間的職責(zé)關(guān)系。5、可靠性。根據(jù)非功能需求對(duì)可靠性的要求來(lái)設(shè)計(jì),提高系統(tǒng)的可靠性,增強(qiáng)容錯(cuò)處理能力。6、可擴(kuò)展性。系統(tǒng)在設(shè)計(jì)時(shí),充分考慮未來(lái)高職院校排課業(yè)務(wù)的變化、組織架構(gòu)的變化、業(yè)務(wù)流程的變化等,將因業(yè)務(wù)或者需求的變更帶來(lái)的系統(tǒng)升級(jí)和改造工作,降低到最小的開發(fā)量。任何一個(gè)系統(tǒng)都不是可以任意設(shè)計(jì)的,都有一定的約束和限制條件。本系統(tǒng)為了實(shí)現(xiàn)架構(gòu)的目標(biāo),遵循RUP軟件開發(fā)過(guò)程,實(shí)行全程的質(zhì)量控制,因此在15設(shè)計(jì)策略方面要采用面向?qū)ο蟮姆治龊驮O(shè)計(jì)方法,RUP作為軟件開發(fā)過(guò)程,UML作為建模語(yǔ)言,在技術(shù)規(guī)范方面要建立必要的設(shè)計(jì)和開發(fā)規(guī)范。3.2構(gòu)架設(shè)計(jì)排課系統(tǒng)需要大量的數(shù)據(jù),包括教師信息、班級(jí)信息、科目信息、設(shè)備信息等,目前我院的這些基礎(chǔ)信息都分在各部門的微機(jī)或部門局域網(wǎng)的服務(wù)器上,在校園網(wǎng)建立起來(lái)以后,為了實(shí)現(xiàn)基礎(chǔ)信息的全院共享,必須將數(shù)據(jù)集中存放,統(tǒng)一管理。因此在系統(tǒng)設(shè)計(jì)時(shí)要達(dá)到如下要求:●系統(tǒng)軟件運(yùn)行應(yīng)該速度快、穩(wěn)定、可靠,同時(shí)還有具有一定的安全性;●系統(tǒng)軟件操作上應(yīng)簡(jiǎn)單、方便,界面簡(jiǎn)潔明了、美觀;●排課活動(dòng)包括很多具有前后時(shí)間相關(guān)性,相互制約的步驟,各步驟之間層次分明,功能劃分清晰,又相對(duì)獨(dú)立;●系統(tǒng)軟件應(yīng)能支持多用戶訪問(wèn)、數(shù)據(jù)共享;●系統(tǒng)軟件在結(jié)構(gòu)上應(yīng)具有很好的可擴(kuò)展性,便于將來(lái)的功能擴(kuò)展和維護(hù);●數(shù)據(jù)計(jì)算準(zhǔn)確無(wú)誤,精確度符合業(yè)務(wù)的需要。●系統(tǒng)提供一些靈活、通用的、便于維護(hù)的工具。根據(jù)系統(tǒng)設(shè)計(jì)的具體要求,我們構(gòu)建了系統(tǒng)的總體框架如圖3-1所示。排課系統(tǒng)是由五個(gè)子系統(tǒng)和一個(gè)系統(tǒng)運(yùn)行平臺(tái)組成。其中系統(tǒng)運(yùn)行平臺(tái)提供其他各個(gè)子系統(tǒng)的一個(gè)運(yùn)行平臺(tái)與框架,是系統(tǒng)的主窗體,其他各個(gè)子系統(tǒng)最終都設(shè)計(jì)成一個(gè)DLL,每個(gè)子系統(tǒng)的運(yùn)行都必須在從系統(tǒng)運(yùn)行上進(jìn)行動(dòng)態(tài)加載。排課系統(tǒng)的這種結(jié)構(gòu),具有如下優(yōu)點(diǎn):●為以后子系統(tǒng)的增加和整個(gè)系統(tǒng)的擴(kuò)展提供了極大的便利,要增加的子系統(tǒng)只要開發(fā)為一個(gè)DLL,然后從系統(tǒng)運(yùn)行平臺(tái)上加載即可實(shí)現(xiàn)排課系統(tǒng)的擴(kuò)展。●系統(tǒng)運(yùn)行平臺(tái)與任何一個(gè)子系統(tǒng)的組合可以方便構(gòu)成一個(gè)系統(tǒng)。系統(tǒng)運(yùn)行平臺(tái)主要提供用戶登錄、與數(shù)據(jù)庫(kù)服務(wù)器的連接、子系統(tǒng)的更新以及提供其他各個(gè)子系統(tǒng)的運(yùn)行環(huán)境。系統(tǒng)運(yùn)行平臺(tái)是一個(gè)可執(zhí)行程序,任何一個(gè)子系統(tǒng)都不能跨越它進(jìn)行啟動(dòng)操作。16圖3-1排課系統(tǒng)總體框架在對(duì)當(dāng)前高職院校需求的充分分析以及對(duì)未來(lái)可能需求的分析基礎(chǔ)之上,確立了系統(tǒng)功能構(gòu)架(如圖3-2)。本系統(tǒng)包括基礎(chǔ)信息錄入子系統(tǒng)、自動(dòng)排課子系統(tǒng)、查詢子系統(tǒng)、報(bào)表輸出子系統(tǒng)和用戶管理子系統(tǒng),各個(gè)子系統(tǒng)的主要功能為:圖3-2排課系統(tǒng)的功能構(gòu)架171、基礎(chǔ)信息錄入子系統(tǒng)實(shí)現(xiàn)基礎(chǔ)數(shù)據(jù)的增加、修改、刪除功能以及對(duì)庫(kù)中所有數(shù)據(jù)進(jìn)行瀏覽的功能。這些基礎(chǔ)數(shù)據(jù)包括教學(xué)區(qū)、教室、院系、專業(yè)、教研室、班級(jí)、教師、課程等基本信息,另外還包括編排課表所需要的參數(shù)信息、教學(xué)信息等附加信息。為了保證數(shù)據(jù)庫(kù)的安全,系統(tǒng)中只為系統(tǒng)管理員和操作人員賦予了操作權(quán)限,而普通用戶則沒有操作該模塊的權(quán)限。2、自動(dòng)排課子系統(tǒng)根據(jù)錄入的基礎(chǔ)信息進(jìn)行有效科學(xué)地綜合統(tǒng)計(jì),分析各項(xiàng)數(shù)據(jù),然后按照所設(shè)計(jì)的排課算法編排出科學(xué)合理的課程表。3、查詢子系統(tǒng)完成用戶提出的各種查詢。包括按班級(jí)、教師、教室、課程、時(shí)間、總教室等條件進(jìn)行的查詢。4、報(bào)表輸出子系統(tǒng)利用排課算法編排出的結(jié)果,重新組織數(shù)據(jù),輸出用戶所需的各種形式的、復(fù)雜的報(bào)表。包括單班課表、總課表、單教室占用表、總教室占用表、教師上課信息、教學(xué)任務(wù)統(tǒng)計(jì)表以及開課目錄表等。5、用戶管理子系統(tǒng)實(shí)現(xiàn)對(duì)用戶及其權(quán)限的管理。為了確保數(shù)據(jù)庫(kù)的安全,為不同的用戶提供不同的操作權(quán)限。權(quán)限不同的用戶對(duì)數(shù)據(jù)庫(kù)的操作范圍不同,對(duì)于一些權(quán)限低的用戶,甚至不給予處理數(shù)據(jù)庫(kù)的權(quán)力。本系統(tǒng)采用技術(shù)比較成熟的C/S技術(shù)構(gòu)架,該模式功能強(qiáng)大,開發(fā)工作量小,對(duì)服務(wù)器要求低。排課系統(tǒng)需要大量的數(shù)據(jù),各種很多原始數(shù)據(jù)分布在校園網(wǎng)上不同系部、不同部門的計(jì)算機(jī)或服務(wù)器上,數(shù)據(jù)處理起來(lái)比較復(fù)雜,為了排課系統(tǒng)面向多層次的用戶服務(wù),采用基于C/S結(jié)構(gòu)的分布式數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)比較合適。這種結(jié)構(gòu)的數(shù)據(jù)處理并不像通常在基于小型機(jī)或基于主機(jī)的計(jì)算機(jī)系統(tǒng)(終端方式中那樣在單個(gè)的計(jì)算機(jī)上發(fā)生,而是把程序的不同部分在多臺(tái)計(jì)算機(jī)上同時(shí)運(yùn)行。淄博職業(yè)學(xué)院計(jì)算機(jī)自動(dòng)排課系統(tǒng)是一個(gè)基于校園網(wǎng)絡(luò)和數(shù)據(jù)庫(kù)應(yīng)用18的系統(tǒng),該系統(tǒng)有3個(gè)節(jié)點(diǎn),分別是系統(tǒng)服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器和客戶端PC。系統(tǒng)服務(wù)器為系統(tǒng)提供了大部分的服務(wù),如錄入基礎(chǔ)信息、自動(dòng)排課、生成課表等;數(shù)據(jù)庫(kù)服務(wù)器保存系統(tǒng)中所有持久數(shù)據(jù);客戶端PC可以通過(guò)校園網(wǎng)進(jìn)行訪問(wèn)排課系統(tǒng)生成的排課信息。三者之間通過(guò)校園網(wǎng)相連。系統(tǒng)配置圖如3-3所示。客戶端PC客戶端PC圖3-3系統(tǒng)配置圖信息系統(tǒng)的安全包括多個(gè)方面,例如信息的存儲(chǔ)、傳輸、訪問(wèn)等都屬于信息系統(tǒng)安全的范疇。從理論上講,系統(tǒng)安全僅指相對(duì)安全,并非絕對(duì)的安全,因此,任何系統(tǒng)都只能是在成本、效益等約束條件下進(jìn)行相對(duì)安全設(shè)計(jì)。由于信息系統(tǒng)是分層次的,因此系統(tǒng)的安全也要分層設(shè)計(jì)。本系統(tǒng)采用的安全手段如表3-1所示。19物理層主要是對(duì)系統(tǒng)的硬件進(jìn)行安全保護(hù)。如系統(tǒng)所處的物理環(huán)境要防雷擊、防灰塵等。同時(shí)也要對(duì)傳輸介質(zhì)介質(zhì)進(jìn)行相應(yīng)的保護(hù),如防盜。系統(tǒng)層主要是針對(duì)操作系統(tǒng)的保護(hù)。如給系統(tǒng)打補(bǔ)丁,定期升級(jí),對(duì)重要的信息進(jìn)行加密處理,實(shí)現(xiàn)信息在數(shù)據(jù)鏈路上的安全。在網(wǎng)絡(luò)層采用防火墻設(shè)備進(jìn)行安全防范。防火墻在總公司內(nèi)網(wǎng)與外網(wǎng)間執(zhí)行一定的安全策略。一個(gè)有效的防火墻應(yīng)該能夠確保:所有從因特網(wǎng)流入或流向因特網(wǎng)的信息都將經(jīng)過(guò)防火墻;所有流經(jīng)防火墻的信息都應(yīng)接受檢查。在應(yīng)用層主要進(jìn)行入侵檢測(cè)和病毒防護(hù)的安全防范。入侵檢測(cè)系統(tǒng)對(duì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行特征分析,實(shí)時(shí)捕獲各種攻擊行為,防病毒系統(tǒng)是通過(guò)部署防病毒軟件來(lái)實(shí)現(xiàn)。防病毒主要的工作就是提高員工的警惕性,每次開機(jī)都更新病毒庫(kù)。管理層主要通過(guò)制定相應(yīng)的信息安全管理規(guī)章制度進(jìn)行保護(hù)。如定期對(duì)教務(wù)人員進(jìn)行培訓(xùn),明確責(zé)任等。同時(shí)也要注意對(duì)網(wǎng)路資源的保護(hù)。20第4章系統(tǒng)詳細(xì)設(shè)計(jì)4.1系統(tǒng)建模模型的創(chuàng)建在整個(gè)項(xiàng)目的開發(fā)中是至關(guān)重要的,因?yàn)椋@是一個(gè)將用例模型轉(zhuǎn)化成系統(tǒng)中應(yīng)該存在的類的階段,是將系統(tǒng)功能用類如何實(shí)現(xiàn)的階段。整個(gè)項(xiàng)目開發(fā)的后面工作,都是在分析階段所完成的分析模型的基礎(chǔ)上進(jìn)行的,所以,在項(xiàng)目的開發(fā)過(guò)程中,要確保該階段工作的質(zhì)量,嚴(yán)格完成該階段應(yīng)該完成的各種UML圖。在這個(gè)階段,我們找出了排課管理系統(tǒng)中涉及的主要的類,并且結(jié)合用例模型中的用例,將各個(gè)類與用例有機(jī)結(jié)合起來(lái)。對(duì)系統(tǒng)中的類,建立相應(yīng)的類圖來(lái)表示各個(gè)類之間的關(guān)系。而如何讓用例與這些類進(jìn)行結(jié)合,則通過(guò)建立相應(yīng)的序列圖/協(xié)作圖來(lái)進(jìn)行建模。分析模型的建立,并不是一個(gè)或幾個(gè)類圖所能實(shí)現(xiàn)了,為了對(duì)一個(gè)系統(tǒng)進(jìn)行充分建模,對(duì)于不同的項(xiàng)目可以選用不同的建模元素和建模機(jī)制。在對(duì)排課系統(tǒng)的建模中,選擇了類圖和序列圖來(lái)構(gòu)建其對(duì)應(yīng)的分析模型。在排課管理系統(tǒng)的分析模型中,通過(guò)對(duì)排課系統(tǒng)的分析和幾次迭代,找出了排課管理系統(tǒng)中涉及的類,并給出了如下的類圖和各個(gè)類之間的關(guān)系(如圖4-1)。在這個(gè)類圖中,我們選擇了Rose提供的三種類的表示,即邊界類、控制類、和實(shí)體類,并表示了各個(gè)類之間的關(guān)系。邊界類是與用戶交互的界面類的抽象;控制類是系統(tǒng)中的一些計(jì)算、控制類的抽象;實(shí)體類是存儲(chǔ)數(shù)據(jù)的類的抽象。為了圖的整潔,在上圖中,沒有給出類的關(guān)鍵方法和屬性的定義。21圖4-1排課管理類關(guān)系圖上面類圖中,將排課管理中的類分成三種,并構(gòu)建了類圖,這種表示方法能夠清楚地表示各個(gè)類在系統(tǒng)中所處的位置,更加直觀。當(dāng)然,僅僅給出了三種類之間的關(guān)系,這樣表示還是不夠的。實(shí)體類之間也是有一定的關(guān)系的,對(duì)此,我們使用了另一個(gè)類圖來(lái)表示各個(gè)實(shí)體類之間的關(guān)系,如圖4-2所示。22圖4-2排課管理實(shí)體類關(guān)系類圖在這之前,所做的所有模型都是屬于UML的靜態(tài)建模機(jī)制中的;而現(xiàn)在所要用到的建模元素是屬于UML的動(dòng)態(tài)建模機(jī)制的。我們用UML中的序列圖/協(xié)作圖來(lái)表示在系統(tǒng)運(yùn)行時(shí),完成該用例功能系統(tǒng)的內(nèi)部協(xié)作關(guān)系。序列圖和協(xié)作圖是等價(jià)的,在Rose中,可以將序列圖自動(dòng)轉(zhuǎn)換成等價(jià)的協(xié)作圖,協(xié)作圖也可以自動(dòng)轉(zhuǎn)換成相應(yīng)的協(xié)作圖。到底采用哪種建模元素,完全取決于項(xiàng)目的實(shí)際需要,而且,這兩種圖只需構(gòu)造其中的一種就可以了。在一般的實(shí)時(shí)系統(tǒng)中,一般采用序列圖,在序列圖中,能夠清楚地看到各個(gè)對(duì)象之間交互時(shí)的時(shí)間與順序關(guān)系。而在其他的不強(qiáng)調(diào)時(shí)間與順序的情況下,使用協(xié)作圖來(lái)表示對(duì)象間的關(guān)系。在對(duì)排課管理系統(tǒng)的動(dòng)態(tài)建模中,因?yàn)榕耪n系統(tǒng)比較強(qiáng)調(diào)時(shí)間安排問(wèn)題,所以我們選擇了序列圖來(lái)表示相應(yīng)的用例的在系統(tǒng)運(yùn)行時(shí)的動(dòng)態(tài)執(zhí)行情況。如下面給出的自動(dòng)排課用例的序列圖(圖4-3)。23圖4-3自動(dòng)排課序列圖我們?cè)趧?chuàng)建用例的序列圖的過(guò)程中,注意各個(gè)類的初級(jí)設(shè)計(jì),即發(fā)現(xiàn)各個(gè)類的方法和屬性,而且,一般在此階段發(fā)現(xiàn)的類的屬性和設(shè)計(jì)都是非常重要和關(guān)鍵的,當(dāng)然對(duì)于這個(gè)階段發(fā)現(xiàn)的方法和屬性不需要進(jìn)行嚴(yán)格的定義,對(duì)方法和屬性的嚴(yán)格定義可以放在設(shè)計(jì)階段去完成;但是,對(duì)于每一個(gè)發(fā)現(xiàn)的方法和屬性應(yīng)該記錄下來(lái),可以使用文字進(jìn)行詳細(xì)的描述。對(duì)于方法,如果能夠確定其參數(shù),返回值,也必須進(jìn)行描述,或者將其定義確定下來(lái)。在創(chuàng)建和驗(yàn)證UML的過(guò)程中,要做如下工作:1、對(duì)于某個(gè)類,如果已經(jīng)存在方法和屬性,要詳細(xì)描述,能夠準(zhǔn)確定義的,則需要進(jìn)行準(zhǔn)確定義。2、對(duì)于某各類,如果發(fā)現(xiàn)新的方法或?qū)傩裕惨M(jìn)行詳細(xì)描述,描述應(yīng)該包括參數(shù),返回值,功能等等。如果在建模過(guò)程中,需要增加一些類或刪除一些類,或?qū)σ恍╊愡M(jìn)行合并,驗(yàn)證后,要立即修改相應(yīng)的類圖。在對(duì)自動(dòng)排課用例的序列圖創(chuàng)建過(guò)程中,也是經(jīng)過(guò)這樣的步驟,逐漸來(lái)增加該類的方法和屬性的。自動(dòng)排課類在此階段發(fā)現(xiàn)的方法和屬性簡(jiǎn)要?dú)w納如下,對(duì)于這些屬性和方法的描述性的:自動(dòng)排課類:屬性:24pClassSubject:保存各個(gè)班級(jí)的需要安排的科目信息。pArranging:當(dāng)前正在安排的科目信息。pLimitInfo:當(dāng)前安排科目和教師的限制信息。方法:Arrange:為某科目安排一節(jié)位置。GetClassSubject:得到排課信息。ConflictCheck:沖突檢測(cè)。NotifyUser:通知用戶。AddCourseArrange:增加新的排課結(jié)果4.2系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)系統(tǒng)建立了一個(gè)名為user的數(shù)據(jù)庫(kù),所有具體的數(shù)據(jù)項(xiàng)都以表的形式放在數(shù)據(jù)庫(kù)中。這些表包括:院區(qū)數(shù)據(jù)庫(kù)表、系部數(shù)據(jù)庫(kù)表、專業(yè)數(shù)據(jù)庫(kù)表、班級(jí)數(shù)據(jù)庫(kù)表、教室數(shù)據(jù)庫(kù)表、教師數(shù)據(jù)庫(kù)表、教學(xué)樓數(shù)據(jù)庫(kù)表、教學(xué)信息數(shù)據(jù)庫(kù)表、教研室數(shù)據(jù)庫(kù)表、開課任務(wù)書數(shù)據(jù)庫(kù)表、課程表數(shù)據(jù)庫(kù)、密碼數(shù)據(jù)庫(kù)表、時(shí)間模式數(shù)據(jù)庫(kù)表。各個(gè)表之間的關(guān)系視圖如圖4-4所示。25圖4-4access數(shù)據(jù)表中的關(guān)系視圖表是Access數(shù)據(jù)庫(kù)的基礎(chǔ),是信息的基本載體。其他對(duì)象,如查詢、報(bào)表的信息都是取自表中的信息。表的設(shè)置應(yīng)該體現(xiàn)數(shù)據(jù)庫(kù)的組織性、共享性、獨(dú)立性及最小冗余度。因此在設(shè)計(jì)表時(shí),應(yīng)該特別注意以下設(shè)計(jì)原則:即表中不應(yīng)該包含重復(fù)信息,并且信息不應(yīng)該在表之間復(fù)制;每個(gè)表應(yīng)該只包含關(guān)于一個(gè)主題的信息。排課系統(tǒng)中各個(gè)數(shù)據(jù)庫(kù)表的基本構(gòu)成如下:1、院區(qū)數(shù)據(jù)庫(kù)表院區(qū)數(shù)據(jù)庫(kù)表中存放學(xué)校中所有院區(qū)的代號(hào)和名稱,其結(jié)構(gòu)見表4-1。表4-1院區(qū)數(shù)據(jù)庫(kù)表2、系部機(jī)構(gòu)數(shù)據(jù)庫(kù)表系部機(jī)構(gòu)數(shù)據(jù)庫(kù)表中存放學(xué)校中所有系部的代號(hào)和名稱以及對(duì)應(yīng)的院區(qū)代號(hào),其結(jié)構(gòu)見表4-2。表4-2系部數(shù)據(jù)庫(kù)表對(duì)系部代號(hào)給出一種便于理解又能清楚反映其屬性的表述方式。用一個(gè)整數(shù)串作為系部的代號(hào),整數(shù)串含有4位整數(shù),如圖4-5所示:例:院區(qū)代碼系部編號(hào)圖4-5系部代碼示例3、專業(yè)數(shù)據(jù)庫(kù)表專業(yè)數(shù)據(jù)庫(kù)表存放著各個(gè)專業(yè)的有關(guān)信息包括專業(yè)代號(hào)、系部代號(hào)、院區(qū)代號(hào)、專業(yè)代號(hào)、專業(yè)類別,其結(jié)構(gòu)見表4-3。表4-3專業(yè)數(shù)據(jù)庫(kù)表26對(duì)專業(yè)代號(hào)給出一種便于理解又能清楚反映其屬性的表述方式。用一個(gè)整數(shù)串作為專業(yè)代號(hào),整數(shù)串含有6位整數(shù),如圖4-6所示:例:專業(yè)代號(hào)系部代號(hào)圖4-6專業(yè)代號(hào)示例4、教研室數(shù)據(jù)庫(kù)表用于存放全校所有專業(yè)的所有教研室的基礎(chǔ)信息,包括專業(yè)代號(hào)、教研室代號(hào)、院區(qū)代號(hào)、教研室名稱。其結(jié)構(gòu)見表4-4。表4-4教研室數(shù)據(jù)庫(kù)表對(duì)教研室代號(hào)給出一種便于理解又能清楚反映其屬性的表述方式。用一個(gè)整數(shù)串作為教研室代號(hào),整數(shù)串含有8位整數(shù),如圖4-7所示:例:院區(qū)代號(hào)教研室代號(hào)系部代號(hào)專業(yè)代號(hào)圖4-7教研室代號(hào)示例5、教學(xué)樓數(shù)據(jù)庫(kù)表教學(xué)樓數(shù)據(jù)存放于綜合數(shù)據(jù)庫(kù)中,其結(jié)構(gòu)見表4-5。表4-5教學(xué)樓數(shù)據(jù)庫(kù)表276、教室數(shù)據(jù)庫(kù)表教室事實(shí)數(shù)據(jù)存放于綜合數(shù)據(jù)庫(kù)中,其結(jié)構(gòu)見表4-6。表4-6教室數(shù)據(jù)庫(kù)表串作為教室的代號(hào),整數(shù)串含有4位整數(shù),如圖4-8所示:例:圖4-8教室代號(hào)示例7、班級(jí)數(shù)據(jù)庫(kù)表班級(jí)事實(shí)數(shù)據(jù)存放于綜合數(shù)據(jù)庫(kù)中,其結(jié)構(gòu)見表4-7。表4-7班級(jí)數(shù)據(jù)庫(kù)表對(duì)班級(jí)代號(hào)給出一種便于理解又能清楚反映其屬性的表述方式。用一個(gè)整數(shù)串作為班級(jí)的代號(hào),整數(shù)串含有10位整數(shù),如圖4-9所示:例:整數(shù)串28入學(xué)時(shí)間班級(jí)代號(hào)院區(qū)代號(hào)系部代號(hào)專業(yè)代號(hào)圖4-9班級(jí)代號(hào)示例8、班級(jí)課表數(shù)據(jù)庫(kù)表班級(jí)課表包括:班級(jí)代號(hào),專業(yè)代號(hào)、系部代號(hào)、星期、時(shí)段、教師代號(hào)、教室代號(hào)、教學(xué)樓代號(hào),其結(jié)構(gòu)見表4-8。表4-8班級(jí)課表數(shù)據(jù)庫(kù)表教師事實(shí)數(shù)據(jù)存放于綜合數(shù)據(jù)庫(kù)中,其結(jié)構(gòu)見表4-9。表4-9教師數(shù)據(jù)庫(kù)表對(duì)教師代號(hào)給出一種便于理解又能清楚反映其屬性的表述方式。用一個(gè)整數(shù)29串作為教師的代號(hào),整數(shù)串含有10位整數(shù),如圖4-10所示:例:教師代號(hào)專業(yè)代號(hào)教研室代號(hào)圖4-10教師代號(hào)示例10、課程數(shù)據(jù)庫(kù)表課程數(shù)據(jù)庫(kù)表中存放課程與之相應(yīng)的屬性,包括:課程代號(hào)、課程名、課程性質(zhì)、專業(yè)ID,實(shí)驗(yàn)課時(shí)、理論課時(shí)、周課時(shí)、學(xué)分、起始周、授課班級(jí)、權(quán)值。其結(jié)構(gòu)見表4-10。表4-10課程數(shù)據(jù)庫(kù)表對(duì)課程代號(hào)給出一種便于理解又能清楚反映其屬性的表述方式。用一個(gè)整數(shù)串作為課程的代號(hào),整數(shù)串含有10位整數(shù),如圖4-11所示:例:整數(shù)串系部代號(hào)專業(yè)代號(hào)30圖4-11課程代號(hào)示例11、開課任務(wù)書開課任務(wù)書事實(shí)數(shù)據(jù)存放于綜合數(shù)據(jù)庫(kù)中,其結(jié)構(gòu)見表4-11。表4-11開課任務(wù)書數(shù)據(jù)庫(kù)表對(duì)學(xué)期代號(hào)給出一種便于理解又能清楚反映其屬性的表述方式。用一個(gè)整數(shù)串作為學(xué)期的代號(hào),整數(shù)串含有6位整數(shù),如圖4-12所示:例:整數(shù)串圖4-12學(xué)期代號(hào)示例12、時(shí)間模式數(shù)據(jù)庫(kù)表用于存放用戶選定的時(shí)間組合方式及其相應(yīng)的優(yōu)先級(jí)信息。其結(jié)構(gòu)見表4-12。31表4-12時(shí)間模式數(shù)據(jù)庫(kù)表13、教學(xué)信息數(shù)據(jù)庫(kù)表用于存放排課中所需要的教師上課信息和教師提出的上課要求,為編排課表提供約束條件。其結(jié)構(gòu)見表4-13。表4-13教學(xué)信息數(shù)據(jù)庫(kù)表14、教室占用情況表用于存放各個(gè)教室的占用情況,用來(lái)給教室報(bào)表提供數(shù)源。其結(jié)構(gòu)見表4-14。表4-14教室占用情況數(shù)據(jù)庫(kù)表3215、沖突信息數(shù)據(jù)庫(kù)排課系統(tǒng)綜合數(shù)據(jù)包括作為排課事實(shí)的班級(jí)、課程、課時(shí)、教師等初始信息,也包括作為排課系統(tǒng)輸出的課表數(shù)據(jù)及其它輔助數(shù)據(jù)。沖突信息數(shù)據(jù)庫(kù):存放有關(guān)死鎖課程的相關(guān)信息。具體見表4-15表4-15沖突信息數(shù)據(jù)庫(kù)表16、用戶密碼數(shù)據(jù)庫(kù)表Password存放個(gè)用戶名稱、口令、權(quán)限。該表通過(guò)設(shè)置用戶的權(quán)限和密碼來(lái)實(shí)現(xiàn)系統(tǒng)功能設(shè)計(jì)中的分角色設(shè)計(jì)不同的用戶可以設(shè)定不同的權(quán)限級(jí)別,不同的級(jí)別則對(duì)應(yīng)不同的操作內(nèi)容。具體見表4-16。以班為單位的課表,其形式如表4-17所示。33表4-17以班級(jí)為單位的課程表這顯然不是一個(gè)關(guān)系(二維表,因此不能以此來(lái)直接建立數(shù)局庫(kù)。我們可以看到,課表中涉及教師、教室、課程、班級(jí)四類對(duì)象,課程的總學(xué)時(shí)、周學(xué)時(shí)是課程對(duì)象的一個(gè)屬性。為了實(shí)現(xiàn)排課,系統(tǒng)要知道這個(gè)對(duì)象的有關(guān)信息,例如關(guān)于教室要知道其座位數(shù),要知道課程的總學(xué)時(shí)、周學(xué)時(shí)、對(duì)教室的要求等。按照實(shí)體-聯(lián)系分析方法,這四類數(shù)據(jù)對(duì)象建立的數(shù)據(jù)庫(kù),其字段可定義為對(duì)象的屬性。通過(guò)對(duì)這個(gè)對(duì)象類中的具體對(duì)象編號(hào),可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),當(dāng)對(duì)象的屬性發(fā)生變化時(shí),僅對(duì)該對(duì)象的數(shù)據(jù)庫(kù)進(jìn)行操作即可,小會(huì)對(duì)其他對(duì)象產(chǎn)生影響。課表可表示為對(duì)象之間的聯(lián)系,為這個(gè)聯(lián)系建立一個(gè)數(shù)據(jù)庫(kù)(稱為課程表數(shù)據(jù)庫(kù),做儲(chǔ)存排課結(jié)果之用。對(duì)于課程表庫(kù),我們可以采用以教室為關(guān)鍵字段建立數(shù)據(jù)庫(kù),將上述生成的課程信息存儲(chǔ)起來(lái)。按照這一思路,每個(gè)教室的一個(gè)上課時(shí)段為一個(gè)記錄,包括有教室編號(hào)和上課時(shí)間、班級(jí)編號(hào)、課程名稱、任課教師等字段。此結(jié)構(gòu)的最大優(yōu)點(diǎn)是與過(guò)去手工排課方式吻合,便于統(tǒng)計(jì)教室情況。因此采用這個(gè)結(jié)構(gòu)。若學(xué)校教室規(guī)模為250個(gè),每周按5天,每天按5大節(jié)課考慮,則數(shù)據(jù)庫(kù)的最大記錄數(shù)是6250個(gè)。34數(shù)據(jù)庫(kù)管理系統(tǒng)是整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的核心,ACCESS作為優(yōu)秀的數(shù)據(jù)庫(kù)管理系統(tǒng),提供了數(shù)據(jù)管理與維護(hù)的強(qiáng)大手段,為用戶訪問(wèn)與操縱數(shù)據(jù)庫(kù)提供了友好的圖形界面與簡(jiǎn)便的手段。在排課系統(tǒng)中主要用到以下功能和技術(shù):1、數(shù)據(jù)庫(kù)管理系統(tǒng)是數(shù)據(jù)獨(dú)立于應(yīng)用而存在,這種應(yīng)用程序?qū)?shù)據(jù)庫(kù)系統(tǒng)的非依賴性對(duì)應(yīng)用的開發(fā)至關(guān)重要,它使得對(duì)數(shù)據(jù)的變動(dòng)不至于影響所開發(fā)的應(yīng)用。2、接受SQL指令,在應(yīng)用開發(fā)過(guò)程中,很多對(duì)數(shù)據(jù)庫(kù)的操作是通過(guò)SQL語(yǔ)句完成的。3、事務(wù)處理是一種機(jī)制,它確保多個(gè)SQL語(yǔ)句被當(dāng)作單個(gè)單元來(lái)處理。課表編排過(guò)程數(shù)據(jù)的一致性和可恢復(fù)性要求很高,在其中采用了事務(wù)處理機(jī)制。4、數(shù)據(jù)庫(kù)規(guī)則施加在數(shù)據(jù)庫(kù)類表上的約束條件,是在數(shù)據(jù)庫(kù)設(shè)計(jì)中設(shè)定的。它可以限定列的取值范圍和是否為可控等等。如果用戶給此列輸入的值不滿足約束條件,在存盤時(shí)數(shù)據(jù)庫(kù)會(huì)報(bào)錯(cuò),數(shù)據(jù)庫(kù)只接受滿足條件的數(shù)據(jù)。因此,規(guī)則可以保證輸入的數(shù)據(jù)滿足要求的條件。在自動(dòng)排課系統(tǒng)的基表設(shè)計(jì)中留一些字段的設(shè)計(jì)賦予了約束條件,這樣可以通過(guò)數(shù)據(jù)庫(kù)系統(tǒng)自動(dòng)控制用戶的輸入滿足規(guī)定的要求。5、視圖是查看一個(gè)或多個(gè)表中數(shù)據(jù)的一種方式。排課結(jié)果的查詢本質(zhì)是多表查詢,在此利用了視圖技術(shù),根據(jù)不同的查詢要求,設(shè)計(jì)不同的視圖,以達(dá)到查看一個(gè)或多個(gè)表中的數(shù)據(jù)的目的。35第5章計(jì)算機(jī)排課系統(tǒng)的實(shí)現(xiàn)5.1系統(tǒng)總體實(shí)現(xiàn)淄博職業(yè)學(xué)院計(jì)算機(jī)自動(dòng)排課系統(tǒng)的總體流程圖如圖5-1所示:圖5-1排課系統(tǒng)流程圖該排課系統(tǒng)由1個(gè)主窗體和5個(gè)功能模塊組成,基礎(chǔ)數(shù)據(jù)錄入模塊、自動(dòng)排課模塊、查詢模塊、報(bào)表輸出模塊和用戶管理模塊。計(jì)算機(jī)自動(dòng)排課系統(tǒng)的主窗體實(shí)現(xiàn)排課系統(tǒng)的所有功能。主要包括:基礎(chǔ)數(shù)據(jù)的錄入、班級(jí)的管理、課表的管理、時(shí)間段管理、自動(dòng)排課功能、數(shù)據(jù)報(bào)表功能、用戶管理功能等。如圖5-2所示。36圖5-2計(jì)算機(jī)自動(dòng)排課主窗體打開主窗體,在窗體的右邊有班級(jí)管理、課程管理、時(shí)間段設(shè)置和用戶管理等幾個(gè)功能模塊,如果要對(duì)班級(jí)進(jìn)行管理,點(diǎn)擊班級(jí)管理模塊,就可以實(shí)現(xiàn)對(duì)班級(jí)的添加、刪除、修改等各種操作,其它模塊的管理與班級(jí)管理類似。在主窗體中部有生成課表、報(bào)表輸出、課表查詢等模塊,其中課表輸出可以直接輸出也可以輸出到電子表格中。在主窗體創(chuàng)建過(guò)程中,使用了工程。具體設(shè)計(jì)如下:打開VisualBasic后,單擊文件|新建工程,在工程模板里選擇標(biāo)準(zhǔn)EXE,這時(shí)VisualBasic將自動(dòng)產(chǎn)生一個(gè)Form窗體,刪除這個(gè)窗體,把這個(gè)工程保存為“工程1”。部分程序代碼:DimClassprintAsNewOpenRs'定義打印記錄集DimxlAppAsNewExcel.ApplicationDimsendsqlAsStringPrivateSubgridcs('對(duì)grid所需求進(jìn)行初始化OnErrorGoTofinishSelectCaseGrid1.Cell(hang,7.TextCase"周一至周五"Grid2.Cols=5*nknumber+1Grid3.Cols=5*nknumber+137Case"周一至周六"Grid2.Cols=6*nknumber+1Grid3.Cols=6*nknumber+1Case"周一至周日"Grid2.Cols=7*nknumber+1Grid3.Cols=7*nknumber+1EndSelect'以下是列出對(duì)應(yīng)的教師資源以及班級(jí)資源Grid2.Range(1,1,Grid2.Rows-1,Grid2.Cols-1.ClearTextGrid3.Range(1,1,Grid3.Rows-1,Grid3.Cols-1.ClearTextSetkc2=cnn.Execute("select占用from占用where教師姓名='"&Grid1.Cell(hang,5.Text&"'"Fori=1ToGrid2.Cols-1Grid2.Cell(1,i.Text=Mid(kc2.Fields(0,i,1NextGrid3.Range(1,1,Grid3.Rows-1,Grid3.Cols-1.Alignment=cellCenterCenterSetkc2=cnn.Execute("select占用from課程占用where班級(jí)='"&XPCombo1.Text&"'"Fori=1ToGrid3.Cols-1Grid3.Cell(1,i.Text=Mid(kc2.Fields(0,i,1NextExitSubfinish:MsgBoxErr.DescriptionEndSubPrivateSubgrid4hq('獲取教師與班級(jí)之間的課程點(diǎn)OnErrorGoTofinishGrid4.Rows=1DimmAsIntegerFori=1ToGrid2.Cols-1Stepn'通過(guò)對(duì)比對(duì)教師與班級(jí)之間的可以排課點(diǎn)進(jìn)行規(guī)納IfGrid2.Cell(1,i.Text="0"ThenIfGrid3.Cell(1,i.Text="0"ThenGrid4.Rows=Grid4.Rows+1Grid4.Cell(Grid4.Rows-1,1.Text=iEndIfEndIfNextExitSubfinish:MsgBoxErr.DescriptionEndSubPrivateSubasPopup1_Click(CancelAsBooleankctable="登陸"Form6.Caption="用戶管理"Form6.Show1EndSub38PrivateSubasPopup10_Click(CancelAsBooleankctable="班級(jí)名稱"Form6.Caption="班級(jí)管理"Form6.Show1EndSubPrivateSubasPopup2_Click(CancelAsBooleankctable="教學(xué)時(shí)間段"Form5.Caption="教學(xué)時(shí)間段設(shè)置"Form5.Show1EndSubPrivateSubasPopup3_Click(CancelAsBooleanEndEndSubPrivateSubasPopup4_Click(CancelAsBooleankctable="課程名"Form5.Caption="課程管理"Form5.Show1EndSubPrivateSubasPopup5_Click(CancelAsBoolean'這里是對(duì)一些生成錯(cuò)誤的數(shù)據(jù)進(jìn)行還原DimvyesAsStringvyes=MsgBox("當(dāng)系統(tǒng)出現(xiàn)排課錯(cuò)誤時(shí)進(jìn)行的完全還原操作,確定嗎?",vbQuestion+vbYesNo,"提示"Ifvyes=vbYesThenSetkc2=cnn.Execute("update占用set占用='000000000000000000000000000000000000000000'"Setkc2=cnn.Execute("update課程占用set占用='000000000000000000000000000000000000000000'"EndIfEndSub?數(shù)據(jù)錄入模塊實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)的增加、修改、刪除功能以及對(duì)庫(kù)中所有數(shù)據(jù)進(jìn)行瀏覽的功能。為了減少操作中的數(shù)據(jù)沖突,數(shù)據(jù)錄入模塊中的所有錄入窗體都是采用模式方式打開的,即在某一錄入窗體打開時(shí),不能再打開其它窗體,直到所打開的這一窗體關(guān)閉為止。數(shù)據(jù)錄入模塊主要包括對(duì)院系信息、專業(yè)信息、教研室信息、教學(xué)區(qū)信息、教室信息、班級(jí)信息、教師信息、課程信息等信息的39處理,以及對(duì)課表編排所需參數(shù)信息的處理。下面以課程錄入窗體為例詳細(xì)說(shuō)明基礎(chǔ)數(shù)據(jù)錄入模塊的設(shè)計(jì)與實(shí)現(xiàn)。在窗體上放置了2個(gè)文本框、1個(gè)列表框1個(gè)DataGrid表和4個(gè)按鈕,在文本框中按要求填入相應(yīng)的信息,點(diǎn)擊“添加”可以進(jìn)行對(duì)課程類型信息的添加,如果在數(shù)據(jù)庫(kù)中找到相同的信息則提示有相同信息后,重新輸入;點(diǎn)擊“刪除”時(shí)提示用戶要在表中要選中一行,如果點(diǎn)擊“是”刪除選中信息,否則取消操作;當(dāng)用戶需要編輯數(shù)據(jù)時(shí)提示用戶要在表中要選中一行,然后將選中的數(shù)據(jù)顯示到相應(yīng)的文本框中,進(jìn)行編輯,數(shù)據(jù)修改成功后,點(diǎn)擊“編輯”完成該操作。點(diǎn)擊“清除”時(shí)將文本框中的信息清空,便于用戶新的輸入,如圖5-3所示。圖5-3課程錄入窗體具體設(shè)計(jì)代碼如下:Dimi,nAsIntegerPrivateDeclareFunctionGetKeyStateLib"user32"_(ByValnVirtKeyAsLongAsIntegerPrivateSubForm_Load(Grid1.SetRegisterInformation"CNwinndy","W]vyY-nonvk-u\nty-Zbl_e-`hms^"'進(jìn)行注冊(cè)WithGrid1.AllowUserResizing=True.DisplayFocusRect=False.ExtendLastCol=True.Appearance=Flat.FixedRowColStyle=Flat.ScrollBarStyle=Flat40.DefaultFont.Name="Tahoma".DefaultFont.Size=8.BackColorFixed=RGB(90,158,214.BackColorFixedSel=RGB(110,180,230.BackColorBkg=RGB(90,158,214.BackColorScrollBar=RGB(231,235,247.BackColor1=RGB(231,235,247.BackColor2=RGB(239,243,255.GridColor=RGB(148,190,231.Column(0.Width=0.Column(1.Width=150.Column(2.Width=100.Column(3.Width=100.Column(3.Locked=TrueEndWithMsgBox"因?yàn)槟炒税嗉?jí)正在使用這里的某些資源,使用修改和刪除有可能會(huì)造成不必要的損失!",vbInformation,"友情提示"CallcallmainEndSubPrivateSubcallmain(kcsave=Falsekcedit=Truekcdel=TrueSetkc1=cnn.Execute("select*from"&kctableSelectCasekctableCase"課程名","教學(xué)時(shí)間段"Grid1.Rows=1'清除所有記錄i=2EndSelectGrid1.Cols=i+1'必須+1,因?yàn)閷?shí)際上為4行,但第一行是隱藏的Fori=0Toi-1'顯示數(shù)據(jù)的字段名Grid1.Cell(0,i+1.Text=kc1.Fields(i.Name'讀取表中的各字段名Nextn=ii=1DoWhileNotkc1.EOFGrid1.Rows=Grid1.Rows+1Forj=1Ton'設(shè)定讀取列Ifkc1.Fields(j-1=NullThen'空值的處理Grid1.Cell(i,j.Text=""ElseGrid1.Cell(i,j.Text=kc1.Fields(j-1EndIfNexti=i+1kc1.MoveNext'讀取下一記錄LoopGrid1.Column(1.Locked=TrueEndSubPrivateSubForm_Unload(CancelAsIntegerCallXPButton5_ClickEndSub41PrivateSubGrid1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingleIfButton=2ThenPopupMenuczEndIfEndSubPrivateSubGrid1_RowColChange(ByValRowAsLong,ByValColAsLonghang=RowEndSubPrivateSubGrid1_Validate(CancelAsBoolean'設(shè)定TAB鍵切換DimnActiveRowAsLong,nActiveColAsLongConstVK_TAB=9IfGetKeyState(VK_TAB<0ThenIfnActiveCol<Grid1.Cols-1ThenGrid1.Range(nActiveRow,nActiveCol+1,_nActiveRow,nActiveCol+1.SelectedEndIfCancel=TrueEndIfEndSubPrivateSubrenovate_Click(CallcallmainEndSubPrivateSubXPButton1_Click(kcsave=Truekcedit=Falsekcdel=FalseSetkc1=cnn.Execute("select*from"&kctableGrid1.Rows=1'清除所有記錄Grid1.Rows=2'默認(rèn)為2行Fori=0To1'顯示數(shù)據(jù)的字段名Grid1.Cell(0,i+1.Text=kc1.Fields(i.Name'讀取表中的各字段名NextGrid1.Column(1.Locked=FalseGrid1.Cell(1,1.SetFocusXPButton2.Default=TrueEndSu

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論