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

下載本文檔

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

文檔簡介

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

2、<p> 學(xué)號</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è)計目的2</p><p>  1.2 課程設(shè)計內(nèi)容2</p><p><b>  2 需求分析2</b></p><p>  2.1 設(shè)計目標(biāo)2</p><p>  2.2 主體功能2</p><p>  2.3 開發(fā)環(huán)境2</p><

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

5、p>  5.1 測試方案2</p><p>  5.2 測試結(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>  記憶測試系統(tǒng)</b></p><p>  1 概 述 </p><p>  1.1 課程設(shè)計目的</p><p>  鞏固和提高java編程技術(shù)。</p><p>  培養(yǎng)掌握成學(xué)設(shè)計的基本思路和方法。</p>&

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

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

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

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

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

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

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

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

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

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

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

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

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

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

21、gt;  主要方法:</b></p><p><b>  4.4類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類MemoryTestPane</p><p><b>  a).成員變量</b></p><p>  主要成員變量(屬性):</p><p><b>  b).方法</b></p><p>

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

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

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

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

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

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

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

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

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

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

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

34、程設(shè)計(第三版)[M] . 北京:清華大學(xué)出版社, 2004</p><p>  [3]張躍平.Java2實用教程實驗指導(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 初級,中級,高級,初級排行榜,中級排行榜,高級排行榜;</p><p>  Block block[];</p><p>  ImageIcon icon[];</p><p>  MemoryTestPane

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

39、<p>  LinkedList 成績表=null;</p><p>  ShowRecord 顯示成績表對話框=null;</p><p>  int m=5,n=6; </p><p>  int 圖標(biāo)個數(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)個數(shù)=m; </b></p><p>  icon=new ImageIcon[圖標(biāo)個數(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)閉時的圖標(biāo)(new ImageIcon("關(guān)閉.gif"));</p><p><b>  }</b></p><p>  bar=new JMenuBar();</p><p>

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

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

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

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

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

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

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

51、new FileOutputStream("初級記憶排行榜.txt");</p><p>  ObjectOutputStream object_out=new ObjectOutputStream(out);</p><p>  object_out.writeObject(成績表);</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中級.exists())</p><p><b>  {</b></p><p><b>  try{</b></p><p>  FileOutputStream out=new FileOutpu

54、tStream("中級記憶排行榜.txt");</p><p>  ObjectOutputStream object_out=new ObjectOutputStream(out);</p><p>  object_out.writeObject(成績表);</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高級.exists())</p><p><b>  {</b></p><p><b>  try{</b></p><p>  FileOutputStream out=new FileOutputStream("

57、;高級記憶排行榜.txt");</p><p>  ObjectOutputStream object_out=new ObjectOutputStream(out);</p><p>  object_out.writeObject(成績表);</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初級;</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>  記憶測試板=new MemoryTestPane(block,icon,m,n,gradeFile);</p><p>  提示條=new JTextField("初級:您需要連續(xù)找出"+6+&quo

62、t;個相同圖標(biāo)的方塊"); </p><p>  提示條.setEditable(false);</p><p>  提示條.setForeground(Color.red);</p><p>  con.add(記憶測試板,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 給出級別測試(int 寬,int 高,File f)</p><p><b>

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

65、ck=new Block[m*n];</p><p>  icon=new ImageIcon[圖標(biāo)個數(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)閉時的圖標(biāo)(new ImageIcon("關(guān)閉.gif"));</p><p><b>  }</b></p><p>  記憶測試板=new MemoryTestPane(block,icon,m,n,gradeFile);</p><p>  con.removeAl

68、l();</p><p>  con.add(記憶測試板,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()==初級) </p><p><b>  { </b

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

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

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

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

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

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

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

77、></p><p>  顯示成績表對話框=new ShowRecord(this,file初級);</p><p>  顯示成績表對話框.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 翻開時的圖標(biāo)=null,關(guān)閉時的圖標(biāo)=null;</p><p>  public Block()</p><p><b>  {</b></p><p>  addActionListener(this);</p><p>

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

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

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

84、/p><p>  關(guān)閉時的圖標(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(翻開時的圖標(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 計時器=null; </p><p>  JTextField 顯示時間=null;</p><p>  File gradeFile=null;</p><p>  boolean 計時器是否啟動=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>  顯示時間=new JTextField(12);</p><p>  顯示時間.setEditable(false);</p><p>  顯示時間.setForeground(Color.red);</p>

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

97、1000,this); </p><p>  計時器是否啟動=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 翻開時的圖標(biāo)=方塊.獲取翻開時的圖標(biāo)();<

99、;/p><p>  方塊.設(shè)置圖標(biāo)(翻開時的圖標(biāo));</p><p>  if(listIocn.size()==0) </p><p><b>  {</b></p><p>  listIocn.add(翻開時的圖標(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==翻開時的圖標(biāo)&&!(listBlock.contains(方塊))) </p><p><b>  {</b></p>&

102、lt;p>  success=success+1; </p><p>  listIocn.add(翻開時的圖標(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.獲取翻開時的圖標(biāo)

105、());</p><p><b>  } </b></p><p>  計時器.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!=翻開時的圖標(biāo))&&(!(listBlock.contains(方塊)))) </p><p><b>  {&

107、lt;/b></p><p>  listIocn.clear(); </p><p>  listBlock.clear();</p><p>  listIocn.add(翻開時的圖標(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)閉時的圖標(biāo)());</p><p><b>  }</b></p><p>  } </p><p><b>  } </b&

110、gt;</p><p><b>  }</b></p><p>  if(計時器是否啟動==false)</p><p><b>  {</b></p><p><b>  time=0;</b></p><p>  計時器.start();

111、 </p><p>  計時器是否啟動=true; </p><p><b>  }</b></p><p><b>  }</b></p><p>  if(e.getSource()

112、==計時器)</p><p><b>  {</b></p><p>  time=time+1;</p><p>  顯示時間.setText("您的用時:"+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,"記憶測試排行榜:"+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 成績=(LinkedList)object_in.readObject();</p><p>  object_in.close();</p><p>  sort(成績); </p><p>  for(int i=0;i<成績.size();i++)

125、</p><p><b>  {</b></p><p>  People people=(People)成績.get(i);</p><p>  show.append("\n"+people.getName()+"成績:"+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 成績=(LinkedList)object_in.readObject();</p><p>  obj

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

130、t;p>  object_out.writeObject(成績);</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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論