JAVA课程设计记忆测试系统附源程序.docx
- 文档编号:28098053
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:37
- 大小:741.74KB
JAVA课程设计记忆测试系统附源程序.docx
《JAVA课程设计记忆测试系统附源程序.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计记忆测试系统附源程序.docx(37页珍藏版)》请在冰豆网上搜索。
JAVA课程设计记忆测试系统附源程序
《JAVA程序设计》
课程设计报告
题 目:
记忆游戏
姓名:
学号:
班级:
指导教师:
完成时间
成绩:
信息工程学院
2015年6月
记忆测试系统
1概述
1.1课程设计目的
1)巩固和提高java编程技术。
2)培养掌握成学设计的基本思路和方法。
3)加强研发、调试程序的能力。
4)增强分析、解决问题的能力。
5)提高科技论文写作能力。
1.2课程设计内容
记忆测试系统是通过回忆法测试记忆能力,测试手段分为初级,中级和高级三个级别。
记忆测试系统设计要求如下:
(1)单击“记忆测试”菜单可以选择初级、中级或高级三个级别。
(2)单击“记忆测试”菜单还可以查看初级记忆榜、中级记忆榜或高级记忆榜,通过记忆榜存储每个级别的成绩。
(3)选择级别后,将出现相应级别的测试区。
测试区由m*n个方块组成,程序通过设置m和n的值来确定相应的测试级别,例如,对于初级级别,m=3,n=3。
每个方块上都有一个图标,但该图标默认不可见。
用鼠标单击测试区中的任何一个方块,则计时器开始启动动,同时该方块上的图标将显示出来。
(4)m*n个方块组成的测试区中有m个图标,每个图标重复出现n次,并且随机分布在测试区中的m*n各方块上。
用户必须用鼠标连续单击出n个图表相同的方块,也就是说,如果用户已经用鼠标连续单击出p(p (5)测试区能显示用户的同时,并根据级别的不同,提示用户必须用鼠标连续单击出多个图标相同的方块。 (6)测试区有提示图标所在位置的功能。 用户单击测试区中的“提示”按钮后,测试区将持续1.2秒为用户显示全部方块上的图标。 用户每单击一次“提示”按钮,用户用时将增加10秒。 (7)连续单击出级别所要求的若干个相同的方块后,将弹出保存成绩对话框,用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。 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所示。 图3.1类之间的组合关系 图3.1类之间的关系 3.2系统流程图 图3.2系统流程图 4详细设计 4.1工作原理 系统主体部分是在底层容器上插入面板,并在面板上安排按钮阵列,当用户点击按钮,经过随机安排在按钮后面的图片显示出来。 通过对比图片下标,如果所显示图片和前一个显示图片一样,则没变化;如果,不一样,则把以前所有显示的图片重新用按钮遮盖。 当用户点开指定数量的图片时,就进入记录数据部分。 在测试过程中,显示用户测试时间。 记录数据部分。 是把用户输入的姓名和系统记录用户测试时间写入指定文档中保存。 查阅数据部分,是把指定文档的数据显示给用户,包括姓名和测试时间。 用户此时可以清除文档中数据,即可删除排行榜。 4.2算法思路 主窗口安排指定数量按钮,是通过用户所选级别传参数计算后进行安排。 随机分布图片需要随机函数随机产生指定数量的图片下标,并传给主窗口的按对应按钮通过对比所显示图片的下标,统计显示的相同图片的数量。 用户测试开始后,记录测试时间,并保存。 4.3主类Memory a).成员变量 主要成员变量(属性): 成员变量描述 变量类型 名称 菜单条 JMenuBar Bar 菜单 JMenuItem FileMenu 菜单项 JMenuBar 初级,中级,高级,初级排行榜,中级排行榜,高级排行榜 面板容器 MemoryTestPane 记忆测试板 方块数组 Block[] block 显示成绩 ShowRecord 显示成绩表对话框 图标数组 ImageIcon[] icon b).方法 主要方法: 名称 功能 备注 Memory 创建窗口 构造方法 给出级别测试 选择级别 actionPerformed 处理ActionEvent事件 接口方法 Main 主程序开始执行 4.4类Block a).成员变量 主要成员变量(属性): 成员变量描述 变量类型 名称 方块翻开时的图标 ImageIcon 翻开时的图标 方块关闭时的图标 ImageIcon 关闭时的图标 b).方法 主要方法: 名称 功能 备注 Block 创建方块对象的构造方法 获取翻开时的图标 获取方块翻开时的图标 获取关闭时的图标 获取方块关闭时的图标 设置翻开时的图标 设置翻开时的图标 设置关闭时的图标 设置关闭时的图标 设置图标 设置方块上的图标 actionPerformed 处理ActionEvent事件 处理ActionEvent事件 4.5类MemoryTestPane a).成员变量 主要成员变量(属性): 变量描述 变量类型 名称 随机排列图标对象 RandomSetIcon 排列图标 方块数组 Block block 图标数组 ImageIcon[] icon 添加方块对象用的链表 LinkedList listIcon 添加图标对象用的链表 LinkedList listIcon 确定是否成功的对象 int success 用来计时的对象 Timer 计时器 记忆测试板的行数和列数 int 行数,列数 b).方法 主要方法: 名称 功能 备注 MemoryTestPane 创建记忆测试板对象的构造方法 actionPerformed 处理ActionEvent事件 接口方法 4.6类ShowRecord a).成员变量 主要成员变量(属性): 成员变量描述 变量类型 名称 存放成绩的文件 File gradeFile 按钮对象 JButton 确定,清除 显示成绩的区域 JTextArea show b).方法 主要方法: 名称 功能 备注 ShowRecord 创建显示成绩窗口 构造方法 actionPerformed 处理ActionEvent事件 接口方法 4.7类Record a).成员变量 主要成员变量(属性): 成员变量描述 变量类型 名称 用时 int time 输入测试者的名字 JTextField yourname 存放成绩的文件 File gradeFile 是否保存成绩的按钮 JButton 确定,取消 b).方法 主要方法: 名称 功能 备注 Record 创建保存成绩窗口 构造方法 actionPerformed 处理ActionEvent事件 接口方法 setTime 设置时间 setFile 设置文件 4.8类RandomSetIcon a).成员变量(无) b).方法 主要方法: 名称 功能 备注 随机设置图标 随机排列记忆测试板中方块的图标 4.9类People a)成员变量 主要成员变量(属性): 描述 变量类型 名称 测试者名字 String name 用时 int time 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[i]=newImageIcon("a"+i+".gif"); } for(inti=0;i { 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("初级排行榜"); 初级.setMnemonic('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("初级记忆排行榜.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,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=高; 图标个数=m; gradeFile=f; block=newBlock[m*n]; icon=newImageIcon[图标个数]; for(inti=0;i { icon[i]=newImageIcon("a"+i+".gif"); } for(inti=0;i { block[i]=newBlock(); block[i].设置关闭时的图标(newImageIcon("关闭.gif")); } 记忆测试板=newMemoryTestPane(block,icon,m,n,gradeFile); con.removeAll(); con.add(记忆测试板,BorderLayout.CENTER); con.add(提示条,BorderLayout.SOUTH); con.validate(); this.validate(); } publicvoidactionPerformed(ActionEventevent) { if(event.getSource()==初级) { 给出级别测试(3,3,file初级); setBounds(100,100,300,260); this.validate(); 提示条.setText("初级: 您需要连续找出"+3+"个相同图标的方块"); } if(event.getSource()==中级) { 给出级别测试(4,4,file中级); setBounds(100,100,340,280); this.validate(); 提示条.setText("中级: 您需要连续找出"+4+"个相同图标的方块"); } if(event.getSource()==高级) { 给出级别测试(5,5,file高级); setBounds(100,100,360,300); this.validate(); 提示条.setText("高级: 您需要连续找出"+5+"个相同图标的方块"); } if(event.getSource()==高级排行榜) { 显示成绩表对话框=newShowRecord(this,file高级); 显示成绩表对话框.setVisible(true); } if(event.getSource()==中级排行榜) { 显示成绩表对话框=newShowRecord(this,file中级); 显示成绩表对话框.setVisible(true); } if(event.getSource()==初级排行榜) { 显示成绩表对话框=newShowRecord(this,file初级); 显示成绩表对话框.setVisible(true); } } publicstaticvoidmain(Stringargs[]) { newMemory(); } } Block.java importjavax.swing.*; importjava.awt.event.*; publicclassBlockextendsJButtonimplementsActionListener { ImageIcon翻开时的图标=null,关闭时的图标=null; publicBlock() { addActionListener(this); } publicImageIcon获取翻开时的图标() { return翻开时的图标; } publicImageIcon获取关闭时的图标() { return关闭时的图标; } publicvoid设置翻开时的图标(ImageIconicon) { 翻开时的图标=icon; } publicvoid设置关闭时的图标(ImageIconicon) { 关闭时的图标=icon; } publicvoid设置图标(ImageIconicon) { setIcon(ico
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 课程设计 记忆 测试 系统 源程序
![提示](https://static.bdocx.com/images/bang_tan.gif)