資源描述:
《漢諾塔java課程設(shè)計(jì)說明書》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、目錄前言1正文11設(shè)計(jì)的目的和意義11.1設(shè)計(jì)目的11.2設(shè)計(jì)意義12設(shè)計(jì)目標(biāo)與總體方案22.1設(shè)計(jì)目標(biāo)22.2總體方案22.2.1界面及其布局設(shè)計(jì)22.2.2A、B、C座的實(shí)現(xiàn)方法22.2.3成員變量22.2.4方法32.2.5圓盤的實(shí)現(xiàn)方法42.2.6Disc成員變量42.2.7Disc方法43設(shè)計(jì)方法和內(nèi)容53.1總體類關(guān)系53.2總體功能圖53.3總體流程圖64詳細(xì)設(shè)計(jì)內(nèi)容64.1A、B、C座實(shí)現(xiàn)流程圖64.2圓盤畫法流程圖75系統(tǒng)詳細(xì)設(shè)計(jì)85.1HannoiWindow.java85.2Tower.java95.3Dis
2、c.java95.4TowerPoint.java105.5HandleMouse.java105.6AutoMoveDisc.java106設(shè)計(jì)創(chuàng)新與關(guān)鍵技術(shù)116.1系統(tǒng)測試116.2代碼調(diào)試問題136.3程序運(yùn)行效果14總結(jié)15致謝16附錄17第31頁,共31頁參考文獻(xiàn)16前言漢諾塔(又稱河內(nèi)塔)問題是印度的一個(gè)古老的傳說。開天辟地的神勃拉瑪在一個(gè)廟里留下了三根金剛石的棒,第一根上面套著64個(gè)圓的金片,最大的一個(gè)在底下,其余一個(gè)比一個(gè)小,依次疊上去,廟里的眾僧不倦地把它們一個(gè)個(gè)地從這根棒搬到另一根棒上,規(guī)定可利用中間的一根棒
3、作為幫助,但每次只能搬一個(gè),而且大的不能放在小的上面。解答結(jié)果請自己運(yùn)行計(jì)算,程序見尾部。面對龐大的數(shù)字(移動(dòng)圓片的次數(shù)),看來,眾僧們耗盡畢生精力也不可能完成金片的移動(dòng)。后來,這個(gè)傳說就演變?yōu)闈h諾塔游戲:(1)有三根桿子A,B,C。A桿上有若干碟子(2)每次移動(dòng)一塊碟子,小的只能疊在大的上面(3)把所有碟子從A桿全部移到C桿上經(jīng)過研究發(fā)現(xiàn),漢諾塔的破解很簡單,就是按照移動(dòng)規(guī)則向一個(gè)方向移動(dòng)金片:如3階漢諾塔的移動(dòng):A→C,A→B,C→B,A→C,B→A,B→C,A→C。此外,漢諾塔問題也是程序設(shè)計(jì)中的經(jīng)典遞歸問題。正文1設(shè)計(jì)的目
4、的和意義1.1設(shè)計(jì)目的通過學(xué)習(xí)和查閱相關(guān)資料,了解并熟悉掌握漢諾塔的基本原理和功能、熟悉數(shù)據(jù)流程與游戲規(guī)則;學(xué)習(xí)漢諾塔的有關(guān)遞歸算法和棧的算法和Java的編程技術(shù);通過實(shí)際的編程練習(xí),加深對基礎(chǔ)知識(shí)的理解,提高實(shí)踐能力;學(xué)習(xí)開發(fā)資料的收集與整理,學(xué)會(huì)撰寫課程設(shè)計(jì)報(bào)告。并通過本次課程設(shè)計(jì),提高自己的編程能力,掌握課程設(shè)計(jì)說明書的要求,為以后學(xué)習(xí),和工作打下良好的功底。1.2設(shè)計(jì)意義通過這次的課程設(shè)計(jì),可以培養(yǎng)我們的學(xué)習(xí)能力,讓我們實(shí)事求是的學(xué)習(xí),通過努力,建立系統(tǒng)設(shè)計(jì)的整體思想,鍛煉我們編寫程序和調(diào)試程序的能力,學(xué)習(xí)文檔編寫規(guī)范,學(xué)
5、習(xí)第31頁,共31頁書寫說明書的規(guī)范,學(xué)習(xí)書寫論文的規(guī)范,吸取他人學(xué)習(xí)的寶貴經(jīng)驗(yàn)、勇于探索前言知識(shí)的習(xí)慣。同時(shí)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)還可以彌補(bǔ)我們自身在實(shí)踐中所缺少的經(jīng)驗(yàn)。這次對于漢諾塔這個(gè)問題的研究是我在Java課程學(xué)習(xí)中遞歸函數(shù)的一次實(shí)際運(yùn)用,對我的遞歸函數(shù)的理解會(huì)有更多的幫助。同時(shí)還能根據(jù)算法對遞歸思想與所學(xué)的數(shù)據(jù)結(jié)構(gòu)中棧的方法進(jìn)行比較。2設(shè)計(jì)目標(biāo)與總體方案2.1設(shè)計(jì)目標(biāo)1)設(shè)計(jì)GUI界面的Hannoi塔。漢諾塔中有三個(gè)座,名字分別為A,B,C。初始狀態(tài)時(shí)A塔上有3個(gè)大小不等的盤子,這些盤子從座底到座頂按著大小順序依次擺放在A座上
6、。用戶可以用鼠標(biāo)選中盤子,然后通過拖動(dòng)鼠標(biāo)來移動(dòng)盤子。釋放鼠標(biāo)來放置該盤子。2)程序要求用戶在移動(dòng)盤子的過程中,不允許吧大盤子放置在小盤子的上面,用戶最終要完成的是把A座上的全部盤子移動(dòng)到B座或C座上。3)用戶可以通過Hannoi塔界面提供的菜單來選擇初級(jí)、中級(jí)和高級(jí)三個(gè)級(jí)別。初級(jí)級(jí)別A座上有3個(gè)大小不等盤子、中級(jí)級(jí)別A座上有4個(gè)大小不等盤子、高級(jí)級(jí)別A座上有5個(gè)大小不等盤子。4)用戶可以通過單擊Hannoi塔界面上提供的按鈕,讓程序自動(dòng)完成把A座上的盤子全部移動(dòng)到C座上。5)用戶在移動(dòng)盤子的過程中,可以隨時(shí)單擊Hannoi塔界面
7、上提供的按鈕,重新開始當(dāng)前的級(jí)別。2.2總體方案2.2.1界面及其布局設(shè)計(jì)系統(tǒng)的整體布局為:BorderLayout布局,采用了菜單、按鈕、面板…等組件,菜單主要包括選擇級(jí)別盤子個(gè)數(shù),,按鈕的功能包括重新開始,自動(dòng)演示,演示,暫停,繼續(xù),關(guān)閉。2.2.2A、B、C座的實(shí)現(xiàn)方法Tower類是javax.swing包中JPanel容器的一個(gè)子類,創(chuàng)建的對象tower是HannoiWindow窗口的成員之一,被添加到HannoiWindow窗口的中心位置。2.2.3成員變量(1)amountOfDisc是int型數(shù)據(jù)。amountOfD
8、isc值用來確定tower對象中盤子的數(shù)目,第31頁,共31頁tower對象中Disc類型數(shù)組disc的長度。(2)disc是Disc型數(shù)組,該數(shù)組的長度由amountOfDisc值來確定。Disc數(shù)組的每個(gè)單元中存放一個(gè)Disc對象,依次表明to