- 基于WWW的協(xié)同式CAI軟件的Java實(shí)現(xiàn) 推薦度:
- 相關(guān)推薦
基于WWW的協(xié)同式CAI軟件的Java實(shí)現(xiàn)
摘要本文介紹一個(gè)用J++實(shí)現(xiàn)的基于Web環(huán)境的協(xié)同式計(jì)算機(jī)輔助教學(xué)軟件的結(jié)構(gòu),并給出了具體實(shí)現(xiàn)中的一些關(guān)鍵技術(shù)。
關(guān)鍵詞J++,Web,遠(yuǎn)程教學(xué),Socket通信
1引言
隨著Internet網(wǎng)絡(luò)技術(shù)的發(fā)展,遠(yuǎn)程多媒體教學(xué)成為當(dāng)前的研究熱點(diǎn);贗nternet的WWW應(yīng)用模式作為一種方便、迅速的共享信息手段,深受用戶(hù)歡迎。用戶(hù)通過(guò)訪問(wèn)超文本頁(yè)面瀏覽多媒體教學(xué)內(nèi)容,通過(guò)點(diǎn)擊超鏈去進(jìn)行自由的探索式學(xué)習(xí)。但僅基于超文本頁(yè)面的教學(xué)存在很多缺點(diǎn),如:學(xué)生容易在超鏈中迷失方向;教師不能對(duì)學(xué)生的學(xué)習(xí)行為進(jìn)行控制,教學(xué)過(guò)程缺乏有序性;教師與學(xué)生之間不能進(jìn)行交流,教師對(duì)學(xué)生的學(xué)習(xí)效果缺乏檢查手段等。本文介紹的計(jì)算機(jī)輔助教學(xué)軟件克服了以上缺點(diǎn),整個(gè)軟件采用J++編寫(xiě)實(shí)現(xiàn),由服務(wù)器部分、學(xué)生部分、教師教學(xué)部分、課件維護(hù)部分共四部分組成,該軟件實(shí)際上為一個(gè)教學(xué)框架系統(tǒng),所有教學(xué)材料由教師安排,教師和學(xué)生通過(guò)訪問(wèn)各自的URL地址進(jìn)入角色。學(xué)生在教師的現(xiàn)場(chǎng)控制進(jìn)行學(xué)習(xí)、討論、練習(xí)和測(cè)試。
2系統(tǒng)的功能
2.1超文本頁(yè)面學(xué)習(xí)
教師對(duì)學(xué)生的學(xué)習(xí)頁(yè)面進(jìn)行統(tǒng)一向?qū)。教師選擇學(xué)習(xí)頁(yè)面,將此頁(yè)面的URL地址傳送給學(xué)生,引導(dǎo)學(xué)生到該Web頁(yè)面進(jìn)行學(xué)習(xí),如此增加了學(xué)習(xí)的針對(duì)性,滿(mǎn)足有組織、有控制的教學(xué)需要。
2.2實(shí)時(shí)討論
實(shí)時(shí)討論是協(xié)同式教學(xué)軟件的一個(gè)基本特征。在討論期間,教師可提問(wèn)學(xué)生,安排作業(yè)等,學(xué)生則可將自己的學(xué)習(xí)體會(huì)及疑問(wèn)告訴教師。學(xué)生之間可以就學(xué)習(xí)中的問(wèn)題進(jìn)行實(shí)時(shí)交談。系統(tǒng)提供了兩種工具以支持網(wǎng)上實(shí)時(shí)討論:一種是純文字交談,如果發(fā)言者未選擇用戶(hù),則為公開(kāi)發(fā)言,否則為私下發(fā)言,只送往選定用戶(hù),在各用戶(hù)的討論面板上有一個(gè)文本域顯示每條發(fā)言的發(fā)言者及發(fā)言?xún)?nèi)容。另一種是共享白板,教師和學(xué)生都可往白板上寫(xiě)內(nèi)容,白板內(nèi)容所有用戶(hù)保持一致,共享白板可支持線、圓、矩形、文字等基本繪圖操作,并可選擇線條顏色。
2.3交互式做練習(xí)
教師發(fā)出練習(xí)的指示消息,則學(xué)生將自動(dòng)進(jìn)入練習(xí)界面,系統(tǒng)自動(dòng)從試題庫(kù)中調(diào)與學(xué)習(xí)問(wèn)題有關(guān)的試題供學(xué)生操練,在操練時(shí),系統(tǒng)將學(xué)生的解答與標(biāo)準(zhǔn)答案對(duì)比看是否答對(duì),并彈出對(duì)話框給學(xué)生反饋鼓勵(lì)信息。交互式練習(xí)有助于學(xué)生加深對(duì)教學(xué)內(nèi)容的理解。
2.4網(wǎng)上測(cè)試
測(cè)試是教學(xué)過(guò)程中不可缺少的教學(xué)環(huán)節(jié),通過(guò)測(cè)試,教師可對(duì)學(xué)生的學(xué)習(xí)進(jìn)行考核,并借此了解學(xué)生的學(xué)習(xí)效果,為改進(jìn)教學(xué)提供依據(jù)。學(xué)生則通過(guò)測(cè)試可了解自己對(duì)內(nèi)容的掌握情況,增加學(xué)習(xí)興趣。目前,每次測(cè)試試卷是由教師從試題庫(kù)選題組卷并安排分?jǐn)?shù)。測(cè)試有時(shí)間限制。
3系統(tǒng)的總體設(shè)計(jì)
從系統(tǒng)要完成的功能看,有兩類(lèi)工作方式:一類(lèi)是客戶(hù)/服務(wù)器方式(如學(xué)生做題),客戶(hù)方發(fā)出訪問(wèn)申請(qǐng),服務(wù)方給出響應(yīng)?蛻(hù)是動(dòng)作的發(fā)起者,何時(shí)發(fā)出申請(qǐng)由客戶(hù)方?jīng)Q定,客戶(hù)方發(fā)出申請(qǐng)后立即可從Socket通道去取服務(wù)方的結(jié)果。服務(wù)器方必須始終處于監(jiān)聽(tīng)等待狀態(tài)。
圖1系統(tǒng)的整體設(shè)計(jì)結(jié)構(gòu)
另一類(lèi)是網(wǎng)上的協(xié)作應(yīng)用(如實(shí)時(shí)討論等),在這種方式中,任何一方都可能成為消息的發(fā)送方,而另一方則成為消息的接收方。發(fā)送方的動(dòng)作由用戶(hù)界面的各類(lèi)事件驅(qū)動(dòng)引發(fā),其時(shí)間性是偶然的,接收方必須時(shí)刻處于接收監(jiān)聽(tīng)狀態(tài)。由于通信雙方處于對(duì)等的位置,因此雙方都要處于接收等待狀態(tài)。
由于Java的安全性限制,兩客戶(hù)瀏覽器間不能直接建立Socket連接,要實(shí)現(xiàn)兩瀏覽器間的通信必須通過(guò)Web服務(wù)器上的Java應(yīng)用程序進(jìn)行轉(zhuǎn)接。綜上所述,為了實(shí)現(xiàn)系統(tǒng)的功能,筆者將系統(tǒng)的總體設(shè)計(jì)為如圖1的形式。
有關(guān)說(shuō)明:
、賹W(xué)生和教師分別以客戶(hù)/服務(wù)器的方式與Web服務(wù)器上Java應(yīng)用程序建立通信連接。服務(wù)器方的連接監(jiān)聽(tīng)線程負(fù)責(zé)監(jiān)聽(tīng)來(lái)自客戶(hù)的Socket連接申請(qǐng)。服務(wù)方要為每個(gè)連接客戶(hù)建立一個(gè)消息處理線程,該線程負(fù)責(zé)接收來(lái)自相應(yīng)客戶(hù)的消息,對(duì)消息進(jìn)行分析處理。將消息轉(zhuǎn)發(fā)到其他客戶(hù)。
、趯W(xué)生和教師方都有一個(gè)消息接收線程負(fù)責(zé)接收來(lái)自服務(wù)方的消息。該線程通過(guò)調(diào)用用戶(hù)界面對(duì)象中的方法將消息要求反映在用戶(hù)界面上。為此,在設(shè)計(jì)消息接收線程類(lèi)時(shí),在其構(gòu)造方法中將用戶(hù)界面對(duì)象作為參數(shù)傳給該類(lèi)的對(duì)象,這是Java中實(shí)現(xiàn)對(duì)象間互訪的基本方法。
、墼L問(wèn)試題庫(kù)的過(guò)程是學(xué)生方發(fā)送相應(yīng)消息到服務(wù)器,服務(wù)器方通過(guò)COM組件RDO訪問(wèn)基于ODBC的數(shù)據(jù)庫(kù),并將訪問(wèn)結(jié)果傳回給學(xué)生。
④教師可對(duì)學(xué)生的學(xué)習(xí)過(guò)程進(jìn)行控制,在服務(wù)器方有一個(gè)線程專(zhuān)門(mén)接收來(lái)自教師的控制消息并將其轉(zhuǎn)發(fā)給學(xué)生,這些控制包括頁(yè)面學(xué)習(xí)向?qū)Ш蛯?duì)學(xué)習(xí)階段的控制,這些學(xué)習(xí)階段包括:實(shí)時(shí)討論、做練習(xí)、測(cè)試。學(xué)生的操作界面將隨教師的控制消息變化。
4幾個(gè)技術(shù)關(guān)鍵
4.1數(shù)據(jù)庫(kù)訪問(wèn)
VirsualJ++針對(duì)Microsoft操作系統(tǒng)對(duì)Java類(lèi)庫(kù)做了專(zhuān)門(mén)的擴(kuò)展,它將Java與COM(組件對(duì)象模型)和支持Java的InternetExplorer3.0瀏覽器相集成,用戶(hù)可在Java程序中訪問(wèn)任何支持COM的軟件。對(duì)于數(shù)據(jù)庫(kù)的訪問(wèn),在J++中提供了DAO(DataAccessObject)和RDO(RemoteDataObject)兩種方法。本軟件中采用RDO對(duì)象實(shí)現(xiàn)對(duì)ODBC數(shù)據(jù)源數(shù)據(jù)的訪問(wèn)。由于對(duì)數(shù)據(jù)庫(kù)的連接是建立在ODBC的基礎(chǔ)上,所以可以支持對(duì)各種類(lèi)型的數(shù)據(jù)庫(kù)訪問(wèn)。筆者采用的是Access數(shù)據(jù)庫(kù)。
通常,JavaApplet是在一個(gè)“沙箱”中運(yùn)行,可訪問(wèn)的資源有限,使用COM服務(wù)意味著存取沙箱之外的資源,為此,IE在安全性上要作嚴(yán)格的檢查,它將Java類(lèi)分為可信類(lèi)和不可信類(lèi),不可信類(lèi)不能使用COM服務(wù),所有不是從類(lèi)路徑裝入的類(lèi)都是不可信的,包括從網(wǎng)上下載的類(lèi),除非它們被封裝在具有一個(gè)數(shù)字簽名的.CAB文件中。為了避免安全性帶來(lái)的麻煩和減少客戶(hù)端的ODBC配置,筆者在訪問(wèn)試題庫(kù)的部分中采用了由服務(wù)器方Java應(yīng)用程序訪問(wèn)數(shù)據(jù)庫(kù)的辦法,無(wú)安全性限制。瀏覽器方Applet程序通過(guò)與服務(wù)器方應(yīng)用程序通信來(lái)傳遞訪問(wèn)請(qǐng)求和結(jié)果。
整個(gè)系統(tǒng)的數(shù)據(jù)庫(kù)表格設(shè)計(jì)如下:
.填空題表:含試題標(biāo)識(shí)號(hào)、問(wèn)題號(hào)、難度、試題內(nèi)容、答案共五個(gè)字段。
.判斷題表:結(jié)構(gòu)同上。
.填空題試卷表:試題標(biāo)識(shí)號(hào)、分?jǐn)?shù)共兩字段。
.判斷題試卷表:結(jié)構(gòu)同上。
.教學(xué)內(nèi)容索引表:含章號(hào)、節(jié)號(hào)、問(wèn)題號(hào)、問(wèn)題名、URL地址共五個(gè)字段。
.章標(biāo)題表:含章號(hào)、標(biāo)題共兩字段。
.節(jié)標(biāo)題表:含章號(hào)、節(jié)號(hào)、標(biāo)題共三個(gè)字段。
.成績(jī)登記庫(kù):含姓名,成績(jī)兩字段。
從數(shù)據(jù)庫(kù)設(shè)計(jì)可看出,本系統(tǒng)將教學(xué)內(nèi)容與試題庫(kù)中試題通過(guò)問(wèn)題號(hào)連接起來(lái)。
4.2數(shù)據(jù)通信處理
從總體設(shè)計(jì)可知,系統(tǒng)有兩類(lèi)應(yīng)用,它們有不同的工作特點(diǎn);诳蛻(hù)/服務(wù)器的應(yīng)用是客戶(hù)方發(fā)出訪問(wèn)請(qǐng)求后,再直接在事件代碼中獲取服務(wù)方返回的結(jié)果;而對(duì)于協(xié)作應(yīng)用則必須在所有客戶(hù)方分別設(shè)立消息監(jiān)聽(tīng)線程去獲取和處理數(shù)據(jù)。從實(shí)現(xiàn)效率上考慮,這兩類(lèi)應(yīng)用不宜共用一條Socket通道。筆者采用了雙Socket通路的辦法。在服務(wù)方設(shè)立兩個(gè)Socket監(jiān)聽(tīng)口,分別是8883和8884,所有客戶(hù)端要分別針對(duì)兩個(gè)監(jiān)聽(tīng)口建立Socket連接。為避免創(chuàng)建過(guò)多線程,并將兩類(lèi)應(yīng)用通道分開(kāi),系統(tǒng)在通道的使用上作了一些特殊處理,具體情況說(shuō)明如下:
.學(xué)生客戶(hù):使用8883口發(fā)送消息,使用8883口接收數(shù)據(jù)庫(kù)訪問(wèn)結(jié)果,使用8884口接收所有其它消息。
.服務(wù)器方:系統(tǒng)為每個(gè)客戶(hù)創(chuàng)建一個(gè)消息接收線程,它使用8883口接收消息,并將消息通過(guò)8884口的相應(yīng)輸出流轉(zhuǎn)發(fā)給其他客戶(hù)方?紤]到只有教師能發(fā)控制消息,在服務(wù)器方,針對(duì)8884口只建立一個(gè)教師控制監(jiān)聽(tīng)線程,它專(zhuān)門(mén)使用8884口接收教師控制消息,并通過(guò)8884口發(fā)送給所有學(xué)生。與學(xué)生對(duì)應(yīng)的8884口的輸入流未用,因此服務(wù)方也不必創(chuàng)建相應(yīng)的監(jiān)聽(tīng)線程。
.教師方:使用8884口發(fā)送教學(xué)控制信息,使用8883口發(fā)送談話、白板、查分等消息。接收消息線程使用8884口接收消息。
服務(wù)器方是通過(guò)8884口的輸出流將消息轉(zhuǎn)發(fā)到各個(gè)客戶(hù)方,這就要求與每個(gè)用戶(hù)連接對(duì)應(yīng)的輸出流要能實(shí)現(xiàn)共享訪問(wèn),這是各用戶(hù)間互發(fā)信息的基礎(chǔ)。為此,在服務(wù)方通信線程類(lèi)的設(shè)計(jì)上采用Static數(shù)組存放輸出流,這樣既可實(shí)現(xiàn)同一類(lèi)中各對(duì)象間的數(shù)據(jù)共享,又可在不同類(lèi)中通過(guò)類(lèi)名直接訪問(wèn)其數(shù)據(jù)。
由于在服務(wù)方和客戶(hù)方都采用了多線程設(shè)計(jì),系統(tǒng)的效率得以充分發(fā)揮。
4.3消息設(shè)計(jì)
整個(gè)系統(tǒng)是建立在消息基礎(chǔ)上的,服務(wù)器端和客戶(hù)端都承擔(dān)有消息處理的工作。大量基于協(xié)作應(yīng)用的消息,服務(wù)方只負(fù)責(zé)轉(zhuǎn)發(fā),由客戶(hù)方進(jìn)行處理。每類(lèi)消息由消息頭和內(nèi)容組成,消息頭用于系統(tǒng)判別。在整個(gè)系統(tǒng)中,主要有6類(lèi)消息:交談消息;白板消息;向?qū)ⅲ挥脩?hù)登入和退出消息;試題庫(kù)訪問(wèn)消息其它消息(如登分、查分等)。
4.4教學(xué)應(yīng)用界面設(shè)計(jì)
4.4.1教師界面
教師操作界面是固定的,在Applet面板上含四部分內(nèi)容:①用戶(hù)列表;②控制面板,有頁(yè)面向?qū)、討論、練?xí)、測(cè)試、查成績(jī)共五個(gè)按鈕,其中,前四個(gè)按鈕分別用來(lái)控制學(xué)生進(jìn)入各學(xué)習(xí)階段,學(xué)生的界面將隨教師的控制變化;③交談文本顯示域和談話錄入按鈕,點(diǎn)擊“談話錄入”按鈕,將彈出一個(gè)文本錄入窗口供發(fā)送談話內(nèi)容;④共享白板及工具欄。
4.4.2學(xué)生界面
學(xué)生界面是一個(gè)變動(dòng)的界面,由兩個(gè)幀構(gòu)成,一幀用來(lái)顯示JavaApplet,另一幀顯示教師發(fā)送的URL頁(yè)面內(nèi)容。Applet幀的界面由多塊面板(分別是“登錄面板、“討論面板”、“練習(xí)面板”、“測(cè)試面板”)采用卡片布局構(gòu)成,初始為“登錄面板”,以后顯示哪塊面板由教師的控制消息去控制。URL顯示幀則按教師發(fā)送的URL內(nèi)容顯示多媒體頁(yè)面。在學(xué)生測(cè)試時(shí),可允許學(xué)生在兩類(lèi)試題(是非判斷題和填空題,選擇題可歸為填空一類(lèi))間來(lái)回切換,并可用翻動(dòng)試題按鈕前后瀏覽試題。為了提高訪問(wèn)試題的速度和減少服務(wù)器端的訪問(wèn)負(fù)擔(dān),在客戶(hù)端使用向量保存對(duì)已讀過(guò)的試題內(nèi)容、標(biāo)準(zhǔn)答案及學(xué)生的解答等信息,并引入一個(gè)標(biāo)記向量標(biāo)記某序號(hào)的題是否訪問(wèn)過(guò),只有沒(méi)訪問(wèn)過(guò)的試題才去訪問(wèn)試題庫(kù)。測(cè)試時(shí)將創(chuàng)建一個(gè)計(jì)時(shí)線程,時(shí)間用完或點(diǎn)擊“答題結(jié)束”按鈕,計(jì)算機(jī)將自動(dòng)進(jìn)行評(píng)分,將得分以對(duì)話框形式告訴用戶(hù),同時(shí)寫(xiě)入成績(jī)登記表供教師查詢(xún)。
4.5URL向?qū)У膶?shí)現(xiàn)
URL輸入與傳送教師點(diǎn)擊“頁(yè)面向?qū)А卑粹o,系統(tǒng)將訪問(wèn)學(xué)習(xí)內(nèi)容索引等表,并彈出一個(gè)對(duì)話框讓教師選定要學(xué)習(xí)的章節(jié)和問(wèn)題,系統(tǒng)將其對(duì)應(yīng)的URL地址通過(guò)Socket通道送往所有學(xué)生客戶(hù)端,同時(shí)教師端將彈出一個(gè)新瀏覽器顯示頁(yè)面以供確認(rèn)。
URL顯示步驟如下:①使用URL類(lèi)按接收字符串生成URL對(duì)象;②通過(guò)Applet類(lèi)中的getAppletContext()方法取得小應(yīng)用程序的AppletContext;③通過(guò)AppletContext接口的showDocument方法顯示URL內(nèi)容。該方法的具體格式和參數(shù)說(shuō)明如下:
voidshowDocument(URLurl,Stringtarget)
其中,target參數(shù)用于指定文件內(nèi)容顯示的位置,其具體值及作用見(jiàn)下表:
值文件顯示位置"—self"當(dāng)前幀"—parent"父幀"—top"最頂部的幀"—blank"開(kāi)辟新瀏覽器窗口顯示"幀名"在指定的幀中顯示
在教師方筆者采用了“—blank”的辦法,即另開(kāi)辟一個(gè)瀏覽器窗口顯示URL內(nèi)容,供教師確認(rèn)URL內(nèi)容。學(xué)生方采用了多幀的辦法,在HTML文件中安排多幀,一幀用來(lái)顯示JavaApplet,另一幀顯示教師發(fā)送的URL頁(yè)面內(nèi)容,在HTML文件中規(guī)定幀的大小可調(diào)整,這樣學(xué)生可調(diào)整幀邊界去更方便地閱讀內(nèi)容。
5結(jié)束語(yǔ)
本文介紹了一個(gè)基于WWW的協(xié)作式教學(xué)軟件系統(tǒng)的具體實(shí)現(xiàn)方法。該軟件實(shí)際為一個(gè)教學(xué)框架系統(tǒng),具體教學(xué)內(nèi)容由教師使用系統(tǒng)的課件維護(hù)部分去安排和設(shè)計(jì),如此可較好地發(fā)揮教師的主觀能動(dòng)性。該軟件作為一個(gè)實(shí)用軟件在筆者的Java課程的教學(xué)中得以運(yùn)用。筆者擬對(duì)該系統(tǒng)作如下改進(jìn):①提供自動(dòng)組卷功能。②引入更完善的學(xué)生模型對(duì)學(xué)生的學(xué)習(xí)水平進(jìn)行評(píng)估;提供多種教學(xué)方式,使系統(tǒng)在有教師和無(wú)教師兩種情形下都可運(yùn)作,在CAI的智能性上做些工作。③在多媒體支持(如:共享視像和實(shí)時(shí)語(yǔ)音)上作研究。
作者簡(jiǎn)介:丁振凡副教授。主要研究方向:計(jì)算機(jī)輔助教學(xué)、計(jì)算機(jī)網(wǎng)絡(luò)。
作者單位:華東交通大學(xué)網(wǎng)絡(luò)中心江西.南昌(330013)
參考文獻(xiàn)
1.廖衛(wèi)東,等編著.Java程序設(shè)計(jì)實(shí)用指南.北京:機(jī)械工業(yè)出版社,1996;(10)
2.美JamieJaworski著.曹康,等譯.Java開(kāi)發(fā)指南.北京:中國(guó)水利水電出版社,1996
3.申瑞民,等.一個(gè)采用CLIENT/SERVER方式基于WWW的多用戶(hù)交流討論系統(tǒng).計(jì)算機(jī)工程,1998;(2)
【基于WWW的協(xié)同式CAI軟件的Java實(shí)現(xiàn)】相關(guān)文章:
基于WWW的協(xié)同式CAI軟件的Java實(shí)現(xiàn)08-06
基于Web的企業(yè)經(jīng)營(yíng)管理CAI系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)08-06
基于Web的企業(yè)經(jīng)營(yíng)管理CAI系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)08-06
對(duì)基于Internet環(huán)境下的協(xié)同式教學(xué)方式的探08-06
基于WWW的勞資人事管理系統(tǒng)08-06
基于ORACLE技術(shù)的WWW信息查詢(xún)系統(tǒng)08-06
基于WWW的勞資人事管理系統(tǒng)08-06