【正文】
how(m_RecordsetPtr)。 對(duì)于同一考試日期內(nèi),一個(gè)教室只能提供一次考試的情況,我們通過在選擇未安排過的某個(gè)班級(jí)的某個(gè)課程之后,選擇教室編號(hào),然后通過對(duì)班級(jí)專業(yè)課程表進(jìn)行查詢,查詢?cè)摪嗉?jí)該課程的考試時(shí)間,然后查詢?cè)摽荚嚂r(shí)間下是否有與用戶輸入的教室編號(hào)相同的,如果相同那么將輸入錯(cuò)誤提示:“該教室該天已經(jīng)安排考試,請(qǐng)輸入不同的數(shù)據(jù)!”。 開始分配考試教室,取出所有的教室名,查找自動(dòng)生成表,如果在本考試時(shí)間內(nèi)沒有安排就選擇它。%s39。 圖 半自動(dòng)考場(chǎng)安排 Form1 25 圖 半自動(dòng)考場(chǎng)安排 Form2 4. 3. 3 考場(chǎng)安排基本條件 1)同一監(jiān)考教師不可能在同一時(shí)間在兩個(gè)不同的地方進(jìn)行監(jiān)考。為了直接避免這種情況的發(fā)生我們?cè)跀?shù)據(jù)庫專業(yè)課程表中直接考慮課程與時(shí)間上的對(duì)應(yīng),這樣就使得這種情況不會(huì)發(fā)生 3)同一教室在同一時(shí)間不可能提供兩門不同的課程的考試。 26 5)由于存在大小班之分,所以必須根據(jù)學(xué)生人數(shù)數(shù)量安排教室的大小。但是還有種情況就是同名同姓的兩個(gè)不同老師,雖然在數(shù)據(jù)庫表中我們可以通過主鍵來區(qū)分,但是在界面顯示中還是不大會(huì)分清楚,所以對(duì)于這種情況我們可以采用姓名之后加編號(hào)的方法,比如“王五 1”、“王五 2”等,這樣就可以在直觀 上分清是哪位監(jiān)考教師參加監(jiān)考。考慮到這一點(diǎn)的原因是大教室的數(shù)量遠(yuǎn)遠(yuǎn)比小教室要少,因此考慮完小教室情況之后然后根據(jù)實(shí)際要求使用大教室 。但目前由于算法上的原因我們的系統(tǒng)還未滿足此項(xiàng)需求。進(jìn)入主程序窗體之后我們首先需要錄入考場(chǎng)安排所需要的數(shù)據(jù)。由一列表顯示已經(jīng)輸入數(shù)據(jù)庫的信息。這個(gè)過程是一個(gè)取平均值的過程,通過對(duì)總的班級(jí)課程數(shù)目除以考試天數(shù),然后得到平均值,并通過數(shù)學(xué)方法或者運(yùn)籌學(xué)的方法得到最優(yōu)方案,避免了某天的考場(chǎng)安排時(shí)由于安排班級(jí)過多而導(dǎo)致教室的不足。 2)同一專業(yè)的班級(jí)必須在同一天參加同一門考試。在上面的教師資料管理中我們還需要注意一個(gè)問題,就是如果教師重名的情況,對(duì)于這種情況我們需要在錄入的時(shí)候做好標(biāo)記, 能夠明顯地區(qū)分兩者或者更多重名。當(dāng)記錄中包含了所有班級(jí)與課程的數(shù)據(jù)集之后,那么一個(gè)考場(chǎng)編排基本成型,這 個(gè)時(shí)候?yàn)榱藘?yōu)化考場(chǎng)編排,我們可以對(duì)記錄再進(jìn)行調(diào)整。 圖 半自動(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)操作(如圖 ),在這里主要是針對(duì)已生成的考試安排數(shù)據(jù)表,在授權(quán)用戶進(jìn)行插入、刪除、修改32 等數(shù)據(jù)庫操作時(shí) ,根據(jù)考試安排的的基本條件(下文將詳細(xì)講述)拒絕執(zhí)行不合法的操作,并給出提示給用戶。要用 C++來開發(fā) Windows和 Web上的高性能應(yīng)用33 程序, Visual C++是效率最高的首選工具。 Visual Studio C++ 采用一種非常巧妙的方法將原本非常復(fù)雜的 Windows 編程步驟封裝起來,使編程人員可以輕松容易地編寫 Windows應(yīng)用程序。 (2) Visual C++ MFC類,開發(fā)者只需要做少量的工作就可以得到功能齊全的Windows應(yīng)用程序。 ( 4)調(diào)試方便:在程序調(diào)試時(shí),在遇到編譯錯(cuò)誤時(shí),會(huì)在輸出窗口顯示出錯(cuò)誤類型、行號(hào)及錯(cuò)誤提示等信息。ADO 基于 COM,提供編程語言可利用的對(duì)象,它不僅面向 Visual C++,同時(shí)還提供面向其他開發(fā)工具的應(yīng)用,如 Visual Basic、 VJ 等,甚至還提供面向諸如 VBScript、 JavaScript等腳本語言的應(yīng)用。 2) ADO的結(jié)構(gòu) 34 ADO模型包含了 7個(gè)對(duì)象和 4個(gè)集合, ADO的結(jié)構(gòu)圖如圖所示。在系統(tǒng)設(shè)計(jì)中我們著重描述我們?cè)陂_發(fā)系統(tǒng)功能前如何合理布局,系統(tǒng)功能創(chuàng)建中著重闡述了如何 去開發(fā)整個(gè)系統(tǒng),系統(tǒng)功能實(shí)現(xiàn)中闡述了系統(tǒng)該如何操作,數(shù)據(jù)庫設(shè)計(jì)中詳細(xì)地闡述了數(shù)據(jù)庫表之間的關(guān)聯(lián)。 在考場(chǎng)安排系統(tǒng)中現(xiàn)今有關(guān)蟻群算法的應(yīng)用,雖然由于對(duì)于蟻群算法如何應(yīng)用于考場(chǎng)安排系統(tǒng)還為能理解,并且也沒應(yīng)用到考場(chǎng)安排系統(tǒng)中,但是蟻群算法對(duì)于考場(chǎng)安排的優(yōu)化確是相當(dāng)好的,如果能夠應(yīng)用該算法來進(jìn)行考場(chǎng)編排將使我們的系統(tǒng)具有更好的健壯性。 //{{AFX_DATA_MAP(CZDAP) DDX_Control(pDX, IDC_LIST1, m_list)。 //從成員詳 細(xì)表讀出字段名稱到列表控件中; CString strSQL,FieldName。jm_RecordsetPtrGetFields()GetCount()。 (j, FieldName, LVCFMT_CENTER, 150)。 (delete from 自動(dòng)安排 )。 m_RecordsetPtrMoveFirst()。 //到這里為止取出了一組對(duì)應(yīng)的班級(jí) 課程名 考試時(shí)間,缺少教師 1 教師 2 考場(chǎng)分配 //,取出所有的教室名,查找自動(dòng)生成表,如果在本考試時(shí)間內(nèi)沒有安排就選擇它 (select 教室編號(hào) from 教室 where 教室編號(hào) not in (select 教室編號(hào) from 自動(dòng)安排 where 考試日期 =39。 m_RecordsetPtr1MoveFirst()。 ) and 教師姓名 not in (select 教師二 from 自動(dòng)安排 where 考試日期 =39。 m_RecordsetPtr2MoveFirst()。 // m_RecordsetPtrMoveNext()。%s39。%s39。%s39。 m_RecordsetPtr=(strSQL)。 int nCount = ()。 while(!rstadoEOF) { (nCount,_T())。 n nRecordCount。 i rstGetFields()GetCount()。 (n,i,CellText)。 (strSQL)。t wait. And the air currents were fabulous. I had a little red sail plane I used to go sky surfing in, every couple of days. It was the good life. I played drums till all hours in a basement spot up the river where the walls sweated almost as much as the customers and the smoke used to wash around the lights like streams of milk. When I was done playing I39。m good and I39。t know. The Jac k said, Random. Then its face blurred and it said, Help me. I began getting a feel of the per。t admit even to himse lf that there were some things other people could do better. If you kept beating him at anything you had to be cheating. He started a nasty argument over it one nightcould have gotten seriousbut Gerard and Caine broke it up. G ive Caine that. He took my part that time. Poor guy . . . Hell of a way to go, you know? His throat . . . Well, anyhow, there I was in Texorami, making music and women, winning at cards and jockeying around the sky. Palm trees and nightblooming wallflowers. Lots of good port smellsspices, coffee, tar, saltyou know. Gentlefolk, merchants, and peons the same straights as in most other places. Sailors and assorted travelers passing in and out. Guys like me living around the edges of things. I spent a little over two years in Texorami, happy. Really. Not much contact with the others. Sort of postcard like hellos via the Trumps every now and then, and that was about it. Amber was pretty much off my mind. All this changed one night when I was sitting there with a full house and the guy ac ross from me was trying to make up his mind whether or not I was bluffing. The Jack of Diamonds began talking to me. Yes, that is how it started. I was in a weird frame of mind anyway. I had just finished a couple very hot sets and was still kind of high. A lso, I was physically strung out from a long day39。s about the only thing I wouldn39。 ()。 ()。 ()。 rstMove(n)。 nRecordCount++。//記錄數(shù); ()。 } void CZDAP::show(_RecordsetPtr rst) { CString CellText。 (strSQL)。%s39。%s39。%s39。 m_RecordsetPtr2MoveNext()。 ),strKSSJ,strKSSJ)。 // (select 教師姓名 from 監(jiān)考教師 where 教師姓名 not in (select 教師一 from 自動(dòng)安排 where 考試日期 =39。),strKSSJ)。 strBJMC=(char*)(_bstr_t)m_RecordsetPtrGetCollect(班級(jí)名稱 )。 (select 班級(jí) .班級(jí)名稱 ,專業(yè)課程 .課程名稱 ,專業(yè)課程 .考試時(shí)間 from 班級(jí) ,專業(yè)課程 where 班級(jí) .專業(yè)編號(hào) =專業(yè)課程 .專業(yè)編號(hào) )。 return TRUE。 ()。 m_RecordsetPtr=(strSQL)。 // TODO: Add extra initialization here (0L,LVS_SHOWSELALWAYS)。 endif extern CMyApp theApp。數(shù)據(jù)庫設(shè)計(jì)時(shí)主要考慮了數(shù)據(jù)的關(guān)聯(lián),在實(shí)際中本系統(tǒng)還存在許多有待解決的問題,比如當(dāng)數(shù)據(jù)量增大的過程中,系統(tǒng)的錯(cuò)誤率也隨著增大,以及一些算法的研究來對(duì)系統(tǒng)做全面優(yōu)化等等,這些希望能在日后的研究中得到解決。然后我們?cè)倮们懊嬗脕磉M(jìn)行手動(dòng)安排考場(chǎng)系統(tǒng)的信息進(jìn)行半自動(dòng)考場(chǎng)安排,在測(cè)試 5次重新安連接對(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) 35 排之后發(fā)現(xiàn)考場(chǎng)安排表基本能夠達(dá)到應(yīng)用的目的,但是還是需要手動(dòng)進(jìn)行調(diào)整,有些因素未完全考慮進(jìn)去。ADO對(duì) OLE DB的包裝是相當(dāng)成功的, 相對(duì)于 OLE DB中眾多的接口來說, ADO對(duì)象模型簡(jiǎn)明扼要,沒有一點(diǎn)多余的東西,并且其功能還要比 DAO強(qiáng)大的多。 Visual C++支持?jǐn)帱c(diǎn)調(diào)試,同時(shí)也可以在調(diào)試窗口觀察有關(guān)變量的值,以方便查找出有關(guān)的邏輯錯(cuò)誤。 (3) Visual C++,使得在開發(fā)應(yīng)用程序的全過程中都保證了較高的效率。它有如下的特點(diǎn): (1) Visual C++ Windows環(huán)境下的應(yīng)用程序和簡(jiǎn)捷、快速的開發(fā)環(huán)境。除了