摘要:在分析試卷生成系統的功能需求之后,該文提出了基于Delphi的試卷生成系統的設計思路,闡述了該系統的總體架構及所采用的關鍵技術,該系統能夠實現手動和自動組卷兩種方式,最后給出試卷生成模塊的具體實現方法,用戶通過身份驗證進入本系統,根據其權限限制實現自己相應的操作。
關鍵詞:試卷生成系統;Delphi;關鍵技術
中圖分類號:TP315文獻標識碼:A文章編號:1009-3044(2010)05-1140-04
Design and Implementation of Paper Generation System based on Delphi
LING Hui-wen1, YIN Chang-qing2
(1. Dingnan Municipal State Taxation Bureau of Jiangxi Province, Dingnan 341900, China; 2. School of Software Engineering, Tongji University, Shanghai 201804, China)
Abstract: In the analysis of the functional requirements about paper generation system, this paper presents design ideas of paper generation system based on Delphi, expatiates the overall architecture and key technology used in the system, at the same time, it implements manual and automatic test paper. Finally, it gives out a concrete realization of the module, and users can realize their corresponding operation according to their limit after they are authenticated into this system
Key words: Paper Generation System; Delphi; Key Technology;
1 概述
考試是教學管理中的一個重要環節,考試不僅要對學生的學習情況進行評價,而且還要對任課老師的教學質量進行評價,為了使評價公正、準確、需要合理的組卷。傳統的手工出卷在試卷的標準化程度、題量大小、覆蓋面等方面都難以控制,不可避免由不同老師出卷而產生試題的難度、重點、內容的差異,這樣的試卷很難做到考試的公平性、合理性、不利于對教學質量的統一評估。隨著計算機輔助教學研究的發展,利用計算機生成試卷將解決試卷質量的控制問題。同時,利用計算機進行試卷的自動生成并逐步積累形成有效的試題庫,將使試題和試卷的管理變得高效而便捷,有利于提高工作效率,逐步走向正規化、自動化。基于上述考慮,本文利用Delphi語言開發了一個試卷生成系統,通過本系統,一般用戶可根據自己的出卷形式進行出卷,如用戶可以選擇在某些章節范圍內進行出卷,也可指定試卷的題型以及試卷的總分等等,還可以預覽已有的試卷及其答案、查看題庫內的題目等,同時可設置與修改自己的密碼;而系統管理員需要對系統進行維護,維護包括用戶的管理、試卷與題庫的管理,以及數據庫的管理。
2 系統分析
本系統是一個完整獨立的系統,需要有用戶登錄、主窗口、試題的修改與插入、試卷的生成與輸出、用戶管理、數據庫備份等。用戶通過身份驗證進入本系統,根據其權限不同完成相應的操作。
2.1 主要功能模塊
本系統主要分以下幾個模塊:
1)試卷管理。實現試卷生成與輸出功能,以及現有試卷的預覽與刪除功能。
2)試題管理。實現試題的插入、查看、修改以及刪除等功能。
3)用戶管理。實現用戶密碼修改、用戶的添加、刪除,以及權限設置等功能。
4)后臺管理。實現數據庫的備份與還原。
整個系統的功能模塊圖如圖1所示。
2.2 系統要求
1)能夠自動生成試卷,本能進行試卷的打印;
2)能夠對試題進行添加、刪除、修改;
3)能夠進行權限設定,只有系統管理員才有權限修改試題分值,操作人員只能修改試題選擇與否等基本信息;
4)界面美觀大方,方便實用。
2.3 實驗方案
本系統以Delphi為開發工具,后臺數據庫使用的是ACCESS 2000,Delphi連接數據庫的主要方式有兩種:一是BDE,二是ADO。
BDE(Borland Database Engine)是Delphi頗具特色的數據庫連接管理技術。憑借窗體和報表,BDE可以訪問諸如Paradox,dBASE,本地InterBase服務器的數據庫,也可訪問遠程數據庫服務器上的數據庫,不過使用BDE連接數據庫速度較慢。
而ADO(ActiveX Data Objects)是微軟提供的一項技術。通過ADO,可以方便的訪問各種類型的數據庫,特別是OLEDB數據庫。ADO已成為訪問數據庫的新的標準接口。從Delphi 6.0開始Delphi添加了對ADO的支持,通過ADO連接數據庫,可以獲得對數據庫更大范圍的控制。
根據本系統的特點和上述特點,本系統選擇ADOConnection做為系統的數據庫連接組件。
3 關鍵功能模塊設計與實現
3.1 試卷管理模塊
試卷管理模塊,主要實現試卷的預覽,試卷的輸出,以及刪除試卷等功能,經過一番分析與設想,本文將試卷管理模塊分成兩部分來完成:一、用戶可從現有試卷中抽取一份試卷,前提是用戶能夠對現有試卷及其答案進行預覽;二、用戶可通過指定章節范圍從題庫中隨機抽取試題生成試卷并輸出,同時,為滿足用戶需求,在該部分中增加了某些功能,即允許用戶設置試卷總分,以及各題型的分值。為了體現本系統的實用性,該功能模塊選擇以Microsoft Office Word輸出試卷或是預覽試卷。
實現以WORD輸出與預覽試卷的關鍵代碼如下:
const
BF_Name:array[1..10] of String=('一、','二、','三、','四、','五、','六、','七、','八、','九、','十、');
JG:String=' ';
var
ItemIndex:OleVariant;
NewDocument:_Document;
FZ,TL,BF,STH,i,WTS,YTS:integer;
temp,AppPath,BGName:string;
procedure SetFont(aBold,aItalic,aShadow,aSize:integer);
begin
SJ_WF.ConnectTo(SJ_WD.Sentences.Get_Last.Font);
SJ_WF.Name:='宋體';
SJ_WF.Bold := aBold;
SJ_WF.Italic := aItalic;
SJ_WF.Shadow := aShadow;
SJ_WF.Size := aSize;
end;
begin
AppPath:=ExtractFilePath(Application.ExeName);//取得本程序的路徑
//顯示進度窗口
RateProcess_F.Show;
RateProcess_F.CZ_P.Caption:='正在鏈接Microsoft Office Word......';
RateProcess_F.Rate_Gauge.MaxValue:=SJT_ADOQ.RecordCount+25;
RateProcess_F.Repaint; //重繪窗口,否則顯示不出新設置的控件屬性
try
SJ_WA.Connect;
except
MessageBox(handle,'無法連接,也許沒有安裝Word','連接出錯', MB_Ok or MB_ICONERROR);
RateProcess_F.Close;
Abort;
end;
RateProcess_F.Rate_Gauge.Progress:=RateProcess_F.Rate_Gauge.Progress+10;
//建立一個新文檔
NewDocument:=SJ_WA.Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam);
RateProcess_F.CZ_P.Caption:='正在新建Microsoft Office Word 文檔......';
RateProcess_F.Rate_Gauge.Progress:=RateProcess_F.Rate_Gauge.Progress+5;
RateProcess_F.Repaint;
//建立WordDocument連接, 用第二種方法不容易出錯
SJ_WD.ConnectTo(NewDocument);
SJ_WD.Windows.Item(ItemIndex).Caption:='數據庫原理與應用期末試卷';
//此文檔的第一個窗口的標題
RateProcess_F.Rate_Gauge.Progress:=RateProcess_F.Rate_Gauge.Progress+5;
RateProcess_F.Repaint;
//因為Word進行拼寫檢查需要很多時間,所以首先關閉檢查
SJ_WA.Options.CheckSpellingAsYouType := False;
SJ_WA.Options.CheckGrammarAsYouType := False;
//設置Word的字體
SetFont(1,0,0,22);
//設置段落對齊方式
SJ_WD.Range.InsertAfter('數據庫原理與應用期末試卷'+#13);
RateProcess_F.Rate_Gauge.Progress:=RateProcess_F.Rate_Gauge.Progress+5;
RateProcess_F.Repaint;
//SJ_WA.Documents.Item(ItemIndex).Paragraphs.Alignment:=wdAlignParagraphLeft;
SJ_WD.Range.InsertAfter('學校___________ 班級________姓名___________ 得分_____ ' +#13);
SetFont(0,0,0,14);
……
3.2 試題管理模塊
試題管理模塊,能夠實現對各類型的試題進行插入、刪除、修改、保存刷新、取消等功能及對章節維護界面的章節進行添加 刪除 修改的功能。選擇題界面如圖2所示。
關鍵代碼如下:
“插入”代碼:
procedure Tstglform.INSERT_TBtnClick(Sender: TObject);
begin
XZ_TS.Enabled:=true;
TK_TS.Enabled:=true;
JD_TS.Enabled:=true;
if STGL_PC.ActivePage=XZ_TS then
stglform.XZT_ADOT.Insert;
if STGL_PC.ActivePage=TK_TS then
stglform.TKT_ADOT.Insert;
if STGL_PC.ActivePage=JD_TS then
stglform.JDT_ADOT.Insert;
end;
“刪除”代碼:
procedure Tstglform.SC_TBtnClick(Sender: TObject);
begin
XZ_TS.Enabled:=1;
TK_TS.Enabled:=1;
JD_TS.Enabled:=1;
if STGL_PC.ActivePage=XZ_TS then
begin
if messagedlg('確實要刪除該記錄嗎?',mtconfirmation,[mbYes,mbNo],0)=mrYesthen
stglform.XZT_ADOT.Delete//顯示信息框,提示讀者是否真想刪除該試題
else
stglform.XZT_ADOT.cancel;
end;
if STGL_PC.ActivePage=TK_TS then
begin
if messagedlg('確實要刪除該記錄嗎?',mtconfirmation,[mbYes,mbNo],0)=mrYesthen
stglform.TKT_ADOT.Delete
else
stglform.TKT_ADOT.cancel;
end;
if STGL_PC.ActivePage=JD_TS then
begin
if messagedlg('確實要刪除該記錄嗎?',mtconfirmation,[mbYes,mbNo],0)=mrYesthen
stglform.JDT_ADOT.Delete
else
stglform.JDT_ADOT.cancel;
end;
end;
“修改”代碼如下:
procedure Tstglform.XG_TBtnClick(Sender: TObject);
begin
XZ_TS.Enabled:=true;
TK_TS.Enabled:=true;
JD_TS.Enabled:=true;
if STGL_PC.ActivePage=XZ_TS then
stglform.XZT_ADOT.Edit;
if STGL_PC.ActivePage=TK_TS then
stglform.TKT_ADOT.Edit;
if STGL_PC.ActivePage=JD_TS then
stglform.JDT_ADOT.Edit;
end;
4 小結
本文所設計的試卷生成系統 ,不僅真正提高了試卷的保密性、科學性、規范性、實用性 ,而且實現了資源共享和全方位的試卷生成。用戶只要輸入最基本的考試要求,系統就能自動地按一定的算法生成一份滿足需求的試卷,從而在師資緊張的情況下做到了考教分離,減輕教師的工作量。
參考文獻:
[1] 羅小平.Delphi精要[M].北京:電子工業出版社,2004.
[2] 林華聰,余劍鋒.Delphi6[M].北京:冶金工業出版社,2002.
[3] 宋坤,鄒天思.Delphi數據庫系統開發完全手冊[M].北京:人民郵電出版社,2006.
[4] 丁曉香,趙維東.試題庫管理系統[J].哈爾濱師范大學自然科學學報,2004(2).
[5] 沈麗容,黃慶柏.基于PB的通用自動組卷系統開發[J].計算機與現代化,2007(9).