【正文】
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。m good and I39。s about the only thing I wouldn39。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。 ()。 (strSQL)。 ()。 (n,i,CellText)。 ()。 i rstGetFields()GetCount()。 rstMove(n)。 n nRecordCount。 nRecordCount++。 while(!rstadoEOF) { (nCount,_T())。//記錄數(shù); ()。 int nCount = ()。 } void CZDAP::show(_RecordsetPtr rst) { CString CellText。 m_RecordsetPtr=(strSQL)。 (strSQL)。%s39。%s39。%s39。%s39。%s39。%s39。 // m_RecordsetPtrMoveNext()。 m_RecordsetPtr2MoveNext()。 m_RecordsetPtr2MoveFirst()。 ),strKSSJ,strKSSJ)。 ) and 教師姓名 not in (select 教師二 from 自動(dòng)安排 where 考試日期 =39。 // (select 教師姓名 from 監(jiān)考教師 where 教師姓名 not in (select 教師一 from 自動(dòng)安排 where 考試日期 =39。 m_RecordsetPtr1MoveFirst()。),strKSSJ)。 //到這里為止取出了一組對(duì)應(yīng)的班級(jí) 課程名 考試時(shí)間,缺少教師 1 教師 2 考場(chǎng)分配 //,取出所有的教室名,查找自動(dòng)生成表,如果在本考試時(shí)間內(nèi)沒(méi)有安排就選擇它 (select 教室編號(hào) from 教室 where 教室編號(hào) not in (select 教室編號(hào) from 自動(dòng)安排 where 考試日期 =39。 strBJMC=(char*)(_bstr_t)m_RecordsetPtrGetCollect(班級(jí)名稱(chēng) )。 m_RecordsetPtrMoveFirst()。 (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) )。 (delete from 自動(dòng)安排 )。 return TRUE。 (j, FieldName, LVCFMT_CENTER, 150)。 ()。jm_RecordsetPtrGetFields()GetCount()。 m_RecordsetPtr=(strSQL)。 //從成員詳 細(xì)表讀出字段名稱(chēng)到列表控件中; CString strSQL,FieldName。 // TODO: Add extra initialization here (0L,LVS_SHOWSELALWAYS)。 //{{AFX_DATA_MAP(CZDAP) DDX_Control(pDX, IDC_LIST1, m_list)。 endif extern CMyApp theApp。 在考場(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)具有更好的健壯性。數(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)設(shè)計(jì)中我們著重描述我們?cè)陂_(kāi)發(fā)系統(tǒng)功能前如何合理布局,系統(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)。然后我們?cè)倮们懊嬗脕?lái)進(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)去。 2) ADO的結(jié)構(gòu) 34 ADO模型包含了 7個(gè)對(duì)象和 4個(gè)集合, ADO的結(jié)構(gòu)圖如圖所示。ADO對(duì) OLE DB的包裝是相當(dāng)成功的, 相對(duì)于 OLE DB中眾多的接口來(lái)說(shuō), ADO對(duì)象模型簡(jiǎn)明扼要,沒(méi)有一點(diǎn)多余的東西,并且其功能還要比 DAO強(qiáng)大的多。ADO 基于 COM,提供編程語(yǔ)言可利用的對(duì)象,它不僅面向 Visual C++,同時(shí)還提供面向其他開(kāi)發(fā)工具的應(yīng)用,如 Visual Basic、 VJ 等,甚至還提供面向諸如 VBScript、 JavaScript等腳本語(yǔ)言的應(yīng)用。 Visual C++支持?jǐn)帱c(diǎn)調(diào)試,同時(shí)也可以在調(diào)試窗口觀察有關(guān)變量的值,以方便查找出有關(guān)的邏輯錯(cuò)誤。 ( 4)調(diào)試方便:在程序調(diào)試時(shí),在遇到編譯錯(cuò)誤時(shí),會(huì)在輸出窗口顯示出錯(cuò)誤類(lèi)型、行號(hào)及錯(cuò)誤提示等信息。 (3) Visual C++,使得在開(kāi)發(fā)應(yīng)用程序的全過(guò)程中都保證了較高的效率。 (2) Visual C++ MFC類(lèi),開(kāi)發(fā)者只需要做少量的工作就可以得到功能齊全的Windows應(yīng)用程序。它有如下的特點(diǎn): (1) Visual C++ Windows環(huán)境下的應(yīng)用程序和簡(jiǎn)捷、快速的開(kāi)發(fā)環(huán)境。 Visual Studio C++ 采用一種非常巧妙的方法將原本非常復(fù)雜的 Windows 編程步驟封裝起來(lái),使編程人員可以輕松容易地編寫(xiě) Windows應(yīng)用程序。除了 IntelliSense Technology(智能感應(yīng)技術(shù))和 Edit and Continue(即編即調(diào))等顯著縮短開(kāi)發(fā)時(shí)間的新特性外, Visual C++ 還為 Web 開(kāi)發(fā)和企業(yè)開(kāi)發(fā)提供更良好的支持。要用 C++來(lái)開(kāi)發(fā) Windows和 Web上的高性能應(yīng)用33 程序, Visual C++是效率最高的首選工具。系統(tǒng)對(duì)硬件和軟件配置有一定的要求,其中硬件配置: 486 以上檔次的計(jì)算機(jī),彩色顯示器,內(nèi)存 8M,硬盤(pán) 200M;軟件配置: Windows 98/2021/XP操作系統(tǒng),具有 SP2補(bǔ)丁。 圖 半自動(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)用戶(hù)進(jìn)行插入、刪除、修改32 等數(shù)據(jù)庫(kù)操作時(shí) ,根據(jù)考試安排的的基本條件(下文將詳細(xì)講述)拒絕執(zhí)行不合法的操作,并給出提示給用戶(hù)。我們只要點(diǎn)擊半自動(dòng)考場(chǎng)安排界面中的“生成考場(chǎng)安排表”按鈕,系統(tǒng)就會(huì)自動(dòng)編排考場(chǎng)(如圖 )。當(dāng)記錄中包含了所有班級(jí)與課程的數(shù)據(jù)集之后,那么一個(gè)考場(chǎng)編排基本成型,這 個(gè)時(shí)候?yàn)榱藘?yōu)化考場(chǎng)編排,我們可以對(duì)記錄再進(jìn)行調(diào)整。首先我們先進(jìn)行一次考場(chǎng)安排手工編排。在上面的教師資料管理中我們還需要注意一個(gè)問(wèn)題,就是如果教師重名的情況,對(duì)于這種情況我們需要在錄入的時(shí)候做好標(biāo)記, 能夠明顯地區(qū)分兩者或者更多重名。 3)對(duì)于班級(jí)課程的安排要大致接近計(jì)算出來(lái)的平均數(shù),不能有太多偏差。 2)同一專(zhuān)業(yè)的班級(jí)必須在同一天參加同一門(mén)考試。這樣的安排目的是確保考試之余能夠提供復(fù)習(xí)時(shí)間,如果需要加長(zhǎng)復(fù)習(xí)時(shí)間我們可以 。這個(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ì)時(shí)我們的考試時(shí)間在這里就已經(jīng)定好了,這樣做的目的是為了能夠減少不穩(wěn)定因素,使考場(chǎng)安排的編排出現(xiàn)不合理的幾率能夠降低。由一列表顯示已經(jīng)輸入數(shù)據(jù)庫(kù)的信息。進(jìn)入主程序窗口之后我們首先要輸入本次考場(chǎng)安排所需要的基本數(shù)據(jù),其中包括教室資料(如圖 )、班級(jí)資料(如圖 )、監(jiān)考教師資料(如圖 )、專(zhuān)業(yè)課程資料(如圖 )。進(jìn)入主程序窗體之后我們首先需要錄入考場(chǎng)安排所需要的數(shù)據(jù)。當(dāng)輸入正確的用戶(hù)名和密碼之后將進(jìn)入主程序窗體,同時(shí)隱藏登入界面。但目前由于算法上的原因我們的系統(tǒng)還未滿(mǎn)足此項(xiàng)需求。對(duì)于這種情況,我們就可以在時(shí)間安排上將一天時(shí)間做為一個(gè)時(shí)間單位,并且只要顯示考試的日期就可以了,這樣一來(lái)在時(shí)間的判斷上我們的的工作量就可以減少很多??紤]到這一點(diǎn)的原因是大教室的數(shù)量遠(yuǎn)遠(yuǎn)比小教室要少,因此考慮完小教室情況之后然后根據(jù)實(shí)際要求使用