java課程設(shè)計九宮格數(shù)獨_第1頁
java課程設(shè)計九宮格數(shù)獨_第2頁
java課程設(shè)計九宮格數(shù)獨_第3頁
java課程設(shè)計九宮格數(shù)獨_第4頁
java課程設(shè)計九宮格數(shù)獨_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

中南民族大學管理學院學生課程設(shè)計報告課題名稱:課程設(shè)計選題名稱:九宮格數(shù)獨年級:專業(yè):信息管理與信息系統(tǒng)學號:姓名:指導教師:完成地點:管理學院綜合實驗室完成日期:年月日1學1年至201學2年度第一學期一、題目描述二、問題分析■■■I■■I■■■■■■■■■■■■■■■■■I■■■I■■II■■■■■■■■■■■■■■■■■■■■I■■II■■■■■■■■■■■■■■■■■■■■■■■I11三、問題分解■■■I■■I■■■■■■■■■■■■■■■■■I■■■I■■II■■■■■■■■■■■■■■■■■■■■I■■II■■■■■■■■■■■■■■■■■■■■■■■I11四、系統(tǒng)設(shè)計■■■I■■I■■■■■■■■■■■■■■■■■I■■■I■■II■■■■■■■■■■■■■■■■■■■■I■■II■■■■■■■■■■■■■■■■■■■■■■■I11系統(tǒng)實現(xiàn)系統(tǒng)設(shè)計和軟件發(fā)布七、難點及關(guān)鍵技術(shù)分析)■■■■■■■■■■■■I■■I■■II■■■■■■■■■■■■■■■■■■■■■■■II■■I■八、心得體會一、題目(問題)描述在X格的大九宮格中有個X格的小九宮格,并提供一定數(shù)量的數(shù)字。根據(jù)這些數(shù)字,利用邏輯和推理,在其它的空格上填入1到9的數(shù)字。每個數(shù)字在每個小九宮格內(nèi)只能出現(xiàn)一次,每個數(shù)字在每行、每列也只能出現(xiàn)一次。這種游戲只需要邏輯思維能力,與數(shù)字運算無關(guān)。雖然玩法簡單,但數(shù)字排列方式卻千變?nèi)f化,所以不少教育者認為數(shù)獨是鍛煉腦筋的好方法。二、問題分析1基本解法:利用?的數(shù)字在每一行、每一列、每一宮都只能出現(xiàn)一次的規(guī)則進行解題的方法。實際尋找解的過程為:使用單元排除法的目的就是要在某一單元(即行,列或區(qū)塊)中找到能填入某一數(shù)字的唯一位置,換句話說,就是把單元中其他的空白位置都排除掉。那么要如何排除其余的空格呢?當然還是不能忘了游戲規(guī)則,由于1-的9數(shù)字在每一行、每一列、每一個九宮格都要出現(xiàn)且只能出現(xiàn)一次,所以:如果某行中已經(jīng)有了某一數(shù)字,則該行中的其他位置不可能再出現(xiàn)這一數(shù)字如果某列中已經(jīng)有了某一數(shù)字,則該列中的其他位置不可能再出現(xiàn)這一數(shù)字如果某區(qū)塊中已經(jīng)有了某一數(shù)字,則該區(qū)塊中的其他位置不可能再出現(xiàn)這一數(shù)字。單元格:數(shù)獨中最小的單元,標準數(shù)獨中共有81個;行:橫向9個單元格的集合;列:縱向9個單元格的集合;宮:粗黑線劃分的區(qū)域,標準數(shù)獨中為3x3的9個單元格的集合;已知數(shù):數(shù)獨初始盤面給出的數(shù)字;候選數(shù):每個空單元格中可以填入的數(shù)字。2、軟件系統(tǒng)的功能可彈出游戲界面,方便用戶操作,界面易于用戶理解。可以選擇游戲開始或重新開局??梢耘袛嗾`,能給出正確答案,當輸入的內(nèi)容不符合要求時,彈出對話框,提示輸入錯誤。當結(jié)果不正確時,彈出對話框,提示答案錯誤。答案正確時。彈出對話框,顯示答案正確。在九宮格數(shù)獨游戲界面和彈出的消息提示界面有相關(guān)的最小化、最大化、關(guān)閉等按鈕可以操作。對性能的要求具有較強的實用性易于理解和應(yīng)用對程序的配置要求不高,能廣泛應(yīng)用三、問題分解1、分析找出問題域中的對象,并將對象歸類,注意篩選掉不必要的對象或類。對象:TOC\o"1-5"\h\z屬于主類的對象na、屬于類的對象:屬于類的對象屬于F的對1:、屬于類的對象:、類:包括上述所有類及父類。2、確定類的屬性。、確定對象之間的關(guān)系,包括依賴、泛化、關(guān)聯(lián)、實現(xiàn)等等。與主類之間:泛化與之間:依賴與之間依賴z、與之間實現(xiàn)、與、之間關(guān)聯(lián)類設(shè)計類名角色UUUUUD行為ShuDulMenuaBar:setSize:添加文本及組件設(shè)置難易等級菜單ShuDuAnssetSize:JPanel()PublicvoidJOptionPaneshowMess

actionPerformed(ActionEvente)ageDialog():接口名屬性ActionListeneraddActionListener():ItemListener四、系統(tǒng)設(shè)計(類設(shè)計、數(shù)據(jù)設(shè)計、方法設(shè)計、算法

設(shè)計等)類的設(shè)計(對象的設(shè)計)(類圖、對象圖)程序流程圖

答案唯一嗎是否符合正確答案.是否有非法字符''\〉序YESNONOYES彈出對話框,提示答案錯誤。再接再厲可選擇提交,判斷正誤彈出對話框,要求重新輸入j++>=m+2所有表格已填完NO上答案不唯一,數(shù)獨不成立答案唯一嗎是否符合正確答案.是否有非法字符''\〉序YESNONOYES彈出對話框,提示答案錯誤。再接再厲可選擇提交,判斷正誤彈出對話框,要求重新輸入j++>=m+2所有表格已填完NO上答案不唯一,數(shù)獨不成立彈出對話框,提示答案正確玩家填入數(shù)字程序中數(shù)獨的算法設(shè)計staticintDFS(){for(inti=1;i<=9;i++){for(intj=1;j<=9;j++){if(data[i][j]==0){for(intk=1;k<=9;k++){if(row[i][k]==0&&col[j][k]==0&&sql[(i+2)/3][(j+2)/3][k]==0){data[i][j]=k;row[i][k]=1;col[j][k]=1;sql[(i+2)/3][(j+2)/3][k]=1;if(DFS()==1)return1;else{data[i][j]=0;row[i][k]=0;col[j][k]=0;sql[(i+2)/3][(j+2)/3][k]=0;}}if(k==9)return0;}}}}return1;}staticvoidset_data_zero(){//數(shù)獨的初始化for(inti=0;i<=9;i++){for(intj=0;j<=9;j++){data[i][j]=0;}}}staticvoidsetnum(){//數(shù)獨數(shù)字的設(shè)置setzero();set_data_zero();for(inti=1;i<=9;i++){//嘗試填充的次數(shù)intn=(int)(Math.random()*100)+1;//添加任意整數(shù)intj=i*3-((i+2)/3*8-6);data[i][j]=n%9+1;//產(chǎn)生數(shù)字intk=data[i][j];row[i][k]=1;col[j][k]=1;sql[(i+2)/3][(j+2)/3][k]=1;}DFS();}算法核心:第一次次是從所有數(shù)字中隨機,第二次時從前八個數(shù)字中隨機,依次類推,這樣既保證隨機,也不會再重復取已經(jīng)不符合要求的數(shù)字,提高程序的效率程序的相關(guān)分析這個一般在程序開始時用,即置入包。置入處理由組件產(chǎn)生的事件,有別于事件置入最常用包,最常用的,包含了各種組件的類:在中用可以定義一個程序的入口類,在用可以定義一個類在中是一個關(guān)鍵字,表示私有成員,是類中的一個屬性用它定義的和只能在類中被調(diào)用如果定義了就不能被外部類所訪問了:中有兩種用法1代表當前類;2在構(gòu)造函數(shù)中的使用如:this.setSize(300,300);//設(shè)置窗體的長寬各為:440,它1們4的0計/量/單位是像素顯示窗口窗口大小不能改變單擊窗口按鈕時,結(jié)束程序運行;流式布局網(wǎng)格布局只能顯示,不允許編輯;:聲明靜態(tài)成員變量五、系統(tǒng)實現(xiàn)(編碼)編碼如下:列,并設(shè)置大小框架窗口響應(yīng)單擊事件)私/;有成員變量定義菜單按鈕"定/義菜單項]新/;建10*的1二0維數(shù)組0/]存/;放正確答案的二維數(shù)組不同的難度類聲明設(shè)置答案窗口/構(gòu)(造)類{/設(shè)置框架窗口標題30/0設(shè)/,置3框0架0尺)寸;設(shè)置框架顯示在屏幕的位置組件設(shè)為可見窗口大小不能改變框?qū)?面(板)設(shè))為;流布局框窗3/,將/3面,板2內(nèi),部設(shè)2為)網(wǎng))格;布局,參數(shù)指定為3行嘗試填充的次數(shù)設(shè)置行列的網(wǎng)格布局依次添加組件,添加宮格區(qū)3域的檢驗設(shè)置為整數(shù)文本設(shè)置為水平居中不可編輯,只能顯示添加數(shù)字為當前類添加宮格{靜/態(tài)成員方法行、列九宮的間隔宮內(nèi)格子間的間隔都/設(shè)置完,結(jié)束數(shù)獨初始化表示數(shù)字未給出設(shè)置數(shù)字未/(給)出;的數(shù)字,需玩家填入初始化數(shù)獨填充次數(shù)隨機添加任意整數(shù)-((i+2)/3*8-6);產(chǎn)生數(shù)字設(shè)置間隔(數(shù)隨獨)空{(diào)格初始化設(shè)置數(shù)獨游戲中的數(shù)字=9;i++){=9;j++){代表難度隨機數(shù)根隨0據(jù))選{擇的難易程度設(shè)置數(shù)獨不可編輯,只能顯示其他難度,新建文本行水平居中設(shè)置組件(玩/家)填{入數(shù)字異/常處理第一個文本行輸入操作捕獲方法聲明的異常對象提/提/示出錯信息設(shè)置答案窗口的面板格局空/(格)初;始化數(shù)/)獨{游戲布局窗口標題(47/0設(shè)/,置5窗0口0尺)寸(/2窗/6口0位,置顯/示窗口單擊窗口按鈕時,結(jié)束程序運行窗/口大小不可變將/3面,板2設(shè),置2為)3行)3;列網(wǎng)格布局,并設(shè)置大小設(shè)置個面板將/3面,板3設(shè))置)為;3行3列網(wǎng)格布局

添加組件*生/成3九-個23;*的3網(wǎng)格,并添加數(shù)字為/當前類添加框架添加文本添加主菜單添加下拉菜單選項注冊單擊事件監(jiān)聽器,委托當前對象處理事件設(shè)置難易程度等級菜單

單擊事件處理方法,實現(xiàn)接口單擊事件處理方法,實現(xiàn)接口單擊事件處理方法,實現(xiàn)接口退出,獲得當前事件源組件比較引用提交答案正確,恭喜!答案錯誤,請再接再厲!彈出提示框,顯示信息=重提單來=答提單案開局改變難易程度,事件的處理方法聲明方法六、系統(tǒng)設(shè)計和軟件發(fā)布(1)程序運行情況:程序正常的響應(yīng)按鈕事件。運行顯示:若框中沒有填入數(shù)字,則顯示消息提示:這是程序進行的異常處理,使用框內(nèi)都輸入數(shù)字即可。,捕捉輸入整數(shù)的方法拋出的異常對象。此時只要按確定,顯示正確答案窗口:>FreeJava-ShuDul.java-ileEditViewProjectBuildWindowHelp口4125673856831924379204156153496723896721534247035691604152973935678412721943S61534609612456041III50r2I94提交后,答案正確,彈出答案正確提示框、在中生成一個文件如圖所示它里面可以只有一行文字冒號后必須有空格,該行文字必須以回車鍵結(jié)束Nine,classCLASS文件ShuDul.classNine,classCLASS文件ShuDul.classCLASS文件maindass.MFMF文件1KB[javalTest.java1JavaEdDocument[javalShuDul.java1JavaEdDocument10kb、使用如下命令將并入一個文件的,生成E命令提示符D:\>cdjauaD:Xjaua>japcmfmainclass.mfapp.jarShuDul.classD:\jaua>生成ShuDul.classCLASS文件7KBmaindass.MFMFShuDul.classCLASS文件7KBmaindass.MFMF文件1KBIbavaEdDocument|app.jar產(chǎn)?諾基亞應(yīng)用程序安裝器文件,■J4KB、使用命令行運行或者在文件的圖標上雙擊也可以心三命令提示符-java-jarapp.jarD:\>cdjauaD:\jaua>japcmfmainclass.mfapp-jarSD:Xjaua>jaua-javapp.jarJjaua-jarJ不是內(nèi)部或外部命令,也不是目或批處理文件。D:\jaua>jaua-japapp.jap方便明了,設(shè)計上有層次,立體感強??墒蔷艑m格使用ShuDuGame4匕能匕。12459347□824I75305IID914運行結(jié)果基本上完成了實驗題目所要求的功獨小游戲和網(wǎng)絡(luò)上的游5!£軟件仍有很大差距能方的不完可多設(shè)置些按鈕,將到的數(shù)字按鈕放在文本框中,采善還可在以下方面改進:流式布局,只要鼠標操作工、擊按鈕,而不需要自己從鍵盤輸入。另外對于組件之間的間隙也要規(guī)劃好,實現(xiàn)美觀大方。游戲的界面,間隔,空隙應(yīng)該處理得更好,9個大宮格間的間隔因更明顯,還應(yīng)把游戲界面的顏色,背景設(shè)置得更美觀,大方七、難點及關(guān)鍵技術(shù)分析難點分析:框架的合理布局。對于一個應(yīng)用程序,界面的簡單明了是很重要的,既要簡單明了還要實用,不能華而不實。異常處理的實現(xiàn)。對于一個獨立運行的程序,能夠獨立的處理運行中的問題,并提示錯誤也是很重要的。算法的實現(xiàn),要準確的得出九宮格數(shù)字的正確排布,要保證隨機,也要保證數(shù)字的不重復,使得已經(jīng)嘗試過的數(shù)字不再取到,這是比較困難的。關(guān)鍵技術(shù)分析:創(chuàng)建對話框,并設(shè)置監(jiān)聽器處理相應(yīng)的事件,例如語句:用于監(jiān)聽單擊事件。算法的實現(xiàn),宮格的布局。異常處理的實現(xiàn),使用去捕捉異常事件,當出現(xiàn)異常時用跳出錯誤提示對話框,提示錯誤信息,例如:”數(shù)據(jù)中包括非數(shù)字,請重新輸入!”/錯/誤提示框的使用八、心得體會這次課程設(shè)

溫馨提示

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

最新文檔

評論

0/150

提交評論