java課程設(shè)計(jì)——記憶測(cè)試系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  Java程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告</p><p>  ( 2011 -- 2012 年度第 1 學(xué)期)</p><p><b>  記憶測(cè)試系統(tǒng) </b></p><p> 專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)(網(wǎng)絡(luò)技術(shù))</p><p> 學(xué)生姓名</p><p> 班級(jí)</p>

2、<p> 學(xué)號(hào)</p><p> 指導(dǎo)教師</p><p> 完成日期2012年1月8 日</p><p><b>  目 錄</b></p><p><b>  目 錄2</b></p><p>  1 概 述2</p>&l

3、t;p>  1.1 課程設(shè)計(jì)目的2</p><p>  1.2 課程設(shè)計(jì)內(nèi)容2</p><p><b>  2 需求分析2</b></p><p>  2.1 設(shè)計(jì)目標(biāo)2</p><p>  2.2 主體功能2</p><p>  2.3 開(kāi)發(fā)環(huán)境2</p><

4、;p><b>  3 概要設(shè)計(jì)2</b></p><p>  3.1 系統(tǒng)的功能模塊劃分2</p><p>  3.2 系統(tǒng)流程圖2</p><p><b>  4 詳細(xì)設(shè)計(jì)2</b></p><p><b>  5測(cè)試2</b></p><

5、p>  5.1 測(cè)試方案2</p><p>  5.2 測(cè)試結(jié)果2</p><p><b>  6 小結(jié)2</b></p><p><b>  參考文獻(xiàn)2</b></p><p><b>  附 錄2</b></p><p>  附

6、錄1 源程序清單2</p><p><b>  記憶測(cè)試系統(tǒng)</b></p><p>  1 概 述 </p><p>  1.1 課程設(shè)計(jì)目的</p><p>  鞏固和提高java編程技術(shù)。</p><p>  培養(yǎng)掌握成學(xué)設(shè)計(jì)的基本思路和方法。</p>&

7、lt;p>  加強(qiáng)研發(fā)、調(diào)試程序的能力。</p><p>  增強(qiáng)分析、解決問(wèn)題的能力。</p><p>  提高科技論文寫(xiě)作能力。</p><p>  1.2 課程設(shè)計(jì)內(nèi)容</p><p>  記憶測(cè)試系統(tǒng)是通過(guò)回憶法測(cè)試記憶能力,測(cè)試手段分為初級(jí),中級(jí)和高級(jí)三個(gè)級(jí)別。記憶測(cè)試系統(tǒng)設(shè)計(jì)要求如下:</p><p>

8、; ?。?)單擊“記憶測(cè)試”菜單可以選擇初級(jí)、中級(jí)或高級(jí)三個(gè)級(jí)別。</p><p>  (2)單擊“記憶測(cè)試”菜單還可以查看初級(jí)記憶榜、中級(jí)記憶榜或高級(jí)記憶榜,通過(guò)記憶榜存儲(chǔ)每個(gè)級(jí)別的成績(jī)。</p><p>  (3)選擇級(jí)別后,將出現(xiàn)相應(yīng)級(jí)別的測(cè)試區(qū)。測(cè)試區(qū)由m*n個(gè)方塊組成,程序通過(guò)設(shè)置m和n的值來(lái)確定相應(yīng)的測(cè)試級(jí)別,例如,對(duì)于初級(jí)級(jí)別,m=5,n=6。每個(gè)方塊上都有一個(gè)圖標(biāo),但該圖標(biāo)

9、默認(rèn)不可見(jiàn)。用鼠標(biāo)單擊測(cè)試區(qū)中的任何一個(gè)方塊,則計(jì)時(shí)器開(kāi)始啟動(dòng)動(dòng),同時(shí)該方塊上的圖標(biāo)將顯示出來(lái)。</p><p> ?。?)m*n個(gè)方塊組成的測(cè)試區(qū)中有m個(gè)圖標(biāo),每個(gè)圖標(biāo)重復(fù)出現(xiàn)n次,并且隨機(jī)分布在測(cè)試區(qū)中的m*n各方塊上。用戶必須用鼠標(biāo)連續(xù)單擊出n個(gè)圖表相同的方塊,也就是說(shuō),如果用戶已經(jīng)用鼠標(biāo)連續(xù)單擊出p(p<n)個(gè)圖標(biāo)相同的方塊,當(dāng)再單擊另一個(gè)方塊時(shí),如果該方塊的圖標(biāo)和上一個(gè)的相同,那么該方塊的圖標(biāo)和前

10、p次單擊出的方塊的圖標(biāo)仍然可見(jiàn);否則前p次單擊出來(lái)的方塊的圖標(biāo)全都變得不可見(jiàn),只有當(dāng)前單擊的方塊的圖標(biāo)可現(xiàn)。</p><p> ?。?)測(cè)試區(qū)能顯示用戶的同時(shí),并根據(jù)級(jí)別的不同,提示用戶必須用鼠標(biāo)連續(xù)單擊出多個(gè)圖標(biāo)相同的方塊。</p><p> ?。?)測(cè)試區(qū)有提示圖標(biāo)所在位置的功能。用戶單擊測(cè)試區(qū)中的“提示”按鈕后,測(cè)試區(qū)將持續(xù)1.2秒為用戶顯示全部方塊上的圖標(biāo)。用戶沒(méi)單擊一次“提示”按

