課程設計(論文)“冒泡法”排序的動畫演示_第1頁
課程設計(論文)“冒泡法”排序的動畫演示_第2頁
課程設計(論文)“冒泡法”排序的動畫演示_第3頁
課程設計(論文)“冒泡法”排序的動畫演示_第4頁
課程設計(論文)“冒泡法”排序的動畫演示_第5頁
已閱讀5頁,還剩9頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、沈 陽 航 空 航 天 大 學 課程設計 學 號 : 班 級 : 9姓 名 : 指導教師 : 2011年 7 月 4 日沈陽航空航天大學設計用紙沈陽航空航天大學課程設計任務書學院:機電工程學院 專業:機械設計制造及其自動化 班級:94060114學號:25 題目:“冒泡法”排序的動畫演示一、課程設計時間2011年6月27日7月1日。二、課程設計內容用控件數組技術實現動畫演示,用冒泡法對一組隨機數據(8個)由小到大排序,演示排序過程中元素變換的完整過程。要求:排序過程中欲交換值的2個元素,使用明顯顏色、閃爍效果,并要有延時,延時時間可在界面手動設置。排序過程可以隨時停止和繼續。三、課程設計要求程

2、序質量: 貫徹事件驅動的程序設計思想。 用戶界面友好,功能明確,操作方便;可以增加其它功能或修飾。 代碼應適當縮進,并給出必要的注釋,以增強程序的可讀性。課程設計說明書: 課設結束后,上交課程設計說明書和源程序。課程設計說明書的內容參見提供的模板。四、指導教師和學生簽字指導教師: 學生簽名: 五、成績六、教師評語目 錄一、需求分析3二、設計分析3三、技術要點3四、總結3五、完整的源程序3六、參考文獻3一、需求分析題目要求用“冒泡法”對一組數據進行由小到大排序,并且動畫演示排序過程中元素變換的過程。也就是表示,比較相鄰兩個數大小和交換值得過程要可見,并用明顯的顏色來區分正在比較的兩個數字。顏色的

3、變換、數字的交換實現了動畫的效果。二、設計分析(1)基本原理:冒泡法”排序使用label控件數組,多個timer控件。分別用來進行數組的輸入和控制程序的運行。(2)總體設計:從數組第一個數開始,對數組中兩個相鄰的數比較,即a(0)與a(1)比較,若為逆序,則a(0)與 a(1)交換;然后a(1) 與a(2)比較,直到最后a(n-1) 與a(n)比較,這時一輪比較完畢,一個最大的數“沉底 ”,成為數組中的最后一個元素a(n),一些較小的數如同氣泡一樣“上浮”一個位置。然后對a(0) 與a(n-1)的n個數進行同(1)的操作,次最大的數放入a(n-1)元素內,完成第二輪排序;依次類推,進行n輪排序

4、后,所有的數均有序。排序結束。三、技術要點(1)產生隨機數,并對標簽數組賦值private sub command1_click()dim a(9) as integer, n as integerfor n = 1 to 10a(n - 1) = int(n * 10 * rnd + 8 - n) 產生隨機數label1(n - 1).caption = a(n - 1) 對個標簽賦值next ntimer1.enabled = truetimer2.enabled = falsetimer3.enabled = falsetimer4.enabled = truecommand1.enab

5、led = falsecommand2.enabled = truecommand3.enabled = falsecommand4.enabled = trueend sub圖1產生隨機數,并對標簽數組賦值(2)正在比較的兩個數標簽顏色分別為紅色和綠色static a as integer, b as integerif a = 9 thena = 0: b = b + 1end ifif a + 1 val(label1(i + 1).caption) thenlabel1(i).borderstyle = 1: label1(i + 1).borderstyle = 1 逆序的兩個數標簽

6、顯示邊框 j = label1(i).caption: label1(i).caption = label1(i + 1): label1(i + 1) = j 將逆序的兩個數調換位置 label1(i).backcolor = qbcolor(14) 改變順序的兩個標簽顏色改變label1(i + 1).backcolor = qbcolor(14)end ifi = i + 1timer3.enabled = truetimer2.enabled = falseend sub圖3兩個label交換數字后顏色變為黃色(4)排序過程中可對時間間隔手動修改private sub command5

7、_click()timer1.interval = val(text1.text)timer2.interval = val(text1.text)timer3.interval = val(text1.text)timer4.interval = val(text1.text)end sub(5)排序結束后,顯示對話框private sub timer4_timer()dim k as integer, l as integer, t as integerfor k = 1 to 9if label1(k - 1).caption = label1(k).caption then 對8個數據

