摘要:本文系統地介紹了Authorware課件制作中測試題目的設計與實現,并給出了課件制作的主要功能模塊、技術要點、實現方法及一些重要的程序源代碼。
關鍵詞:Authorware;題庫;ODBC;數據庫;數據源
中圖分類號:G 434文獻標識碼:B文章編號:1673-8454(2008)02-0053-02
一、引言
在利用Authorware開發的多媒體教學軟件中,對教學內容進行測試是經常運用的一種手段。如果軟件不大,只有少量簡單的測試題,可以通過靈活運用框架圖標和各種交互響應方式直接設計出每一道題目的測試內容。由于軟件容量的限制,這種方式設計題目有限,并且題目內容不夠靈活,最終用戶難于自行擴充。在大型課件中,采取上述方法顯然不能滿足需要。
除了難于自行擴充外,另外一個問題是如何減輕教師工作量的問題。用傳統的方法組織一次完整的測試,至少要經歷四個步驟:出卷、考試、閱卷、成績統計。一個典型的例子就是出卷。在整個測試過程中教師的工作量是非常巨大的。
Authorware多媒體制作工具雖然不具有內置數據庫,但它具有許多其它高級軟件的共性,如ODBC(開放式數據庫連接)功能等。因此我們可以考慮采用Authorware軟件與外部數據庫的接口,實現多媒體題庫的管理和調用。即利用外部數據庫軟件存儲試題,通過Authorware設計的屏幕界面調用試題(表現試題的內容),管理試題(系統管理員可以對題庫進行修改)。
二、題庫系統的主要功能模塊
開發過程中,在全面考慮了多媒體教學軟件的特征和用戶的要求及對整個軟件進行分析后,把軟件系統的主要功能分為幾個模塊(如圖1)。
三、題庫系統實現的主要技術
單從技術的角度看,整個系統的技術實現過程無非是三個過程:配置數據源、訪問數據庫和管理修改數據庫。圍繞上述三個過程而進行的系統開發過程中遇到的主要技術有:
1. 配置數據源的方法
本系統在開發過程中以Microsoft Access作為數據庫,在配置數據源時有兩種辦法:自動和手動。手動配置數據源雖然簡單(在Windows中的控制面板里進行配置),但是有它的弊端,如果多媒體軟件在不同的平臺運行時需要重新進行一次配置。所以考慮到軟件系統的可移植性,本文只討論用tMsDSN.u32里的函數:tMsDBRegister( )來自動配置數據源的方法。

代碼如下:
dbType:=\"Microsoft Access Driver (*.mdb)\"
——指明數據源的類型
dbList:=\"DSN=ksDSN;\"
——設置數據源的名稱
dbList:=dbList^\"Description=My ODBC DSN;\"
——設置數據源的說明部分
dbList:=dbList^\"FIL=MS Access;\"
——設置數據庫的類型
dbList:=dbList^\"DBQ=\"^FileLocation^\"test.mdb;\"
——設置與數據源相關聯的數據庫名稱,與主程序在同一目錄下,本系統建立的數據庫為test.mdb。
result:=tMsDBRegister(4, dbType, dbList)——配置系統數據源
其中數據源的說明和類型這兩條語句可以省略。如果配置成功,變量result的值是1,否則為0。
2. 訪問數據庫的方法
ODBC(Open Database Connectivity),即開放式數據庫互連,它可以通過SQL(Structured Query Language)語言對不同的數據庫進行訪問。本系統用ODBC.U32里的函數ODBCOpen()、ODBCExecute()和ODBCClose()來訪問數據源。
代碼如下:
odbchandle:=ODBCOpen(WindowHan
dle,\"ODBCError\",\"ksDSN\",,)
——打開數據源\"ksDSN\",省略了用戶名和密碼。
p1:=GetSpriteProperty(@\"p1\",#value)
p2:=GetSpriteProperty(@\"p2\",#value) ——獲得組卷參數
如圖2所示。
str1:=\"select question from onlywhere p between '\"^p1^\"' and '\"^p2^\"'\"
str2:=\"select answer1 from only where p between '\"^p1^\"' and '\"^p2^\"'\"
……
str5:=\"select answer4 from only where p between '\"^p1^\"' and '\"^p2^\"'\"
ques:=ODBCExecute(odbchandle,str1)
ans1:=ODBCExecute(odbchandle,str2)
……
ans4:=ODBCExecute(odbchandle,str5)
nlines:=LineCount(ques)
“only”是數據庫test.mdb中表的名稱,“p”為數據庫test.mdb表中的一個字段,是試題的難度系數,nlines變量用于存儲抽取的試題數量。
以上是組卷的主要程序代碼。組卷策略的實質是將一些比較直觀明了的組卷參數變換成計算機能夠操作的試題屬性項,然后根據這些屬性項,在題庫中抽取試題組成試卷。
抽取試題以后要顯示試題內容,系統以單項選擇題為例,通過Microsoft Forms 2.0 TextBox ActiveX控件把題目內容表現出來。

t:=1
rec1:=GetLine(ques,t)
da1:=GetLine(ans1,t)
……
da4:=GetLine(ans4,t)
SetSpriteProperty(@\"question\", #value, rec1)
SetSpriteProperty(@\"answer1\", #value, da1)
……
SetSpriteProperty(@\"answer4\", #value, da4)
SetSpriteProperty(@\"fst\",#value,t)
t是控制題目順序的變量,先把第1題顯示出來。
因為學生在回答問題的時候,通常是按順序進行的,第一次回答結束之后要對其中某一題進行修改時,不能通過“上一題”或“下一題”來操作,這樣會浪費學生很多時間。例如,如果抽取了100道試題,現在做到第88題,要對第1題進行修改。所以系統通過以下程序來完成:n是用戶輸入的試題的順序代碼變量。
n:=GetSpriteProperty(@\"fst\",#value)
t:=n
ifn<=nlines 1<=n then
rec1:=GetLine(ques,n)
……
da4:=GetLine(ans4,n)
SetSpriteProperty(@\"fst\",#value,n)
……
SetSpriteProperty(@\"answer4\", #value, da4)
else
MessageBox(WindowHandle, \"超出試題范圍!\", \"警告\", 48)
end if
如圖3所示。
3. 管理修改數據庫的方法
除了要進行試題的顯示外,該系統還允許管理員能夠對其中的試題進行修改。
wt:=GetSpriteProperty(@\"question\",#value)
d1:=GetSpriteProperty(@\"answer1\",#value)
……
d4:=GetSpriteProperty(@\"answer4\",#value)
flag:=GetSpriteProperty(@\"fst\",#value)
zx:=\"update only set question='\"^wt^\"',
answer1='\"^d1^\"',
answer2='\"^d2^\"',answer3='\"^d3^\"',
answer4='\"^d4^\"' where num='\"^flag^\"'
jg:=ODBCExecute(odbchandle,zx)
if ODBCError=\"\" then
MessageBox(WindowHandle, \"更新數據成功!\", \"Information\", 64)
else
MessageBox(WindowHandle, \"更新數據失敗!\", \"Information\", 16)
end if
四、結束語
本文主要講述了利用數據庫容量大、易于維護、易于擴充等特點開發本系統的試題庫,并通過ODBC接口與Authorware軟件之間連接,從而達到解決在用Authorware軟件進行課件制作中試題難以大量設計的問題的目的。