11、鈕,用戶用時(shí)將增加10秒。</p><p> ?。?)連續(xù)單擊出級(jí)別所要求的若干個(gè)相同的方塊后,將彈出保存成績(jī)對(duì)話框,用戶可以通過(guò)該對(duì)話框選擇是否將自己的成績(jī)保存到成績(jī)表中。</p><p><b>  2 需求分析</b></p><p><b>  2.1 設(shè)計(jì)目標(biāo)</b></p><p>  

12、1.單擊“記憶測(cè)試”菜單可以選擇初級(jí)、中級(jí)、高級(jí)三個(gè)級(jí)別,通過(guò)記憶榜可以查看初級(jí)記憶榜、中級(jí)記憶榜或高級(jí)記憶榜。</p><p>  2.選擇級(jí)別后,將顯示相應(yīng)級(jí)別的測(cè)試區(qū)域。測(cè)試區(qū)域由若干個(gè)方塊組成,每個(gè)方塊上都有一個(gè)圖標(biāo),但該圖標(biāo)默認(rèn)情況下不可見(jiàn)。用鼠標(biāo)單擊測(cè)試區(qū)中的任何一個(gè)方塊,則計(jì)時(shí)器開(kāi)始啟動(dòng),同時(shí)該方塊上的圖標(biāo)將顯示出來(lái)。對(duì)于初級(jí)級(jí)別,用戶必須用鼠標(biāo)連續(xù)單擊6個(gè)圖標(biāo)相同的方塊,也就是說(shuō),如果用戶已經(jīng)用鼠

13、標(biāo)連續(xù)單擊出n(n<6)個(gè)圖標(biāo)相同的方塊,單擊另一個(gè)方塊時(shí),如果該方塊的圖標(biāo)和上一個(gè)相同,那么該方塊的圖標(biāo)和前n次單擊出的方塊的圖標(biāo)仍然可見(jiàn),否則,前n次單擊出的方塊的圖標(biāo)都變?yōu)椴豢梢?jiàn)。</p><p>  3.連續(xù)單擊出該級(jí)別所要求的若干個(gè)圖標(biāo)形同的方塊后,將顯示保存成績(jī)對(duì)話框,成績(jī)按所用時(shí)間排序。用戶可以通過(guò)該對(duì)話框選擇是否將自己的成績(jī)保存到成績(jī)表中。</p><p><b

14、>  2.2 主體功能</b></p><p>  本游戲是通過(guò)由用戶點(diǎn)擊圖片顯示出圖片后,如果是相同的,便保持圖形,如果用戶點(diǎn)開(kāi)的是不同的圖片則先前點(diǎn)擊的圖片被清空。當(dāng)用戶同時(shí)點(diǎn)擊出規(guī)定數(shù)目的圖片后,彈出保存成績(jī)框。</p><p><b>  2.3 開(kāi)發(fā)環(huán)境</b></p><p>  Win7;MyEclipse 8.

15、5軟件</p><p><b>  3 概要設(shè)計(jì)</b></p><p>  3.1系統(tǒng)的功能模塊劃分</p><p>  記憶測(cè)試系統(tǒng)共包含8個(gè)java源文件和若干個(gè)圖像文件(用戶可以增加)。類(lèi)之間的主要關(guān)系如下圖所示。</p><p>  在測(cè)試系統(tǒng)中,可以編寫(xiě)6個(gè)Java源文件:MemoryGame.java、Me

16、moryTestArea.java、Block.java、ShowRecordDialog.java、Record.java、People.java。</p><p>  記憶測(cè)試系統(tǒng)除了上述6個(gè)Java源文件產(chǎn)生的類(lèi)外,還需要Java系統(tǒng)提供的一些重要的類(lèi)。</p><p>  記憶測(cè)試系統(tǒng)所用到的一些重要的類(lèi)以及之間的組合關(guān)系如圖3.1所示。</p><p> 

17、 圖3.1 類(lèi)之間的組合關(guān)系</p><p>  圖3.1 類(lèi)之間的關(guān)系</p><p><b>  3.2 系統(tǒng)流程圖</b></p><p>  圖3.2 系統(tǒng)流程圖</p><p><b>  4 詳細(xì)設(shè)計(jì)</b></p><p><b>  4.1工作

18、原理</b></p><p>  系統(tǒng)主體部分是在底層容器上插入面板,并在面板上安排按鈕陣列,當(dāng)用戶點(diǎn)擊按鈕,經(jīng)過(guò)隨機(jī)安排在按鈕后面的圖片顯示出來(lái)。通過(guò)對(duì)比圖片下標(biāo),如果所顯示圖片和前一個(gè)顯示圖片一樣,則沒(méi)變化;如果,不一樣,則把以前所有顯示的圖片重新用按鈕遮蓋。當(dāng)用戶點(diǎn)開(kāi)指定數(shù)量的圖片時(shí),就進(jìn)入記錄數(shù)據(jù)部分。在測(cè)試過(guò)程中,顯示用戶測(cè)試時(shí)間。記錄數(shù)據(jù)部分。是把用戶輸入的姓名和系統(tǒng)記錄用戶測(cè)試時(shí)間寫(xiě)入指

