版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、課 程 設(shè) 計 報 告 課程設(shè)計名稱 java程序設(shè)計 專 業(yè) 計算機科學(xué)與技術(shù) 班 級 2 班 學(xué) 號 08030212 姓 名 指導(dǎo)教師 成 績 2011年3月10日目 錄目錄根據(jù)word生成一、設(shè)計任務(wù)與要求1.1 設(shè)計任務(wù)與要求程序設(shè)計專題的任務(wù)與要求:課程設(shè)計的任務(wù):根據(jù)所選題目,完成課程設(shè)計的分析、設(shè)計和編碼,寫出課程設(shè)計報告。(1)掌握java的語言規(guī)范,面向?qū)ο蟮暮诵母拍詈吞匦裕?2)掌握java的編程技術(shù),包括異常處理,圖形界面設(shè)計,多線程,網(wǎng)絡(luò)通信程序等;(3)掌握java應(yīng)用軟件的開發(fā)環(huán)境和開發(fā)過程;(4)掌握面向?qū)ο蟮乃枷牒统绦蛟O(shè)計方法。課程設(shè)計的要求:設(shè)計一個猜數(shù)字游
2、戲程序,該游戲可以由程序隨機產(chǎn)生整數(shù),玩游戲者通過由用戶輸入數(shù)字來匹配上面所產(chǎn)生的數(shù)字。用戶隨機輸入數(shù)字,當與計算機產(chǎn)生的隨機數(shù)相符合時,計算機將提醒用戶,游戲成功的信息,當有偏差時,將會提醒偏差,如偏大或者是偏小。1.2 選題目的與意義通過選擇猜數(shù)字游戲這個題目,可以讓我掌握java中的包和類,并且可以靈活的使用my eclipse軟件。同時更加深入的了解字符界面的編程過程。使我更熟練的掌握java程序框架的搭建和類的創(chuàng)建格式。在分析階段,要進行面向?qū)ο蟮男枨蠓治觥⑾到y(tǒng)設(shè)計、畫出相應(yīng)的需求分析圖、系統(tǒng)設(shè)計模型圖,這些工作更能鍛煉我的邏輯思維,更能培養(yǎng)我思考的全面性。讓我學(xué)會了多角度思考問題,
3、對我以后的編程奠定了更好的基礎(chǔ)。二、需求分析2.1 用戶需求分析設(shè)計一個猜數(shù)字游戲程序,要求具體如下特性:(1) 趣味性:要求游戲內(nèi)容豐富多彩,語言風(fēng)趣幽默。(2) 大眾性:要求游戲界面操作簡單,游戲規(guī)則簡單易懂。(3) 合理性:游戲設(shè)計嚴謹,有條理,具體需求如下 輸入任意一個數(shù)字。數(shù)字的要求是1100的自然數(shù)即可。 系統(tǒng)對您輸入的數(shù)字進行判斷。如果玩家輸入的數(shù)字與計算機隨機生成數(shù)相比較,輸入的數(shù)字比隨機生成數(shù)小.系統(tǒng)將提示您,數(shù)字太小請您重新輸入。如果玩家輸入的數(shù)字與計算機隨機生成數(shù)相比較,如果輸入的數(shù)字比隨機生成數(shù)大。系統(tǒng)將提示您,數(shù)字太大請您重新輸入。如果玩家輸入的字符不是合法字符,系統(tǒng)
4、將提示您,您輸入的數(shù)字不合法,請從新輸入。 游戲開始時,系統(tǒng)自動記錄您猜數(shù)字的時間,結(jié)束后顯示游戲共花費的時間。 每猜測一次,系統(tǒng)會記錄下來,游戲結(jié)束后,顯示共猜測多少次。 在游戲開始時,自動顯示游戲規(guī)則。 在游戲結(jié)束時,可以選擇關(guān)閉游戲,或者再來一局。2.2 開發(fā)環(huán)境分析硬件要求能運行windows 9.x操作系統(tǒng)的微機系統(tǒng)。java程序設(shè)計語言及相應(yīng)的集成開發(fā)環(huán)境,j2sdk和eclipse開發(fā)工具。j2sdk簡介:j2sdk是就阿java的開發(fā)環(huán)境包。它包含jdk(開發(fā)工具包)和jre(運行時環(huán)境包) 。jdk包含jre ,jdk是開發(fā)人員必裝軟件,jre是客戶端運行時必裝軟件 ,j2s
5、dk就是jdk,j2jre就是jre。jcreator是開發(fā)java的軟件。開發(fā)java也可以用記事本開發(fā)原程序eclipse簡介:eclipse 是一個開放源代碼的、基于 java 的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,eclipse 附帶了一個標準的插件集,包括 java 開發(fā)工具(java development tools,jdt)。eclipse的設(shè)計思想是:一切皆為插件。它自身的核心是非常小的,其它所有的功能都以插件的形式附加到該核心上。eclipse中三個最吸引人的地方:一是它創(chuàng)新性的圖形api,即swt/jface,在
6、此之前,我曾經(jīng)用過java 的awt/swing來開發(fā)windows應(yīng)用程序,awt/swing其界面客觀地講不夠美觀,而且界面響應(yīng)速度比較慢;而swt/jface則大大改善了java在這方面的能力。二是它的插件機制。三是利用它的插件機制開發(fā)的眾多功能強大的插三、系統(tǒng)設(shè)計3.1 系統(tǒng)總體設(shè)計猜數(shù)字游戲游戲隨機給出一個1100 (包括1和100) 之間的數(shù)字,然后讓你猜是什么數(shù)字。你可以隨便猜一個數(shù)字,游戲會提示太大還是太小,從而縮小結(jié)果范圍。經(jīng)過幾次猜測與提示后,最終推出答案。(系統(tǒng)設(shè)計如圖3.1)游戲界面游戲開始游戲說明產(chǎn)生隨機數(shù)輸出字符記錄次數(shù)記錄時間重新開始關(guān)閉游戲圖3.1游戲界面:采用
7、圖形界面顯示。頁面有如下功能:開始,結(jié)束,重來,幫助。游戲開始后,由計算機產(chǎn)生一個1-100的隨機數(shù),不顯示在圖形界面,但顯示在字符界面。用戶只需輸入所猜想的數(shù)字,打印在輸入框內(nèi),按“確定”按鈕表示確定,游戲返回提示語句,按照提示語句操作,直至游戲結(jié)束。 同時,計算機開始對游戲進行計時和計數(shù)功能。游戲過程中,如果不想繼續(xù)玩了,可以直接退出,想重新開局,按“重新開始”按鈕即可。想控制界面大小只需拖拽圖形界面邊框即可。游戲結(jié)束后,可以選擇“關(guān)閉”游戲,或者是“重新開始”。3.2 功能模塊設(shè)計(模塊功能設(shè)計如圖3.2)模塊的組成游戲說明模塊輸入輸出模塊計時模塊產(chǎn)生隨機數(shù)判斷該數(shù)是否合法輸出猜測的數(shù)字
8、給出提示語言開始前顯示規(guī)則開始時記錄初始時間猜中后記錄結(jié)束時間猜數(shù)次數(shù)模塊初始值為零每猜測一次自加1成績判定模塊由猜測次數(shù)決定圖3.23.3 類的設(shè)計3.3.1 類的定義類是把具有相同屬性的事物劃分為一類,從而得出抽象的概念。在面向?qū)ο蟪绦蛟O(shè)計中,類是一個獨立的程序單位,是具有相同屬性和方法的一組對象的集合,它為屬于該類的全部對象提供了抽象描述。類的概念使我們能對屬于該類的全部對象進行統(tǒng)一的描述。在定義對象之前應(yīng)先定義類。描述一個類需要指明下述三個方面內(nèi)容:類標識:類的一個有別于其他類的名字。屬性說明:用來描述相同對象的靜態(tài)特征。方法說明:用來描述相同對象的動態(tài)特征。3.3.2 定義類的格式c
9、lass 類名數(shù)據(jù)成員成員方法類的結(jié)構(gòu)是由類說明和類體兩部分組成的。類的說明部分由關(guān)鍵字 class 與類名組成,類名的命名遵循 java 標識符的定義規(guī)則。類體是類聲明中花括號所包括的全部內(nèi)容,它又是由數(shù)據(jù)成員(屬性)和成員方法(方法)兩部分組成。數(shù)據(jù)成員描述對象的屬性;成員方法則刻畫對象的行為或動作,每一個成員方法確定一個功能或操作。3.3.3 類的分類從用戶的角度看,java 源程序中的類分為兩種:系統(tǒng)定義的類:即 java 類庫,它是系統(tǒng)定義好的類。java 語言由語法規(guī)則和類庫兩部分組成,語法規(guī)則確定 java 程序的書寫規(guī)范;類庫則提供了 java 程序與運行它的系統(tǒng)軟件(java
10、 虛擬機)之間的接口。用戶自定義類:系統(tǒng)定義的類雖然實現(xiàn)了許多常見的功能,但是用戶程序仍然需要針對特定問題的特定邏輯來定義自己的類。進行 java 程序設(shè)計,實際上就是定義類的過程。一個 java 源程序文件往往是由許多個類組成的。3.3.4類的搭建首先,搭建java程序框架。打開eclipse,新建名為guessnumbergame的項目,然后新建名為guessnumber的java類。給guessnumber加上合適的javadoc。(1)random(隨機數(shù))random(隨機數(shù))的功能就是借助java api提供的random類來產(chǎn)生一個隨機數(shù)。定義一個整型變量number來保存隨機產(chǎn)
11、生的整數(shù),并且用直接初始化的方法把random產(chǎn)生的隨機數(shù)賦給number變量。random類是在java.util這個包中。建立時可以手動在源程序頂部輸入import java.util.random;語句來申明該程序?qū)⒁褂胘ava.util包中的random類。也可以運用eclipse,把光標移動到有紅色波浪線的random上,然后按下ctrlshiftm,eclipse會自動完成導(dǎo)入的工作。此時保存一下源代碼,警告就會消失。四、程序?qū)崿F(xiàn)4.1 程序流程圖(如圖4.1)開 始系統(tǒng)開始計時由用戶輸入一個數(shù)yxy輸入的大了,再小一點吧輸入的小了,再大一點吧yn由計算機產(chǎn)生隨機數(shù)xx=y系統(tǒng)結(jié)
12、束計時系統(tǒng)統(tǒng)計猜數(shù)次數(shù)結(jié) 束圖4.14.2 關(guān)鍵算法與技術(shù)實現(xiàn)4.2.1源程序/*程序運行時自動產(chǎn)生1-100的隨機數(shù) *接受用戶鍵盤輸入數(shù)據(jù)并給出指示信息 *直至猜對,游戲者猜對后,顯示猜對次數(shù) *并且供計時功能 */ import java.awt.event.actionevent;import java.awt.event.actionlistener;import java.awt.event.keyadapter;import java.awt.event.keyevent;import java.util.random;import javax.swing.jbutton;imp
13、ort javax.swing.jlabel;import javax.swing.joptionpane;import javax.swing.jtextfield;import javax.swing.windowconstants;/* author 陳雪瑩 * 有趣的猜數(shù)字游戲*/public class guessnumber extends javax.swing.jframe /set look & feel try /設(shè)置窗口外觀為windows外觀 javax.swing.uimanager.setlookandfeel(com.sun.java.swing.plaf.win
14、dows.windowslookandfeel); catch(exception e) e.printstacktrace(); private jlabel jlabel1; private jtextfield jtextfield1; private jbutton jbutton1; private jbutton jbutton2; private int number=0; private int counter=0; long starttime = system.currenttimemillis(); long endtime; /* * auto-generated ma
15、in method to display this jframe */ public static void main(string args) guessnumber inst = new guessnumber(); inst.setvisible(true); /顯示窗口 /* *新建一個隨機數(shù)產(chǎn)生器,然后生成一個1到100之間的整數(shù)*/ public guessnumber() super(); initgui(); random random = new random(); number = random.nextint(100); /產(chǎn)生一個1-100間的隨機數(shù) /* *初始化窗口
16、組件 */ private void initgui() try setdefaultcloseoperation(windowconstants.dispose_on_close);/窗口關(guān)閉時銷毀窗口 getcontentpane().setlayout(null);/設(shè)置窗口布局為絕對布局 jlabel1 = new jlabel(); getcontentpane().add(jlabel1); jlabel1.settext(歡迎進入有趣的猜數(shù)字游戲,游戲規(guī)則如下: + 游戲隨機產(chǎn)生1-100的整數(shù),玩家通過輸入數(shù)字來匹配所產(chǎn)生的數(shù)字。+ 用戶隨機輸入數(shù)字,當與計算機產(chǎn)生的隨機數(shù)相符
17、合時,計算機將提醒用戶,游戲成功的信息+ 當有偏差時,將會提醒偏差,如偏大或者是偏小。結(jié)束后記錄游戲時間和猜測次數(shù)+ 我心里有一個1到100之間的整數(shù),你猜是什么?); jlabel1.setbounds(7, 0, 420, 147);/設(shè)置標簽位置 jtextfield1 = new jtextfield(); getcontentpane().add(jtextfield1); jtextfield1.setbounds(42, 168, 112, 28); jtextfield1.addkeylistener(new keyadapter()/文本框添加鍵盤按鍵監(jiān)聽-監(jiān)聽回車鍵 pub
18、lic void keypressed(keyevent evt) jtextfield1keypressed(evt); ); jbutton1 = new jbutton(); getcontentpane().add(jbutton1); jbutton1.settext(確定); jbutton1.setbounds(182, 168, 77, 28); jbutton1.addactionlistener(new actionlistener()/按鈕添加監(jiān)聽 public void actionperformed(actionevent evt) jbutton1actionper
19、formed(evt);/按鈕被點擊時 執(zhí)行該方法 ); jbutton2 = new jbutton(); getcontentpane().add(jbutton2); jbutton2.settext(重新開始); jbutton2.setbounds(280, 168, 91, 28); jbutton2.addactionlistener(new actionlistener() public void actionperformed(actionevent evt) jbutton2actionperformed(evt); ); pack(); this.setsize(442,
20、 265); / 設(shè)置窗口大小 setlocationrelativeto(null); / 設(shè)置窗口在顯示器居中顯示 catch (exception e) e.printstacktrace(); /* * “確定”按鈕事件監(jiān)聽 * param evt */ private void jbutton1actionperformed(actionevent evt) int guess=0; / 記錄玩家所猜測的數(shù)字 counter+; / 計數(shù)器增加一。/ try,catch的異常管理。 try / 獲取玩家的輸入 guess=integer.parseint(jtextfield1.ge
21、ttext(); catch (exception e) / 如果玩家不是輸入一個合法的整數(shù),則讓他重新輸入。 joptionpane.showmessagedialog(null, 數(shù)字不合法,請輸入一個1-100之間的整數(shù)!); /顯示一個對話框 jtextfield1.settext();/清空文本框內(nèi)容 jtextfield1.requestfocus();/文本框獲取輸入焦點 return ; / 對玩家的輸入進行判斷。 if (guess number) joptionpane.showmessagedialog(null, 輸入的大了,再小一點吧!); jtextfield1.s
22、ettext(); jtextfield1.requestfocus(); return ; if (guess number) joptionpane.showmessagedialog(null, 輸入的大了,再小一點吧!); jtextfield1.settext(); jtextfield1.requestfocus(); return ; if (guess number) joptionpane.showmessagedialog(null, 輸入的小了,再大一點吧!); jtextfield1.settext(); jtextfield1.requestfocus(); retu
23、rn ; if (guess = number) endtime=system.currenttimemillis();(3)判定成績模塊/ 判斷成績。 switch (counter) case 1: joptionpane.showmessagedialog(null,你是神么? 這也太給力了吧!); break; case 2: case 3: case 4: case 5: case 6: case 7: joptionpane.showmessagedialog(null,這么快就猜對了,你很smart?。?; break; default:joptionpane.showmessa
24、gedialog(null,猜了半天才猜出來,小同志,尚須努力??!); break; joptionpane.showmessagedialog(null,您總共猜了+counter+次 共花了+(endtime-starttime)/1000+秒的時間答對正確答案!); jtextfield1.settext(); jtextfield1.requestfocus(); switch語句是基于整型表達式的條件判斷語句,猜數(shù)字用它來進行成績判斷。可以看出,switch語句是和若干case語句和一個default語句搭配使用的。代碼中的switch語句用counter變量的值進行判斷。當coun
25、ter的值為1時,便執(zhí)行case 1里面的語句,即打印“你是神么? 這也太給力了吧!”的字樣,隨后的break語句表示整個switch語句執(zhí)行到這里結(jié)束了。當counter的值為2時,便執(zhí)行case 2里面的語句??梢园l(fā)現(xiàn)case 2到case 6都沒有break語句,這表示依次執(zhí)行下面的語句,從而counter的值為2至7時,都打印“這么快就猜對了,你很smart??!”字樣。當counter的值不是1至7時,便執(zhí)行default語句,打印“猜了半天才猜出來,小同志,尚須努力?。 钡淖謽?。(4)計時模塊計時模塊的代碼分別寫在游戲的開始和游戲的結(jié)束,取得時間差,以毫秒為單位。long start
26、time = system.currenttimemillis();long endtime = system.currenttimemillis();(5)異常處理java語言提供了異常(exception)處理機制幫助程序員發(fā)現(xiàn)并處理異常。所謂異常,就是在程序執(zhí)行過程中能干擾程序正常流程的事件。導(dǎo)致異常的原因很多,比如文件找不到、數(shù)組越界、除以零等。當異常出現(xiàn)時,一個異常對象將被自動生成并傳遞給java“運行時環(huán)境”(runtime system),說得專業(yè)一點,就是拋出一個異常。異常對象包含了異常類型、程序運行狀態(tài)等信息?!斑\行時環(huán)境”得到異常對象后便打斷程序的正常流程,自動尋找一個專門
27、處理該異常的代碼塊來解決問題。這樣的代碼塊稱作異常句柄(exception handler)。你可以在異常句柄中嘗試修復(fù)錯誤、重試或者報錯,或者實在無法進行下去的時候來個自我了斷。如果“運行時環(huán)境”找不到異常句柄,java程序便會自行中斷。一個典型的異常處理如下:try statement(s); catch (exceptiontype1 name) statement(s); catch (exceptiontype2 name) statement(s); finally statement(s);其中:try語句括起來的語句可能拋出異常。try語句至少要搭配一個catch語句或fina
28、lly語句,不能單獨使用。catch語句必須和一個try語句配套使用,根據(jù)異常類型(exception type)分別處理不同的異常。也就是說,java有許多預(yù)先定義的異常,你可以通過多個catch語句對它們分門別類地處理。你還可以自己定義異常類型。如果try語句塊中沒有拋出異常,這里自然不會被執(zhí)行。finally語句也必須和一個try語句配套使用,與catch語句不同,無論try語句塊中是否拋出異常,finally所包括的語句塊都會被執(zhí)行我設(shè)計的猜數(shù)字游戲需要從控制臺獲取玩家輸入的數(shù)字,有多個異常處理可以編寫如下代碼: /set look & feel try javax.swing.uim
29、anager.setlookandfeel(com.sun.java.swing.plaf.windows.windowslookandfeel); catch(exception e) e.printstacktrace(); / try,catch的異常管理。 try guess=integer.parseint(jtextfield1.gettext(); catch (exception e) 使用異常機制的諸多好處使得程序更健壯,界面更友善。把程序的業(yè)務(wù)邏輯與錯誤處理分開,代碼更合理,更美觀。異??梢苑謱哟翁幚恚沟么a更簡潔。同類的異常可以歸到一類一起處理,處理更方便。4.3 類與
30、數(shù)據(jù)結(jié)構(gòu)實現(xiàn)首先搭建java程序框架。打開eclipse,新建名為guessnumbergame的項目,然后新建名為guessnumber的java類。guessnumber加上合適的javadoc。(1)隨機數(shù)的產(chǎn)生我們可以借助java api提供的random類來產(chǎn)生一個隨機數(shù)。首先在main函數(shù)中加入以下三行代碼:/ 新建一個隨機數(shù)產(chǎn)生器,然后生成一個1到100之間的整數(shù)。random random = new random();int number = random.nextint(100);第一句定義了一個類型是random類的變量random(java語言區(qū)分大小寫,所以rando
31、m和random是不同意思),并且用new操作符生成一個random類的實例賦給random變量。random變量實際上是一個參照,指向內(nèi)存中用new操作符新建的random類的實大多數(shù)情況下可以把random直接看做是一個random類的實例,可以通過“random”加上“.操作符”來調(diào)用random類的方法,用random.nextint(100)來獲取一個1至100之間的隨機數(shù)。第二句語句定義一個整型變量number來保存隨機產(chǎn)生的整數(shù),并且用直接初始化的方法把random產(chǎn)生的隨機數(shù)賦給number變量。(如圖4.3.1)圖4.3.1(2)輸入輸出界面標準輸入輸出(standard i/o)是指可以被應(yīng)用程序使用的信息流。比如,應(yīng)用程序可以從標準輸入(standard input)讀取數(shù)據(jù),向標準輸出(standard output)寫數(shù)據(jù),把出錯信息發(fā)送到標準錯誤(standard error)。猜數(shù)字游戲主要用到標準輸入,即控制臺輸入。用system.out.println進行控制臺輸出,用system.in進行控制臺輸入。它是一個純粹的輸入流,而猜數(shù)字游戲主要是通過控制臺獲取玩家的字符輸入,則需要把它包裝成一個bufferedreader實例來使用bufferedreader input = new bufferedreader(new input
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 護工和病人協(xié)議合同書(2篇)
- 2025年孝感b2貨運資格證多少道題
- 2024年物業(yè)電梯緊急救援協(xié)議3篇
- 2025年臨沂貨運資格證考試題庫
- 2024年度精準崗位聘任合同范本2篇
- 2025年延邊下載貨運從業(yè)資格證模擬考試
- 2025年西寧貨運從業(yè)資格證網(wǎng)上考試
- 2025年運城貨運從業(yè)資格證網(wǎng)上考試答案
- 2025年深圳貨運從業(yè)資格證考試模擬
- 《輪胎生產(chǎn)流程》課件
- 小波變換處理圖像課程設(shè)計
- OECD 太空經(jīng)濟規(guī)模衡量手冊 -OECD Handbook on Measuring the Space Economy
- 《紅巖》課件完整版
- 小學(xué)學(xué)生成長中心工作措施
- 21世紀大學(xué)英語讀寫教程第二冊Unit6
- RF基礎(chǔ)與測量-2007版本-2
- 傳染病報告卡艾滋病性病附卡
- 2023年遼寧職業(yè)學(xué)院高職單招(語文)試題庫含答案解析
- 校園文化建設(shè)方案三年規(guī)劃(3篇)
- DB42T1955-2023電動自行車停放充(換)電場所消防安全管理規(guī)范
- 哈工大運籌學(xué)
評論
0/150
提交評論