8、進行比較 l = l + 1end ifnext kif l = 9 then 10個數據從小到大排列timer1.enabled = falsetimer2.enabled = falsetimer3.enabled = falsetimer4.enabled = falsecommand1.enabled = truecommand2.enabled = falsemsgbox 冒泡法演示結束end 程序結束end ifend sub圖4排序結束后,顯示對話框四、總結這次課設我的題目是“冒泡法”排序的動畫演示。通過這次課設,我加深了對控件數組和多個timer的控制理解,并能熟練地使用它們。

9、在課設過程中,我遇到了重重困難,例如:多個timer控件的配合使用,如何設定時間間隔來控制程序運行速度等等。通過老師的指點,自己查閱資料,與同學之間交流討論,不斷試運行程序,我解決了困難,順利的完成了這次課設。在課設過程中我認識到重要的不是我們把程序做出來,而是我們思考、編程的過程。這個過程對于鍛煉我們的思維,熟練編程過程和方法有著重要作用,對于我們日后工作則更重要。在課設過程中,我想了很多方法對自己的程序做進一步的改進,雖然有的成功了,有的失敗了。這次課設也讓我認識到了vb在生活實踐中的廣泛應用。我認識到學好vb對我以后的學習工作有很大的幫助,也我明白了一個道理:只會書本上理論知識而沒有實踐

10、,在千變萬化的實際問題面前你永遠都會感到力不從心;沒有理論的指導而一味的空想得到的設計永遠只會是妄想。所以在今后的學習中,我要學以致用,積極地把自己的所學運用在實際問題的解決上,來培養自己的實踐能力,也只有這樣我才能夠成為一名為社會所需的合格的大學生。五、完整的源程序private sub command1_click()dim a(9) as integer, n as integerfor n = 1 to 10a(n - 1) = int(n * 10 * rnd + 8 - n) 產生隨機數label1(n - 1).caption = a(n - 1) 對個標簽賦值next ntim

11、er1.enabled = truetimer2.enabled = falsetimer3.enabled = falsetimer4.enabled = truecommand1.enabled = falsecommand2.enabled = truecommand3.enabled = falsecommand4.enabled = trueend subprivate sub command2_click()timer1.enabled = false 冒泡法排序暫停timer2.enabled = falsetimer3.enabled = falsetimer4.enabled

12、 = falsecommand3.enabled = truecommand4.enabled = trueend subprivate sub command3_click()timer1.enabled = true 冒泡法排序繼續timer2.enabled = falsetimer3.enabled = falsetimer4.enabled = truecommand1.enabled = falsecommand2.enabled = truecommand4.enabled = trueend subprivate sub command4_click()end 程序結束end

13、subprivate sub command5_click()timer1.interval = val(text1.text)timer2.interval = val(text1.text)timer3.interval = val(text1.text)timer4.interval = val(text1.text)end subprivate sub form_load()timer1.enabled = falsetimer2.enabled = falsetimer3.enabled = falsetimer4.enabled = falsecommand1.enabled =

14、truecommand2.enabled = falseend subprivate sub timer1_timer()static a as integer, b as integerif a = 9 thena = 0: b = b + 1end ifif a + 1 val(label1(i + 1).caption) thenlabel1(i).borderstyle = 1: label1(i + 1).borderstyle = 1 逆序的兩個數標簽顯示邊框 j = label1(i).caption: label1(i).caption = label1(i + 1): lab

15、el1(i + 1) = j 將逆序的兩個數調換位置 label1(i).backcolor = qbcolor(14) 改變順序的兩個標簽顏色改變label1(i + 1).backcolor = qbcolor(14)end ifi = i + 1timer3.enabled = truetimer2.enabled = falseend subprivate sub timer3_timer()static c as integerif c = 9 thenc = 0end ifif label1(c).caption = label1(c + 1).caption thenlabel1

16、(c).borderstyle = 0: label1(c + 1).borderstyle = 0 符合從小到大順序的標簽不顯示邊框 label1(c).backcolor = &h8000000f 符合從小到大順序的標簽顏色不變label1(c + 1).backcolor = &h8000000fend ifc = c + 1timer1.enabled = truetimer3.enabled = falseend subprivate sub timer4_timer()dim k as integer, l as integer, t as integerfor k = 1 to 9if label1(k - 1).caption = label1(k).caption then 對10個數據進行比較 l = l + 1end ifnext kif l = 9 then 10個數據從小到大排列timer1.enabled =

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論