19、定文檔中保存。查閱數(shù)據(jù)部分,是把指定文檔的數(shù)據(jù)顯示給用戶,包括姓名和測(cè)試時(shí)間。用戶此時(shí)可以清除文檔中數(shù)據(jù),即可刪除排行榜。</p><p><b>  4.2 算法思路</b></p><p>  主窗口安排指定數(shù)量按鈕,是通過(guò)用戶所選級(jí)別傳參數(shù)計(jì)算后進(jìn)行安排。隨機(jī)分布圖片需要隨機(jī)函數(shù)隨機(jī)產(chǎn)生指定數(shù)量的圖片下標(biāo),并傳給主窗口的按對(duì)應(yīng)按鈕通過(guò)對(duì)比所顯示圖片的下標(biāo),統(tǒng)計(jì)顯

20、示的相同圖片的數(shù)量。用戶測(cè)試開(kāi)始后,記錄測(cè)試時(shí)間,并保存。</p><p>  4.3主類(lèi)Memory</p><p><b>  a).成員變量</b></p><p>  主要成員變量(屬性):</p><p><b>  b).方法</b></p><p><b&

21、gt;  主要方法:</b></p><p><b>  4.4類(lèi)Block</b></p><p><b>  a).成員變量</b></p><p>  主要成員變量(屬性):</p><p><b>  b).方法</b></p><p&g

22、t;<b>  主要方法:</b></p><p>  4.5類(lèi)MemoryTestPane</p><p><b>  a).成員變量</b></p><p>  主要成員變量(屬性):</p><p><b>  b).方法</b></p><p>

23、<b>  主要方法:</b></p><p>  4.6類(lèi)ShowRecord</p><p><b>  a). 成員變量</b></p><p>  主要成員變量(屬性):</p><p><b>  b).方法</b></p><p><b

24、>  主要方法:</b></p><p>  4.7類(lèi)Record</p><p><b>  a).成員變量</b></p><p>  主要成員變量(屬性):</p><p><b>  b).方法</b></p><p><b>  主要方法

25、:</b></p><p>  4.8類(lèi)RandomSetIcon</p><p>  a).成員變量(無(wú))</p><p><b>  b).方法</b></p><p><b>  主要方法:</b></p><p>  4.9類(lèi)People</p>

26、;<p><b>  a)成員變量</b></p><p>  主要成員變量(屬性):</p><p><b>  b) 方法</b></p><p><b>  主要方法:</b></p><p><b>  5測(cè)試</b></p&g

27、t;<p><b>  5.1 測(cè)試方案</b></p><p>  將7個(gè)java文件保存到一個(gè)文件夾中,例如,D:\jiyiceshi。將7個(gè)文件分別編譯成相應(yīng)的字節(jié)碼(.class)文件。然后,用java解釋器運(yùn)行主類(lèi):C:\jiyiceshi\java Memory 程序運(yùn)行后選擇各菜單,分別進(jìn)行功能測(cè)試。</p><p><b> 

28、 5.2 測(cè)試結(jié)果</b></p><p><b> ?。?)運(yùn)行效果</b></p><p>  圖5.2.1 運(yùn)行效果</p><p>  (2)當(dāng)選擇“記憶力測(cè)試”后,自己可以設(shè)置游戲的難度,效果如圖</p><p>  圖5.2.2 初級(jí)效果圖</p><p>  圖5.2.

29、3 中級(jí)效果圖</p><p>  圖5.2.4 高級(jí)效果圖</p><p>  (3)當(dāng)游戲結(jié)束后,查看“初級(jí)排行榜”,將顯示初級(jí)的成績(jī)記錄效果</p><p>  圖5.2.5 初級(jí)成績(jī)記錄</p><p><b>  6 小結(jié)</b></p><p>  Java程序設(shè)計(jì)是本專業(yè)的一門(mén)重要的

30、面向?qū)ο蟮某绦蛘Z(yǔ)言。在剛開(kāi)始學(xué)習(xí)時(shí),一直擔(dān)心自己、也沒(méi)把握自己能否學(xué)好,也曾擔(dān)心過(guò)不了考試這一關(guān)。經(jīng)過(guò)近大半學(xué)期老師您不厭其煩的教導(dǎo),引導(dǎo)我們?nèi)W(xué)習(xí)。我對(duì)Java語(yǔ)言有了一定的了解,但那絕對(duì)是遠(yuǎn)遠(yuǎn)不夠的,還是要不斷地把它應(yīng)用到實(shí)踐中去,融會(huì)貫通。</p><p>  經(jīng)過(guò)為期一周的Java課程設(shè)計(jì),親身感受體驗(yàn)敲、改寫(xiě)Java程序代碼的樂(lè)趣,我對(duì)Java編程有了較為深入的了解,不僅鞏固了以前在課本上學(xué)到的知識(shí),還

