java记忆测试系统课程设计Word格式.docx
- 文档编号:22233205
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:31
- 大小:273.38KB
java记忆测试系统课程设计Word格式.docx
《java记忆测试系统课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《java记忆测试系统课程设计Word格式.docx(31页珍藏版)》请在冰豆网上搜索。
点击成绩排行榜,可登陆成绩,且会给成绩排行,由高到低。
设计要求:
(1)单击“选择级别”菜单可以选择初级,中级,高级。
(2)单击“查看排行榜”菜单可以查看记忆榜,通过记忆榜存储每个级别的成绩
(3)选择级别后,将出项相应级别的测试区。
测试区由M*N个方块组成程序通过设置M和N的值来确定相应的测试级别,例如,对于初级级别,M=5N=6.每个方块上都有一个图标,但该图标默认不可见。
用鼠标
当即测试区中的任何一个方块,则计时器开始启动,同时该方块上的图标将显示出来。
(4)M*N个方块组成的测试区中有M个图标,每个图标重复出现N次,并且随机分布在测试区中的M*N个方块上。
用户必须用鼠标连续单击出
N个图标相同的方块,也就是说,如果用户已经用鼠标连续单击出P
个图标相同的方块,当再单击另一个方块时,如果该方块的图标和上一个的相同,那么该方块的图标和前P次单击出的方块的图标仍然可见;
否则前P次单击出的方块的图标全都变得不可见,只有当前单击的方块的图标可见。
(5)测试区能显示用户的用时,并根据级别的不同,提示用户必须用鼠标连续单击出多少个图标相同的方块。
(6)测试区有提示图标所在位置的功能。
用户单击测试区中的“提示”按钮后,测试区将持续1.2秒为用户显示全部方块上的图标。
用户每单击一次“提示”按钮,用户的用时将增加10秒。
(7)连续单击出级别所要求的若干个图标相同的方块后,将弹出保存成绩的对话框,用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。
(8)单击“选择图标”菜单可重新选择方块的图标样式,即可以重新选择M个图标。
设计目标:
可以选择级别,图标,当用户游戏结束后可以选择是否保存成绩,连续点击六个相同的图标可见,连续相同的图标播放一段音乐,不同播放另一段音乐。
当用户不清楚相同图标的位置时可以按“提示”按钮,将会对用户进行提示信息。
3总体设计
在测试系统中,可以编写6个java源文件:
MenoryGame.java,MenoryTestArea.java,Block.java,People.java,Record.java和ShowRecordDialog.java。
记忆测试系统除了上述7个Java源文件产生的类外,还需要Java系统提供的一些重要的类。
记忆测试系统所用到的一些重要的类以及之间的组合关系如图1.1所示。
图1.1类之间的组合关系
1:
MenoryGame.java主类
MenoryGam类负责创建记忆测试系统的主窗口,该类含有main方法,记忆
测试系统从该类开始执行。
MenoryGame类有四种重要类型的对象,分别是String,Flie,MenoryTestArea和ShowRecordDialog对象。
MenoryGam类创建的窗口对象以及其中的主要成员对象。
MenoryGam类的主要成员的作用将在后面的详细设计中阐述。
2:
MenoryTestArea.java
MenoryTestArea类是主类MenoryGam窗口中的一个Jpanel容器,所创建的对象称为测试区,这个测试区被添加到MenoryGame窗口的中心。
MenoryTestArea类主要有六个种类型的成员:
ArrayList<
Block>
String,Record,Timer,File和Thread对象。
MenoryTestArea类的主要成员的作用将在后面的详细的设计中阐述。
3:
Block.java
Block类是Jbutton的子类,负责为MenoryTestArea类中的
ArrayList<
数组表提供Block对象。
4:
Record.java
Record类是javax.swing包中Jdialog对话框的子类,当用户成功单击出相
应的级别所要求的图标相同的方块后,Record创建的对象负责保存用户的名字和成绩到相应的级别文件中。
5:
ShowRecordDialog.java
ShowRecordDialog类javax.swing包中Jdialog对话框的子类,当用户单击“查看排行榜”时,ShowRecordDialog创建负责显示用户的成绩。
6:
People.java
People对象圭寸装用户的名字和成绩,以便ShowRecordDialog对象可以按成绩的高低排序用户。
4详细设计及实现
4.1操作界面设计
*詡雨品.标单击出吕仆冋祥窗标M右块
刚眄:
站乐匪m示导玮mi痺riwEin;
站示
点击运行,选择级别,图标游戏开始,如果用户不清楚相同图标的位置时,点击提示。
界面方案:
窗口大小:
setBounds(100,100,400,360);
setVisible(true);
字体的大小和颜色
hinMessage.setFont(newFont(“宋体”,Font.BOLD,18));
布局控制:
又上到
下,先是菜单:
选择级别,查看排行榜,选择图标;
提示信息:
hintMessage.setText(“您需要用鼠标单击出”+col+“个同样图标的方块”);
图标随机排布,有M*N个方块随机分布,在下面是一记录用户时间的还有提示按钮,提示用户相同图标的位置。
4.2类成员变量及方法设计
(一)MemoryGam类
1:
成员变量
Bar是JmenuBar类创建的菜单条,可以向bar中添加菜单menuGradeBa和menulcon是Jmenu类创建的三个菜单,这三个菜单的名称分别是“选择级别”,“查看排行榜”,“选择图标”。
oneGradeltem,twoGradeltem和threeGradeltem是Jmenultem类创建的三个菜单项,被添加到menuGrade菜单中,这三个菜单项的名称分别是“初级”,“中级”,“高级”。
oneGradeResult,twoGradeResult和threeGradeResult是Jmenultem类创建的三个菜单项,被添加到menuResult菜单中。
这三个菜单项的名称分别是“初级排行榜”,“中级排行榜”,“高级排行榜”。
carlmagelcon和animallmagelcon是Jmenultem类创建的两个菜单项,被添加到menulcon菜单中。
这两个菜单项的名称分别是“汽车图标”,
“动物图标”
fileOneGrade,fileTwoGrade,filethreeGrade和gradeFile是File类创建的四个文件对象。
fileOneGrade,fileTwoGrade和filethreeGrade三个文件对象所引用的文件分别是“初级排行榜.txt”
“中级排行榜.txt”,“高级排行榜.txt”,分别用来写入三个级别的成绩。
gradeFlie可以是fileOneGrade,fileTwoGrade和filethreeGrade中的某一个。
imageName是String类型的数组,每个单元是一个图像文件的名字。
menoryArea是测试区对象,由MenoryArea类负责创建。
showDialog是负责显示成绩的对话框,由ShowRecordDialog类负责创建
m和n是int型数据,其值可以确定相应级别中测试区中方块的数量,例如,对于中级水平,m=6,n=7,测试区一共有42方块。
2:
方法
actionPerformed(ActionEvent)方法是MenoryGam类实现的
ActionListener接口中的方法,负责执行菜单项发出的有关命令,。
用
户选择菜单中的菜单项可触发ActionEvent事件,导致actionPerformed
(ActionEvent)方法执行相应的操作。
MenoryGam()是构造方法,负责完成窗口的初始化。
main(String[])方法是软件运行的入口方法。
(二)MemoryTestArea类
1成员变量
row和col的值确定测试区中方块的数量。
MemoryTestArea类创建的对象memoryArea是MemoryGam中的成员,memoryArea对象通过调用initBIock(int,int,String【】,File)方法将MemoryGam类中m
和n的值传递给row和col。
usedTime是用户的用时单位是秒。
success的值是用户找到的具有同样的图标的方块的个数
gradeFiel是级别文件,memoryArea对象通过调用initBlock(int,int,String【】,File)方法将MemoryGam类中的gradeFile的引用传递给MemoryGam类中的gradeFile的引用传递给memoryArea对象中的gradeFile
数组表allBlockList单元的个数是row和col的乘积,它的每个单元存放着一个Block对象。
memoryArea对象在调用initBlock(int,int,String【】,File)方法时完成对allBlockList单元的初始化,即创建单元中的Block对象。
字符串数组imageFileName中的每个单元是一幅图像文件的名字。
memoryAreaX寸象通过调用setlMageNam(String【】)方法将MemoryGame中存放图像文件名字的imageName数组的引用传递给imageFileName。
链表openIconList用来存放用户找到图标相同的方块上的图标
链表openBlockList用来存放用户找到图标相同的方块。
hintThread是用Thread类创建的线程对象,用来提示测试区中的Block上的图标,提示方式是将测试区中的各个Block上图标持续显示1200毫秒。
hintButton是注册了ActionEvent事件的监视器,当单击它时,启动hintThread线程。
showUsedTime显示用户的用时,即显示usedTime的值。
hintMessage根据不同的级别显示相应的提示信息,如该级别需要用户
寻找的相同图标方块的数目。
timer是计时器,负责改变usedTime的值。
record负责提供保存成绩的界面,是一个对话框,默认不可见。
当用户寻找出级别所要求的相同图标方块的数目后,该对话框可见,用户可
以在该对话框中输入姓名,并保存所输入的姓名和usedTime的值到
gradeFile指定的级别文件中。
2方法
MemoryTestArea()是构造方法,创建memoryArea对象时需使用该构造方法。
initBlock(int,int,String【】,File)方法。
memoryArea对象调
用该方法将参数的值传递给row,col,imageFileName和gradeFile,并依据这些值设置allBlockListList数组表的大小,然后创建
allBlockList的单元中的Block对象,并设置Block对象上的图标。
setlmageName(String[])方法。
memoryArea对象调用该方法可以将MemoryGam中的存放图像文件名字的imageNam擞组的引用传递给imageFileName。
当用户单击MemoryGam主类窗口的carImageIcon和animalImageIcon菜单项时,memoryArea对象将调用该方法把存放图像文件名字的imageName数组的引用传递给imageFileName。
actionPeformed(ActionEvent)方法。
该方法是MemoryARe类实现的ActionListener接口中的方法。
memoryArea中的每个Block对象都注册了ActionEvent事件监听器,当用户单击memoryArea中的某个Block对象时,actionPeformed(ActionEVent)方法将被调用执行,所执行的主要操作是:
如果该Block对象未显示图标,并且该Block对象设置的图标和openIconList的中存放的图标相同,就将该图标添加到链表opemIconList中,同时将该Block对象上的图标显示出来,并将success的值增1;
如果该Block对象未显示图标,并且该Block对象设置的图标和openIconList的中存放的图标不相同,就将
openIconList清空,然后再将该图标添加到链表opemIconList中,同时将该Block对象上的图标显示出来,并将success的值设置成1.当
用户单击hintButton按钮时,actionPefomed(ActionEVent)方法将被调用执行,执行的主要操作是启动hintThread线程。
run()方法。
该方法是MemoryARe类实现的Runnable接口中的方法,启动hintThread线程后,该方法将执行,其主要操作是将测试区中的未显示图标的各个Block对象上的图标持续显示1200毫秒。
(3)Blcok类
openStatelcon是方块上的图标
Block对象调用setOpenStatelcon(Imagelcon)方法可以设置它上面的图标。
Block对象调用getOpenStatelcon()方法可以获得它上面的图标
(4)ShowRecordDialog类
gradeFile是对话框要读取的文件,该文件存储成绩
clear是注册了ActionEVent事件的按钮。
showArea文本区显示对话框从gradeFile文件中读出的成绩
treeSet负责将成绩按高低排序
ShowRecordDialog()是构造方法,负责创建showDialog对象setGradeFile(File)方法。
ShowRecordDialog类创建的ShowRecordDialog对话框是主类MemoryGami窗口中的一个成员。
当用户选择窗口上的“查看排行榜”菜单中的菜单项是,ShowRecordDialog
对话框调用setGradeFile(File)方法将相应的级别文件传递给gradeFile。
showRecord()方法。
ShowRecordDialog对话框调用该方法读取gradeFile文件中的成绩,为了将成绩按高低顺序显示在showArea文本区中,showRecord()方法根据读取的名字和该名字的对应成绩,创建一个People对象存放在treeSet数集中。
actionPerformed(ActionEVent)是ZctionListener接口中的方法,
clear注册了ActionEVent事件,当用户单击clear按钮时,actionPerform(ActionEvent)方法被调用执行,所执行的操作是清除
gradeFile文件中的内容。
(五)People类
name是用户的名字
time是用户的用时
getTime()方法返回time
getName方法返回name
compareTo(Object)是Comparable接口中的方法,其操作是确定People
对象的大小关系。
(六)Record类
Time是用户的用时。
yourName是用户用来输入名字的文本框。
enter和cancel是按钮对象,用户单击center按钮可以保存成绩,单击cancel按钮可以放弃保存成绩。
gradeFile是级别文件。
Record()是构造方法,负责创建record对象。
setGradeFile(File)方法。
Record类创建的Record对话框测试区MemoryTestArea中的一个成员。
当用户成功单击出相应级别所要求的图标相同的方块后,测试区弹出Record对话框,Record对话框将调用setGradeFile(File)方法将测试区中的级别文件传递给Record对话框中的
gradeFile。
setTime(int)方法。
当用户成功单击出相应级别所要求的图标相同的方块
后,测试区弹出Record对话框,Record对话框将调用setTime(int)方法将测试区记录的用户用时传递个Record对话框中的time。
actionPerformed(ActionEvent)是ActionListener接口中的方法,enter和
cancel按钮注册了ActionEvent事件,当用户单击enter时,actionPerformed(ActionEvent)方法别提调用执行,其操作时将用户在文本
框youName中输入的名字以及time的只保存到gradeFile文件中,然后关闭当前对话框;
当用户单击cancer按钮时,actionPerformed(ActionEvent)方法别调用执行,其操作及时关闭当前对话框。
4.3源代码分析
MemoryGame
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjava.net.MalformedURLException;
importjava.util.LinkedList;
publicclassMemoryGameextendsJFrameimplementsActionListener{JMenuBarbar;
//创建菜单条
JMenumenuGrade,menuResult,menulcon;
JMenultemoneGradeltem,twoGradeltem,threeGradeltem;
JMenultemoneGradeResult,twoGradeResult,threeGradeResult;
JMenultemcarlmagelcon,animallmagelcon,lmImagelcon;
FilefileOneGrade,fileTwoGrade,fileThreeGrade,gradeFile;
StringimageName[];
MemoryTestAreamemoryArea;
//定义MemoryTestArea对象ShowRecordDialogshowDiolag=null;
//显示成绩对话框
intm=5,n=6;
图片的个数
finalintimageNumber=7;
//
MemoryGame()throwsMalformedURLException{
添加事件监听器
animallmagelcon.addActionListener(this);
//carlmagelcon.addActionListener(this);
lmImageIcon.addActionListener(this);
menuicon.add(carlmagelcon);
menuicon.add(animallmagelcon);
menulcon.add(lmlmagelcon);
bar.add(menuGrade);
bar.add(menuResult);
bar.add(menulcon);
setJMenuBar(bar);
//设置菜单
oneGradeltem.addActionListener(this);
twoGradeltem.addActionListener(this);
threeGradeltem.addActionListener(this);
oneGradeResult.addActionListener(this);
twoGradeResult.addActionListener(this);
threeGradeResult.addActionListener(this);
if(!
fileOneGrade.exists()){
try{fileOneGrade.createNewFile();
}catch(IOExceptionexp){}
}if(!
fileTwoGrade.exists()){try{fileTwoGrade.createNewFile();
}catch(lOExceptionexp){}
fileThreeGrade.exists()){try{fileThreeGrade.createNewFile();
}
setBounds(100,100,400,360);
setVisible(true);
memoryArea=newMemoryTestArea();
imageName=newString[imageNumber];
for(inti=0;
i<
imageName.length;
i++){imageName[i]=newString("
car"
+i+"
.jpg"
);
}m=5;
n=6;
gradeFile=fileOneGrade;
memoryArea.initBlock(m,n,imageName,gradeFile);
add(memoryArea,BorderLayout.CENTER);
showDiolag=newShow
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 记忆 测试 系统 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)