版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于java的記憶測(cè)試系統(tǒng)
- 課程設(shè)計(jì)單詞記憶測(cè)試器程序設(shè)計(jì)
- 單片機(jī)單詞記憶測(cè)試器課程設(shè)計(jì)
- java課程設(shè)計(jì)記憶系統(tǒng)報(bào)告
- java網(wǎng)絡(luò)測(cè)試系統(tǒng)_課程設(shè)計(jì)
- 基于單片機(jī)的單詞記憶測(cè)試器設(shè)計(jì)
- 打字訓(xùn)練測(cè)試軟件-java課程設(shè)計(jì)
- java課程設(shè)計(jì)報(bào)告---java實(shí)現(xiàn)畫(huà)筆系統(tǒng)
- java課程設(shè)計(jì)--酒店管理系統(tǒng)
- java課程設(shè)計(jì)---即時(shí)聊天系統(tǒng)
- java課程設(shè)計(jì)--注冊(cè)登錄系統(tǒng)
- java課程設(shè)計(jì)-文件管理系統(tǒng)
- java課程設(shè)計(jì)超市收銀系統(tǒng)
- java課程設(shè)計(jì)
- java課程設(shè)計(jì)----課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)--學(xué)籍管理系統(tǒng)
- java學(xué)生管理系統(tǒng)課程設(shè)計(jì)
- java課程設(shè)計(jì)報(bào)告---考試系統(tǒng)
- java課程設(shè)計(jì)(班級(jí)管理系統(tǒng))
- java課程設(shè)計(jì)學(xué)籍管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論