31、學(xué)會(huì)了很多其他東西,比如Java程序不同調(diào)試平臺(tái)的使用、錯(cuò)誤的調(diào)試及數(shù)據(jù)庫(kù)路徑的配置等等。 </p><p>  一直以來(lái),或許有不少人跟我一樣,總是覺(jué)得編程是很枯燥乏味的,但是這次</p><p>  的體驗(yàn)下來(lái),其實(shí)以前我們的想法錯(cuò)誤的。感覺(jué)到看著敲擊的代碼變?yōu)橐粋€(gè)個(gè)可以自?shī)首詷?lè)小游戲程序,其實(shí)是一件非常有趣的事情。并且在添加功能的過(guò)程中,不僅可以啟發(fā)自己的想象力,還可以培養(yǎng)靈活運(yùn)用知

32、識(shí)的能力。在此過(guò)程中,我們認(rèn)識(shí)到編程的重要步驟是分析,分析問(wèn)題的本身和現(xiàn)實(shí)要求。分析過(guò)程中采用根據(jù)設(shè)置框架選擇功能使我的思路特別清晰。拿到一個(gè)題目不能只局限在一種思想一種方法上,要盡量的多嘗試其他的做法,然后比較,集各家之所長(zhǎng),拿出最優(yōu)秀的程序來(lái)。其次也是最重要的就是我們應(yīng)當(dāng)打開(kāi)我們的視野,我們應(yīng)當(dāng)從我們的生活的這個(gè)世界中去領(lǐng)悟解決問(wèn)題的思想和方法</p><p>  通過(guò)這次課程設(shè)計(jì),我收獲的不僅僅是課程上的知

33、識(shí)得到實(shí)際應(yīng)用,還有編程的基本習(xí)慣和開(kāi)發(fā)系統(tǒng)時(shí)應(yīng)注意的流程。作為一個(gè)程序編程人員,要保持清醒的頭腦,以現(xiàn)實(shí)為依據(jù),讓自己的每一行代碼都能實(shí)現(xiàn)自己的意義。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]耿祥義,張躍平.  Java2實(shí)用教程(第三版)[M] . 北京:清華大學(xué)出版社, 2006 [2]耿祥義.  Java課

34、程設(shè)計(jì)(第三版)[M] . 北京:清華大學(xué)出版社, 2004</p><p>  [3]張躍平.Java2實(shí)用教程實(shí)驗(yàn)指導(dǎo)與習(xí)題解答(第三版)[M]. 北京:清華大學(xué)出版社, 2004</p><p><b>  ……</b></p><p><b>  附 錄</b></p><p><

35、;b>  附錄1 源程序清單</b></p><p>  Memory.java</p><p>  import javax.swing.*;</p><p>  import java.awt.*;</p><p>  import java.awt.event.*;</p><p>  impo

