JAVA课程设计汇本记忆测试系统附源程序Word下载.docx
《JAVA课程设计汇本记忆测试系统附源程序Word下载.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计汇本记忆测试系统附源程序Word下载.docx(32页珍藏版)》请在冰豆网上搜索。
2需求分析
2.1设计目标
1.单击“记忆测试”菜单可以选择初级、中级、高级三个级别,通过记忆榜可以查看初级记忆榜、中级记忆榜或高级记忆榜。
2.选择级别后,将显示相应级别的测试区域。
测试区域由若干个方块组成,每个方块上都有一个图标,但该图标默认情况下不可见。
用鼠标单击测试区中的任何一个方块,则计时器开始启动,同时该方块上的图标将显示出来。
对于初级级别,用户必须用鼠标连续单击3个图标相同的方块,也就是说,如果用户已经用鼠标连续单击出n(n<
3)个图标相同的方块,单击另一个方块时,如果该方块的图标和上一个相同,那么该方块的图标和前n次单击出的方块的图标仍然可见,否则,前n次单击出的方块的图标都变为不可见。
3.连续单击出该级别所要求的若干个图标形同的方块后,将显示保存成绩对话框,成绩按所用时间排序。
用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。
2.2主体功能
本游戏是通过由用户点击图片显示出图片后,如果是相同的,便保持图形,如果用户点开的是不同的图片则先前点击的图片被清空。
当用户同时点击出规定数目的图片后,弹出保存成绩框。
2.3开发环境
Win7;
MyEclipse8.5软件
3概要设计
3.1系统的功能模块划分
记忆测试系统共包含8个java源文件和若干个图像文件(用户可以增加)。
类之间的主要关系如下图所示。
在测试系统中,可以编写6个Java源文件:
MemoryGame.java、MemoryTestArea.java、Block.java、ShowRecordDialog.java、Record.java、People.java。
记忆测试系统除了上述6个Java源文件产生的类外,还需要Java系统提供的一些重要的类。
记忆测试系统所用到的一些重要的类以及之间的组合关系如图3.1所示。
Memory(主类)
Block(方块)
MemoryTestPane(测试版)
ShowRecord(显示成绩)
显示成绩)
ShowHelp(帮助)
RandomSetIcon(随机排列图标)
Record(记录成绩)
People(用户信息)
图3.1类之间的组合关系
图3.1类之间的关系
3.2系统流程图
图3.2系统流程图
4详细设计
4.1工作原理
系统主体部分是在底层容器上插入面板,并在面板上安排按钮阵列,当用户点击按钮,经过随机安排在按钮后面的图片显示出来。
通过对比图片下标,如果所显示图片和前一个显示图片一样,则没变化;
如果,不一样,则把以前所有显示的图片重新用按钮遮盖。
当用户点开指定数量的图片时,就进入记录数据部分。
在测试过程中,显示用户测试时间。
记录数据部分。
是把用户输入的和系统记录用户测试时间写入指定文档中保存。
查阅数据部分,是把指定文档的数据显示给用户,包括和测试时间。
用户此时可以清除文档中数据,即可删除排行榜。
4.2算法思路
主窗口安排指定数量按钮,是通过用户所选级别传参数计算后进行安排。
随机分布图片需要随机函数随机产生指定数量的图片下标,并传给主窗口的按对应按钮通过对比所显示图片的下标,统计显示的相同图片的数量。
用户测试开始后,记录测试时间,并保存。
4.3主类Memory
a).成员变量
主要成员变量(属性):
成员变量描述
变量类型
名称
菜单条
JMenuBar
Bar
菜单
JMenuItem
FileMenu
菜单项
初级,中级,高级,初级排行榜,中级排行榜,高级排行榜
面板容器
MemoryTestPane
记忆测试板
方块数组
Block[]
block
显示成绩
ShowRecord
显示成绩表对话框
图标数组
ImageIcon[]
icon
b).方法
主要方法:
功能
备注
Memory
创建窗口
构造方法
给出级别测试
选择级别
actionPerformed
处理ActionEvent事件
接口方法
Main
主程序开始执行
4.4类Block
方块翻开时的图标
ImageIcon
翻开时的图标
方块关闭时的图标
关闭时的图标
Block
创建方块对象的构造方法
获取翻开时的图标
获取方块翻开时的图标
获取关闭时的图标
获取方块关闭时的图标
设置翻开时的图标
设置关闭时的图标
设置图标
设置方块上的图标
4.5类MemoryTestPane
变量描述
随机排列图标对象
RandomSetIcon
排列图标
添加方块对象用的链表
LinkedList
listIcon
添加图标对象用的链表
确定是否成功的对象
int
success
用来计时的对象
Timer
计时器
记忆测试板的行数和列数
行数,列数
创建记忆测试板对象的构造方法
4.6类ShowRecord
a).成员变量
存放成绩的文件
File
gradeFile
按钮对象
JButton
确定,清除
显示成绩的区域
JTextArea
show
创建显示成绩窗口
4.7类Record
用时
time
输入测试者的名字
JTextField
yourname
是否保存成绩的按钮
确定,取消
Record
创建保存成绩窗口
setTime
设置时间
setFile
设置文件
4.8类RandomSetIcon
a).成员变量(无)
随机设置图标
随机排列记忆测试板中方块的图标
4.9类People
a)成员变量
描述
测试者名字
String
name
b)方法
People
传递名字和时间
getTime
返回使用者用时
getName
返回使用者名字
5测试
5.1测试方案
将7个java文件保存到一个文件夹中,例如,D:
\jiyiceshi。
将7个文件分别编译成相应的字节码(.class)文件。
然后,用java解释器运行主类:
C:
\jiyiceshi\javaMemory程序运行后选择各菜单,分别进行功能测试。
5.2测试结果
(1)运行效果
图5.2.1运行效果
(2)当选择“记忆力测试”后,自己可以设置游戏的难度,效果如图
图5.2.2初级效果图
图5.2.3中级效果图
图5.2.4高级效果图
图5.2.5排行效果图
(3)当游戏结束后,查看“初级排行榜”,将显示初级的成绩记录效果
图5.2.5初级成绩记录
6小结
Java程序设计是本专业的一门重要的面向对象的程序语言。
在刚开始学习时,一直担心自己、也没把握自己能否学好,也曾担心过不了考试这一关。
经过近大半学期老师您不厌其烦的教导,引导我们去学习。
我对Java语言有了一定的了解,但那绝对是远远不够的,还是要不断地把它应用到实践中去,融会贯通。
经过为期一周的Java课程设计,亲身感受体验敲、改写Java程序代码的乐趣,我对Java编程有了较为深入的了解,不仅巩固了以前在课本上学到的知识,还学会了很多其他东西,比如Java程序不同调试平台的使用、错误的调试及数据库路径的配置等等。
一直以来,或许有不少人跟我一样,总是觉得编程是很枯燥乏味的,但是这次
的体验下来,其实以前我们的想法错误的。
感觉到看着敲击的代码变为一个个可以自娱自乐小游戏程序,其实是一件非常有趣的事情。
并且在添加功能的过程中,不仅可以启发自己的想象力,还可以培养灵活运用知识的能力。
在此过程中,我们认识到编程的重要步骤是分析,分析问题的本身和现实要求。
分析过程中采用根据设置框架选择功能使我的思路特别清晰。
拿到一个题目不能只局限在一种思想一种方法上,要尽量的多尝试其他的做法,然后比较,集各家之所长,拿出最优秀的程序来。
其次也是最重要的就是我们应当打开我们的视野,我们应当从我们的生活的这个世界中去领悟解决问题的思想和方法
通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程。
作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义。
参考文献
文献写法如下:
1.专著、论文集、毕业论文、报告等
疯狂Java讲义(2008-09)刚著
附录
附录1源程序清单
Memory.java
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjava.util.LinkedList;
publicclassMemoryextendsJFrameimplementsActionListener
{
JMenuBarbar;
JMenufileMenu;
JMenuItem初级,中级,高级,初级排行榜,中级排行榜,高级排行榜;
Blockblock[];
ImageIconicon[];
MemoryTestPane记忆测试板=null;
Filefile初级=newFile("
初级记忆排行榜.txt"
),
file中级=newFile("
中级记忆排行榜.txt"
file高级=newFile("
高级记忆排行榜.txt"
);
LinkedList成绩表=null;
ShowRecord显示成绩表对话框=null;
intm=5,n=6;
int图标个数=0;
Containercon=null;
JTextField提示条=null;
FilegradeFile=null;
publicMemory()
{
block=newBlock[m*n];
图标个数=m;
icon=newImageIcon[图标个数];
for(inti=0;
i<
icon.length;
i++)
{
icon[i]=newImageIcon("
a"
+i+"
.gif"
}
block.length;
block[i]=newBlock();
block[i].设置关闭时的图标(newImageIcon("
关闭.gif"
));
}
bar=newJMenuBar();
fileMenu=newJMenu("
记忆力测试"
初级=newJMenuItem("
初级"
中级=newJMenuItem("
中级"
高级=newJMenuItem("
高级"
fileMenu.setMnemonic('
G'
初级.setMnemonic('
B'
中级.setMnemonic('
I'
高级.setMnemonic('
E'
高级排行榜=newJMenuItem("
高级排行榜"
中级排行榜=newJMenuItem("
中级排行榜"
初级排行榜=newJMenuItem("
初级排行榜"
T'
fileMenu.add(初级);
fileMenu.add(中级);
fileMenu.add(高级);
fileMenu.add(初级排行榜);
fileMenu.add(中级排行榜);
fileMenu.add(高级排行榜);
bar.add(fileMenu);
setJMenuBar(bar);
初级.addActionListener(this);
中级.addActionListener(this);
高级.addActionListener(this);
初级排行榜.addActionListener(this);
中级排行榜.addActionListener(this);
高级排行榜.addActionListener(this);
成绩表=newLinkedList();
if(!
file初级.exists())
try{
FileOutputStreamout=newFileOutputStream("
ObjectOutputStreamobject_out=newObjectOutputStream(out);
object_out.writeObject(成绩表);
object_out.close();
out.close();
catch(IOExceptione)
file中级.exists())
file高级.exists())
gradeFile=file初级;
setBounds(100,100,300,260);
setVisible(true);
addWindowListener(newWindowAdapter()
publicvoidwindowClosing(WindowEvente)
System.exit(0);
});
con=getContentPane();
记忆测试板=newMemoryTestPane(block,icon,m,n,gradeFile);
提示条=newJTextField("
初级:
您需要连续找出"
+6+"
个相同图标的方块"
提示条.setEditable(false);
提示条.setForeground(Color.red);
con.add(记忆测试板,BorderLayout.CENTER);
con.add(提示条,BorderLayout.SOUTH);
con.validate();
this.validate();
publicvoid给出级别测试(int宽,int高,Filef)
m=宽;
n=高;
gradeFile=f;
con.removeAll();
publicvoidactionPerformed(ActionEventevent)
if(event.getSource()==初级)
给出级别测试(3,3,file初级);
提示条.setText("
+3+"
if(event.getSource()==中级)
给出级别测试(4,4,file中级);
setBounds(100,100,340,280);
中级:
+4+"
if(event.getSource()==高级)
给出级别测试(5,5,file高级);
setBounds(100,100,360,300);
高级:
+5+"
if(event.getSource()==高级排行榜)
显示成绩表对话框=newShowRecord(this,file高级);
显示成绩表对话框.setVisible(true);
if(event.getSource()==中级排行榜)
显示成绩表对话框=newShowRecord(this,file中级);
if(event.getSource()==初级排行榜)
显示成绩表对话框=newShowRecord(this,file初级);
publicstaticvoidmain(Stringargs[])
newMemory();
}
Block.java
publicclassBlockextendsJButtonimplementsActionListener
{
ImageIcon翻开时的图标=null,关闭时的图标=null;
publicBlock()
addActionListener(this);
publicImageIcon获取翻开时的图标()
return翻开时的图标;
publicImageIcon获取关闭时的图标()
return关闭时的图标;
publicvoid设置翻开时的图标(ImageIconicon)