版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Delphi專業(yè)試題庫的設(shè)計與實現(xiàn) 劉東玉 摘 要 本文主要敘述了含公式、圖片的專業(yè)試題庫的總體設(shè)計、系統(tǒng)功能以及實現(xiàn)方法,并給出了用Ole Automation技術(shù)并結(jié)合Word VBA實現(xiàn)對公式及圖片等專業(yè)題目的處理。該試題庫在Windows環(huán)境下,用Delphi5.0+SQL Server2000+Office2000實現(xiàn)。關(guān)鍵字 試題庫 客戶服務(wù)器 Delphi Word VBA SQL語句 1 引言傳統(tǒng)試題庫管理系統(tǒng),都是基于文本型的關(guān)系數(shù)據(jù)
2、庫來組織信息和設(shè)計開發(fā)的。理工類專業(yè)試題可能以公式、表格、圖形、圖像等形式表現(xiàn),因此用傳統(tǒng)的方式開發(fā)此類專業(yè)試題庫在存貯、顯示試題時有很大的局限性。本文以筆者開發(fā)的某專業(yè)試題庫系統(tǒng)為例介紹了如何開發(fā)含公式、圖片的專業(yè)試題庫。某專業(yè)試題庫系統(tǒng)是一套用于對某專業(yè)考核試題庫叢書的試題進行計算機管理的應(yīng)用軟件。該系統(tǒng)主要實現(xiàn)叢書文檔的批量數(shù)據(jù)錄入、逐個數(shù)據(jù)錄入、修改、檢索;手工出題和自動出題;實現(xiàn)了網(wǎng)絡(luò)化,使得用戶可以在客戶端進行遠程訓(xùn)練、考試;能夠跟Word兼容,處理公式和圖片類試題;對系統(tǒng)用戶統(tǒng)一管理,因人授予其使用功能和訪問現(xiàn)有數(shù)據(jù)庫的范圍和權(quán)限。系統(tǒng)有如下功能模塊:數(shù)據(jù)服務(wù)器、試題管理系統(tǒng)、遠
3、程訓(xùn)練考試系統(tǒng)。2 技術(shù)指標(biāo)某專業(yè)試題庫系統(tǒng)運用Delphi5.0作為前臺開發(fā)工具,采用SQL Server97作為后臺數(shù)據(jù)庫,通過在Delphi程序中嵌入Word,實現(xiàn)對試題的編寫。開發(fā)本課題的核心是試題管理系統(tǒng)的開發(fā),重點是智能抽題部分,難點是實現(xiàn)與Word的結(jié)合處理含公式圖片的試題、批量錄入的實現(xiàn)和三層結(jié)構(gòu)的實現(xiàn)。 軟件的實現(xiàn)主要有以下技術(shù)指標(biāo): 建立后臺數(shù)據(jù)庫. 運用Delphi5.0動態(tài)生成SQL語句。 通過跟Word 結(jié)合實現(xiàn)對試題的錄入、顯示。 運用智能算法進行抽題。 運用Midas技術(shù)實現(xiàn)網(wǎng)絡(luò)功能。 運用Word VBA技術(shù)實現(xiàn)批量試題錄入3 功能設(shè)計與實現(xiàn)某專業(yè)試
4、題庫系統(tǒng)分為數(shù)據(jù)服務(wù)器、管理系統(tǒng)和遠程訓(xùn)練考試系統(tǒng)三層。如圖1所示。圖1 總體設(shè)計數(shù)據(jù)服務(wù)器:數(shù)據(jù)服務(wù)器是為客戶端存放數(shù)據(jù)的服務(wù)器,為管理系統(tǒng)和客戶端提供服務(wù)。管理系統(tǒng):管理系統(tǒng)是對某專業(yè)考核試題庫叢書的試題進行管理的系統(tǒng)。主要完成系統(tǒng)設(shè)置、試題管理、抽題管理和權(quán)限設(shè)置。遠程訓(xùn)練考試系統(tǒng):遠程訓(xùn)練考試系統(tǒng)(即客戶端)主要用于遠程計算機調(diào)用服務(wù)器抽出的試題以及用戶在遠程進行訓(xùn)練。3.1數(shù)據(jù)服務(wù)器的實現(xiàn)數(shù)據(jù)交換服務(wù)器的關(guān)鍵部件是遠程數(shù)據(jù)模塊,它提供了IAppServer接口??蛻魴C數(shù)據(jù)庫應(yīng)用程序通過IAppServer的AS_GetProviderNames以及ClientDataSe
5、t的ProviderName屬性指定數(shù)據(jù)交換服務(wù)器上的DataSetProvider或Provider組件。3.2管理系統(tǒng)的實現(xiàn)管理系統(tǒng)是某專業(yè)試題庫系統(tǒng)的核心,以下重點介紹批量數(shù)據(jù)錄入、Word文檔入庫和智能抽題算法的設(shè)計與實現(xiàn)。3.2.1 批量數(shù)據(jù)錄入批量數(shù)據(jù)錄入是指將規(guī)定格式的Word文檔錄入到數(shù)據(jù)庫中。在每個試題編號前加一個符號,在每一個答案前加一#作為標(biāo)志。在文檔的最后加一$,表示結(jié)束。批量錄入是系統(tǒng)實現(xiàn)的難點之一,它是應(yīng)用Delphi5.0調(diào)用Word VBA來實現(xiàn)的,其流程如下圖所示: 圖2 批量錄入流程其部分代碼及其分析如下:/循環(huán)開始,如果不
6、是$繼續(xù)循環(huán) while s1<>'$' do begin j:=j+1; pa:=wd1.Paragraphs.Item(j); s:=pa.Range.Get_Text;/判斷是否 if s1='' then begin if j<>1 then
7、60; begin filename:=ExtractFileDir(Application.Exename)+'temptempa.doc' wd2.SaveAs(filename); wd2.Close; w
8、d2.Disconnect;/提取試題編號 stbh:='' for i:=2 to 22 do stbh:=stbh+si; j:=j+1; pa:=wd1.Paragraphs.Item(j); pa.Range.Copy;
9、0; quebool:=true; /新建Word文檔 并將跟內(nèi)容粘貼 wa1.Documents.Add(template,newtemplate); wd2.ConnectTo(wa1.Documents.Item(ItemIndex);
10、; wd2.Content.Paste; wa1.Selection.StartOf(unit_,Extend1); wd2.Range.EndOf(unit_,count); end;/如果是#符號,則將內(nèi)容存放到答案中,是正常內(nèi)容則繼續(xù)讀取,此處代碼略end;3.2.2 將Word文檔入庫由于某專業(yè)考核試題庫中的試題含有公式及圖片,而如何將這些含有公式及圖片的試題保存成為一個要
11、解決的難題。在設(shè)計時將每個題目及答案看作Word文檔,將這些Word文檔保存到數(shù)據(jù)庫中便是要解決的問題。在保存這些Word文檔時將每個Word文檔轉(zhuǎn)換成數(shù)據(jù)流,以流的形式將這些文件保存到類型為BLOB的字段中,這樣就解決了題目的存放問題。在添加一條含有文件流的記錄時,首先將非BLOB字段的字段添加到表內(nèi),然后通過以只讀的方式創(chuàng)建文件流、以寫入的方式創(chuàng)建BLOB流、讀取緩存、寫入數(shù)據(jù)、保存記錄等一系列過程完成數(shù)據(jù)保存。具體流程如下:圖3 Word文檔入庫過程以下是將Word文檔轉(zhuǎn)換成數(shù)據(jù)流保存到數(shù)據(jù)庫中的代碼。questionfilename:=ExtractFileDir(Appl
12、ication.Exename)+'temptempquestion.doc'/找到文件/以只讀的方式創(chuàng)建文件流 MyFile:=TFileStream.Create(questionfileName,fmOpenRead);/以寫入方式創(chuàng)建BLOB數(shù)據(jù)流Stream:=TBlobStream.Create(FieldByName('question') as TBlobField, bmWrite); MemSize := MyFile.Size;
13、60; Inc(MemSize); /增加的一字節(jié)給結(jié)尾的null Buffer := AllocMem(MemSize); try Stream.Seek(0, soFromBeginning); /流指針位置放到最前
14、0; MyFile.Read (Buffer,MemSize); Stream.Write(Buffer,MemSize); finally MyFile.Free; Stream.Free; end;&
15、#160; try begin dmform.Query1STB.Post; ApplyUpdates; CommitUpdates;
16、; dmform.Query1STB.close; end; except showmessage('保存失??!'); exit; end;3.2.3 抽題算法抽題
17、算法是管理系統(tǒng)的重點和難點,抽題分人工抽題和自動抽題兩部分,人工抽題就是將符合條件的試題選擇出來,用戶根據(jù)自己的需求抽出試題;自動抽題是指計算機根據(jù)智能抽題算法來抽取試題。如何智能抽題成為抽題的關(guān)鍵。l 人工抽題人工抽題是用戶選擇抽題的范圍(如崗位、系統(tǒng)、適用對象等)后,系統(tǒng)給出所有符合條件的題目,用戶根據(jù)自己的需求選擇需要的題目,將其抽出。題目抽出后暫時保存到一個臨時表中,然后將題目及答案合成到一起,然后將其保存到試卷表中。這里抽題用到了SQL語句:SELECT * FROM STB
18、where STBH in('+idstring+'),其中idstring是所有選中的題目的試題編號的集合。l 自動抽題自動抽題是根據(jù)智能算法抽出試題。為了實現(xiàn)智能抽題,每道試題是指了兩個參數(shù),一個是被抽到的次數(shù),另一個是最近抽題時間。這兩個參數(shù)來決定這道題目是否參加抽題,所以叫做智能因子。智能抽題的算法如下: 圖4 智能抽題算法其核心代碼如下:/限制抽出的題目的范圍s:=' and STBH like''%1_'&
19、#39;'sqlstring:=''sqlstring:='select * from stb where ID like ''%'''+sqlstrings1+s;sqlstring:=sqlstring+' and sscm like''%'+cmbox1.Text+'%'' and ssfc like ''%'+fcbox1.Text+'%'' and sszj like ''%'+zjbo
20、x1.Text+'%'''/抽出全部符合條件的試題with dmform.Query1STB do begin close; with sql do begin clear; add(sqlstring); end; try open except execsql; end; counter:=0; while not eof do begin cou
21、nter:=counter+1; next; end;/判斷題庫數(shù)量是否達到待抽出的數(shù)量 if counter<counter1 then begin showmessage('題庫數(shù)量為'+inttostr(counter)+'不足,請重新選擇條件'); exit; end; listbox1.Clear;/進行智能抽題beginfor i:=1 to counter1 do begin first; Randomize;
22、60; k:=random(counter); for j:=0 to k do next;/check函數(shù)用來判斷選中的試題編號是否重復(fù),然后根據(jù)智能因子進行調(diào)整 if not(check(fieldbyname('STBH').asstring,listbox1)then begin if idstring='' then begin idstring:=&
23、#39;'''+fieldbyname('STBH').asstring+'''' listbox1.Items.Add(fieldbyname('STBH').asstring); end else begin idstring:=idstring+'
24、;,'''+fieldbyname('STBH').asstring+'''' listbox1.Items.Add(fieldbyname('STBH').asstring); end; end else begin first; while not eof do begin if not(check(fieldbyname('STBH').asstring,listbox1) then begin idstring:=idstring+','''+fieldbyname('STBH').asstring+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年中國天然金剛石洗石筆市場調(diào)查研究報告
- 上海工商職業(yè)技術(shù)學(xué)院《建筑給排水工程》2023-2024學(xué)年第一學(xué)期期末試卷
- 有關(guān)化學(xué)方面課程設(shè)計
- 機械設(shè)計基礎(chǔ)課件 模塊1 相關(guān)力學(xué)基礎(chǔ)知識
- 昆蟲主題美育課程設(shè)計
- 智慧單車課程設(shè)計意圖
- 幼兒園雪娃娃課程設(shè)計
- 幼兒紗巾活動課程設(shè)計
- 山東xx區(qū)域性養(yǎng)老服務(wù)中心項目可行性研究報告
- 巖土錨固課程設(shè)計
- 健身起跑線智慧樹知到期末考試答案2024年
- 2024年煤礦探放水考試題庫附答案
- 礦山安全生產(chǎn)管理經(jīng)驗分享
- 初識旅游智慧樹知到期末考試答案2024年
- 2023年中國電動工具行業(yè)發(fā)展白皮書
- 漢語言文學(xué)生涯發(fā)展展示
- 盆底功能障礙問卷(PFDI20)
- 期末綜合復(fù)習(xí)(試題)-2023-2024學(xué)年五年級上冊數(shù)學(xué)人教版
- 充電樁競爭格局分析
- 線性規(guī)劃課后題答案
- 壓裂作業(yè)質(zhì)量、安全、環(huán)保管理體系與措施
評論
0/150
提交評論