摘要:討論了職業(yè)院校《數(shù)據(jù)結(jié)構(gòu)》課程中整數(shù)插入排序算法的教學(xué)軟件的開發(fā)。在軟件設(shè)計中,設(shè)計思想基于MCAI理論,使用Delphi程序設(shè)計語言,對算法實現(xiàn)單步執(zhí)行,使靜態(tài)的算法以動態(tài)的形式在屏幕上顯示,達(dá)到良好的人機(jī)交互目的。
關(guān)鍵詞:MCAI;整數(shù)插入排序;Delphi;控件
目前,計算機(jī)輔助教學(xué)已在職業(yè)院校中廣泛開展,特別是MCAI(Multimedia Computer Aided Instruction,多媒體計算機(jī)輔助教學(xué))的應(yīng)用,以其貯存信息量大、畫面豐富、多種媒體綜合運用等特點,為學(xué)生建立了一個動態(tài)教學(xué)環(huán)境。《數(shù)據(jù)結(jié)構(gòu)》中的整數(shù)插入排序算法本身是一種抽象的靜態(tài)描述,而職業(yè)院校的部分學(xué)生接受能力較弱,因此教學(xué)效果受到一定的影響。為了解決這個問題,本軟件結(jié)合MCAI理論,利用Delphi7.0作為開發(fā)工具來完成,使抽象、靜態(tài)的算法以直觀、形象、動態(tài)的形式在屏幕上顯示,從而達(dá)到提高整數(shù)插入排序算法教學(xué)效果的目的。
設(shè)計思想
MCAI理論MCAI具有如下特點:(1)學(xué)生可以控制學(xué)習(xí)內(nèi)容和學(xué)習(xí)進(jìn)度。允許學(xué)生選擇學(xué)習(xí)內(nèi)容,設(shè)置同步措施,只有當(dāng)學(xué)生學(xué)習(xí)了前一部分知識后,才能進(jìn)入下一步的學(xué)習(xí)。這樣,學(xué)生的學(xué)習(xí)進(jìn)展不受時間與地點的限制,可以取得最佳的學(xué)習(xí)速度。(2)學(xué)生處于一種積極、主動的精神狀態(tài)。在MCAI中,因為教學(xué)進(jìn)度由學(xué)生控制和連續(xù)的提問——反饋或是操作——反應(yīng)——刺激等交互活動組成,學(xué)生不像被動學(xué)習(xí)時那么容易疲勞和受干擾,從而可以取得較好的教學(xué)效果。(3)對教師或軟件開發(fā)者提供了教學(xué)決策支持。計算機(jī)可保留每個學(xué)生的學(xué)習(xí)進(jìn)展紀(jì)錄,并進(jìn)行每個學(xué)生的學(xué)習(xí)進(jìn)程分析和群體學(xué)習(xí)分析,給教師或軟件開發(fā)者提供了教學(xué)決策支持。
關(guān)鍵技術(shù)本軟件使用Delphi7.0作為開發(fā)工具,其明顯的特點是:(1)可視化的快速Web開發(fā),讓開發(fā)者能夠在Delphi7.0環(huán)境中可視化地創(chuàng)建Web應(yīng)用,并且利用它的應(yīng)用模型框架,不必再考慮通過的服務(wù)器端的開發(fā)任務(wù),還能透明地處理會話管理。(2)免費的DataSnap多層應(yīng)用開發(fā)。新的Delphi7.0的DataSnap授權(quán)協(xié)議允許開發(fā)者無縫升級單層和客戶/服務(wù)器應(yīng)用到多層應(yīng)用,而不需額外的運行使用費。(3)windowsXP應(yīng)用。Delphi7.0對windows風(fēng)格的支持,讓開發(fā)者能夠創(chuàng)建可以利用windowsXP使用者界面風(fēng)格的應(yīng)用。
開發(fā)方案
可行性分析交互式MCAI整數(shù)插入排序軟件開發(fā)是一個面向教學(xué)的應(yīng)用系統(tǒng)。它可以針對不同的學(xué)生群體進(jìn)行不同的操作,它可以按照要求執(zhí)行一步或幾步,同時可以播放音樂、動畫等多媒體軟件,還可以設(shè)置斷點、跟蹤、單步、設(shè)置等,還可以根據(jù)人的要求修改程序,操作簡單方便,其客戶端是一個友好的界面,使用方便,其功能是比較強(qiáng)大的。
需求分析根據(jù)需求分析必須利用數(shù)據(jù)結(jié)構(gòu)中的棧和鏈表。棧和鏈表是程序設(shè)計中的難點,然而卻是十分方便的工具,在Delphi中雖然沒有提供指針類數(shù)據(jù)類型,但利用Delphi提供的類模塊可形象地進(jìn)行構(gòu)造。在系統(tǒng)設(shè)計階段將主要利用Delphi中的控件進(jìn)行圖形化設(shè)置,在腳本設(shè)計階段可以利用數(shù)據(jù)結(jié)構(gòu)中的算法,最終一起達(dá)到該課程設(shè)計的目的,最后進(jìn)行評價修改。
模塊設(shè)計該軟件包括順序表的插入、順序表的刪除和直接插入排序三部分,如圖1所示。
圖1模塊設(shè)計圖
功能實現(xiàn)
主界面的設(shè)計與實現(xiàn)作為軟件的首張界面,主要采用柔和底色作為整體基調(diào),力求做到簡潔明了,給人以整潔干凈的感覺。設(shè)計上主要利用Delphi7.0中幾種基本的控件,例如文本控件、按鈕控件以及簡單的代碼編寫,實現(xiàn)表單之間的聯(lián)系。
圖2主界面運行效果圖
主體控件和登錄界面模塊從上一級表單中進(jìn)入這個登陸窗口,主要考慮一個身份驗證的問題,只有身份合法才能進(jìn)入下面的演示模塊,強(qiáng)調(diào)軟件的安全性能。工作重點是對登陸窗口的設(shè)計以及內(nèi)部代碼的編寫。窗體的實現(xiàn)可以依靠強(qiáng)大的Delphi7.0里面現(xiàn)有的控件直接引用,重點就是關(guān)于用戶以及密碼控件的實現(xiàn)過程。其運行效果如圖3所示。
圖3登錄界面模塊運行效果圖
直接插入排序演示模塊這個模塊是整個軟件開發(fā)過程中的重點與難點,為了實現(xiàn)算法的單步實現(xiàn),讓整個演示軟件可以更加直觀、形象。可以把原來的連續(xù)執(zhí)行的算法步驟,重新按單步執(zhí)行的方式編排程序的流程。我們可以運用Delphi里面的時鐘控件,讓用戶可以自行設(shè)置,鑒于程序需要單步執(zhí)行,每一次跳轉(zhuǎn)前后需要保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場,為此需要設(shè)置幾個全局變量用以保存狀態(tài),同時還需要設(shè)置時間的長短來控制圖像運行的效果,時間相對長些效果就越明顯。其運行效果如圖4所示。
圖4直接插入排序演示模塊運行效果圖
數(shù)據(jù)設(shè)置模塊此模塊實際上是直接插入排序模塊的子模塊,主要工作就是針對排序的算法設(shè)置有關(guān)參數(shù)的一個階段。基本思想是根據(jù)隨機(jī)或者手動設(shè)置數(shù)據(jù)以及時間間隔的設(shè)置用以控制演示的速度與清晰度,可以更加直觀的描述直接插入排序的一個明顯的過程。此模塊主要功能是針對排序具體設(shè)置數(shù)據(jù)的一個階段。為了用戶更加自主,設(shè)計了隨機(jī)發(fā)生器與人工輸入,但是限制了個數(shù)(最多16)。其運行效果如圖5所示。
圖5數(shù)據(jù)設(shè)置模塊運行效果圖
軟件運行分析
根據(jù)軟件工程上的一些知識和方法,我們從不同的角度測試了該軟件,基本上達(dá)到了方便應(yīng)用的目的。例如:
初始情況:設(shè)r[1],r[2],r[3],r[4]已經(jīng)有序,現(xiàn)插入r[5]
r[1]r[2]r[3]r[4]r[5]
210 18 25 9
j=5;r[0]=r[j];i=j-1; //初始化,設(shè)置待插入位置
2101825□
//r[i+1]為待插入位置
i=4,r[0] < r[i],r[i+1]=r[i];i--;
//調(diào)整待插入位置
21018□25
i=3,r[0] < r[i],r[i+1]=r[i];i--;
//調(diào)整待插入位置
210□1825
i=2,r[0] < r[i],r[i+1]=r[i];i--;
//調(diào)整待插入位置
2□101825
i=1,r[0] ≥r[i],r[i+1]=r[0];
//插入記錄
29101825//插入過程結(jié)束
我們完全可以手動輸入 21018259,并設(shè)置時間間隔用以控制演示的速度與清晰度,然后運行插入排序模塊,點擊下一步或自動標(biāo)識的控件來觀測系統(tǒng)的整個運行是否符合在《數(shù)據(jù)結(jié)構(gòu)》中所學(xué)到的上述算法理論過程。經(jīng)過天津輕工職業(yè)技術(shù)學(xué)校2006級數(shù)控一班的課堂實地檢驗,在正常條件下,運用MCAI理論開發(fā)的整數(shù)插入排序系統(tǒng)能無故障運行,完成預(yù)定的整個教學(xué)活動。學(xué)生普遍反映系統(tǒng)的穩(wěn)定性良好,有很強(qiáng)的交互性,達(dá)到了提高教學(xué)效果的目的。
參考文獻(xiàn):
[1]張春林.Delphi6程序設(shè)計導(dǎo)學(xué)[M].北京:清華大學(xué)出版社,2003.
[2]彭玉青,肖國璽,楊昕.《數(shù)據(jù)結(jié)構(gòu)》算法動態(tài)演示CAI軟件的實現(xiàn)[J].河北工業(yè)大學(xué)成人教育學(xué)院學(xué)報,2000,(3):14-15.
[3]游曉明,劉升.多媒體《數(shù)據(jù)結(jié)構(gòu)》CAI系統(tǒng)的設(shè)計與開發(fā)[J].湖北師范學(xué)院學(xué)報,2002,(4):12-14.
[4]唐伎玲,劉錢.數(shù)據(jù)結(jié)構(gòu)多媒體教學(xué)軟件的設(shè)計[J].長春大學(xué)學(xué)報,2002,(3):13-15.
[5]王春紅.多媒體CAI在數(shù)據(jù)結(jié)構(gòu)算法教學(xué)中的應(yīng)用[J].現(xiàn)代計算機(jī),2002,(1):23-24.
[6]楊紅穎,王向陽.一種新的分“檔”置換插入排序算法[J]小型微型計算機(jī)系統(tǒng).2006,27(6):996-1001.
作者簡介:
季淑惠(1982—),女,山東臨清人,天津工程師范學(xué)院2005級碩士研究生,研究方向為教育技術(shù)學(xué)。
曹乃龍(1984—),男,河南信陽人,天津工程師范學(xué)院2006級碩士研究生,研究方向為教育技術(shù)學(xué)。
(本文責(zé)任編輯:謝良才)
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。