36、rt java.io.*;</p><p>  import java.util.LinkedList;</p><p>  public class Memory extends JFrame implements ActionListener</p><p><b>  { </b></p><p>  JMenuB

37、ar bar;</p><p>  JMenu fileMenu;</p><p>  JMenuItem 初級(jí),中級(jí),高級(jí),初級(jí)排行榜,中級(jí)排行榜,高級(jí)排行榜;</p><p>  Block block[];</p><p>  ImageIcon icon[];</p><p>  MemoryTestPane

38、記憶測(cè)試板=null;</p><p>  File file初級(jí)=new File("初級(jí)記憶排行榜.txt"),</p><p>  file中級(jí)=new File("中級(jí)記憶排行榜.txt"),</p><p>  file高級(jí)=new File("高級(jí)記憶排行榜.txt");</p>

39、<p>  LinkedList 成績(jī)表=null;</p><p>  ShowRecord 顯示成績(jī)表對(duì)話框=null;</p><p>  int m=5,n=6; </p><p>  int 圖標(biāo)個(gè)數(shù)=0;</p><p>  Container

40、 con=null;</p><p>  JTextField 提示條=null;</p><p>  File gradeFile=null; </p><p>  public Memory()</p><p><b>  { </b></p><p>  block=

41、new Block[m*n];</p><p><b>  圖標(biāo)個(gè)數(shù)=m; </b></p><p>  icon=new ImageIcon[圖標(biāo)個(gè)數(shù)];</p><p>  for(int i=0;i<icon.length;i++)</p><p><b>  {</b></p&g

42、t;<p>  icon[i]=new ImageIcon("a"+i+".gif");</p><p><b>  } </b></p><p>  for(int i=0;i<block.length;i++)</p><p><b>  {</b></

43、p><p>  block[i]=new Block();</p><p>  block[i].設(shè)置關(guān)閉時(shí)的圖標(biāo)(new ImageIcon("關(guān)閉.gif"));</p><p><b>  }</b></p><p>  bar=new JMenuBar();</p><p>

44、;  fileMenu=new JMenu("記憶力測(cè)試");</p><p>  初級(jí)=new JMenuItem("初級(jí)");</p><p>  中級(jí)=new JMenuItem("中級(jí)");</p><p>  高級(jí)=new JMenuItem("高級(jí)");</p>

45、<p>  fileMenu.setMnemonic('G');</p><p>  初級(jí).setMnemonic('B');</p><p>  中級(jí).setMnemonic('I');</p><p>  高級(jí).setMnemonic('E');</p><p>

46、  高級(jí)排行榜=new JMenuItem("高級(jí)排行榜");</p><p>  中級(jí)排行榜=new JMenuItem("中級(jí)排行榜");</p><p>  初級(jí)排行榜=new JMenuItem("初級(jí)排行榜");</p><p>  初級(jí).setMnemonic('T');<

47、/p><p>  fileMenu.add(初級(jí));</p><p>  fileMenu.add(中級(jí));</p><p>  fileMenu.add(高級(jí));</p><p>  fileMenu.add(初級(jí)排行榜);</p><p>  fileMenu.add(中級(jí)排行榜);</p><p&

48、gt;  fileMenu.add(高級(jí)排行榜);</p><p>  bar.add(fileMenu);</p><p>  setJMenuBar(bar);</p><p>  初級(jí).addActionListener(this);</p><p>  中級(jí).addActionListener(this);</p>&l

49、t;p>  高級(jí).addActionListener(this);</p><p>  初級(jí)排行榜.addActionListener(this);</p><p>  中級(jí)排行榜.addActionListener(this);</p><p>  高級(jí)排行榜.addActionListener(this);</p><p>  成績(jī)

50、表=new LinkedList();</p><p>  if(!file初級(jí).exists()) </p><p><b>  {</b></p><p><b>  try{</b></p><p>  FileOutputStream out=

51、new FileOutputStream("初級(jí)記憶排行榜.txt");</p><p>  ObjectOutputStream object_out=new ObjectOutputStream(out);</p><p>  object_out.writeObject(成績(jī)表);</p><p>  object_out.close();

52、</p><p>  out.close();</p><p><b>  }</b></p><p>  catch(IOException e)</p><p><b>  {</b></p><p><b>  }</b></p>&

53、lt;p><b>  } </b></p><p>  if(!file中級(jí).exists())</p><p><b>  {</b></p><p><b>  try{</b></p><p>  FileOutputStream out=new FileOutpu

54、tStream("中級(jí)記憶排行榜.txt");</p><p>  ObjectOutputStream object_out=new ObjectOutputStream(out);</p><p>  object_out.writeObject(成績(jī)表);</p><p>  object_out.close();</p>&

55、lt;p>  out.close();</p><p><b>  }</b></p><p>  catch(IOException e)</p><p><b>  {</b></p><p><b>  }</b></p><p><b

56、>  } </b></p><p>  if(!file高級(jí).exists())</p><p><b>  {</b></p><p><b>  try{</b></p><p>  FileOutputStream out=new FileOutputStream("

57、;高級(jí)記憶排行榜.txt");</p><p>  ObjectOutputStream object_out=new ObjectOutputStream(out);</p><p>  object_out.writeObject(成績(jī)表);</p><p>  object_out.close();</p><p>  out

58、.close();</p><p><b>  }</b></p><p>  catch(IOException e)</p><p><b>  {</b></p><p><b>  }</b></p><p><b>  } </

59、b></p><p>  gradeFile=file初級(jí);</p><p>  setBounds(100,100,300,260);</p><p>  setVisible(true);</p><p>  addWindowListener(new WindowAdapter()</p><p><

60、b>  {</b></p><p>  public void windowClosing(WindowEvent e)</p><p><b>  {</b></p><p>  System.exit(0);</p><p><b>  }</b></p><

61、;p><b>  });</b></p><p>  con=getContentPane(); </p><p>  記憶測(cè)試板=new MemoryTestPane(block,icon,m,n,gradeFile);</p><p>  提示條=new JTextField("初級(jí):您需要連續(xù)找出"+6+&quo

62、t;個(gè)相同圖標(biāo)的方塊"); </p><p>  提示條.setEditable(false);</p><p>  提示條.setForeground(Color.red);</p><p>  con.add(記憶測(cè)試板,BorderLayout.CENTER);</p><p>  con.add(提示條,BorderLayo

63、ut.SOUTH);</p><p>  con.validate();</p><p>  this.validate();</p><p><b>  }</b></p><p>  public void 給出級(jí)別測(cè)試(int 寬,int 高,File f)</p><p><b>

64、;  { </b></p><p><b>  m=寬;</b></p><p><b>  n=高;</b></p><p><b>  圖標(biāo)個(gè)數(shù)=m;</b></p><p>  gradeFile=f;</p><p>  blo

65、ck=new Block[m*n];</p><p>  icon=new ImageIcon[圖標(biāo)個(gè)數(shù)];</p><p>  for(int i=0;i<icon.length;i++)</p><p><b>  {</b></p><p>  icon[i]=new ImageIcon("a&qu

66、ot;+i+".gif");</p><p><b>  } </b></p><p>  for(int i=0;i<block.length;i++)</p><p><b>  {</b></p><p>  block[i]=new Block();</p&g

67、t;<p>  block[i].設(shè)置關(guān)閉時(shí)的圖標(biāo)(new ImageIcon("關(guān)閉.gif"));</p><p><b>  }</b></p><p>  記憶測(cè)試板=new MemoryTestPane(block,icon,m,n,gradeFile);</p><p>  con.removeAl

68、l();</p><p>  con.add(記憶測(cè)試板,BorderLayout.CENTER);</p><p>  con.add(提示條,BorderLayout.SOUTH);</p><p>  con.validate();</p><p>  this.validate();</p><p><b

69、>  }</b></p><p>  public void actionPerformed(ActionEvent event)</p><p><b>  { </b></p><p>  if(event.getSource()==初級(jí)) </p><p><b>  { </b

70、></p><p>  給出級(jí)別測(cè)試(5,6,file初級(jí));</p><p>  setBounds(100,100,300,260);</p><p>  this.validate();</p><p>  提示條.setText("初級(jí):您需要連續(xù)找出"+6+"個(gè)相同圖標(biāo)的方塊");<

71、;/p><p><b>  }</b></p><p>  if(event.getSource()==中級(jí)) </p><p><b>  {</b></p><p>  給出級(jí)別測(cè)試(6,7,file中級(jí));</p><p>  setBounds(100,100,340,2

72、80);</p><p>  this.validate();</p><p>  提示條.setText("中級(jí):您需要連續(xù)找出"+7+"個(gè)相同圖標(biāo)的方塊");</p><p><b>  }</b></p><p>  if(event.getSource()==高級(jí)) <

73、;/p><p><b>  { </b></p><p>  給出級(jí)別測(cè)試(7,8,file高級(jí));</p><p>  setBounds(100,100,360,300);</p><p>  this.validate();</p><p>  提示條.setText("高級(jí):您需要

74、連續(xù)找出"+8+"個(gè)相同圖標(biāo)的方塊");</p><p><b>  }</b></p><p>  if(event.getSource()==高級(jí)排行榜)</p><p><b>  {</b></p><p>  顯示成績(jī)表對(duì)話框=new ShowRecord(t

75、his,file高級(jí));</p><p>  顯示成績(jī)表對(duì)話框.setVisible(true);</p><p><b>  }</b></p><p>  if(event.getSource()==中級(jí)排行榜)</p><p><b>  {</b></p><p> 

76、 顯示成績(jī)表對(duì)話框=new ShowRecord(this,file中級(jí));</p><p>  顯示成績(jī)表對(duì)話框.setVisible(true);</p><p><b>  }</b></p><p>  if(event.getSource()==初級(jí)排行榜)</p><p><b>  {</b

77、></p><p>  顯示成績(jī)表對(duì)話框=new ShowRecord(this,file初級(jí));</p><p>  顯示成績(jī)表對(duì)話框.setVisible(true);</p><p><b>  }</b></p><p><b>  } </b></p><p>

78、;  public static void main(String args[])</p><p><b>  {</b></p><p>  new Memory();</p><p><b>  }</b></p><p><b>  }</b></p>&l

79、t;p>  Block.java</p><p>  import javax.swing.*;</p><p>  import java.awt.event.*;</p><p>  public class Block extends JButton implements ActionListener</p><p><b&

80、gt;  {</b></p><p>  ImageIcon 翻開(kāi)時(shí)的圖標(biāo)=null,關(guān)閉時(shí)的圖標(biāo)=null;</p><p>  public Block()</p><p><b>  {</b></p><p>  addActionListener(this);</p><p>

81、;<b>  } </b></p><p>  public ImageIcon 獲取翻開(kāi)時(shí)的圖標(biāo)()</p><p><b>  {</b></p><p>  return 翻開(kāi)時(shí)的圖標(biāo);</p><p><b>  } </b></p><p>

82、  public ImageIcon 獲取關(guān)閉時(shí)的圖標(biāo)()</p><p><b>  {</b></p><p>  return 關(guān)閉時(shí)的圖標(biāo);</p><p><b>  } </b></p><p>  public void 設(shè)置翻開(kāi)時(shí)的圖標(biāo)(ImageIcon icon)</p&

83、gt;<p><b>  {</b></p><p>  翻開(kāi)時(shí)的圖標(biāo)=icon;</p><p><b>  }</b></p><p>  public void 設(shè)置關(guān)閉時(shí)的圖標(biāo)(ImageIcon icon)</p><p><b>  {</b><

84、/p><p>  關(guān)閉時(shí)的圖標(biāo)=icon;</p><p><b>  }</b></p><p>  public void 設(shè)置圖標(biāo)(ImageIcon icon)</p><p><b>  {</b></p><p>  setIcon(icon); </p&

85、gt;<p><b>  }</b></p><p>  public void actionPerformed(ActionEvent e)</p><p><b>  {</b></p><p>  this.setIcon(翻開(kāi)時(shí)的圖標(biāo));</p><p><b>  

86、}</b></p><p><b>  }</b></p><p>  MemoryTestPane.java</p><p>  import javax.swing.*; </p><p>  import java.awt.event.*;</p><p>  import ja

87、va.awt.*;</p><p>  import java.util.LinkedList;</p><p>  import java.io.*;</p><p>  public class MemoryTestPane extends JPanel implements ActionListener</p><p><b>

88、;  {</b></p><p>  RandomSetIcon 排列圖標(biāo)=null;</p><p>  Block block[]; </p><p>  ImageIcon icon[]; </p><p>  LinkedList

89、 listIocn=null, </p><p>  listBlock=null; </p><p>  int 行數(shù)=0,列數(shù)=0;</p><p>  int success=0; </p><p>  int time=0;

90、 </p><p>  javax.swing.Timer 計(jì)時(shí)器=null; </p><p>  JTextField 顯示時(shí)間=null;</p><p>  File gradeFile=null;</p><p>  boolean 計(jì)時(shí)器是否啟動(dòng)=false;</p>

91、<p>  public MemoryTestPane(Block[] block,ImageIcon[] icon,int m,int n,File f)</p><p><b>  {</b></p><p>  排列圖標(biāo)=new RandomSetIcon();</p><p>  this.block=block;<

92、;/p><p>  this.icon=icon;</p><p><b>  行數(shù)=m;</b></p><p><b>  列數(shù)=n;</b></p><p>  gradeFile=f;</p><p>  listIocn=new LinkedList();</p&

93、gt;<p>  listBlock=new LinkedList();</p><p>  setLayout(new BorderLayout());</p><p>  JPanel center=new JPanel();</p><p>  center.setLayout(new GridLayout(行數(shù),列數(shù)));</p>

94、<p>  for(int i=0;i<block.length;i++)</p><p><b>  {</b></p><p>  center.add(block[i]);</p><p>  block[i].addActionListener(this);</p><p><b> 

95、 }</b></p><p>  JPanel south=new JPanel();</p><p>  顯示時(shí)間=new JTextField(12);</p><p>  顯示時(shí)間.setEditable(false);</p><p>  顯示時(shí)間.setForeground(Color.red);</p>

96、<p>  south.add(顯示時(shí)間);</p><p>  add(center,BorderLayout.CENTER);</p><p>  add(south,BorderLayout.SOUTH); </p><p>  排列圖標(biāo).隨機(jī)設(shè)置圖標(biāo)(block,icon);</p><p>  計(jì)時(shí)器=new Timer(

97、1000,this); </p><p>  計(jì)時(shí)器是否啟動(dòng)=false;</p><p><b>  }</b></p><p>  public void actionPerformed(ActionEvent e)</p><p><b>  {&

98、lt;/b></p><p>  if(e.getSource() instanceof Block)</p><p><b>  { </b></p><p>  Block 方塊=(Block)e.getSource();</p><p>  ImageIcon 翻開(kāi)時(shí)的圖標(biāo)=方塊.獲取翻開(kāi)時(shí)的圖標(biāo)();<

99、;/p><p>  方塊.設(shè)置圖標(biāo)(翻開(kāi)時(shí)的圖標(biāo));</p><p>  if(listIocn.size()==0) </p><p><b>  {</b></p><p>  listIocn.add(翻開(kāi)時(shí)的圖標(biāo));</p><p&

100、gt;  listBlock.add(方塊);</p><p>  success=1; </p><p><b>  }</b></p><p><b>  else</b></p><p><b> 

101、 {</b></p><p>  ImageIcon temp=(ImageIcon)listIocn.getLast(); </p><p>  if(temp==翻開(kāi)時(shí)的圖標(biāo)&&!(listBlock.contains(方塊))) </p><p><b>  {</b></p>&

102、lt;p>  success=success+1; </p><p>  listIocn.add(翻開(kāi)時(shí)的圖標(biāo)); </p><p>  listBlock.add(方塊);</p><p>  if(success==列數(shù)) </p><p

103、><b>  {</b></p><p>  for(int i=0;i<block.length;i++) </p><p><b>  {</b></p><p>  block[i].setEnabled(false);</p><p><b>  }

104、</b></p><p>  for(int j=0;j<listBlock.size();j++)</p><p><b>  {</b></p><p>  Block b=(Block)listBlock.get(j);</p><p>  b.setDisabledIcon(b.獲取翻開(kāi)時(shí)的圖標(biāo)

105、());</p><p><b>  } </b></p><p>  計(jì)時(shí)器.stop();</p><p>  Record record=new Record(gradeFile);</p><p>  record.setTime(time);</p><p>  record.setVi

106、sible(true);</p><p><b>  } </b></p><p><b>  }</b></p><p>  else if((temp!=翻開(kāi)時(shí)的圖標(biāo))&&(!(listBlock.contains(方塊)))) </p><p><b>  {&

107、lt;/b></p><p>  listIocn.clear(); </p><p>  listBlock.clear();</p><p>  listIocn.add(翻開(kāi)時(shí)的圖標(biāo)); </p><p>  listBlock.add(方塊);<

108、;/p><p>  success=1; </p><p>  for(int i=0;i<block.length;i++) </p><p><b>  {</b></p><p>  if(方塊!=block[i])</p

109、><p><b>  {</b></p><p>  block[i].設(shè)置圖標(biāo)(block[i].獲取關(guān)閉時(shí)的圖標(biāo)());</p><p><b>  }</b></p><p>  } </p><p><b>  } </b&

110、gt;</p><p><b>  }</b></p><p>  if(計(jì)時(shí)器是否啟動(dòng)==false)</p><p><b>  {</b></p><p><b>  time=0;</b></p><p>  計(jì)時(shí)器.start();

111、 </p><p>  計(jì)時(shí)器是否啟動(dòng)=true; </p><p><b>  }</b></p><p><b>  }</b></p><p>  if(e.getSource()

112、==計(jì)時(shí)器)</p><p><b>  {</b></p><p>  time=time+1;</p><p>  顯示時(shí)間.setText("您的用時(shí):"+time+"秒");</p><p><b>  }</b></p><p&g

113、t;<b>  }</b></p><p><b>  }</b></p><p>  ShowRecord.java</p><p>  import java.io.*;</p><p>  import java.util.*;</p><p>  import jav

114、ax.swing.*;</p><p>  import java.awt.event.*;</p><p>  import java.awt.*;</p><p>  public class ShowRecord extends JDialog implements ActionListener</p><p><b>  {

115、 </b></p><p>  File gradeFile=null;</p><p>  JButton 確定,清除;</p><p>  JTextArea show=null;</p><p>  public ShowRecord(JFrame frame,File f)</p><p><

116、b>  {</b></p><p>  super(frame,"記憶測(cè)試排行榜:"+f.toString());</p><p>  gradeFile=f;</p><p>  show=new JTextArea(6,4);</p><p>  確定=new JButton("顯示排行榜&

117、quot;);</p><p>  確定.addActionListener(this);</p><p>  清除=new JButton("清空排行榜");</p><p>  清除.addActionListener(this);</p><p>  Container con=getContentPane(); &

118、lt;/p><p>  con.add(new JScrollPane(show),BorderLayout.CENTER);</p><p>  JPanel p=new JPanel();</p><p>  p.add(確定);</p><p>  p.add(清除);</p><p>  con.add(p,Bor

119、derLayout.SOUTH);</p><p>  setBounds(100,100,320,185);</p><p>  setVisible(false);</p><p>  setModal(true); </p><p>  addWindowListener(new WindowAdapter()</p>&

120、lt;p><b>  {</b></p><p>  public void windwoClosing(WindowEvent e)</p><p><b>  {</b></p><p>  setVisible(false);</p><p>  dispose();</p>

121、<p><b>  }</b></p><p><b>  }</b></p><p><b>  ); </b></p><p><b>  }</b></p><p>  public void actionPerformed(Actio

122、nEvent e)</p><p><b>  { </b></p><p>  if(e.getSource()==確定)</p><p><b>  { </b></p><p><b>  try</b></p><p><b>  {&

123、lt;/b></p><p>  show.setText(null);</p><p>  FileInputStream in=new FileInputStream(gradeFile);</p><p>  ObjectInputStream object_in=new ObjectInputStream(in);</p><p&g

124、t;  LinkedList 成績(jī)=(LinkedList)object_in.readObject();</p><p>  object_in.close();</p><p>  sort(成績(jī)); </p><p>  for(int i=0;i<成績(jī).size();i++)

125、</p><p><b>  {</b></p><p>  People people=(People)成績(jī).get(i);</p><p>  show.append("\n"+people.getName()+"成績(jī):"+people.getTime());</p><p>

126、<b>  }</b></p><p><b>  }</b></p><p>  catch(Exception ee)</p><p><b>  {</b></p><p><b>  }</b></p><p><b&

127、gt;  }</b></p><p>  if(e.getSource()==清除)</p><p><b>  { </b></p><p><b>  try</b></p><p><b>  {</b></p><p>  FileI

128、nputStream in=new FileInputStream(gradeFile);</p><p>  ObjectInputStream object_in=new ObjectInputStream(in);</p><p>  LinkedList 成績(jī)=(LinkedList)object_in.readObject();</p><p>  obj

129、ect_in.close();</p><p>  成績(jī).clear();</p><p>  FileOutputStream out=new FileOutputStream(gradeFile);</p><p>  ObjectOutputStream object_out=new ObjectOutputStream(out);</p>&l

130、t;p>  object_out.writeObject(成績(jī));</p><p>  out.close();</p><p>  object_out.close(); </p><p>  show.setText("排行榜被清空");</p><p><b>  }</b></p&

131、gt;<p>  catch(Exception ee)</p><p><b>  {</b></p><p><b>  }</b></p><p><b>  } </b></p><p><b>  }</b></p>

132、;<p>  public void sort(LinkedList list)</p><p><b>  {</b></p><p>  for(int i=0;i<list.size()-1;i++)</p><p><b>  {</b></p><p>  for(in

133、t j=i+1;j<list.size();j++)</p><p><b>  {</b></p><p>  if(((People)list.get(i)).getTime()>((People)list.get(j)).getTime())</p><p><b>  {</b></p>

134、<p>  People temp=(People)list.get(j);</p><p>  list.set(j,(People)list.get(i));</p><p>  list.set(i,temp);</p><p><b>  }</b></p><p><b>  } </

135、b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  Record.java</p><p>  import java.io.*;</p>

136、<p>  import java.util.*;</p><p>  import javax.swing.*;</p><p>  import java.awt.event.*;</p><p>  import java.awt.*;</p><p>  public class Record extends JFrame

137、implements ActionListener</p><p><b>  {</b></p><p>  int time=0;</p><p>  JTextField yourName,label; </p><p>  JButton 確定,取消;</p><p>  File gra

溫馨提示

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

評(píng)論

0/150

提交評(píng)論