




已閱讀5頁,還剩24頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
無憂無慮畢設網 ():畢業設計源碼下載 畢業設計源碼下載: 本文配套程序下載地址 : 無憂無慮畢設網 ()-大學生畢業設計站 ,免費畢業設計論文 ,無憂無慮畢設網 大學生畢業設計 ,出售各類畢業設計源碼 ,論文 ,程序源碼 ,網站源碼 ,免費視頻教程 ,我們將竭誠為您服務! 分類號 : TP311 U D C: D10621-408-(2007) 5796-0 密 級:公 開 編 號: 2003211064 成 都 信 息 工 程 學 院 學 位 論 文 某高等學校教務排課系統的設計與 實現 論文作者姓名: 胡 彥 妮 申請學位專業: 網 絡 工 程 申請學位類別: 工 學 學 士 指導教師姓名(職稱): 王 翔 論文提交日期: 2007 年 06月 10 日 無憂無慮畢設網 ():畢業設計源碼下載 畢業設計源碼下載: 某高等學校教務排課系統的設計與實現 摘 要 當第一臺計算機出現時,不僅意味著新型革命的到來,也預示著科技時代的來臨。尤其是踏入 21 世紀后,計算機技術得到了空前的發展,而網絡的普及使得各行各業逐漸離不開電腦。對于高校而言,在教務辦公中已經越來越多的實現了自動化,既提高了工作的效率,也規范了教學的操作,增加了科 學性。 在分析以往一些排課系統的基礎上,本設計提出一個基于動態加權算法(即貪婪法)的排課系統設計方法,采用手動預排、自動排課、手動調節的三級排課模式,并對一些具體的技術問題做出相應安排。在功能方面,它能實現查閱、修改、添加等比較基本的功能,也能夠實現自動排課、權限管理等較復雜的功能。本設計采用 C/S 模式,主要用 Delphi7.0 作為前臺開發工具,用 SQL Server 2003作為后臺數據庫。 經過測試后,本設計已可達到預想中的效果,能夠實現簡易的功能。 關鍵字 : 動態加權算法;自動化; C/S 模式;三級排課模 式 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 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 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 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, 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 words: Dynamic weighted algorithm; Automation; C/S mode; Three Levels Course Scheduling Model 目 錄 論文總頁數: 25 頁 1 引 言 . 1 2 基本理論知識介紹 . 1 2.1 SQL Server 2003 數據庫簡介 . 1 2.2 Delphi7.0 簡介 . 2 2.3 C/S 模式介紹 . 4 3 教務排課系統的設計與實現 . 4 3.1 教務排課系統簡介 . 4 3.2 教務排課系統分析 . 5 3.2.1 算法分析 . 5 3.2.2 算法流程圖 . 6 3.2.3 功能分析 . 7 3.2.4 需求分析 . 7 3.3 排課系統的功能模塊 . 8 3.4 數據庫設計 . 9 3.5 系統流程及代碼分析 . 11 3.5.1 系統流程圖 . 11 3.5.2 代碼分析 . 11 4 系統測試 . 18 4.1 測試環境 . 18 4.2 主要模塊測試 . 18 4.3 測試結果 . 22 結 論 . 22 參考文獻 . 23 致 謝 . 24 聲 明 . 25 第 1 頁 共 25 頁 1 引 言 隨著計算機的發展和教育改革的不斷深入,計算機網絡技術的不斷成熟,綜合教學網絡已廣泛應用于學校教學、管理的各個領域,特別是 教務 排課系統的應用。它代表著學校教學管理的水平,是現代化管理的手段。目前大多數 教務 排課系統是采用各教學單位進行教學任務的指派,然后將教學任務單提交教務科,教務人員將數據輸入 計算 機,進行排課、打印課程表等工作。這種 教務 排課系統只是在一定程度上減輕了教務人員排 課的負擔。 近幾年來,我國高等教育事業的快速發展,高校新生的擴招力度加大,各個高校中的多個校區、多個學院的教學管理模式已經隨處可見,各高校都面臨著教室資源緊張的問題 。 原來每個班有一個固定教室的模式已不存在,甚至原來一個系專用的教學樓也要考慮參加全校的教室資源統一調整。現在的本科院校包括研究生在內,一般都有上萬人或幾萬人的規模 。 要在每個學期末的一個短時間內拿出一份涉及到有關全校教室統調的課表來,對高校的教務處來說確實是一個很艱巨的任務。 排課系統的主要任務是根據現有的教學資源對課程進行合理的安排。由于高校班 級數、課程門數較多,每門課有涉及很多信息,如果用手工進行排課,不可避免地出現教室資源沖突或教師資源沖突的情況。 如何更有效地利用人力、物力資源,充分發揮計算機的輔助作用,減輕教務人員的工作強度,在對需求進行詳細的分析后,本文提出了基于教學大綱的教務排課設計思想,并對其算法進行了描述。 本論文就該教務排課系統的設計實現進行了分析探討:首先對系統的需求分析做了敘述,然后介紹了系統的設計和實現,最后進行了系統測試。本系統采用 Delphi7.0作為前臺開發工具,采用 SQL Server 2003 作為后臺數據庫。 2 基本理論知識介紹 2.1 SQL Server 2003 數據庫簡介 Microsoft SQL Server 2003 是 Microsoft 公司繼 SQL Server 6.5 和 SQL Server 7.0 以后,推出的又一改進的新版關系型數據管理系統。它能使用戶快捷地管理數據庫和開發應用程序。 SQL Server 2003 使用了先進的數據庫結構,與 Windows DNA 緊密集成,具有強大的 Web 功能,它可以利用高端硬件平臺以及最新網絡和存儲技術,可以為最大的 Web 站點和企業應用提供優良的擴展性和可靠性,使用戶 能夠在 Internet 領域快速建立服務系統,為占領市場贏得寶貴的時間。 同時 , SQL Server 2003 還為用戶提供了重要的安全性功能的增強,為用戶的數據安全提供了可靠的保證。另外 ,SQL Server 2003 在數據庫服務器自動管理技術方面處于數據庫領域的領先地位,它可以使用戶免去繁瑣復雜的工作第 2 頁 共 25 頁 量,從而有精力處理更重要的問題,使用系統在商業戰略上占得先機。 關系型數據庫系統是當前最流行的數據庫 管理 系統。它是一個非常復雜的系統軟件,對數據庫的所有操作,包括定義、查詢、更新和各種運行控制最終都通過它來實現的 ,因 此 它是使數據庫系統具有 數據 共享、并發訪問、 數據 獨立等特性的根本保證。 目前, Microsoft SQL Server 2003 是在成熟和強大的關系型數據庫中最受歡迎、應用最廣泛的一個。 就關系數據庫管理系統 (RDBMS)而言,它是位于用 戶 與操作系統之間的一層數據管理軟件,它主要負責強化數據庫的結構,簡單來說包括如下功能: (1) 維持數據庫中 數據 的關系。 (2) 保障 數據 的正確存儲,即保障定義 數據 之間的關系的種種規則不會被違背。 (3) 在系統出錯時,把 數據 恢復到一個能保證一致性的狀態。 SQL Server 2003 系統之所以成為目前流行的大型商用數據庫系統,有著其深刻的內在因素,這與它鮮明的特點是分不開的: (1) 與 Internet 的高度集成 。 (2) 高伸縮性和適應性 。 (3) 企業級數據庫功能強 。 (4) 易于安裝和使用 。 (5) 具有決策支持的資料倉庫 。 2.2 Delphi7.0 簡介 Delphi 是 Borland 公司發布的用于開發數據庫應用程序的工具,它是目前開發客戶 /服務器數據庫應用程序的強有力的工具。 Delphi 是具有可視化界面的面向對象編程語言 .而最新的 Delphi 7.0 具有以下新特 點: 和以往 Delphi 的每一個新版本一樣, Delphi 7 繼續改善了開發環境,幫助程序員提高效率。 Delphi 7 在集成開發環境中加入了很多讓程序員愛不釋手的新功能,下面是對它們的一個簡單介紹。 ( 1) Code Complete(代碼完成) Code Complete 功能在 Delphi 5 中就已經加入了,這項功能非常受程序員的歡迎,因為 Code Complete 可以大幅度地減少程序員需要鍵入的程序代碼,并且減少鍵入錯誤。 Delphi 7 的 Code Complete 功能在原有的基礎上繼續改善,新的 Code Complete 窗口不但可以由程序員自行調整大小,而且可以使用不同的顏色代表不同的對象,例如變量、方法和特性等。 ( 2) Object TreeView(對象樹視圖) 另外一個新功能就是 Delphi 7 的 Object TreeView 窗口。這個新的窗口除第 3 頁 共 25 頁 了可以顯示窗體中所有的對象之外,也可以以分層方式表達組件之間的關系。當程序員在 Object TreeView 窗口中單擊了一個組件之后,這個組件會立刻出現在對象查看器之中,這時程序員可以改變這個對象的特性值和事件處理程序。 當窗體復雜,擁有大量的組件時 , Object TreeView 窗口可以讓用戶迅速找到這個組件,并且知道與當前組件相關的組件,非常方便。 ( 3)可定制的 View 窗口 Delphi 7最強勁的集成開發環境功能應該要算是新的可定制的 View窗口了。在 Delphi 7 中,編輯器不但可以讓程序員觀看和編輯 Object Pascal 的程序代碼,而且如果程序員編輯的是 Web 應用程序,那么還可以直接在編輯器中查看HTML 程序代碼、腳本語言程序代碼,預覽 Web 應用程序執行結果的畫面以及 Web應用程序產生的 HTML 程序代碼。 ( 4)新添加 Indy Intercepts 和 Indy I/O Handler 構件組 企業版的 Delphi 7 中,這兩個構件組基本上提供了針對現今流行的Internet 協議編程的構件。可以進行更為底層的操作。 ( 5)新添加 IW Standard、 IW Data、 IW Client Side 和 IW Control 構件組 這些構件也是 Delphi 7 的顯著改革之一,將 Intraweb 集成到了標準的構件板中,我們就可以很方便地開發基于 Web 的應用程序。 ( 6)新添加的 Rave 報表構件組 Delphi 7 的標準構件板中已經沒有 了原來的 QuickReport 構件組,取而代之的是 RAVE 報表制作組件,并且提供專門的報表制作工具 Rave Designer。 Rave 報表構件是一個可視化的報表設計工具,大大簡化了在應用程序中加入報表的工作。用 Rave 報表構件可以做出各種不同的報表,從最簡單的到非常復雜、個性化的報表都可以完成。它的功能包括:圖片支持、對齊、精確頁面定位、打印機設置、字體控制、打印預覽、報表內容重用,并支持 PDF、 HTML、 RTF等文本格式。隨著 Active X 數據對象( ADO)的推出,它能讓應用程序通過任意的 OLE DB 提供者訪問和操作數據庫,其強大功能使得任何數據訪問技術都黯然失色。 而在數據集方面,與 BDE不同 ADO是 Microsoft推出的新一代數據訪問規范,在 Delphi7 中它的地位等同于一個和 BDE 并列的數據引擎。本系統采用的就是ADO 數據集。 雖然 ADO的功能比 BDE比起來弱一些 ,但和 BDE相比 ADO有一些重要的優勢,比如: ADO 將會內制在從 Windows2000 開始 Microsoft 新出的所有操作系統中,單第 4 頁 共 25 頁 就這一點就足以給其他的數據訪問方式畫上問號。 在 Delphi7 中提供了對 ADO 的全力支持,提供了很多 ADO 組件,還增加了一些新的字段類型如: WideString, GUID, Variant, interface, IDispatch 等。 ADO 是面向各種數據的層次很高的接口,它提供了強大的數據訪問功能,可以訪問的數據對象有: a.關系數據庫中的各種數據; b.非關系型數據庫,如層次型數據庫,網狀數據庫等; c.電子郵件與文件系統; d.文本與圖象,聲音; e.客戶事務對象。 Delphi5.0版本成功地引入了這項技術,極大程度地擴展了數據庫處理能力,為 Delphi 程序員帶來前所未有的廣闊空間。 Delphi 以其功 能強大、簡單易用等諸多特性,深受編程人員的歡迎。所以我選擇了 Delphi7.0 作為開發工具。 2.3 C/S 模式介紹 C/S ( Client/Server)結構,即大家熟知的客戶機和服務器結構。它是軟件系統體系結構,通過它可以充分利用兩端硬件環境的優勢,將任務合理分配到Client 端和 Server 端來實現,降低了系統的通訊開銷。目前大多數應用軟件系統都是 Client/Server 形式的兩層結構,由于現在的軟件應用系統正在向分布式的 Web 應用發展, Web 和 Client/Server 應用都可以進行同樣的業務處 理,應用不同的模塊共享邏輯組件;因此,內部的和外部的用戶都可以訪問新的和現有的應用系統,通過現有應用系統中的邏輯可以擴展出新的應用系統。這也就是目前應用系統的發展方向。 3 教務排課系統的設計與實現 3.1 教務排課系統簡介 課程編排作為高等院校教務管理中的一項重要而且繁重的工作,從一般意義上講,其實質就是對學校學期開設的每門課程合理地分配時間資源和教室資源的過程。其中涉及教師、教室、時間和學生等多種因素,人為要求也比較多,另外由于這幾年的高校擴招導致教室資源比較緊張,諸多因素就加重了課程編排工作的難度和復 雜度。如果完全由人工來編排課表,費時費力,其科學性、方便性更是難以保證,所以利用計算機進行自動排課的想法自然而生。目前,經研究用來解決排課問題的方法有 :模擬手工排課法、圖論方法、模擬退火法等。國內針對課表問題也相繼研制出了一些排課軟件,但是軟件的通用性差,因各學校教學資源不盡相同,管理課表的方法也不乏個性,很難完全規范化、程序化。本文根據某高校的實際情況,結合以往的排課經驗,通過靜態設置教學任務的優先級、分第 5 頁 共 25 頁 配時間片資源和教室資源時根據相關參數動態設置其優先級的算法設計并實現了一個高校智能排課系統。如何充分利 用有限的教室和時間資源合理地編排課表,是本文致力研究的主要問題。 3.2 教務排課系統分析 3.2.1 算法分析 在排課系統中,關鍵的部分在于算法的選擇。好的算法不僅可以節省時間,更可以提高效率。 幾種排課算法比較: ( 1)自動排課算法:此算法以課程為中心,進行搜索匹配,取最先匹配的值;具有占有空間少,運算速度快的特點。但其未對數據進行擇優選取,所以不能對教學資源(教師、教室)合理分配,也不能滿足一些特殊要求(比如有些老師喜歡上午上課,有些老師偏向于集中式上課;有些課程安排在上午更合適些,有些課程不能安排到 上午等)。 ( 2)基于優先級的排課算法:從數學上講 , 排課問題是一個在時間、教師、學生和教室四維空間 , 以教學計劃和各種特殊要求為約束條件的組合規劃問題。其實質就是解決各因素之間的沖突。在設計算法時 , 為了降低課程調度的算法復雜性 , 可采用化整為零的思想 此算法對班級及教室劃分等價類,對學校資源進行了合理的利用。但對一些特殊要求還是無法具體體現出來。 ( 3)基于時間片優先級排課算法:此算法屬于貪婪算法。每次對教師、教室資源的選取都是取當前最優的數據。按照教師、教室、班級的優先級取最優值,所以對各對象的一些特 殊要求會很明顯的體現出來,在教師、教室資源不緊缺的情況下,此算法能排出相對合理的課程。相對于之前介紹的兩個算法,在處理各種特殊要求的能力上有明顯的優勢。 本系統采用的是動態加權算法即貪婪算法。貪婪法是一種不追求最優解,只希望得到較為滿意解的方法。貪婪法一般可以快速得到滿意的解,因為它省去了為找最優解要窮盡所有可能而必須耗費的大量時間。貪婪法常以當前情況為基礎作最優選擇,而不考慮各種可能的整體情況。在解決排課沖突時,為減少貪婪法的缺點,特在自動排課功能后加入手動調節功能,使用者可對不滿意的課程再次調節。以下為 算法過程: ( 1) 初始化排課數組、課程申請數組。 ( 2) 賦初始權值并對課程申請數組排序。 ( 3) 將課程申請碼按序進行排課,結果存儲在排課數組中。 ( 4) 排課思想是將一星期分為幾個層:星期一至五的上午和下午一二節、第 6 頁 共 25 頁 星期一至五的上午及下午三四節、星期六全天、星期一至五的晚間。對不同的層進行排課,可避免同一天同一老師授同一門課的問題。 ( 5) 若全部排完,則轉( 7);否則,計算并重新賦相應權值。 ( 6) 對申請數組重新排序,轉到( 3)。 ( 7) 結束。 3.2.2 算法流程圖 系統的算法流程圖,如圖 1 所示。 清 空 排 課 記 錄各 種 信 息 初 始 化計 算 權 值計 算 總 周 課 數將 排 課 記 錄 寫 入 數 據 庫檢 測 沖 突異 常 函 數 處 理打 印 課 表結 束開 始 圖 1 算法流程圖 說明:不管是否首次排課,首先進行清空排課記錄,對各種信息的初始化后,計算權值和總周課數,就可以將排課記錄寫入數據庫,這實際也是自動排課的過程。排完后系統會進行檢測沖突,若有沖突則彈出提示框,進行異常函數的處理。第 7 頁 共 25 頁 有需要的,可打印課表。 3.2.3 功能分析 由于排課算法以及沖突檢測在細節上有很多限制,在設計之前我們做了詳細的討論和分析,得出了排課系統功能的細節問題: ( 1) “公共基礎課和公選課優先固定”,由于這兩種課一 般由教務處制訂課程計劃,因此應該在自動排課之前將它們優先固定。 ( 2) “一師多課”沖突情況,即一位教師在同一時間內排了一門以上的課。 ( 3) “一室多課”沖突情況,即一個教室在同一時間內排了一門以上的課。 ( 4) “一班多課”沖突情況,即一個班級在同一時間內排了一門以上的課。 ( 5) “教室容量匹配”情況,即上課班級人數應該與所在教室的人數匹配。 ( 6) “合班和分班課程”情況,即在排課時考慮像英語這樣的分班課和政治這樣的合班課如何排課。 ( 7) “課程單雙周”情況,即某些總課時較少的課程,可以考慮在單周 或雙周排課。 ( 8) “同一課程間隔”盡量讓同一課程在一周內課時內的排課分布均勻。 ( 9) “課程優先級”盡量讓學分值高的,重要的課程排在黃金時間,課程優先級低的排在其他時間。 ( 10) “課程擴充”如果正常情況下無法滿足課程的需要,就要在晚上或者周六日進行課時的擴充。 ( 11) “ 課程與教室匹配”情況,課程要求的條件必須與教室設備條件相匹配,如是否需要多媒體授課等。 3.2.4 需求分析 針對功能分析中的各種問題,我們在查閱了一些關于排課設計的資料以及試用了幾種排課軟件之后,認為在排課設計中需要實現以下幾 個需求: ( 1) 手動預排課。由于存在公共基礎課以及公選課,而這些課程的設置完全有教務處制定,因此這些課程應該預先設置。 ( 2) 自動排課。根據輸入的基本信息,進行自動排課,生成課表。在自動排課完成后,將排課異常信息給予反饋。 ( 3) 手動調節。完全依賴自動排課排出的課表不能完全符合客觀需求,同時我們在算法及優先級確定的精確度方面的水平也有限,因此,應該增加手動調節功能,以進一步確保合理性。 ( 4) 設置沖突檢測方法。主要是針對手動預排課和手動調節功能可能出現的沖突情況,完善手動排課。 第 8 頁 共 25 頁 ( 5) 系統友好性。 排課系統與使用者應具有交互性,可以增加排課向導提示用戶的使用。 ( 6) 權限管理。主要針對管理員權限的用戶可以進行擁護的添加、修改和刪除。 3.3 排課系統的功能模塊 在系統分析的基礎上,我們提出了系統的功能模塊,如圖 2 所示。 教 務 排 課 系 統系 統 管 理 基 本 信 息 管 理 排 課 管 理系統幫助權限管理教師信息管理教室信息管理班級信息管理課程信息管理課程申請管理手動預排管理自動排課管理手動調節管理基本信息設置 圖 2 功能模塊圖 前面描述了教務排課系統的功能模塊劃分,但沒給出各模塊之間的關系。在本系統中,可以把模塊分為三個功能集合: (1) 系統管理功能集合。該集合包括權限管理和系統幫助兩個模塊。當使用者為管理員時可進行權限管理功能, 它能夠添加新的使用者,也可對已有的用戶進行名稱、密碼的修改和刪除。系統幫助功能介紹了開發系統的相干信息。 (2) 基本信息管理功能集合。該集合包括教師信息管理、教室信息管理、班級信息管理、課程信息管理、課程申請管理五個模塊。在該集合內可查看相應的數據表,對于管理員級別的用戶可對以上表的內容進行添加、修改、刪除的功能。對于一般用戶,只能實現查看信息的基本功能。 (3) 排課管理功能集合。在基本信息設置模塊中,可查看當前日期,又可設置限制排課的條件,如不加限制排課、不在晚上和星期六排課等。而一般用戶只能查看管理 員設置的條件。在排課時,管理員先在課程信息管理中設置好要預先排課的課程,然后調節限制排課的條件,就可以使用自動排課功能。用戶可在排好后的課表中查看課表,對于不滿意的課程安排可用手動進行相應的調節,而手動排課也可針對實驗課等靈活性的課程。 第 9 頁 共 25 頁 3.4 數據庫設計 ( 1)課程信息數據表 其中課程代碼唯一標識一門課程,課程類型用來確定課程優先級,而課程性質是課程所需教室條件的信息。如表 1 所示。 表 1 課程信息表 字段名稱 數據結構 說明 課程名稱 varchar 課程類別 varchar 考核方式 varchar 有考試、考查等 課程性質 varchar 有公共課、必修課等 說明 varchar ( 2)班級信息數據表 其中申請代碼唯一標識一個申請記錄,是否合班,合班班級,是否分班分別針對合班課與分班課設置。如表 2 所示。 表 2 班級信息表 字段名稱 數據結構 說明 班級名稱 varchar 班級人數 int 專業 varchar 包括系別 年級 varchar 班級碼 int 班級的編號 ( 3)教室信息數據表 其中教室代碼唯一標識一個教室,教室容量和性質分別判斷是否與班級和課程性質的相 匹配。如表 3 所示。 表 3 教室信息表 字段名稱 數據結構 說明 教室名稱 varchar 教室容量 int 即最大限度的上課人數 教室性質 varchar 一般教室、多媒體教室等 教室碼 int 教室的編號 第 10 頁 共 25 頁 ( 4)老師信息數據表 其中教師代碼唯一標識一位教師,教師職稱和學位確定教師優先級,住所判斷老師是否在校外居住,排課時給予一定的優先級。如表 4 所示。 表 4 老師信息表 字段名稱 數據結構 說明 老師姓名 varchar 無 職稱 varchar 無 學位 varchar 本科、碩士、博 士 住所 varchar 校內、校外 ( 5)課表信息數據表 表 5 是在用戶使用系統的“保存課表”功能鍵時自動生成。它實現自動清除、自動添加,具有流動性和可操作性。如表 5 所示。 表 5 課程安排信息表 字段名稱 數據結構 說明 申請碼 int 課程的編號 課程名 varchar 無 星期一 varchar 無 星期二 varchar 無 星期三 varchar 無 星期四 varchar 無 星期五 varchar 無 星期六 varchar 無 教室名 varchar 無 老師名 varchar 無 班級名 varchar 無 周課數 int 一周上課的次數 學分 int 無 開始周 int 從第幾周開始上課 周數 int 共上幾周的課時 是否預排課 bit 無 第 11 頁 共 25 頁 3.5 系統流程及代碼分析 3.5.1 系統流程圖 系統流程圖,如圖 3 所示。 計 算 總 課 時總 課 時 合 適 ?置 標 志讀 數 據 庫當 前 位 置 排 課 ?有 無 沖 突 ?寫 入 課 表排 課 結 束 ?保 存YNY沖 突 解 決YNYN結 束開 始N 圖 3 系統流程圖 系統流程圖主要針對排課過程 ,即當用戶設置好相應的排課條件、點擊“自動排課”項,系統所進行的流程。其中的“沖突解決”項有兩種解決方法:一是在系統運行時進行的自我調節,另 一種是運用手動排課功能解決。“寫入課表”項,是在運行時已完成寫入課表的功能,若用戶需要,可單擊“保存課表”項生成 Excel 格式的文本。 3.5.2 代碼分析 本系統主要由三部分構成:權限管理,各類信息管理,排課管理。 ( 1)權限管理模塊 第 12 頁 共 25 頁 該模塊可實現管理員級別用戶可以對所有用戶進行添加、刪除、修改的功能。以下摘錄保存功能的代碼: procedure Tfrm_yh.save_ButtonClick(Sender: TObject); begin if ( bSign = 0 ) then MessageDlg(請先添加或修改記錄! , mtInformation, mbOk,0) else begin if ( bSign = 1 )/添加 then with Table1 do begin Table1.First; while (not Eof) and (FieldValues用戶名稱 Name_Edit.Text) do Next; if FieldValues用戶名稱 =Name_Edit.Text then ShowMessageFmt(已有一個名為 %s 的用戶 +#13+請選另一個用戶名,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(添加用戶成功 !); end else begin Table1.Delete; Table1.InsertRecord(Name_Edit.Text, PW_Edit.Text, QX_ComboBox.Text); 第 13 頁 共 25 頁 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)各類信息管理模塊 該模塊包括課程申請管理、教室管理、老師管理、班級管理、課程信息管理。以下摘錄課程申請管理中的保存功能代碼: procedure Tfrm_Apply.Save_ButtonClick(Sender: TObject); begin if ( iSign = 0 ) then ShowMessage(請先添加或修改記錄 !) 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, 第 14 頁 共 25 頁 kcname_ComboBox.Text,lsname_ComboBox.Text,bjname_ComboBox.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課程名稱 :=kcname_ComboBox.Text; FieldValues教師姓名 :=lsname_ComboBox.Text; FieldValues班級名稱 :=bjname_ComboBox.Text; FieldValues周課數 :=StrToInt(zks_edit.Text); FieldValues學分 :=StrToInt(xf_edit.Text); FieldValues開始周 :=StrToInt(bweek_edit.Text); FieldValues周數 :=StrToInt(weeknum_edit.Text); FieldValues是否預排課 := YP_RadioButton.Checked; Post; end; ShowMessage(修改成功 !); ClearCaption; bSign := false; EditUnEnable; ButtonEnable; end; iSign := 0; Save_Button.Enabled := false; end; ( 3)排課管理模塊 第 15 頁 共 25 頁 該模塊可進行預排課的設置、自動排課、手動調節功能。在自動排課中分為三步:首先賦權值,其次再檢測各種沖突,最后實現排課過程。 a.權值計算: 設置的權值有:課程信息的權值(包括課程類別、課程性質),班級信息的權值(包括年級),教師信息的權值(包括職稱、學位)。 以班級信息權值設 置為例: with bjADOTable do for i := 0 to appNum - 1 do begin First; while FieldValues班級名稱 appi.className do Next; if FieldValues年級 = 1 年級 then appi.currentValue := appi.currentValue + 12 else if FieldValues年級 = 2 年級 then appi.currentValue := appi.currentValue + 9 else if FieldValues年級 = 3 年級 then appi.currentValue := appi.currentValue + 6 else if FieldValues年級 = 4 年級 then appi.currentValue := appi.currentValue + 3; b.檢測沖突: 檢測的沖突有:在同一天是否已經排過課,(預)排課的教室沖突,所安排的教室是否合適(包 括教室人數、容量、性質)。 以(預)排課的教室沖突為例: function Tfrm_Main.dynamicTest( day : integer; time : integer; current : integer ):Boolean; var t1,t2,room:integer; begin dynamicTest := true; for room := 0 to roomNum - 1 do if( arrdaytimeroom0 = 0 ) then continue else 第 16 頁 共 25 頁 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 = appcurrent.className ) or ( appt2.teaName = appcurrent.teaName ) or ( appt2.className = appcurrent.className ) then begin dynamicTest := false; break; end; end; end; c.排課算法: 摘錄設置為“不加限制排課”的代碼為例: procedure Tfrm_Main.FirstFind1( m : integer;var a : appRecord ); var i, j, k : Integer; succ: boolean; begin i := 0;/星期 j := 0;/節數 k := 0;/教室號 succ := true; while( arrijk0 0 )or (not RoomCheck(a,k)or (not dynamicTest( i, j, m ) 第 17 頁 共 25 頁 ) 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 else if (i4) and (j=1)or(j=3) then begin 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 (i4) and (j=4) then begin 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 (jRun 命令,則會出現系統的登錄界面。 a. 登錄界面,如圖 5 所示: 第 19 頁 共 25 頁 圖 5 登錄界面 說明 :輸入用戶名和密碼,單擊“確定”按鈕,當身份驗證成功后進入檔案管理系統主界面。單擊“取消”退出登錄窗口。 b. 主界面,如圖 6 所示: 圖 6 主界面 說明 :主界面由三部分組成:基本信息管理、基本條件設置、預排課、自動排課及手動調節。在菜單欄中,分為系統、信息管理、幫助菜單。“系統”菜單含用戶管理和退出功能。“信息管理 ”可查看基本信息。“幫助”中可查看教務排課系統的相應信息。 c. 如身份驗證失敗,則出現如圖 7 所示的提示信息框 圖 7 錯誤提示信息 說明 : 點擊 “ OK” 返回登錄界面 ,重新輸入用戶名和密碼。 d. 點擊 “ 基本信息管理 ” 中的 課程申請管理界面為例 ,如圖 8 所示: 第 20 頁 共 25 頁 圖 8 課程申請管理 說明 :選中某一記錄后可進行刪除和修改的功能 ,也可直接添加記錄 ,修改完后點擊保存或退出完成管理。 e. 基本條件設置管理界面 ,如圖 9 所示: 圖 9 基本條件設置 說明:教學公歷上顯示為當前日期 ,“ 排課條件設置 ” 中設置需要的排課條件 。 f. 排課管理界面 ,如圖 10 所示: 第 21 頁 共 25 頁 圖 10 排課管理 說明:點擊“清空”可清空上次所排信息,點擊“自動排課”能實現自動排課功能,點擊“檢測沖突”可檢測當前排課有無沖突。點擊“保存課表”能將排課信息保存為 excel 格式。 g. 權限管理界面 ,如圖 11 所示: 圖 11 權限管理 說明:權限管理是當管理員用戶在“系統”菜單內的設置。在這里可進行用戶的添加、刪除、修改等功能。 ( 2)一般用戶權限 一般用戶與管理員用戶的區別在于他只能查看相應信息,不能進行其他操作。以排課管理界面為例 ,如圖 12 所示: 第 22 頁 共 25 頁 圖 12 一般用戶界面 說明:一般用戶的界面設計上與管理員用戶基本相同,只有某些按鈕被屏蔽,不能實現相應功能。 其中的清空、自動排課、保存課表鍵被屏蔽,用戶無法進行操作。 4.3 測試結果 教務排課系統是一款基于動態加權算法的人性化的教務軟件,它采用手動預排 自動排課 手動調節的三步排課模式,具有以下特點: (1) 課表合理:具有預排,合班等功能,排出的課表合理性較強。 (2) 排課靈活:采用了局部范圍內的動態隨機加權,排出的課表具有靈活的特點,使用者可以在多次排課中選擇自己認為合適的課表。 (3) 操作便 捷:系統界面簡單明了,用戶很容易掌握對排課軟件的使用。 (4) 人性化:系統界面美觀,具有很強的交互性。 結 論 在分析以往一些排課系統的基礎上,本設計提出一個基于動態加權算法(即貪婪法)的排課系統設計方案,采用手動預排、自動排課、手動調節的三級排課模式,并對一些具體的技術問題做出相應安排。該方案采用 C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 六年級英語上冊 Unit 2 School in Canada Lesson 11 Always do your homework教學設計 冀教版(三起)
- 九年級數學下冊 第二十七章 相似27.2 相似三角形27.2.2 相似三角形的性質教學設計 (新版)新人教版
- 2024四川研泰糧食儲備有限責任公司公開招聘2人筆試參考題庫附帶答案詳解
- 七年級生物上冊 第一單元 第二節 生物的生活環境教學設計 新人教版
- 人教版《道德與法治》七年級下冊2.2 青春萌動 教學設計
- 交接手續完善表
- 人教版 (2019)必修 第二冊第八章 機械能守恒定律3 動能和動能定理教案
- 冀教版一年級下冊五 100以內的加法和減法(一)教案
- 2024四川國經揚華集團有限公司綜合辦公室副主任崗市場化招聘1人筆試參考題庫附帶答案詳解
- 人教版 (2019)必修 第一冊第二節 太陽對地球的影響一等獎教案設計
- 設備操作與安全培訓模板
- 北師大版二年級下冊數學計算題300道及答案
- 投標項目分析報告案例模板
- 體檢中心品管圈課件
- 中醫治療精神疾病的
- 大樹移植方案可行性論證
- 人民衛生出版社選題表
- 外陰、陰道上皮內瘤樣病變的診治
- 重慶外國語學校2024屆化學高二第一學期期中綜合測試模擬試題含解析
- 【基于機器學習的旅游景區日客流量預測方法文獻綜述4500字】
- 《控制工程基礎》實驗指導書(新)
評論
0/150
提交評論