畢業(yè)設(shè)計(jì)-考場(chǎng)安排系統(tǒng)的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)論文.doc
《畢業(yè)設(shè)計(jì)-考場(chǎng)安排系統(tǒng)的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)論文.doc》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《畢業(yè)設(shè)計(jì)-考場(chǎng)安排系統(tǒng)的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)論文.doc(45頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、考場(chǎng)安排系統(tǒng)的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)摘 要隨著社會(huì)的不斷進(jìn)步,各個(gè)領(lǐng)域?qū)π畔⒒枨蟛粩嘣黾?,同時(shí)智能化水平也在不斷提升,高等教育的教務(wù)管理信息化要求也越來(lái)越高。“考場(chǎng)安排系統(tǒng)”是根據(jù)的信息化需求進(jìn)行開(kāi)發(fā)的。該系統(tǒng)采用了VC+6.0作為代碼編寫(xiě)工具,并使用ACCESS數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)和處理數(shù)據(jù)。通過(guò)對(duì)國(guó)內(nèi)外專(zhuān)家學(xué)者在考場(chǎng)安排系統(tǒng)中的研究成果的分析之后,我們總結(jié)出一些系統(tǒng)開(kāi)發(fā)的思路,并根據(jù)高校的實(shí)際資源狀況進(jìn)行有效、合理的考場(chǎng)安排??紙?chǎng)關(guān)鍵詞:考場(chǎng)安排,數(shù)據(jù)庫(kù)設(shè)計(jì),手工考場(chǎng)安排,數(shù)據(jù)集合,半自動(dòng)安排ZHEJIANG GONGSHANG UNIVERSITY NIGHT SCHOOL EXAMINATION A
2、RRANGEMENTS SYSTEM SYSTEM DESIGN AND SYSTEM TO IMPLEMENTATIONABSTRACTAs society advances in all fields of information technology increasing demand while intelligent level has also been upgraded. Our Zhejiang Gongshang University Night School Examination Arrangements System is based on requirement of
3、 development of Night School information. The system used as a code VC+6.0 preparation tools and the use of Access database to store and process data. Through examination arrangements for domestic and foreign experts and scholars in the research system analysis, we summed up the development of some
4、systems thinking, and based on the actual night of Zhejiang Gongshang University and resources for effective and rational examination place.KEYWORDS:Examination Arrangements,Database Design,Manual Examination Arrangements,Data Pool,Semi-automaticExamination Arrangement 目 錄 第一章 引言 81.1 選題背景和選題意義 81.1
5、.1 選題背景81.1.2 選題意義 81.2 當(dāng)前考場(chǎng)安排系統(tǒng)的研究現(xiàn)狀 8第二章 系統(tǒng)設(shè)計(jì) 102.1 系統(tǒng)功能分析 102.2 系統(tǒng)功能模塊設(shè)計(jì) 10第三章 數(shù)據(jù)庫(kù)設(shè)計(jì) 1031 數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì) 1232 數(shù)據(jù)庫(kù)需求分析 1333 數(shù)據(jù)庫(kù)安全認(rèn)證以及基本數(shù)據(jù)操作 15第四章 各功能模塊建立 164.1 用戶(hù)登入模塊 164.2 資料管理模塊 174.2.1 教室資料管理模塊184.2.2 其他模塊 184.3 考場(chǎng)安排模塊 204.3.1 手工考場(chǎng)安排 204.3.2 半自動(dòng)考場(chǎng)安排244.3.3 考場(chǎng)安排基本條件 254.3.4 考場(chǎng)安排特殊條件 26第五章 系統(tǒng)實(shí)現(xiàn) 275.1
6、系統(tǒng)功能實(shí)現(xiàn)275.2 系統(tǒng)環(huán)境配置325.3 開(kāi)發(fā)工具介紹335.4 系統(tǒng)測(cè)試34第六章 結(jié)論與展望 35致謝 36參考文獻(xiàn) 37附錄(核心代碼) 38 45考場(chǎng)安排系統(tǒng)的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)第一章 引言11 選題背景和選題意義111 選題背景隨著高校招生規(guī)模的不斷擴(kuò)大,高校在考場(chǎng)安排方面的花費(fèi)越來(lái)越大,因此如何更加有效、合理地安排考場(chǎng)并合理利用現(xiàn)有資源,進(jìn)一步提高現(xiàn)有資源的利用率已經(jīng)為各大高校的學(xué)校領(lǐng)導(dǎo)所關(guān)注。由于近些年來(lái)各大高校的不斷擴(kuò)招,考場(chǎng)安排管理工作越來(lái)越復(fù)雜,給學(xué)校成教考務(wù)管理工作帶來(lái)了巨大的壓力。傳統(tǒng)的考場(chǎng)安排工作基本是由人工來(lái)完成,其工作工程和基礎(chǔ)主要依賴(lài)操作人員的經(jīng)驗(yàn),類(lèi)似相關(guān)工
7、作不僅比較煩瑣而且往往帶來(lái)的是花費(fèi)巨大并且質(zhì)量不高的后果。112 選題意義 考場(chǎng)安排系統(tǒng)能夠在一定程度上解決在考場(chǎng)安排中人力、物力財(cái)力浪費(fèi)以及資源的不合理調(diào)配,并且能夠適應(yīng)數(shù)據(jù)的動(dòng)態(tài)變化,做到真正意義上的一勞永逸??紙?chǎng)安排是一個(gè)學(xué)校整個(gè)考務(wù)系統(tǒng)中相當(dāng)重要的環(huán)節(jié),如果由于考場(chǎng)安排編排表的制作周期延長(zhǎng)而影響了正常的考試,那么將給學(xué)校的正常運(yùn)做帶來(lái)難以估計(jì)的后果。所以從考場(chǎng)安排的周期來(lái)考慮的話(huà),一個(gè)能夠快速制作,編排合理的考場(chǎng)安排系統(tǒng)就是一個(gè)優(yōu)秀的考場(chǎng)安排系統(tǒng)。12 當(dāng)前考場(chǎng)安排系統(tǒng)的研究現(xiàn)狀國(guó)內(nèi)在考場(chǎng)安排系統(tǒng)的研究中基本上是根據(jù)特定條件進(jìn)行的,一般都是某個(gè)或者某些學(xué)校的特定情況,很少有可以通用的考
8、場(chǎng)安排系統(tǒng)。因此對(duì)每個(gè)學(xué)校的不同情況都需要進(jìn)行一次系統(tǒng)設(shè)計(jì)和開(kāi)發(fā)?,F(xiàn)在的排課系統(tǒng)大都是模擬手工排課過(guò)程,以“班級(jí)”為單位,運(yùn)用啟發(fā)式函數(shù)來(lái)進(jìn)行編排的。這種課表編排系統(tǒng)有優(yōu)勢(shì)也有劣勢(shì),優(yōu)勢(shì)在于實(shí)現(xiàn)比較容易,但是劣勢(shì)在于往往他兼容性較差,只能適合某類(lèi)學(xué)校甚至某個(gè)學(xué)校。另外的一種應(yīng)用趨勢(shì)就是基于優(yōu)先級(jí)的自動(dòng)編排算法17,它是通過(guò)劃分等價(jià)類(lèi)、計(jì)算優(yōu)先級(jí)等方法降低課程調(diào)度的算法復(fù)雜度, 采用簡(jiǎn)潔高效的快速排序和考場(chǎng)安排表匹配的方法,并引用操作系統(tǒng)中優(yōu)先級(jí)調(diào)度的算法,對(duì)每一次的排序和考場(chǎng)安排表匹配進(jìn)行優(yōu)化控制,并且它引入了信號(hào)量的概念對(duì)每次考場(chǎng)安排結(jié)果進(jìn)行驗(yàn)證和評(píng)定,最后產(chǎn)生適合需求的編排表,從而可以以較
9、快的速度獲得較為滿(mǎn)意的考場(chǎng)安排結(jié)果,這種算法具有較高的兼容性。因此這種編排思想的可參考性較高,應(yīng)用到我們的考場(chǎng)安排系統(tǒng)的機(jī)會(huì)也比較大。采用網(wǎng)絡(luò)化的考場(chǎng)安排系統(tǒng)也是一個(gè)較新的研究方向,國(guó)內(nèi)已經(jīng)有了網(wǎng)絡(luò)化考場(chǎng)安排系統(tǒng)的成功案例,這種網(wǎng)絡(luò)化的考場(chǎng)安排系統(tǒng)是建立在學(xué)校校園網(wǎng)絡(luò)的基礎(chǔ)之上,為解決教師不能隨時(shí)隨地查詢(xún)考場(chǎng)安排情況,以及根據(jù)實(shí)際需要調(diào)整教室和時(shí)間,當(dāng)遇到某個(gè)教師臨時(shí)重要事件不能及時(shí)參加監(jiān)考時(shí)可以及時(shí)更換合適的監(jiān)考教師。這種網(wǎng)絡(luò)化的考場(chǎng)安排系統(tǒng)在發(fā)生突發(fā)事件時(shí)顯得很有效,而且對(duì)于未來(lái)考場(chǎng)安排發(fā)展可能會(huì)占據(jù)主流位置。解決考場(chǎng)安排問(wèn)題還有很多方法,比如說(shuō)圖論方法,拉格朗日松弛法模擬退火法,二次分配
10、型法等等。這些算法研究不僅僅依靠單純的數(shù)學(xué)方法來(lái)解決問(wèn)題,而且還利用了運(yùn)籌學(xué)中比如最短路徑算法、著色算法等等。所以根據(jù)現(xiàn)在研究的經(jīng)驗(yàn)我們需要充分利用運(yùn)籌學(xué)思想將整個(gè)問(wèn)題細(xì)化,并逐步進(jìn)行解決,這樣才能夠做出完美的考場(chǎng)安排系統(tǒng)。當(dāng)然對(duì)于一個(gè)考場(chǎng)安排系統(tǒng)來(lái)說(shuō)最主要的是它的智能化程度,也就是系統(tǒng)對(duì)于考場(chǎng)安排的合理化程度。目前還沒(méi)有完全智能的考場(chǎng)安排系統(tǒng),主要原因是因?yàn)椴淮_定因素過(guò)多,而且考慮的情況也有千千萬(wàn)萬(wàn)。而不確定因素又往往根據(jù)高校的特殊情況又會(huì)產(chǎn)生其他不確定因素。所以,對(duì)于一個(gè)考場(chǎng)安排系統(tǒng)的研究我覺(jué)得不僅僅應(yīng)該在算法上做深入的研究,還要對(duì)實(shí)際情況進(jìn)行深入分析,如果能夠充分考慮到考場(chǎng)安排時(shí)可能產(chǎn)生
11、沖突的因素,那么這樣呈現(xiàn)在我們面前的將是一個(gè)好的考場(chǎng)安排系統(tǒng)。第二章 系統(tǒng)設(shè)計(jì)21 系統(tǒng)功能分析 本系統(tǒng)需要實(shí)現(xiàn)用戶(hù)登入、考場(chǎng)編排以及信息錄入等,所以主要模塊包括:用戶(hù)登入、資料管理和考場(chǎng)安排等模塊。其中包含的主要功能有:l 用戶(hù)登入,授權(quán)用戶(hù)通過(guò)輸入用戶(hù)名和密碼進(jìn)入本系統(tǒng)進(jìn)行相關(guān)操作。l 資料管理,包括教室資料、班級(jí)資料、監(jiān)考教師資料、專(zhuān)業(yè)課程等四項(xiàng)基本信息的添加、修改、刪除的操作。l 考場(chǎng)安排手動(dòng)生成,通過(guò)手工固定班級(jí)課程手動(dòng)安排具有固定記錄數(shù)的考場(chǎng)安排系統(tǒng)。l 考場(chǎng)安排半自動(dòng)生成,通過(guò)電腦隨機(jī)分配教室和教師來(lái)達(dá)到考場(chǎng)的半自動(dòng)安排。以上所列功能是考場(chǎng)安排系統(tǒng)所必需的功能,實(shí)現(xiàn)以上這些功能之
12、后我們就可以根據(jù)需要添加輔助功能。22 系統(tǒng)功能模塊設(shè)計(jì)對(duì)于“考場(chǎng)安排系統(tǒng)”來(lái)說(shuō),最重要的當(dāng)然是考場(chǎng)安排這個(gè)環(huán)節(jié),所以考場(chǎng)安排模塊是必不可少的。對(duì)于數(shù)據(jù)量小的情況我們采取手動(dòng)安排考場(chǎng),當(dāng)數(shù)據(jù)量大的情況下我們考慮半自動(dòng)考場(chǎng)安排,也就是先電腦自動(dòng)進(jìn)行編排之后再人工手動(dòng)進(jìn)行修改,所以這樣我們就有必要建立兩個(gè)考場(chǎng)安排模式:手動(dòng)生成考場(chǎng)安排表和半自動(dòng)生成考場(chǎng)安排表。實(shí)現(xiàn)這兩個(gè)功能我們需要數(shù)據(jù)來(lái)支持,由于我們采用的是ACCESS數(shù)據(jù)庫(kù),所以表名稱(chēng)可以用中文來(lái)描述,這樣顯得比較直觀。根據(jù)考場(chǎng)安排所涉及的屬性我們將某些屬性集合在一起,并獨(dú)立在四張表中,即:教室表、教師表、班級(jí)表、專(zhuān)業(yè)課程表,其中班級(jí)表和專(zhuān)業(yè)課
13、程表又可以做一個(gè)視圖,用來(lái)存放班級(jí)和專(zhuān)業(yè)課程的數(shù)據(jù)集合。當(dāng)確定了表之后我們就需要考慮建立提供信息錄入的界面,并且需要提供增加、修改、刪除等功能。為了保證系統(tǒng)的安全性我們還需要考慮加入身份認(rèn)證功能,這是系統(tǒng)安全所必需的。當(dāng)然系統(tǒng)還需要美工,雖然這些不是系統(tǒng)的重點(diǎn),但是一個(gè)能夠吸引人眼球的系統(tǒng)能夠讓人有種舒適的感覺(jué),使用者的心情會(huì)用的舒服。所以我們?cè)谙到y(tǒng)的設(shè)計(jì)中穿插幾張帶有輕松元素的圖片,增加了界面的美觀程度。系統(tǒng)設(shè)計(jì)時(shí)我們考慮實(shí)現(xiàn)一個(gè)查詢(xún)功能,可以根據(jù)班級(jí)查詢(xún)?cè)摪嗉?jí)的課程考試安排情況,根據(jù)考試時(shí)間和教室的編號(hào)來(lái)用于教學(xué)樓的考場(chǎng)安排情況,以便能夠讓自修的同學(xué)知道哪些教室安排考場(chǎng),并到空的教室自修等
14、。還可以添加打印功能來(lái)提供考場(chǎng)安排表的打印。對(duì)于大的模塊設(shè)計(jì)框架基本搭建完畢。我們現(xiàn)在所要考慮的是系統(tǒng)的智能化以及考場(chǎng)編排表的制作周期、合理化程度。對(duì)于一個(gè)考場(chǎng)安排系統(tǒng)來(lái)說(shuō)智能化水平看的是考場(chǎng)安排這個(gè)模塊,所以我們?cè)诳紙?chǎng)安排時(shí)班級(jí)課程首先生成,這樣就能對(duì)所要安排的系統(tǒng)的記錄數(shù)固定下來(lái),并且可適當(dāng)利用隨即數(shù)來(lái)增加課表編排的可換性。對(duì)于周期問(wèn)題的改善主要還是依賴(lài)于算法對(duì)客觀不確定因素的可確定能力,也就是對(duì)不確定因素做一些限制,而除了這些限制條件以外都是系統(tǒng)可接受的,那么通過(guò)諸如隨即數(shù)或者其他方法就可以進(jìn)行有限制地選擇,這樣保證了沖突發(fā)生的概率不會(huì)過(guò)大。對(duì)系統(tǒng)不確定因素的分析是整個(gè)系統(tǒng)合理性的主要焦
15、點(diǎn)。第三章 數(shù)據(jù)庫(kù)設(shè)計(jì)31 數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)利用實(shí)體-關(guān)系模型(E-R模型)可以表示數(shù)據(jù)庫(kù)表之間的關(guān)聯(lián),圖3.6是考場(chǎng)安排系統(tǒng)中數(shù)據(jù)庫(kù)表之間的E-R圖。從E-R圖中我們可以看出數(shù)據(jù)庫(kù)的各個(gè)模塊之間沒(méi)有直接的參數(shù)聯(lián)系以及庫(kù)的交叉關(guān)聯(lián),從而使數(shù)據(jù)庫(kù)其他數(shù)據(jù)能夠獨(dú)立運(yùn)行,并且在某一數(shù)據(jù)變動(dòng)的情況下不會(huì)影響其他數(shù)據(jù)的正常運(yùn)行。通過(guò)E-R圖我們可以很直觀的看出考場(chǎng)安排表中的班級(jí)名稱(chēng)和課程名稱(chēng)來(lái)源于班級(jí)表和專(zhuān)業(yè)課程表的關(guān)聯(lián),而他們之間關(guān)聯(lián)之后能夠?qū)紙?chǎng)安排表的記錄數(shù)做出限制,也就是說(shuō)班級(jí)名稱(chēng)和課程名稱(chēng)構(gòu)成了考場(chǎng)安排表的主鍵。在這個(gè)E-R圖中監(jiān)考教師表被使用兩次,用于調(diào)用教師一和教師二,但是在E-R圖里我
16、們把他們放在同一表內(nèi)。圖3.6 浙江工商大學(xué)夜大考場(chǎng)安排系統(tǒng)E-R圖N:1專(zhuān)業(yè)課程專(zhuān)業(yè)編號(hào)課程編號(hào)班級(jí)班級(jí)編號(hào)專(zhuān)業(yè)編號(hào)教室教室編號(hào)是否大教室監(jiān)考教師教師編號(hào)教師名稱(chēng)考場(chǎng)安排表班級(jí)名稱(chēng)課程名稱(chēng)教室編號(hào)教師一教師二考試日期N:1N:1N:132 數(shù)據(jù)庫(kù)需求分析根據(jù)數(shù)據(jù)前面介紹的對(duì)數(shù)據(jù)的要求,我們可以列出考場(chǎng)安排系統(tǒng)中所需的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)(表3.1中為詳細(xì)的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)):l 教室:教室編號(hào)、是否大教室。符合第三范式。l 班級(jí):班級(jí)編號(hào)、班級(jí)名稱(chēng)、專(zhuān)業(yè)編號(hào)、班級(jí)人數(shù)。符合第三范式。l 監(jiān)考教師:教師編號(hào)、教師名稱(chēng)。符合第三范式。l 專(zhuān)業(yè)課程:專(zhuān)業(yè)編號(hào)、課程編號(hào)、專(zhuān)業(yè)名稱(chēng)、課程名稱(chēng)、考試時(shí)間。符
17、合第三范式。l 考場(chǎng)安排表:班級(jí)名稱(chēng)、課程名稱(chēng)、教室編號(hào)、教師一、教師二、考試日期。符合第三范式。存放關(guān)聯(lián)的數(shù)據(jù)的視圖以及一些臨時(shí)表:l 班級(jí)專(zhuān)業(yè)課程視圖:用于關(guān)聯(lián)班級(jí)和課程,包括班級(jí)名稱(chēng)、專(zhuān)業(yè)編號(hào)、專(zhuān)業(yè)名稱(chēng)、課程名稱(chēng)、考試時(shí)間(如表3.2)。l 臨時(shí)班級(jí)課程教室表:存放半自動(dòng)考場(chǎng)安排臨時(shí)數(shù)據(jù)的表,包括班級(jí)名稱(chēng)、課程名稱(chēng)、考試時(shí)間、教室編號(hào)、教師一、教師二(如表3.3)。l 臨時(shí)班級(jí)課程表:用于存放臨時(shí)班級(jí)的班級(jí)課程,包括班級(jí)名稱(chēng)、課程名稱(chēng)、考試時(shí)間(如表3.4)。l 登入表:用于授權(quán)用戶(hù)登入認(rèn)證,包括用戶(hù)名、密碼。兩個(gè)屬性都是文本類(lèi)型(如表3.5),該表符合第三范式。表3.1 考場(chǎng)安排系統(tǒng)中
18、所需的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)庫(kù)表字段名稱(chēng)字段類(lèi)型類(lèi)型長(zhǎng)度是否主鍵班級(jí)班級(jí)編號(hào)文本10是班級(jí)名稱(chēng)文本20否專(zhuān)業(yè)編號(hào)文本10否班級(jí)人數(shù)數(shù)字整型否監(jiān)考教師教師編號(hào)文本10是教師姓名文本20否表3.1 考場(chǎng)安排系統(tǒng)中所需的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)教室教室編號(hào)文本10是是否大教室是/否(布爾)1否專(zhuān)業(yè)課程專(zhuān)業(yè)編號(hào)文本10是課程編號(hào)文本10否專(zhuān)業(yè)名稱(chēng)文本20否課程名稱(chēng)文本30否考試時(shí)間文本10否考試安排表班級(jí)名稱(chēng)文本20是課程名稱(chēng)文本30教室編號(hào)文本10否教師一文本20否教師二文本20否考試日期文本10否表3.2班級(jí)專(zhuān)業(yè)課程視圖字段名稱(chēng)數(shù)據(jù)類(lèi)型類(lèi)型長(zhǎng)度是否主鍵班級(jí)名稱(chēng)文本20否專(zhuān)業(yè)編號(hào)文本10否專(zhuān)業(yè)名稱(chēng)文本20否課
19、程名稱(chēng)文本30否考試時(shí)間文本10否表3.3臨時(shí)班級(jí)課程教室表字段名稱(chēng)字段類(lèi)型類(lèi)型長(zhǎng)度是否主鍵班級(jí)名稱(chēng)文本20是課程名稱(chēng)文本30考試時(shí)間文本10否教室編號(hào)文本10否教師一文本20否教師二文本20否表3.4臨時(shí)班級(jí)課程表字段名稱(chēng)字段類(lèi)型類(lèi)型長(zhǎng)度是否主鍵班級(jí)名稱(chēng)文本20否課程名稱(chēng)文本30否考試時(shí)間文本10否表3.5 登入表字段名稱(chēng)字段類(lèi)型類(lèi)型長(zhǎng)度是否主鍵用戶(hù)名文本20是密碼文本20否33數(shù)據(jù)庫(kù)安全認(rèn)證以及基本數(shù)據(jù)操作對(duì)基本數(shù)據(jù)的操作需要通過(guò)安全認(rèn)證,也就是用戶(hù)的身份認(rèn)證對(duì)于基本數(shù)據(jù)的操作我們可以在進(jìn)入系統(tǒng)之后的,權(quán)限用戶(hù)通過(guò)對(duì)資料管理模塊中班級(jí)資料、教室資料、監(jiān)考教師資料以及專(zhuān)業(yè)課程的資料的添加、修
20、改和刪除的操作來(lái)對(duì)考場(chǎng)安排所需的數(shù)據(jù)進(jìn)行調(diào)整。在基本數(shù)據(jù)的輸入規(guī)則雖然沒(méi)有明確的定義,但是我們可以對(duì)格式進(jìn)行統(tǒng)一,比如根據(jù)習(xí)慣有的人喜歡將日期輸入為“某年.某月.某日”,有的人喜歡“某年-某月-某日”,而我們的數(shù)據(jù)表中定義了文本類(lèi)型,所以可以根據(jù)習(xí)慣使用任何一種,但是為了美觀起見(jiàn),最好格式統(tǒng)一。第四章 各功能模塊的創(chuàng)建41 用戶(hù)登入模塊用戶(hù)登入模塊是建立在主窗體上用于進(jìn)入系統(tǒng)的唯一通道。它包括了四個(gè)TLabel、一個(gè)Edit 、一個(gè)COMBOX、兩個(gè)Button。在兩個(gè)TEdit中分別輸入用戶(hù)名和密碼,然后通過(guò)點(diǎn)擊登陸按鈕對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢(xún)來(lái)驗(yàn)證用戶(hù)的合法性,并通過(guò)在輸入錯(cuò)誤信息后彈出對(duì)話(huà)框提示
21、用戶(hù)重新輸入.在程序初始化時(shí)從數(shù)據(jù)庫(kù)中取出所有權(quán)限用戶(hù)的用戶(hù)名,顯示在下拉列表框中。登入界面如圖4.1所示。在這個(gè)界面中最重要的是對(duì)記錄的對(duì)比,也就是用戶(hù)用戶(hù)名和密碼的校驗(yàn)。校驗(yàn)的核心代碼如下:CString strSQL,strName,strPas,passward,m_strJiaose;m_id.GetWindowText(strName);if(Degree=3)MessageBox(對(duì)不起!您無(wú)權(quán)登錄!,系統(tǒng)提示,MB_OK|MB_ICONSTOP);this-OnCancel();return;if(strName.IsEmpty()MessageBox(請(qǐng)選擇用戶(hù)名!,系統(tǒng)提示
22、,MB_OK|MB_ICONSTOP);Degree=Degree+1;return;strSQL.Format(Select * from 登陸 where 用戶(hù)名=%s, strName); m_RecordsetPtr=theApp.m_pAdo.ReadDataBase(strSQL);m_psw.GetWindowText(passward);strPas=(char*)(_bstr_t)m_RecordsetPtr-GetCollect(密碼);strPas.TrimLeft();strPas.TrimRight();if (passward = strPas)CMyDlg dlg
23、;this-OnCancel();dlg.DoModal();elseMessageBox(您輸入的密碼不正確!請(qǐng)重新輸入!,系統(tǒng)提示,MB_OK|MB_ICONSTOP);Degree=Degree+1;圖4.1用戶(hù)登入界面42 資料管理模塊在Mainmenu組件中加入資料管理模塊,它主要包括了四個(gè)小模塊:教室資料、班級(jí)資料、監(jiān)考教師資料、專(zhuān)業(yè)課程資料。資料管理模塊及其子模塊顯示如圖4.2所示。圖4.2資料管理模塊421 教室資料管理模塊教室資料模塊的主要功能是輸入考場(chǎng)安排所需要的教室信息。其控件布局如圖4.3所示, 由一個(gè)listctrl控件來(lái)顯示所有的教室資料信息,教室資料的所有信息包括
24、列名,所有數(shù)據(jù)均由數(shù)據(jù)庫(kù)中取出自動(dòng)生成。當(dāng)用戶(hù)選擇其中的一行數(shù)據(jù)后,在下面的EDIT控件與COMBOX控件中就會(huì)自動(dòng)出現(xiàn)教室編號(hào)與教室是否為大教室的選擇。界面中有四個(gè)控制數(shù)據(jù)庫(kù)基本操作的BUTTON,分別完成插入、刪除、修改等數(shù)據(jù)庫(kù)的基本操作,并提供數(shù)據(jù)庫(kù)操作的合法性檢驗(yàn)。圖4.3教室資料管理422其它模塊除了教室資料管理模塊之外,模塊中還包括了班級(jí)資料、監(jiān)考教師資料、專(zhuān)業(yè)課程資料三大模塊。這三大模塊的設(shè)計(jì)基本與教室資料管理相似。這三個(gè)模塊所示如圖4.4。圖4.4 監(jiān)考教師資料管理、班級(jí)資料管理、專(zhuān)業(yè)課程資料界面43 考場(chǎng)安排模塊這個(gè)模塊是整個(gè)“考場(chǎng)安排系統(tǒng)”的核心,重要包含了手工考場(chǎng)安排和半
25、自動(dòng)考場(chǎng)安排兩個(gè)子模塊。對(duì)于這兩個(gè)模塊的實(shí)現(xiàn)要求和一些設(shè)計(jì)思路我們會(huì)在下面做詳細(xì)說(shuō)明。431 手工考場(chǎng)安排界面設(shè)計(jì)如圖4.6所示,程序設(shè)計(jì)的步驟為:1、-如果同一監(jiān)考教師在同一時(shí)間在 兩個(gè)不同的地方進(jìn)行監(jiān)考,則發(fā)生錯(cuò)誤;2、課程名稱(chēng)與考試時(shí)間對(duì)應(yīng),通過(guò)課程名稱(chēng)檢索出考試時(shí)間;3、檢索考試安排表中,監(jiān)考教師對(duì)應(yīng)的考試時(shí)間,檢索出所有教師一或教師二對(duì)應(yīng)的考試時(shí)間;4、同一個(gè)教室在同一時(shí)間不可能提供兩門(mén)不同的課程的考試,課程名稱(chēng)與考試時(shí)間對(duì)應(yīng),通過(guò)課程名稱(chēng)檢索出考試時(shí)間;5、什么專(zhuān)業(yè)的學(xué)生考什么課程,班級(jí)名稱(chēng)對(duì)應(yīng)一個(gè)專(zhuān)業(yè)編號(hào),專(zhuān)業(yè)編號(hào)對(duì)應(yīng)一個(gè)課程名稱(chēng);6、把合法的信息全部插入到考試安排表中,刷新所有
26、列表現(xiàn)實(shí)。圖4.6 手工考場(chǎng)安排界面在手動(dòng)考場(chǎng)安排中,最重要的是對(duì)用戶(hù)輸入的數(shù)據(jù)進(jìn)行糾錯(cuò),通過(guò)對(duì)話(huà)框的形式與用戶(hù)進(jìn)行交互。而通常我們所使用的糾錯(cuò)方法的代碼如下:CString strJS1,strJS2,strBJMC,strSQL;m_js1.GetWindowText(strJS1);m_js2.GetWindowText(strJS2);m_bjmc.GetWindowText(strBJMC);CString strKCMC,strKSSJ;m_kcmc.GetWindowText(strKCMC);strSQL.Format(select 考試時(shí)間 from 專(zhuān)業(yè)課程 where 課
27、程名稱(chēng) = %s,strKCMC);m_RecordsetPtr=theApp.m_pAdo.ReadDataBase(strSQL);m_RecordsetPtr-MoveFirst();while(!m_RecordsetPtr-adoEOF)strKSSJ=(char*)(_bstr_t)m_RecordsetPtr-GetCollect(考試時(shí)間);m_RecordsetPtr-MoveNext();/-檢索考試安排表中,監(jiān)考教師對(duì)應(yīng)的考試時(shí)間-strSQL.Format(select 考試日期 from 考試安排 where 教師一=%s or 教師二=%s ,strJS1,strJ
28、S1);m_RecordsetPtr=theApp.m_pAdo.ReadDataBase(strSQL);/檢索出所有教師一對(duì)應(yīng)的考試時(shí)間if (m_RecordsetPtr!=FALSE) m_RecordsetPtr-MoveFirst();while(!m_RecordsetPtr-adoEOF)if (strKSSJ=(char*)(_bstr_t)m_RecordsetPtr-GetCollect(考試日期) CString tmp;tmp.Format(%s在本日期已有其他考試安排,請(qǐng)安排其他老師監(jiān)考!,strJS1);AfxMessageBox(tmp);return;brea
29、k;m_RecordsetPtr-MoveNext();strSQL.Format(select 考試日期 from 考試安排 where 教師一=%s or 教師二=%s ,strJS2,strJS2);m_RecordsetPtr=theApp.m_pAdo.ReadDataBase(strSQL);/檢索出所有教師一對(duì)應(yīng)的考試時(shí)間if (m_RecordsetPtr!=FALSE) m_RecordsetPtr-MoveFirst();while(!m_RecordsetPtr-adoEOF)if (strKSSJ=(char*)(_bstr_t)m_RecordsetPtr-GetCo
30、llect(考試日期) CString tmp;tmp.Format(%s在本日期已有其他考試安排,請(qǐng)安排其他老師監(jiān)考!,strJS2);AfxMessageBox(tmp);return;break;m_RecordsetPtr-MoveNext();/-同一個(gè)教室在同一時(shí)間不可能提供兩門(mén)不同的課程的考試-CString strJSID;m_kcmc.GetWindowText(strKCMC);m_jsbh.GetWindowText(strJSID);strSQL.Format(select 考試時(shí)間 from 專(zhuān)業(yè)課程 where 課程名稱(chēng) = %s,strKCMC);m_Record
31、setPtr=theApp.m_pAdo.ReadDataBase(strSQL);m_RecordsetPtr-MoveFirst();while(!m_RecordsetPtr-adoEOF)strKSSJ=(char*)(_bstr_t)m_RecordsetPtr-GetCollect(考試時(shí)間);m_RecordsetPtr-MoveNext();strSQL.Format(select * from 考試安排 where 考試日期 =%s and 教室編號(hào)=%s,strKSSJ,strJSID);m_RecordsetPtr=theApp.m_pAdo.ReadDataBase(s
32、trSQL);if (m_RecordsetPtr!=FALSE) AfxMessageBox(該教室已有考試,請(qǐng)選擇另一教室!);return;strSQL.Format(select 專(zhuān)業(yè)編號(hào) from 班級(jí) where 班級(jí)名稱(chēng)=%s,strBJMC);CString strZYBH;/取出專(zhuān)業(yè)編號(hào)m_RecordsetPtr=theApp.m_pAdo.ReadDataBase(strSQL);m_RecordsetPtr-MoveFirst();while(!m_RecordsetPtr-adoEOF)strZYBH=(char*)(_bstr_t)m_RecordsetPtr-Ge
33、tCollect(專(zhuān)業(yè)編號(hào));m_RecordsetPtr-MoveNext();strSQL.Format(select 課程名稱(chēng) from 專(zhuān)業(yè)課程 where 專(zhuān)業(yè)編號(hào) =%s and 課程名稱(chēng)=%s,strZYBH,strKCMC);m_RecordsetPtr=theApp.m_pAdo.ReadDataBase(strSQL);if (m_RecordsetPtr=FALSE) /說(shuō)明沒(méi)有找到AfxMessageBox(該班無(wú)該項(xiàng)考試,請(qǐng)選擇正確的考試安排!);return;strSQL.Format(select * from 考試安排 where 班級(jí)名稱(chēng)=%s and 課程名
34、稱(chēng)=%s,strBJMC,strKCMC);m_RecordsetPtr=theApp.m_pAdo.ReadDataBase(strSQL);if (m_RecordsetPtr!=FALSE) /說(shuō)明沒(méi)有找到AfxMessageBox(該班該項(xiàng)考試已安排完畢!);return;strSQL.Format(insert into 考試安排 values(%s,%s,%s,%s,%s,%s),strBJMC,strKCMC,strJSID,strJS1,strJS2,strKSSJ);theApp.m_pAdo.OperateRecord(strSQL);AfxMessageBox(添加成功!
35、);strSQL.Format(select * from 考試安排);m_RecordsetPtr=theApp.m_pAdo.ReadDataBase(strSQL);show(m_RecordsetPtr); 以上為當(dāng)判斷教師二在當(dāng)天是否被編排過(guò)的一種情況,對(duì)于這種情況我們是通過(guò)用戶(hù)在選擇未安排過(guò)的某個(gè)班級(jí)的某個(gè)課程之后,再選擇教師二中的教師,然后查詢(xún)數(shù)據(jù)庫(kù)臨時(shí)考場(chǎng)安排表中是否有符合在該門(mén)課程的考試時(shí)間中,有教師一與選擇的教師二想同,如果相同說(shuō)明教師二的選擇有沖突,需要對(duì)教師二重新進(jìn)行選擇。同樣的情況判斷教師二在當(dāng)天是否被編排過(guò)還需要判斷選擇的教師二是否在數(shù)據(jù)庫(kù)臨時(shí)考場(chǎng)安排表中有該考試時(shí)
36、間內(nèi),有教師二與選擇的教師二相同的情況。同理,我們判斷教師一是否被編排過(guò)也是通過(guò)上面所描述的在該天教師一或者教師二中都不能有記錄。對(duì)于同一考試日期內(nèi),一個(gè)教室只能提供一次考試的情況,我們通過(guò)在選擇未安排過(guò)的某個(gè)班級(jí)的某個(gè)課程之后,選擇教室編號(hào),然后通過(guò)對(duì)班級(jí)專(zhuān)業(yè)課程表進(jìn)行查詢(xún),查詢(xún)?cè)摪嗉?jí)該課程的考試時(shí)間,然后查詢(xún)?cè)摽荚嚂r(shí)間下是否有與用戶(hù)輸入的教室編號(hào)相同的,如果相同那么將輸入錯(cuò)誤提示:“該教室該天已經(jīng)安排考試,請(qǐng)輸入不同的數(shù)據(jù)!”。432 半自動(dòng)考場(chǎng)安排在半自動(dòng)考場(chǎng)安排中,由于考場(chǎng)的安排涉及到很多張數(shù)據(jù)庫(kù)表,例如:教室表、監(jiān)考教師表、班級(jí)表等等,我們主要是通過(guò)連接多個(gè)數(shù)據(jù)庫(kù)表查詢(xún)的復(fù)雜SQL語(yǔ)
37、句來(lái)實(shí)現(xiàn)自動(dòng)生成考場(chǎng)安排的算法。算法的具體實(shí)現(xiàn)步驟如下:1、 去處要安排考試的班級(jí),考試科目,考試時(shí)間。典型SQL語(yǔ)句分析:(select 班級(jí).班級(jí)名稱(chēng),專(zhuān)業(yè)課程.課程名稱(chēng),專(zhuān)業(yè)課程.考試時(shí)間 from班級(jí),專(zhuān)業(yè)課程 where 班級(jí).專(zhuān)業(yè)編號(hào)=專(zhuān)業(yè)課程.專(zhuān)業(yè)編號(hào))從班級(jí)與專(zhuān)業(yè)課程兩張表中去查找對(duì)應(yīng)班級(jí)與考試相關(guān)的班級(jí)名、考試時(shí)間、考試科目等信息。2、 開(kāi)始分配考試教室,取出所有的教室名,查找自動(dòng)生成表,如果在本考試時(shí)間內(nèi)沒(méi)有安排就選擇它。典型SQL語(yǔ)句分析:(select 教師姓名 from 監(jiān)考教師 where 教師姓名 not in (select 教師一 from 自動(dòng)安排 wher
38、e 考試日期=%s ) and 教師姓名 not in (select 教師二 from 自動(dòng)安排 where 考試日期=%s )查詢(xún)所有在所選出的日期中沒(méi)有進(jìn)行監(jiān)考安排的老師,使用的是查詢(xún)的嵌套。3、 在步驟2中已通過(guò)循環(huán)生成了所有符合條件的考試安排信息,在步驟3中將其插入數(shù)據(jù)庫(kù),同時(shí)刷新列表顯示。4、 在手動(dòng)調(diào)整功能模塊中,主要是針對(duì)已生成的考試安排數(shù)據(jù)表,在授權(quán)用戶(hù)進(jìn)行插入、刪除、修改等數(shù)據(jù)庫(kù)操作時(shí),根據(jù)考試安排的的基本條件(下文將詳細(xì)講述)拒絕執(zhí)行不合法的操作,并給出提示給用戶(hù)。圖4.7 半自動(dòng)考場(chǎng)安排Form1圖4.8半自動(dòng)考場(chǎng)安排Form2433考場(chǎng)安排基本條件1)同一監(jiān)考教師不可
39、能在同一時(shí)間在兩個(gè)不同的地方進(jìn)行監(jiān)考??紤]到這個(gè)情況,我們系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)在考場(chǎng)安排表內(nèi)通過(guò)對(duì)新增加的數(shù)據(jù)與數(shù)據(jù)庫(kù)原有數(shù)據(jù)進(jìn)行比較,如果有同一時(shí)間內(nèi)有相同的教師一,或者相同的教師二,或者一條記錄的教師一與另外條記錄中教師二相同,那么都將被視為該類(lèi)情況。對(duì)于監(jiān)考教師一和監(jiān)考教師二在一條記錄中出現(xiàn)也視為此類(lèi)情況。2)同一班級(jí)不可能在同一時(shí)間考兩門(mén)不同的課程。為了直接避免這種情況的發(fā)生我們?cè)跀?shù)據(jù)庫(kù)專(zhuān)業(yè)課程表中直接考慮課程與時(shí)間上的對(duì)應(yīng),這樣就使得這種情況不會(huì)發(fā)生3)同一教室在同一時(shí)間不可能提供兩門(mén)不同的課程的考試。對(duì)于這種情況我們?cè)谙到y(tǒng)設(shè)計(jì)時(shí)將考場(chǎng)安排表中的班級(jí)和課程從班級(jí)專(zhuān)業(yè)課程表中取出,并從教
40、室表中取得教室,如果考場(chǎng)安排表內(nèi)教室編號(hào)和考試時(shí)間相同,將被視為此類(lèi)情況。4)同一課程需要在同一時(shí)間內(nèi)進(jìn)行考試。對(duì)于這個(gè)我們?cè)趯?zhuān)業(yè)課程信息錄入時(shí)就將課程與時(shí)間安排好,并存儲(chǔ)在專(zhuān)業(yè)課程表中。5)由于存在大小班之分,所以必須根據(jù)學(xué)生人數(shù)數(shù)量安排教室的大小。我們的數(shù)據(jù)庫(kù)設(shè)計(jì)在這方面還有點(diǎn)不足之處,我們不排大教室,一般都是用小教室提供單班考試。當(dāng)系統(tǒng)考場(chǎng)編排半自動(dòng)結(jié)束之后,然后可以根據(jù)需求使用大教室,并且多余的大教室我們做最后考慮。6)參加監(jiān)考的兩位監(jiān)考教師不能為同一個(gè)人。但是還有種情況就是同名同姓的兩個(gè)不同老師,雖然在數(shù)據(jù)庫(kù)表中我們可以通過(guò)主鍵來(lái)區(qū)分,但是在界面顯示中還是不大會(huì)分清楚,所以對(duì)于這種情
41、況我們可以采用姓名之后加編號(hào)的方法,比如“王五1”、“王五2”等,這樣就可以在直觀上分清是哪位監(jiān)考教師參加監(jiān)考。434考場(chǎng)安排特殊條件1)對(duì)于監(jiān)考教師的安排我們需要考慮合理安排監(jiān)考教師的監(jiān)考次數(shù),這個(gè)可以采取當(dāng)監(jiān)考教師參加一次監(jiān)考之后,為監(jiān)考的監(jiān)考次數(shù)后面加上1,每次先去監(jiān)考次數(shù)小的教師。這種判定方法在實(shí)現(xiàn)方面比較復(fù)雜,為了能夠既考慮到教師的合理監(jiān)考次數(shù),又考慮系統(tǒng)實(shí)現(xiàn)的簡(jiǎn)單性,我們采取了隨機(jī)數(shù)取值的方法。2)對(duì)于大小教室的安排,我們采取優(yōu)先安排小教室,然后特殊情況再使用大教室??紤]到這一點(diǎn)的原因是大教室的數(shù)量遠(yuǎn)遠(yuǎn)比小教室要少,因此考慮完小教室情況之后然后根據(jù)實(shí)際要求使用大教室。3)考試安排設(shè)
42、置在每天晚上這個(gè)時(shí)間段。對(duì)于這種情況,我們就可以在時(shí)間安排上將一天時(shí)間做為一個(gè)時(shí)間單位,并且只要顯示考試的日期就可以了,這樣一來(lái)在時(shí)間的判斷上我們的的工作量就可以減少很多。4)對(duì)于教師有特殊要求,比如該教師那段時(shí)期處于假期或者培訓(xùn),或者某些教師需要先做安排的情況,我們可以提高這些教師的優(yōu)先級(jí),讓這些教師先做安排。但目前由于算法上的原因我們的系統(tǒng)還未滿(mǎn)足此項(xiàng)需求。第五章 系統(tǒng)實(shí)現(xiàn)51 系統(tǒng)功能實(shí)現(xiàn)在雙擊DEBUG文件夾中的考場(chǎng)安排系統(tǒng).exe后,首先彈出一個(gè)用戶(hù)登入窗口,如圖5.1所示。當(dāng)輸入正確的用戶(hù)名和密碼之后將進(jìn)入主程序窗體,同時(shí)隱藏登入界面。如果連接失敗將會(huì)提示“連接數(shù)據(jù)庫(kù)出錯(cuò)!”或者“
43、輸入信息不完整,請(qǐng)重新輸入!”或者“用戶(hù)名密碼不正確,請(qǐng)重新輸入!”。進(jìn)入主程序窗體之后我們首先需要錄入考場(chǎng)安排所需要的數(shù)據(jù)。圖5.1 系統(tǒng)登入界面由于缺少后臺(tái)管理,所以管理員帳號(hào)和密碼需要事先輸入到數(shù)據(jù)庫(kù)中,這個(gè)是本系統(tǒng)的一個(gè)不足之處。進(jìn)入主程序窗口之后我們首先要輸入本次考場(chǎng)安排所需要的基本數(shù)據(jù),其中包括教室資料(如圖5.2)、班級(jí)資料(如圖5.3)、監(jiān)考教師資料(如圖5.4)、專(zhuān)業(yè)課程資料(如圖5.5)。這四部分的結(jié)構(gòu)基本上是相同的。由一列表顯示已經(jīng)輸入數(shù)據(jù)庫(kù)的信息。圖5.2考場(chǎng)安排系統(tǒng)中教室資料管理圖5.3考場(chǎng)安排系統(tǒng)中班級(jí)資料管理圖5.4考場(chǎng)安排系統(tǒng)中專(zhuān)業(yè)課程資料管理5.5考場(chǎng)安排系統(tǒng)
44、中監(jiān)考教師資料管理在信息錄入的時(shí)候我們需要特別注意的是專(zhuān)業(yè)課程資料管理。由于在設(shè)計(jì)時(shí)我們的考試時(shí)間在這里就已經(jīng)定好了,這樣做的目的是為了能夠減少不穩(wěn)定因素,使考場(chǎng)安排的編排出現(xiàn)不合理的幾率能夠降低。所以在信息錄入的時(shí)候我們需要做出判斷(如圖5.6),我們需要先判斷有多少班級(jí)的課程需要進(jìn)行編排,然后確定需要在多少時(shí)間內(nèi)將這些考試安排完。這個(gè)過(guò)程是一個(gè)取平均值的過(guò)程,通過(guò)對(duì)總的班級(jí)課程數(shù)目除以考試天數(shù),然后得到平均值,并通過(guò)數(shù)學(xué)方法或者運(yùn)籌學(xué)的方法得到最優(yōu)方案,避免了某天的考場(chǎng)安排時(shí)由于安排班級(jí)過(guò)多而導(dǎo)致教室的不足。在考試天數(shù)的計(jì)算問(wèn)題上我們可以采取這種方法:取考試課程數(shù)量最大值X2。這樣的安排目
45、的是確??荚囍嗄軌蛱峁?fù)習(xí)時(shí)間,如果需要加長(zhǎng)復(fù)習(xí)時(shí)間我們可以X2.5來(lái)計(jì)算天數(shù)。在安排課程和時(shí)間的時(shí)候我們需要主要注意:1)同一專(zhuān)業(yè)的不同課程的考試不能安排在同一天進(jìn)行,當(dāng)然視情況,最好安排間隔一天,中間的間隔天數(shù)能夠提供復(fù)習(xí)。2)同一專(zhuān)業(yè)的班級(jí)必須在同一天參加同一門(mén)考試。這種情況是明顯需要支持的。3)對(duì)于班級(jí)課程的安排要大致接近計(jì)算出來(lái)的平均數(shù),不能有太多偏差。由于專(zhuān)業(yè)課程的錄入是通過(guò)人工操作的,所以在時(shí)間上的編排需要人工來(lái)操作,系統(tǒng)在該點(diǎn)上還存在不足,如果能夠?qū)⒖荚嚂r(shí)間的安排能夠做一個(gè)自動(dòng)化安排將能夠減少更多的人力資源。在上面的教師資料管理中我們還需要注意一個(gè)問(wèn)題,就是如果教師重名的情況
46、,對(duì)于這種情況我們需要在錄入的時(shí)候做好標(biāo)記,能夠明顯地區(qū)分兩者或者更多重名。全部班級(jí)課程考試時(shí)間1安排考試的天數(shù)考試時(shí)間2考試時(shí)間N部分課程1部分課程2部分課程N(yùn)圖5.6 課程與時(shí)間的合理安排當(dāng)完成相關(guān)的系統(tǒng)錄入之后我們便可以對(duì)這些數(shù)據(jù)進(jìn)行相關(guān)操作。首先我們先進(jìn)行一次考場(chǎng)安排手工編排。如圖 5.7所視,考慮到使手工編排不出現(xiàn)混亂的情況,我們可以將班級(jí)跟課程作為一個(gè)數(shù)據(jù)集合,然后分配教室和監(jiān)考教師,當(dāng)出現(xiàn)于本文中4.3.2所提到的基本要求相沖突的話(huà)系統(tǒng)將彈出一個(gè)對(duì)話(huà)框,告訴手工編排者選擇其他教室或者其他教師,直到系統(tǒng)判定選擇為合理的為止。當(dāng)記錄中包含了所有班級(jí)與課程的數(shù)據(jù)集之后,那么一個(gè)考場(chǎng)編排
47、基本成型,這個(gè)時(shí)候?yàn)榱藘?yōu)化考場(chǎng)編排,我們可以對(duì)記錄再進(jìn)行調(diào)整。圖5.7 考場(chǎng)安排手動(dòng)編排手工編排考場(chǎng)具有隨意性和主觀性,半自動(dòng)考場(chǎng)生成將這種隨意性和主觀性大大削弱。我們只要點(diǎn)擊半自動(dòng)考場(chǎng)安排界面中的“生成考場(chǎng)安排表”按鈕,系統(tǒng)就會(huì)自動(dòng)編排考場(chǎng)(如圖5.8所示)。記錄數(shù)與班級(jí)和課程的數(shù)據(jù)集合數(shù)量相同。圖5.8 半自動(dòng)生成考場(chǎng)安排表點(diǎn)擊“手動(dòng)調(diào)整”按鈕我們可以進(jìn)入半自動(dòng)考場(chǎng)安排表手動(dòng)調(diào)整界面對(duì)數(shù)據(jù)進(jìn)行相關(guān)操作(如圖5.9),在這里主要是針對(duì)已生成的考試安排數(shù)據(jù)表,在授權(quán)用戶(hù)進(jìn)行插入、刪除、修改等數(shù)據(jù)庫(kù)操作時(shí),根據(jù)考試安排的的基本條件(下文將詳細(xì)講述)拒絕執(zhí)行不合法的操作,并給出提示給用戶(hù)。 圖5.
48、9 半自動(dòng)考場(chǎng)安排表手動(dòng)調(diào)整52 系統(tǒng)環(huán)境配置本程序所使用的工具為VC+6.0.0,數(shù)據(jù)庫(kù)設(shè)計(jì)所用工具是Access 2000,軟件測(cè)試環(huán)境為Microsoft Windows XP.本系統(tǒng)具有良好的可移植性,通過(guò)解壓安裝可以在普通計(jì)算機(jī)上使用。系統(tǒng)對(duì)硬件和軟件配置有一定的要求,其中硬件配置:486以上檔次的計(jì)算機(jī),彩色顯示器,內(nèi)存8M,硬盤(pán)200M;軟件配置:Windows 98/2000/XP操作系統(tǒng),具有SP2補(bǔ)丁。53 開(kāi)發(fā)工具介紹5.3.1 Visual C+簡(jiǎn)介:幾乎所有世界級(jí)的軟件,從業(yè)界領(lǐng)先的Web瀏覽器到面向任務(wù)的企業(yè)應(yīng)用,都是使用Microsoft Visual C+開(kāi)發(fā)系
49、統(tǒng)來(lái)開(kāi)發(fā)的。要用C+來(lái)開(kāi)發(fā)Windows和Web上的高性能應(yīng)用程序,Visual C+是效率最高的首選工具。Visual C+ 6.0在不犧牲靈活性、性能和控制力度的同時(shí),給C+帶來(lái)更高水平的生產(chǎn)效率。除了IntelliSense Technology(智能感應(yīng)技術(shù))和Edit and Continue(即編即調(diào))等顯著縮短開(kāi)發(fā)時(shí)間的新特性外,Visual C+ 6.0還為Web開(kāi)發(fā)和企業(yè)開(kāi)發(fā)提供更良好的支持。Microsoft Visual C+ 6.0專(zhuān)業(yè)版的健壯的構(gòu)件開(kāi)發(fā)、強(qiáng)大的數(shù)據(jù)庫(kù)工具和完備的Internet支持將使您從中受益,創(chuàng)建出策略性的商務(wù)解決方案來(lái)。Visual Studio
50、 C+6.0采用一種非常巧妙的方法將原本非常復(fù)雜的Windows編程步驟封裝起來(lái),使編程人員可以輕松容易地編寫(xiě)Windows應(yīng)用程序。Visual C+6.0是Microsoft Visual Studio6.0的一個(gè)子集,他對(duì)低版本開(kāi)發(fā)程序兼容。它有如下的特點(diǎn):(1) Visual C+6.0提供了用于開(kāi)發(fā)Windows環(huán)境下的應(yīng)用程序和簡(jiǎn)捷、快速的開(kāi)發(fā)環(huán)境。利用Visual C+6.0開(kāi)發(fā)Windows應(yīng)用程序具有很高的效率。(2) Visual C+6.0提供了MFC類(lèi),開(kāi)發(fā)者只需要做少量的工作就可以得到功能齊全的Windows應(yīng)用程序。與使用C和Windows SDK開(kāi)發(fā)Windows
51、應(yīng)用程序相比,使用Visual C+6.0建立一個(gè)完美的Windows應(yīng)用程序所花費(fèi)的時(shí)間要少得多。(3) Visual C+6.0還提供了一個(gè)高度集成的工具集,使得在開(kāi)發(fā)應(yīng)用程序的全過(guò)程中都保證了較高的效率。集成化便于程序開(kāi)發(fā),開(kāi)發(fā)者可以同時(shí)在編輯、建立、調(diào)試等不同任務(wù)之間快速切換,甚至可以同時(shí)進(jìn)行。(4)調(diào)試方便:在程序調(diào)試時(shí),在遇到編譯錯(cuò)誤時(shí),會(huì)在輸出窗口顯示出錯(cuò)誤類(lèi)型、行號(hào)及錯(cuò)誤提示等信息。在輸出窗口中雙擊錯(cuò)誤提示時(shí),光標(biāo)會(huì)自動(dòng)指向出現(xiàn)錯(cuò)誤的代碼所在行應(yīng)方便快速找出錯(cuò)誤。Visual C+支持?jǐn)帱c(diǎn)調(diào)試,同時(shí)也可以在調(diào)試窗口觀察有關(guān)變量的值,以方便查找出有關(guān)的邏輯錯(cuò)誤。5.3.2 ADO
52、技術(shù)1) ADO的技術(shù)特點(diǎn) ADO的全稱(chēng)是ActiveX Data Object,它是微軟公司為數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)的新接口。ADO基于COM,提供編程語(yǔ)言可利用的對(duì)象,它不僅面向Visual C+,同時(shí)還提供面向其他開(kāi)發(fā)工具的應(yīng)用,如Visual Basic、VJ等,甚至還提供面向諸如 VBScript、JavaScript等腳本語(yǔ)言的應(yīng)用。ADO的底層是OLE DB,不僅能訪(fǎng)問(wèn)關(guān)系數(shù)據(jù)庫(kù),也能訪(fǎng)問(wèn)非關(guān)系型數(shù)據(jù)庫(kù)。ADO對(duì)OLE DB的包裝是相當(dāng)成功的,相對(duì)于OLE DB中眾多的接口來(lái)說(shuō),ADO對(duì)象模型簡(jiǎn)明扼要,沒(méi)有一點(diǎn)多余的東西,并且其功能還要比DAO強(qiáng)大的多。并且可以說(shuō)到目前為止,ADO是
53、目前最快的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)的中間層。2) ADO的結(jié)構(gòu)ADO模型包含了7個(gè)對(duì)象和4個(gè)集合,ADO的結(jié)構(gòu)圖如圖所示。連接對(duì)象(Connection)錯(cuò)誤集合(Errors)錯(cuò)誤對(duì)象(Error)屬性集合(Properties)屬性對(duì)象(Property)命令對(duì)象(Command)參數(shù)集合(Parameters)參數(shù)對(duì)象(Parameter)屬性集合(Properties)屬性對(duì)象(Property)記錄集對(duì)象(Recordset)域集合(Fields)域?qū)ο?Field)屬性集合(Properties)屬性對(duì)象(Property) 54 系統(tǒng)測(cè)試首先我們輸入教室資料、班級(jí)資料、監(jiān)考教師資料和專(zhuān)業(yè)課程資
54、料,在輸入這些小批量,大約40條左右的班級(jí)課程記錄和20來(lái)?xiàng)l教室以及20來(lái)位教師之后我們先利用手動(dòng)考場(chǎng)安排進(jìn)行系統(tǒng)的可行性測(cè)試,在測(cè)試中發(fā)現(xiàn)操作者的主觀因素占據(jù)了整個(gè)安排思路的關(guān)鍵,所以如果是一個(gè)考慮完全,并且經(jīng)驗(yàn)豐富的操作員的話(huà),考場(chǎng)編排將是可行并且合理的。然后我們?cè)倮们懊嬗脕?lái)進(jìn)行手動(dòng)安排考場(chǎng)系統(tǒng)的信息進(jìn)行半自動(dòng)考場(chǎng)安排,在測(cè)試5次重新安排之后發(fā)現(xiàn)考場(chǎng)安排表基本能夠達(dá)到應(yīng)用的目的,但是還是需要手動(dòng)進(jìn)行調(diào)整,有些因素未完全考慮進(jìn)去。第六章 結(jié)論與展望本文為考場(chǎng)安排系統(tǒng)做了系統(tǒng)的闡述,主要從系統(tǒng)設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)以及系統(tǒng)功能的創(chuàng)建和實(shí)現(xiàn)等四個(gè)方面著手。在系統(tǒng)設(shè)計(jì)中我們著重描述我們?cè)陂_(kāi)發(fā)系統(tǒng)功能前
55、如何合理布局,系統(tǒng)功能創(chuàng)建中著重闡述了如何去開(kāi)發(fā)整個(gè)系統(tǒng),系統(tǒng)功能實(shí)現(xiàn)中闡述了系統(tǒng)該如何操作,數(shù)據(jù)庫(kù)設(shè)計(jì)中詳細(xì)地闡述了數(shù)據(jù)庫(kù)表之間的關(guān)聯(lián)。我們采用了具有強(qiáng)大組件庫(kù)和強(qiáng)大數(shù)據(jù)庫(kù)功能的VC+6.0做為開(kāi)發(fā)工具,采用界面友好性較好,并適合小型數(shù)據(jù)量操作的Access數(shù)據(jù)庫(kù),通過(guò)ADO技術(shù)進(jìn)行數(shù)據(jù)庫(kù)的完美連接。數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)主要考慮了數(shù)據(jù)的關(guān)聯(lián),在實(shí)際中本系統(tǒng)還存在許多有待解決的問(wèn)題,比如當(dāng)數(shù)據(jù)量增大的過(guò)程中,系統(tǒng)的錯(cuò)誤率也隨著增大,以及一些算法的研究來(lái)對(duì)系統(tǒng)做全面優(yōu)化等等,這些希望能在日后的研究中得到解決。系統(tǒng)在網(wǎng)絡(luò)化方向可以做進(jìn)一步改進(jìn),可以利用學(xué)校的校園網(wǎng)做為依托,校內(nèi)所有連接內(nèi)網(wǎng)的電腦都可以作為
56、終端。在考場(chǎng)安排系統(tǒng)中現(xiàn)今有關(guān)蟻群算法的應(yīng)用,雖然由于對(duì)于蟻群算法如何應(yīng)用于考場(chǎng)安排系統(tǒng)還為能理解,并且也沒(méi)應(yīng)用到考場(chǎng)安排系統(tǒng)中,但是蟻群算法對(duì)于考場(chǎng)安排的優(yōu)化確是相當(dāng)好的,如果能夠應(yīng)用該算法來(lái)進(jìn)行考場(chǎng)編排將使我們的系統(tǒng)具有更好的健壯性。致 謝【參考文獻(xiàn)】1陳豫龍 ,何旭洪. VC+6.0數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)實(shí)例M.人民郵電出版社,2003,82吳志斌,陳淑珍,孫曉安. 回溯算法與計(jì)算機(jī)智能排課J.計(jì)算機(jī)工程,1999,33胡小兵,黃席樾. 蟻群優(yōu)化算法及其應(yīng)用J. 計(jì)算機(jī)仿真,2004年第5期4張林. 基于蟻群算法的學(xué)校排課系統(tǒng)J. 安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報(bào),2004第14,15期5寧正元,劉
57、雄恩,陳瓊. VC+6.0程序設(shè)計(jì)與應(yīng)用教程M.中國(guó)水利水電出版社,2005,16張花,王秀坤,孫燾. 蟻群算法在考試安排中的應(yīng)用J. 計(jì)算機(jī)工程與設(shè)計(jì) 2003,127高喜瑪,張萍. 大學(xué)自動(dòng)排課系統(tǒng)內(nèi)核算法設(shè)計(jì)J. 南陽(yáng)師范學(xué)院學(xué)報(bào)(自然科學(xué)版), 2003年12月.8馬慧彬,張忠武,何麗麗. 智能型考試安排系統(tǒng)的監(jiān)考及考試安排算法J. 佳木斯大學(xué)學(xué)報(bào)(自然科學(xué)版) 2004,39左偉明,徐蘭云,張建明. 基于網(wǎng)絡(luò)的排課系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)J. 湖南農(nóng)業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版)2004,210李莉,尉健慧,湯蓉華. 網(wǎng)絡(luò)智能排課系統(tǒng)J. 天津師范大學(xué)學(xué)報(bào)(自然科學(xué)版)2005,911齊向明. 通用考務(wù)管理系統(tǒng)的需求分析與系統(tǒng)設(shè)計(jì)J. 遼寧工程技術(shù)大學(xué)學(xué)報(bào)(社會(huì)科學(xué)版)2003,512Youssef Hasson (UK), Roger Johnson(UK) , Steve Counsell(UK). Applications of dynamic proxies in distributed environmentsJ. SOFTWARE-PRACT
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024《增值稅法》全文學(xué)習(xí)解讀(規(guī)范增值稅的征收和繳納保護(hù)納稅人的合法權(quán)益)
- 2024《文物保護(hù)法》全文解讀學(xué)習(xí)(加強(qiáng)對(duì)文物的保護(hù)促進(jìn)科學(xué)研究工作)
- 銷(xiāo)售技巧培訓(xùn)課件:接近客戶(hù)的套路總結(jié)
- 20種成交的銷(xiāo)售話(huà)術(shù)和技巧
- 銷(xiāo)售技巧:接近客戶(hù)的8種套路
- 銷(xiāo)售套路總結(jié)
- 房產(chǎn)銷(xiāo)售中的常見(jiàn)問(wèn)題及解決方法
- 銷(xiāo)售技巧:值得默念的成交話(huà)術(shù)
- 銷(xiāo)售資料:讓人舒服的35種說(shuō)話(huà)方式
- 汽車(chē)銷(xiāo)售績(jī)效管理規(guī)范
- 銷(xiāo)售技巧培訓(xùn)課件:絕對(duì)成交的銷(xiāo)售話(huà)術(shù)
- 頂尖銷(xiāo)售技巧總結(jié)
- 銷(xiāo)售技巧:電話(huà)營(yíng)銷(xiāo)十大定律
- 銷(xiāo)售逼單最好的二十三種技巧
- 銷(xiāo)售最常遇到的10大麻煩