- 基于敏捷開發(fā)的數(shù)據(jù)結(jié)構(gòu)研究
- 黃復(fù)賢著
- 1044字
- 2018-12-27 20:11:15
2.4 演示系統(tǒng)的構(gòu)成
下面以一個(gè)數(shù)據(jù)結(jié)構(gòu)輔助教學(xué)軟件介紹演示系統(tǒng)的構(gòu)成,這個(gè)教學(xué)軟件由系統(tǒng)目錄、程序演示、同步講義、精選習(xí)題四個(gè)部分組成,本書只討論前兩個(gè)部分。
在系統(tǒng)目錄中主要通過TreeView控件提供數(shù)據(jù)結(jié)構(gòu)中分章節(jié)某個(gè)算法的選擇。程序演示部分提供算法及程序源代碼的顯示、各變量的變化、系統(tǒng)棧變化、圖形顯示等,它是軟件的核心部分。
2.4.1 系統(tǒng)目錄與程序演示部分的關(guān)聯(lián)
本系統(tǒng)充分利用控件特性,實(shí)現(xiàn)系統(tǒng)目錄與程序演示部分的關(guān)聯(lián),設(shè)計(jì)時(shí)把TreeView控件放入頁框內(nèi),如圖2.2所示,在TreeView Items Editor框中可直接進(jìn)行編輯,隨開發(fā)的進(jìn)展添加、修改內(nèi)容。

圖2.2 TreeView Items Editor編輯示意圖
在TreeView控件中分層顯示標(biāo)題文本,為實(shí)現(xiàn)目錄內(nèi)容語言與演示程序具體類相關(guān)聯(lián)的目的,實(shí)際填充標(biāo)題時(shí),在標(biāo)題前增加一至三位數(shù)字字符,用來表示目錄的三級標(biāo)號。一級標(biāo)號用一位字符表示,用來提供章標(biāo)號;二級標(biāo)號用兩位字符表示,用來提供相關(guān)類名的后兩位數(shù)字字符;三級標(biāo)號用三位字符表示,用來提供某個(gè)具體的算法,其中的前兩位與二級標(biāo)號含義相同,第三位表示該類的某一個(gè)方法。執(zhí)行程序,選擇三級標(biāo)號時(shí),通過變量cap把標(biāo)題傳給主程序。代碼如下:
procedure TForm1.TreeView1Click(Sender: TObject); begin cap:=form1.TreeView1.Selected.Text ; end;
二級標(biāo)題對應(yīng)整個(gè)大的算法族,包含第三級標(biāo)題對應(yīng)的幾個(gè)算法,算法類以ex開頭加兩位數(shù)字字符組成,分別在initialization、finalization部分進(jìn)行注冊和撤銷。代碼如下:
initialization RegisterClass(ex00); RegisterClass(ex01); RegisterClass(ex11); cap:=''; finalization UnregisterClass(ex00); UnregisterClass(ex01); UnregisterClass(ex11);
2.4.2 程序演示部分
在程序演示部分通過顯示區(qū)及輸入?yún)^(qū)實(shí)現(xiàn)交互。
顯示區(qū)包括算法代碼、靜態(tài)變量、系統(tǒng)工作棧、圖形及數(shù)組的顯示,都通過TstringGrid控件來實(shí)現(xiàn)。通過標(biāo)簽控件顯示相應(yīng)代碼的注釋。輸入?yún)^(qū)包括文本框及三個(gè)命令按鈕,在文本框內(nèi)輸入算法要求的原始數(shù)據(jù),三個(gè)命令按鈕分別是“開始”、“單步”、“自動”。下面是“開始”按鈕的單擊事件程序代碼:
procedure TForm1.begincommClick(Sender: TObject); var i:integer; begin if cap='' then cap:='000'; form1.Label1.Caption :=cap; if pos(copy(cap,3,1),'0987654321')>0 then begin i:=strtoint(copy(cap,3,1)) ; dd:=ttdemo(findclass('ex'+copy(cap,1,2))).Create ; dd.init(form1.varGrid ,form1.proGrid,form1.sysgrid, form1.cvargrid ,form1.Label2,form1.inputedit,form1.img ); if dd.runprogram(i) then begin dd.initfile; dd.fillprogram ; runcomm.Enabled :=true; begincomm.Enabled :=false; auto.Enabled :=true; auto.caption:='自動' end ; end; end;
第一個(gè)if語句判斷在系統(tǒng)目錄中是否進(jìn)行了選擇,如果未選擇,認(rèn)為從文件中讀取自定義的演示腳本。語句“dd:=ttdemo(findclass('ex'+copy(cap,1,2))).Create”用來根據(jù)選擇目錄生成已注冊類的一個(gè)實(shí)例;下一句用來進(jìn)行初始化,把當(dāng)前表單的控件對象傳給算法類。dd.runprogram(i)根據(jù)選擇的三級目錄第三位數(shù)值,執(zhí)行相應(yīng)的一個(gè)方法,并產(chǎn)生腳本文件。之后,把算法代碼填入代碼顯示表格,把“單步”、“自動”按鈕設(shè)為可用,就可以進(jìn)行演示了。
如果為執(zhí)行狀態(tài),單擊一次“單步”按鈕就解釋一行腳本文件,如果單擊了“自動”按鈕,就由計(jì)時(shí)器自動調(diào)用“單步”按鈕的事件程序。代碼如下:
procedure TForm1.runcommClick(Sender: TObject); begin if dd.getrunstate then dd.runoneline else begin runcomm.Enabled :=false; auto.Enabled :=false; timer1.Enabled :=false; begincomm.Enabled :=true; end; end; procedure TForm1.autoClick(Sender: TObject); begin if auto.caption='自動' then begin timer1.Enabled :=true; auto.caption:='暫停'; end else begin timer1.Enabled :=false; auto.caption:='自動'; end ; end;
- Hands-On Deep Learning with Apache Spark
- 商戰(zhàn)數(shù)據(jù)挖掘:你需要了解的數(shù)據(jù)科學(xué)與分析思維
- Windows游戲程序設(shè)計(jì)基礎(chǔ)
- 空間機(jī)械臂建模、規(guī)劃與控制
- 精通數(shù)據(jù)科學(xué):從線性回歸到深度學(xué)習(xí)
- Mastering GitLab 12
- 空間機(jī)器人智能感知技術(shù)
- Photoshop CS4數(shù)碼照片處理入門、進(jìn)階與提高
- 計(jì)算機(jī)硬件技術(shù)基礎(chǔ)(第2版)
- 企業(yè)級Web開發(fā)實(shí)戰(zhàn)
- 運(yùn)動控制系統(tǒng)
- 運(yùn)動控制系統(tǒng)應(yīng)用及實(shí)例解析
- Hands-On Data Analysis with Scala
- 網(wǎng)頁配色萬用寶典
- 樂高機(jī)器人:Scratch與WeDo編程基礎(chǔ)實(shí)戰(zhàn)應(yīng)用