Java课程设计记忆测试系统.docx
- 文档编号:25888671
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:46
- 大小:303.73KB
Java课程设计记忆测试系统.docx
《Java课程设计记忆测试系统.docx》由会员分享,可在线阅读,更多相关《Java课程设计记忆测试系统.docx(46页珍藏版)》请在冰豆网上搜索。
Java课程设计记忆测试系统
Java程序设计课程设计报告
(2009--2010年度第1学期)
记忆测试系统
专业
学生姓名
班级
学号
指导教师
完成日期
记忆测试系统
1概述
1.1课程设计目的
本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的《Java程序设计》课程基本知识,而进行的一次全面的综合训练。
通过课程设计,让学生更好地掌握Java语言,加深对Java基础理论的理解,加强学生的动手能力,进一步掌握Java语言程序设计方法,提高分析问题、解决问题的综合应用能力。
1.2课程设计内容
记忆测试系统通过回忆法测试记忆,分为初级、中级、高级、和自定义四个级别,并通过记忆榜存储每个级别的成绩。
2系统需求分析
2.1系统目标
(1)菜单栏包括“选择级别”、“查看排行榜”、“帮助”三项。
其中“选择级别”,包括“初级”、“中级”、“高级”、“自定义级别”,可以分别开始初级中级高级和自定义测试。
“查看排行榜”包括“初级排行榜”、“中级排行榜”、“高级排行榜”,可以打开查看相应级别排行榜对话框;“帮助”又包括“新手入门”,显示系统使用方式。
(2)测试面板可以装载按钮阵列,用来显示图片,并且记录统计图片信息,如果相同图片数量达到要求时,弹出记录用户信息对话框,记录用户信息。
(3)还有实时显示“你所用的时间:
”和提示相应级别测试信息
2.2主体功能
1.单击“选择级别”菜单可以选择初级/中级/高级/自定义级别,单击“查看排行榜”菜,可以查看初级记忆榜、中级记忆榜或高级记忆榜。
单击“帮助”菜单可以显示帮助信息。
2.选择级别后,将显示相应级别的测试区域。
测试区域由若干个方块组成,每个方块上都有一个图标,但该图标默认情况下不可见。
用鼠标单击测试区中的任何一个方块,则计时器开始启动,同时该方块上的图标将显示出来。
对于初级级别,用户必须用鼠标连续单击6个图标相同的方块,也就是说,如果用户已经用鼠标连续单击出n(n<6)个图标相同的方块,单击另一个方块时,如果该方块的图标和上一个相同,那么该方块的图标和前n次单击出的方块的图标仍然可见,否则,前n次单击出的方块的图标都变为不可见。
3.连续单击出该级别所要求的若干个图标形同的方块后,将显示保存成绩对话框,成绩按所用时间排序。
用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。
2.3开发环境
NetBeansIDE6.5
3系统概要设计
3.1系统的功能模块划分
记忆测试系统共包含8个java源文件和若干个图像文件(用户可以增加)。
类之间的主要关系如下图所示。
图3.1类之间的关系
(1).java文件
Memory.java
该java文件定义的类负责创建记忆测试系统的“主窗口”。
该文件含有main方法,程序从该类开始执行。
用户可以通过主窗口菜单选择级别,然后窗口内显示相应的MemoryTestPane对象。
主窗口默认的MemoryTestPane对象是初级。
Block.java
该文件生成的类负责创建测试区中的Block对象。
使用鼠标左键单击Block对象,可以显示该对象上的图标。
MemoryTestPane.java
该文件生成的类负责为主类Memory创建MemoryTestPane对象,主类将级别、Block对象、图标对象等传递给MemoryTestPane。
RandomSetIcon.java
该文件生成的类负责为MemoryTestPane创建“排列图标”对象,“排列图标”可以随机设置MemoryTestPane对象中“方块”上的图标。
ShowHelp.java
该文件生成的类负责为“主窗口”创建“显示帮助”对象,用户通过给对象可以了解到怎么进行使用该系统。
ShowRecord.java
该文件生成的类负责为“主窗口”创建“显示成绩”对象,用户通过该对象可以查看各个级别的成绩记录。
Recod.java
该文件生成的类负责记录各个级别的成绩。
People.java
给文件生成的类负责存放用户的信息。
(2).图像文件
a0.png:
方块上的图标。
a1.png:
方块上的图标。
a2.png:
方块上的图标。
a3.png:
方块上的图标。
a4.png:
方块上的图标。
a5.png:
方块上的图标。
a6.png:
方块上的图标。
a7.png:
方块上的图标。
a8.png:
方块上的图标。
关闭.png:
方块关闭时显示的图标。
3.2系统流程图
图3.2系统流程图
4系统详细设计
(1)工作原理:
系统主体部分是在底层容器上插入面板,并在面板上安排按钮阵列,当用户点击按钮,经过随机安排在按钮后面的图片显示出来。
通过对比图片下标,如果所显示图片和前一个显示图片一样,则没变化;如果,不一样,则把以前所有显示的图片重新用按钮遮盖。
当用户点开指定数量的图片时,就进入记录数据部分。
在测试过程中,显示用户测试时间。
记录数据部分。
是把用户输入的姓名和系统记录用户测试时间写入指定文档中保存。
查阅数据部分,是把指定文档的数据显示给用户,包括姓名和测试时间。
用户此时可以清除文档中数据,即可删除排行榜。
(2)算法思路:
主窗口安排指定数量按钮,是通过用户所选级别传参数计算后进行安排。
随机分布图片需要随机函数随机产生指定数量的图片下标,并传给主窗口的按对应按钮通过对比所显示图片的下标,统计显示的相同图片的数量。
用户测试开始后,记录测试时间,并保存。
(3).主类Memory
a).成员变量(见表4.1)
表4.1主要成员变量(属性)
成员变量描述
变量类型
名称
菜单条
JMenuBar
Bar
菜单
JMenuItem
FileMenu
菜单项
JMenuBar
初级,中级,高级,初级排行榜,中级排行榜,高级排行榜
面板容器
MemoryTestPane
记忆测试板
方块数组
Block[]
block
显示成绩
ShowRecord
显示成绩表对话框
图标数组
ImageIcon[]
icon
b).方法(见表4.2)
表4.2主要方法
名称
功能
备注
Memory
创建窗口
构造方法
给出级别测试
选择级别
actionPerformed
处理ActionEvent事件
接口方法
Main
主程序开始执行
3).流程图(见图4.1)
图4.1Memory流程图
(2).类Block
a).成员变量(见表4.3)
表4.3主要成员变量(属性)
成员变量描述
变量类型
名称
方块翻开时的图标
ImageIcon
翻开时的图标
方块关闭时的图标
ImageIcon
关闭时的图标
b).方法(见表4.4)
表4.4主要方法
名称
功能
备注
Block
创建方块对象的构造方法
获取翻开时的图标
获取方块翻开时的图标
获取关闭时的图标
获取方块关闭时的图标
设置翻开时的图标
设置翻开时的图标
设置关闭时的图标
设置关闭时的图标
设置图标
设置方块上的图标
actionPerformed
处理ActionEvent事件
处理ActionEvent事件
(3).类MemoryTestPane
a).成员变量(见表4.5)
表4.5主要成员变量(属性)
变量描述
变量类型
名称
随机排列图标对象
RandomSetIcon
排列图标
方块数组
Block
block
图标数组
ImageIcon[]
icon
添加方块对象用的链表
LinkedList
listIcon
添加图标对象用的链表
LinkedList
listIcon
确定是否成功的对象
int
success
用来计时的对象
Timer
计时器
记忆测试板的行数和列数
int
行数,列数
b).方法(见表4.6)
表4.6主要方法
名称
功能
备注
MemoryTestPane
创建记忆测试板对象的构造方法
actionPerformed
处理ActionEvent事件
接口方法
c).流程图(见图4.2)
图4.2MemoryTestPane流程图
(4).类ShowRecord
a).成员变量(见表4.7)
表4.7主要成员变量(属性)
成员变量描述
变量类型
名称
存放成绩的文件
File
gradeFile
按钮对象
JButton
确定,清除
显示成绩的区域
JTextArea
show
b).方法(见表4.8)
表4.8主要方法
名称
功能
备注
ShowRecord
创建显示成绩窗口
构造方法
actionPerformed
处理ActionEvent事件
接口方法
c).流程图(见图4.3)
图4.3ShowRecorde流程图
(5).类Record
a).成员变量(见表4.9)
表4.9主要成员变量(属性)
成员变量描述
变量类型
名称
用时
int
time
输入测试者的名字
JTextField
yourname
存放成绩的文件
File
gradeFile
是否保存成绩的按钮
JButton
确定,取消
b).方法(见表4.10)
表4.10主要方法
名称
功能
备注
Record
创建保存成绩窗口
构造方法
actionPerformed
处理ActionEvent事件
接口方法
setTime
设置时间
setFile
设置文件
(6).类ShowHelp
a).成员变量(无)
b).方法(见表4.11)
表4.11主要方法
名称
功能
备注
ShowHelp
显示帮助文本
构造方法
(7).类RandomSetIcon
a).成员变量(无)
b).方法(见表4.12)
表4.12主要方法
名称
功能
备注
随机设置图标
随机排列记忆测试板中方块的图标
(8).类People
a)成员变量(见表4.13)
表4.13主要成员变量(属性)
描述
变量类型
名称
测试者名字
String
name
用时
int
time
b)方法(见表4.14)
表4.14主要方法
名称
功能
备注
People
传递名字和时间
构造方法
getTime
返回使用者用时
getName
返回使用者名字
5测试
5.1测试方案
将8个java文件保存到一个文件夹中,例如,D:
\jiyiceshi。
将8个文件分别编译成相应的字节码(.class)文件。
然后,用java解释器运行主类:
C:
\jiyiceshi\javaMemory程序运行后选择各菜单,分别进行功能测试。
5.2测试结果
(1)运行效果如图5.1所示。
图5.1初始界面
(2)当选择“自定义级别”后,自己可以设置游戏的难度,效果如图5.2所示
图5.2选择自定义级别
(3)当选择“查看排行榜”中的“初级排行榜”后,将显示初级的成绩记录效果如图5.3所示
图5.3选择自定义级别
(4)当选择“选择级别”中的“高级”后,在测试过程中的效果如图5.4所示
图5.3选择“高级”
(4)在测试过程中,当连续找到6个相同的图标时的效果如图5.3所示
图5.4连续找到6个相同的图标
(5)当选择“帮助”中的“新手入门”后,将显示简单的帮助文本效果如图5.5所示
图5.5帮助信息
6小结
一周的Java课程设计很快就结束了,一学期Java学的怎么样,这次正好可以检验一下。
Java课程是一门理论性和实践性都很强的课程,只有通过亲自编写算法、上机运行和调试程序,才能加深理解和掌握所学的知识,提高程序设计和软件研发能力,所以自己做好了思想准备,这次课程设计必须独立的完成。
刚看到题目就觉得题目怎么这么难啊!
要求实现的功能还真是挺多的,尤其是看到对监视器的应用,这可是我Java学习中的盲点,一开始就不知道从哪里下手,但是经过仔细分析后,题目其实并不怎么难,运用的知识大多都集中在“AWT组件与事务处理”这一章的。
经过四五天的构思、纸上编程、上机编程、调试、分析、改进……记忆测试系统终于完成了,并实现了所有要求的功能。
可以说这是我第一次独立完成这么长的程序,遇到的困难是可想而知的,有时候为了找出一个逻辑错误,要憋上好几个小时,一觉得自己的设计不行,就推翻进行重新设计。
从中也看出自己的基本功不够扎实,Java运用不够熟练,平时很少亲自编写算法、上机运行和调试过,这值得自己认真反思一下,大学学习的自主性是很强的,自己平时的课余时间也是挺多的,其中有多少花在了学习上了,这里要打个大大的问号!
其实我要感谢学校安排了此次课程设计,让我从中学到了很多,我也想了很多,以后的路怎么走,我想我现在已经很清楚了!
参考文献
[1]耿祥义. Java2实用教程(第三版).北京:
清华大学出版社,2006
[2]耿祥义.Java课程设计.北京:
清华大学出版社,2004
附录
附录1源程序清单
Memory.Java
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjava.util.LinkedList;
publicclassMemoryextendsJFrameimplementsActionListener//主类,实现ActionListener接口
{
JMenuBarbar;
JMenufileMenu;
JMenuhelpMenu;
JMenugradeMenu;
JMenuItem初级,中级,高级,初级排行榜,中级排行榜,高级排行榜,关于;
JMenuItem自定义级别;
Blockblock[];
ImageIconicon[];
MemoryTestPane记忆测试板=null;
Filefile初级=newFile("初级记忆排行榜.txt"),
file中级=newFile("中级记忆排行榜.txt"),
file高级=newFile("高级记忆排行榜.txt");
LinkedList成绩表=null;
ShowRecord显示成绩表对话框=null;
ShowHelp显示帮助文档=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[i]=newImageIcon("a"+i+".png"); } for(inti=0;i block[i]=newBlock(); block[i].设置关闭时的图标(newImageIcon("关闭.png")); } bar=newJMenuBar(); fileMenu=newJMenu("查看排行榜"); helpMenu=newJMenu("帮助"); gradeMenu=newJMenu("选择级别"); 关于=newJMenuItem("新手入门"); 初级=newJMenuItem("初级"); 中级=newJMenuItem("中级"); 高级=newJMenuItem("高级"); 自定义级别=newJMenuItem("自定义级别"); helpMenu.setMnemonic('H');//键盘助记符号 fileMenu.setMnemonic('F'); gradeMenu.setMnemonic('X'); 关于.setMnemonic('C'); 初级.setMnemonic('B'); 中级.setMnemonic('M'); 高级.setMnemonic('A'); 自定义级别.setMnemonic('D'); 高级排行榜=newJMenuItem("高级排行榜"); 中级排行榜=newJMenuItem("中级排行榜"); 初级排行榜=newJMenuItem("初级排行榜"); 初级排行榜.setMnemonic('O'); 中级排行榜.setMnemonic('N'); 高级排行榜.setMnemonic('L'); gradeMenu.add(初级);//将单个菜单项添加到菜单组中 gradeMenu.addSeparator();//分隔线 gradeMenu.add(中级); gradeMenu.addSeparator();//分隔线 gradeMenu.add(高级); gradeMenu.addSeparator();//分隔线 gradeMenu.add(自定义级别); helpMenu.add(关于); fileMenu.add(初级排行榜); fileMenu.addSeparator();//分隔线 fileMenu.add(中级排行榜); fileMenu.addSeparator();//分隔线 fileMenu.add(高级排行榜); bar.add(gradeMenu); bar.add(fileMenu); bar.add(helpMenu); setJMenuBar(bar); 关于.addActionListener(this);//对每个菜单项注册监听器,并且大量使用了动作监听器(ActionListener)。 初级.addActionListener(this);//ActionListener只监听一个事件, 中级.addActionListener(this);//这个事件在其相关组件上产生了动作时被触发, 高级.addActionListener(this);//因此叫作动作事件(ActionEvent)。 自定义级别.addActionListener(this);//ActionListener只有一个方法需要实现, 初级排行榜.addActionListener(this);//就是actionPerformed(ActionEventae)。 中级排行榜.addActionListener(this); 高级排行榜.addActionListener(this); 成绩表=newLinkedList(); if(! file初级.exists()){ try{ FileOutputStreamout=newFileOutputStream("初级记忆排行榜.txt"); ObjectOutputStreamobject_out=newObjectOutputStream(out); object_out.writeObject(成绩表); object_out.close(); out.close(); }catch(IOExceptione){ } } if(! file中级.exists()){ try{ FileOutputStreamout=newFileOutputStream("中级记忆排行榜.txt"); ObjectOutputStreamobject_out=newObjectOutputStream(out); object_out.writeObject(成绩表); object_out.close(); out.close(); }catch(IOExceptione){ } } if(! file高级.exists()){ try{ FileOutputStreamout=newFileOutputStream("高级记忆排行榜.txt"); ObjectOutputStreamobject_out=newObjectOutputStream(out); object_out.writeObject(成绩表); object_out.close(); out.close(); }catch(IOExceptione){ } } gradeFile=file初级; setBounds(100,100,350,350); 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=高; 图标个数=m; gradeFile=f; block=newBlock[m*n]; icon=newImageIcon[图标个数]; for(inti
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课程设计 记忆 测试 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)