




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录1.课设软件主要功能22.类总体设计22.1类组合关系图32.2主类32.3其他类33.类详细设计34.关键类成员函数流程图以及代码85.软件运行结果14结论16参考文献17记忆测试系统1. 课设软件主要功能记忆测试系统是通过回忆法测试记忆能力,测试手段分为初级,中级和高级三个级别。记忆测试系统设计要求如下:(1) 单击“记忆测试”菜单可以选择初级、中级或高级三个级别。(2) 单击“记忆测试”菜单还可以查看初级记忆榜、中级记忆榜或高级记忆榜,通过记忆榜存储每个级别的成绩。(3) 选择级别后,将出现相应级别的测试区。测试区由m*n个方块组成,程序通过设置m和n的值来确定相应的测试级别,例如,对于初级级别,m=5,n=6。每个方块上都有一个图标,但该图标默认不可见。用鼠标单击测试区中的任何一个方块,则计时器开始启动动,同时该方块上的图标将显示出来。(4) m*n个方块组成的测试区中有m个图标,每个图标重复出现n次,并且随机分布在测试区中的m*n各方块上。用户必须用鼠标连续单击出n个图表相同的方块,也就是说,如果用户已经用鼠标连续单击出p(pn)个图标相同的方块,当再单击另一个方块时,如果该方块的图标和上一个的相同,那么该方块的图标和前p次单击出的方块的图标仍然可见;否则前p次单击出来的方块的图标全都变得不可见,只有当前单击的方块的图标可现。(5) 测试区能显示用户的同时,并根据级别的不同,提示用户必须用鼠标连续单击出多个图标相同的方块。(6) 测试区有提示图标所在位置的功能。用户单击测试区中的“提示”按钮后,测试区将持续1.2秒为用户显示全部方块上的图标。用户没单击一次“提示”按钮,用户用时将增加10秒。(7) 连续单击出级别所要求的若干个相同的方块后,将弹出保存成绩对话框,用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。(8) 单击“选择图标”按钮菜单可重新选择方块的图标样式,即可以重新选择m个图标。2. 类总体设计2.1 类组合关系图MemoryGameStringFileMemoryTestAreaShoeRecordDialogFileTreeSetArrayListStringRecordTimerFileThread图1.1类组合之间的关系2.2主类 2.2.1MemoryGame.java 该类负责创建记忆测试系统的主窗口,该类含有main方法,记忆测试系统从该类开始执行。MemoryGame类中含有4种重要类型的对象,分别是String、File、MemoryTestArea和ShowRecordDialog对象。MemoryGame类创建的窗口对象以及其中的主要成员如上图所示。2.3 其他类 2.3.1 MemoryTestArea.javaMemoryTestArea类是主类MemoryGame窗口中的一个JPanel容器,所创建的对象称为“测试区”,这个“测试区”被添加到MemoryGame窗口的中心。MemoryTestArea类主要有六种类型的成员:ArrayList、String、Record、Timer、File和Thread对象。 2.3.2 Block.java Block类是JButton的子类,负责为MemoryTestArea类中的ArrayList数组表提供Block对象。 2.3.3 Record.java Record类是javax.swing包中JDialog对话框的子类,当用户成功单击出相应级别所要求的图标相同的方块后,Record创建的对象负责保存用户的名字和成绩到相应的级别文件中。 2.3.4 ShowRecordDialog.java ShowRecordDialog类是javax.swing包中JDialog对话框的子类,当用户单击“查看排行榜”时,ShowRecordDialog创建的对象负责显示用户的成绩 2.3.5 People.java People对象封装用户的名字和成绩,以便ShowRecordDialog对象可以按成绩的高低排序用户。JFrameActionListenerMemorybar:JMenuBar imageName:StringmenuGrade,menuResult,menuIcon:JMenu memoryArea:MemoryAreaoneGradeItem,twoGradeItem,threeGradeItem:JMenuItem showDialog:ShowRecordDialogoneGradeResult,twoGradeResult,threeGradeResult:JMenuItem m,n:intcarImageIcon,animalImageIcon:JMenuItemfileOneGrade,fileTwoGrade,fileThreeGrade,gradeFile:FileMemoryGame():无类型actionPerformed(ActionEvent):voidmain(String):voidJFrameActionListenerMemory3. 类详细设计bar:JMenuBar imageName:StringmenuGrade,menuResult,menuIcon:JMenu memoryArea:MemoryAreaoneGradeItem,twoGradeItem,threeGradeItem:JMenuItem showDialog:ShowRecordDialogoneGradeResult,twoGradeResult,threeGradeResult:JMenuItem m,n:intcarImageIcon,animalImageIcon:JMenuItemfileOneGrade,fileTwoGrade,fileThreeGrade,gradeFile:FileMemoryGame():无类型actionPerformed(ActionEvent):voidmain(String):void3.1 MemoryGame类MemoryGame类是javax.swing包中JFrame的一个子类,并实现了ActionListener接口。该类的主要成员变量和方法如上图(UML图)所示。以下是UML图中有关数据和方法的详细说明。1) 成员变量l bar是JMenuBar类创建的菜单条,可以向bar中添加菜单l menuGrade、menuResult和menuIcon是JMenu类创建的三个菜单,这三个菜单的名称分别是“选择级别”、“查看排行榜”和“选择图标”。l oneGradeItem,twoGradeItem和threeGradeItem是JMenuItem类创建的三个菜单项,被添加到menuGrade菜单中。这三个菜单项的名称分别是“初级”、“中级”和“高级”。l oneGradeResult,twoGradeResult和threeGradeResult是JMenuItem类创建的三个菜单项,被添加到menuResult菜单中。这三个菜单项的名称分别是“初级排行榜”、“中级排行榜”和“高级排行榜”。l carImageIcon和animalImageIcon是JMenuItem类创建的两个菜单项,被添加到menuIcon菜单中。这两个菜单项的名称分别是“汽车图标”和“动物图标”。l fileOneGrade,fileTwoGrade,fileThreeGrade和gradeFile是File类创建的四个文件对象。fileOneGrade,fileTwoGrade和fileThreeGrade三个文件对象所引用的文件分别是“初级记忆排行榜.txt”、“中级记忆排行榜.txt”和“高级记忆排行榜.txt”,分别用来写入三个级别的成绩。gradeFile可以是fileOneGrade,fileTwoGrade和fileThreeGrade中的某一个。l imageName是String类型的数组,每个单元是一个图像文件的名字。l memoryArea是测试区对象,由MemoryArea类负责创建。l showDialog是负责显示成绩的对话框,有ShowRecordDialog类负责创建。l m和n是int型数据,其值可以确定相应级别中测试区中方块的数量,例如,对于中级水平,m=6,n=7,测试区一共有42个方块。2) 方法l actionPerformed(ActionEvent)方法是MemoryGame类实现的ActionListener接口中的方法,负责执行菜单项发出的有关命令。用户选择菜单中的菜单项可触发ActionEvent事件,导致actionPerformed(ActionEvent)方法执行相应的操作。l MemoryGame()是构造方法,负责完成窗口的初始化。l main(String)方法是软件运行的入口方法。3.2 MemoryTestArea类1) UML图MemoryTestArea类是javax.swing包中JPanel容器的子类,实现了ActionListener和Runnable接口所创建的对象:memoryArea是MemoryGame类中最重要的成员之一,作为一个容器添加到MemoryGame窗口的中心。标明MemoryTestArea类的主要成员变量,方法以及和MemoryGame类之间的组合关系的UML图如图1.6所示。以下是UML图中有关数据和方法的详细说明。2) 成员变量l row和col的值确定测试区中方块的数量。MemoryTestArea类创建的对象memoryArea是MemoryGame中的成员,memoryArea对象通过调用initBlock(int,int,String,File)方法将MemoryGame类中m和n的值传递给row和col。l usedTime是用户的用时,单位是秒。l success的值是用户找到的具有同样的图标的方块的个数。l gradeFile是级别文件,memoryArea对象通过调用initBlock(int,int,String,File)方法将MemoryGame类中的gradeFile的引用传递给memoryArea对象中的gradeFile。l 数组表allBlockList单元的个数是row和col的乘积,它的每一个单元存放着一个Block对象。memoryArea对象通过调用initBlock(int,int,String,File)方法时完成对allBlockList单元的初始化,即创建单元中的Block对象。l 字符串数组imageFileName中的每一个单元是一幅图像的文件的名字。memoryArea对象通过调用setImageName(String)方法将MemoryGame中存放的图像文件名字的imageName数组的引用传递给iamgeFileName。l 链表openIconList用来存放用户找到的图标相同的方块上的图标。l 链表openBlockList用来存放用户找到的图标相同的方块。l hintTheard是用Theard类创建的线程对象,用来提示测试区上的Block上的图标,提示方式是将测试区中的各个Block上图标持续显示1200毫秒。l hintButton是注册了ActionEvent事件的监视器,当单击它时,启动hintTheard线程。l showUsedTime显示用户的用时,即显示usedTime的值。l hintMessage根据不同的级别显示相应的提示信息,如该级别需要用户寻找相同的图标方块的数目。l timer是一个计时器,负责改变usedTime的值。l Record负责提供保存成绩的界面,是一个对话框,默认不可见。当用户寻找出级别所要求的相同图标方块的数目后,该对话框可见,用户可以在该对话框中输入姓名并保存所输入的姓名和usedTime的值到gradeFile制定的级别文件中。3.3 Block类1) UML图2) 成员变量openStateIcon是方块上的图标。3.4 ShowRecordDialog类1) UML图图1.9 ShowRecordDialog的UML图2) 成员变量l gradeFile是对话框要读取的文件,该文件存储成绩。l clear是注册了ActionEvent事件的按钮。l showArea文本区显示对话框从gradeFile文件中读取的成绩。l treeSet负责将成绩按高低排序。3.5 People类1) UML图图1.10 People类的UML图2) 成员变量l name是用户的名字。l time是用户的用时。3.6 Record1) UML图图1.11 Record类的UML图2) 成员变量l time是用户的用时l yourName是用户用来输入名字的文本框。l Enter和cancel是按钮对象,用户单击enter按钮可以保存成绩,单击cancel可以放弃保存成绩l gradeFile是级别文件4. 关键类成员函数流程图及代码4.1代码import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.LinkedList;public class Memory extends JFrame implements ActionListener JMenuBar bar; JMenu fileMenu; JMenuItem 初级,中级,高级,初级排行榜,中级排行榜,高级排行榜; Block block; ImageIcon icon; MemoryTestPane 记忆测试板=null; File file初级=new File(初级记忆排行榜.txt), file中级=new File(中级记忆排行榜.txt), file高级=new File(高级记忆排行榜.txt); LinkedList 成绩表=null; ShowRecord 显示成绩表对话框=null; int m=5,n=6; int 图标个数=0; Container con=null; JTextField 提示条=null; File gradeFile=null; public Memory() block=new Blockm*n; 图标个数=m; icon=new ImageIcon图标个数; for(int i=0;iicon.length;i+) iconi=new ImageIcon(a+i+.gif); for(int i=0;iblock.length;i+) blocki=new Block(); blocki.设置关闭时的图标(new ImageIcon(关闭.gif); bar=new JMenuBar(); fileMenu=new JMenu(记忆力测试); 初级=new JMenuItem(初级); 中级=new JMenuItem(中级); 高级=new JMenuItem(高级); fileMenu.setMnemonic(G); 初级.setMnemonic(B); 中级.setMnemonic(I); 高级.setMnemonic(E); 高级排行榜=new JMenuItem(高级排行榜); 中级排行榜=new JMenuItem(中级排行榜); 初级排行榜=new JMenuItem(初级排行榜); 初级.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); 成绩表=new LinkedList(); if(!file初级.exists() try FileOutputStream out=new FileOutputStream(初级记忆排行榜.txt); ObjectOutputStream object_out=new ObjectOutputStream(out); object_out.writeObject(成绩表); object_out.close(); out.close(); catch(IOException e) if(!file中级.exists() try FileOutputStream out=new FileOutputStream(中级记忆排行榜.txt); ObjectOutputStream object_out=new ObjectOutputStream(out); object_out.writeObject(成绩表); object_out.close(); out.close(); catch(IOException e) if(!file高级.exists() try FileOutputStream out=new FileOutputStream(高级记忆排行榜.txt); ObjectOutputStream object_out=new ObjectOutputStream(out); object_out.writeObject(成绩表); object_out.close(); out.close(); catch(IOException e) gradeFile=file初级; setBounds(100,100,300,260); setVisible(true); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); con=getContentPane(); 记忆测试板=new MemoryTestPane(block,icon,m,n,gradeFile); 提示条=new JTextField(初级:您需要连续找出+6+个相同图标的方块); 提示条.setEditable(false); 提示条.setForeground(Color.red); con.add(记忆测试板,BorderLayout.CENTER); con.add(提示条,BorderLayout.SOUTH); con.validate(); this.validate(); public void 给出级别测试(int 宽,int 高,File f) m=宽; n=高; 图标个数=m; gradeFile=f; block=new Blockm*n; icon=new ImageIcon图标个数; for(int i=0;iicon.length;i+) iconi=new ImageIcon(a+i+.gif); for(int i=0;iblock.length;i+) blocki=new Block(); blocki.设置关闭时的图标(new ImageIcon(关闭.gif); 记忆测试板=new MemoryTestPane(block,icon,m,n,gradeFile); con.removeAll(); con.add(记忆测试板,BorderLayout.CENTER); con.add(提示条,BorderLayout.SOUTH); con.validate(); this.validate(); public void actionPerformed(ActionEvent event) if(event.getSource()=初级) 给出级别测试(5,6,file初级); setBounds(100,100,300,260); this.validate(); 提示条.setText(初级:您需要连续找出+6+个相同图标的方块); if(event.getSource()=中级) 给出级别测试(6,7,file中级); setBounds(100,100,340,280); this.validate(); 提示条.setText(中级:您需要连续找出+7+个相同图标的方块); if(e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中型饭店人员管理办法
- 装修工程协调管理办法
- 贷款债务重组管理办法
- 箱包样品室管理办法
- 衢州临时仓库管理办法
- 上市公司环安管理办法
- 财务管理办法及时性
- 订单班学生管理办法
- 上网电价结算管理办法
- 仓储物流设施管理办法
- (2025年标准)佛教无偿捐赠协议书
- 学堂在线 足球运动与科学 章节测试答案
- 公众号合作合同范本
- 第2课《中国人首次进入自己的空间站》课件+2025-2026学年统编版语文八年级上册
- 牛只生产性能与收益评估方案
- 2024年中、小学《美术》教师资格招聘基础知识考试题与答案
- 统编版八年级上册道德与法治 8.3.2《营造清朗空间》课件
- 2025拖车租赁协议
- 2025年陕西省综合评标评审专家库考试历年参考题库含答案详解(5套)
- 2025年秋人教鄂教版(2024)小学科学三年级上册《认识液体》教案
- 甜品制作基础知识点
评论
0/150
提交评论