JAVA课程设计——记忆测试系统(附源程序)总结

上传人:B**** 文档编号:57191868 上传时间:2022-02-23 格式:DOC 页数:27 大小:712.50KB
返回 下载 相关 举报
JAVA课程设计——记忆测试系统(附源程序)总结_第1页
第1页 / 共27页
JAVA课程设计——记忆测试系统(附源程序)总结_第2页
第2页 / 共27页
JAVA课程设计——记忆测试系统(附源程序)总结_第3页
第3页 / 共27页
点击查看更多>>
资源描述
JAVA 程序设计课程设计报告题目:记忆游戏姓名:学号:班级:指导教师 :完成时间成绩:信息工程学院2015年6月目录目录1 概述11.1 课程设计目的11.2 课程设计内容12 需求分析22.1 设计目标22.2 主体功能22.3 开发环境23 概要设计33.1 系统的功能模块划分33.2 系统流程图44 详细设计55 测试75.1 测试方案85.2 测试结果86 小结11参考文献12附录 .13附录 1 源程序清单 .13Java 程序设计课程设计报告记忆测试系统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( pn)个图标相同的方块,当再单击另一个方块时,如果该方块的图标和上一个的相同,那么该方块的图标和前p 次单击出的方块的图标仍然可见;否则前p 次单击出来的方块的图标全都变得不可见,只有当前单击的方块的图标可现。( 5)测试区能显示用户的同时, 并根据级别的不同, 提示用户必须用鼠标连续单击出多个图标相同的方块。( 6)测试区有提示图标所在位置的功能。用户单击测试区中的“提示”按钮后,测试区将持续 1.2 秒为用户显示全部方块上的图标。用户每单击一次“提示”按钮,用户用时将增加10秒。( 7)连续单击出级别所要求的若干个相同的方块后, 将弹出保存成绩对话框, 用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。1记忆测试系统2 需求分析2.1 设计目标1单击“记忆测试”菜单可以选择初级、中级、高级三个级别,通过记忆榜可以查看初级记忆榜、中级记忆榜或高级记忆榜。2. 选择级别后,将显示相应级别的测试区域。测试区域由若干个方块组成,每个方块上都有一个图标,但该图标默认情况下不可见。用鼠标单击测试区中的任何一个方块,则计时器开始启动, 同时该方块上的图标将显示出来。对于初级级别, 用户必须用鼠标连续单击3个图标相同的方块,也就是说,如果用户已经用鼠标连续单击出n(n3) 个图标相同的方块,单击另一个方块时, 如果该方块的图标和上一个相同,那么该方块的图标和前n次单击出的方块的图标仍然可见,否则,前n次单击出的方块的图标都变为不可见。3. 连续单击出该级别所要求的若干个图标形同的方块后,将显示保存成绩对话框,成绩按所用时间排序。用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。2.2 主体功能本游戏是通过由用户点击图片显示出图片后,如果是相同的,便保持图形,如果用户点开的是不同的图片则先前点击的图片被清空。当用户同时点击出规定数目的图片后,弹出保存成绩框。2.3 开发环境Win7 ; MyEclipse 8.5 软件2Java 程序设计课程设计报告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(帮助)绩)图 3.1类之间的显组示合成关绩系)RandomSetIcon (随机 排列 图Record ( 记 录 成标)绩)People(用户信息)图 3.1类之间的关系33.2 系统流程图查看排行榜显示相应级别排行榜记忆测试系统开始创建容器选择菜单选择级别相应级别提示加载”方块“随机设置“方块“上的图标查看帮助信息加载”图标“并开始计时否相同图标满足要求是显示操作信息显示保存成绩对话框否是否保存成绩是输入玩家姓名成绩排序后保存到相应文件中结束图 3.2系统流程图4Java 程序设计课程设计报告4 详细设计4.1 工作原理系统主体部分是在底层容器上插入面板,并在面板上安排按钮阵列,当用户点击按钮,经过随机安排在按钮后面的图片显示出来。通过对比图片下标,如果所显示图片和前一个显示图片一样,则没变化;如果,不一样,则把以前所有显示的图片重新用按钮遮盖。当用户点开指定数量的图片时,就进入记录数据部分。在测试过程中,显示用户测试时间。记录数据部分。是把用户输入的姓名和系统记录用户测试时间写入指定文档中保存。查阅数据部分,是把指定文档的数据显示给用户,包括姓名和测试时间。用户此时可以清除文档中数据,即可删除排行榜。4.2 算法思路主窗口安排指定数量按钮,是通过用户所选级别传参数计算后进行安排。随机分布图片需要随机函数随机产生指定数量的图片下标,并传给主窗口的按对应按钮通过对比所显示图片的下标,统计显示的相同图片的数量。用户测试开始后,记录测试时间,并保存。4.3 主类 Memorya).成员变量主要成员变量(属性):成员变量描述变量类型名称菜单条JMenuBarBar菜单JMenuItemFileMenu初级,中级,高级,初级菜单项JMenuBar排行榜,中级排行榜,高级排行榜面板容器MemoryTestPane记忆测试板方块数组Blockblock显示成绩ShowRecord显示成绩表对话框图标数组ImageIconiconb).方法主要方法:名称功能备注Memory创建窗口构造方法给出级别测试选择级别actionPerformed处理 ActionEvent 事件接口方法Main主程序开始执行4.4 类 Blocka).成员变量主要成员变量(属性):成员变量描述变量类型名称方块翻开时的图标ImageIcon翻开时的图标方块关闭时的图标ImageIcon关闭时的图标5记忆测试系统b).方法主要方法:名称功能备注Block创建方块对象的构造方法获取翻开时的图标获取方块翻开时的图标获取关闭时的图标获取方块关闭时的图标设置翻开时的图标设置翻开时的图标设置关闭时的图标设置关闭时的图标设置图标设置方块上的图标actionPerformed处理 ActionEvent 事件处理 ActionEvent 事件4.5 类 MemoryTestPanea).成员变量主要成员变量(属性):变量描述变量类型名称随机排列图标对象RandomSetIcon排列图标方块数组Blockblock图标数组ImageIconicon添加方块对象用的链表LinkedListlistIcon添加图标对象用的链表LinkedListlistIcon确定是否成功的对象intsuccess用来计时的对象Timer计时器记忆测试板的行数和列数int行数,列数b).方法主要方法:名称功能备注MemoryTestPane创建记忆测试板对象的构造方法actionPerformed处理 ActionEvent 事件接口方法4.6 类 ShowRecorda). 成员变量主要成员变量(属性):成员变量描述变量类型名称存放成绩的文件FilegradeFile按钮对象JButton确定,清除显示成绩的区域JTextAreashow6Java 程序设计课程设计报告b).方法主要方法:名称功能备注ShowRecord创建显示成绩窗口构造方法actionPerformed处理 ActionEvent 事件接口方法4.7 类 Recorda).成员变量主要成员变量(属性):成员变量描述变量类型名称用时inttime输入测试者的名字JTextFieldyourname存放成绩的文件FilegradeFile是否保存成绩的按钮JButton确定,取消b).方法主要方法:名称功能备注Record创建保存成绩窗口构造方法actionPerformed处理 ActionEvent 事件接口方法setTime设置时间setFile设置文件4.8 类 RandomSetIcona).成员变量(无)b).方法主要方法:名称功能备注随机设置图标随机排列记忆测试板中方块的图标4.9 类 Peoplea)成员变量主要成员变量(属性):描述变量类型名称测试者名字Stringname用时inttime7记忆测试系统b) 方法主要方法:名称功能备注People传递名字和时间构造方法getTime返回使用者用时getName返回使用者名字5 测试5.1 测试方案将 7 个 java 文件保存到一个文件夹中,例如, D:jiyiceshi。将 7 个文件分别编译成相应的字节码( .class)文件。然后,用java 解释器运行主类:C:jiyiceshijavaMemory程序运行后选择各菜单,分别进行功能测试。5.2 测试结果( 1)运行效果图运行效果8Java 程序设计课程设计报告(2)当选择“记忆力测试”后,自己可以设置游戏的难度,效果如图图初级效果图图中级效果图图高级效果图9记忆测试系统图排行效果图(3) 当游戏结束后,查看“初级排行榜” ,将显示初级的成绩记录效果图初级成绩记录10Java 程序设计课程设计报告6 小结Java 程序设计是本专业的一门重要的面向对象的程序语言。在刚开始学习时,一直担心自己、也没把握自己能否学好,也曾担心过不了考试这一关。经过近大半学期老师您不厌其烦的教导,引导我们去学习。我对Java 语言有了一定的了解,但那绝对是远远不够的,还是要不断地把它应用到实践中去,融会贯通。经过为期一周的Java 课程设计,亲身感受体验敲、改写Java 程序代码的乐趣,我对Java编程有了较为深入的了解,不仅巩固了以前在课本上学到的知识,还学会了很多其他东西,比如 Java 程序不同调试平台的使用、错误的调试及数据库路径的配置等等。一直以来,或许有不少人跟我一样,总是觉得编程是很枯燥乏味的,但是这次的体验下来,其实以前我们的想法错误的。感觉到看着敲击的代码变为一个个可以自娱自乐小游戏程序,其实是一件非常有趣的事情。并且在添加功能的过程中,不仅可以启发自己的想象力,还可以培养灵活运用知识的能力。在此过程中,我们认识到编程的重要步骤是分析,分析问题的本身和现实要求。分析过程中采用根据设置框架选择功能使我的思路特别清晰。拿到一个题目不能只局限在一种思想一种方法上,要尽量的多尝试其他的做法,然后比较,集各家之所长,拿出最优秀的程序来。其次也是最重要的就是我们应当打开我们的视野,我们应当从我们的生活的这个世界中去领悟解决问题的思想和方法通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程。作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义。11记忆测试系统参考文献文献写法如下:1. 专著、论文集、毕业论文、报告等疯狂 Java 讲义 (2008-09 )李刚著12Java 程序设计课程设计报告附录附录 1 源程序清单Memory.javapublic class Memory extends JFrame implements ActionListenerJMenuBar 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;publicMemory()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);13记忆测试系统初级 .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()tryFileOutputStream out=new FileOutputStream( 初级记忆排行榜 .txt); ObjectOutputStream object_out=new ObjectOutputStream(out); object_out.writeObject( 成绩表 );object_out.close();out.close();catch(IOException e)if(!file中级 .exists()tryFileOutputStream out=new FileOutputStream( 中级记忆排行榜 .txt); ObjectOutputStream object_out=new ObjectOutputStream(out); object_out.writeObject( 成绩表 );object_out.close();out.close();catch(IOException e)if(!file高级 .exists()tryFileOutputStream out=new FileOutputStream( 高级记忆排行榜 .txt); ObjectOutputStream object_out=new ObjectOutputStream(out);14Java 程序设计课程设计报告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()= 初级 )15记忆测试系统给出级别测试(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()= 高级排行榜 )显示成绩表对话框=new ShowRecord(this,file高级 );显示成绩表对话框.setVisible(true);if(event.getSource()= 中级排行榜 )显示成绩表对话框=new ShowRecord(this,file中级 );显示成绩表对话框.setVisible(true);if(event.getSource()= 初级排行榜 )显示成绩表对话框=new ShowRecord(this,file初级 );显示成绩表对话框.setVisible(true);public static void main(String args)new Memory();Block.javapublic class Block extends JButton implements ActionListener ImageIcon 翻开时的图标=null, 关闭时的图标=null;public Block()addActionListener(this);public ImageIcon获取翻开时的图标()16Java 程序设计课程设计报告return 翻开时的图标;public ImageIcon获取关闭时的图标()return 关闭时的图标;public void设置翻开时的图标(ImageIcon icon)翻开时的图标 =icon;public void设置关闭时的图标(ImageIcon icon)关闭时的图标 =icon;public void设置图标 (ImageIcon icon)setIcon(icon);public void actionPerformed(ActionEvent e)this.setIcon( 翻开时的图标);MemoryTestPane.javapublic class MemoryTestPane extends JPanel implements ActionListener RandomSetIcon排列图标 =null;Block block;ImageIcon icon;LinkedList listIocn=null,listBlock=null;int行数 =0, 列数 =0;int success=0;int time=0;计时器 =null;JTextField显示时间 =null;File gradeFile=null;boolean计时器是否启动=false;public MemoryTestPane(Block block,ImageIcon icon,int m,int n,File f)排列图标 =new RandomSetIcon();this.block=block;this.icon=icon;17记忆测试系统行数 =m;列数 =n;gradeFile=f;listIocn=new LinkedList();listBlock=new LinkedList();setLayout(new BorderLayout();JPanel center=new JPanel();center.setLayout(new GridLayout(行数 , 列数 );for(int i=0;iblock.length;i+)center.add(blocki);blocki.addActionListener(this);JPanel south=new JPanel();显示时间 =new JTextField(12);显示时间 .setEditable(false);显示时间 .setForeground(Color.red);south.add(显示时间 );add(center,BorderLayout.CENTER);add(south,BorderLayout.SOUTH);排列图标 . 随机设置图标(block,icon);计时器 =new Timer(1000,this);计时器是否启动=false;public void actionPerformed(ActionEvent e)if(e.getSource() instanceof Block)Block方块 =(Block)e.getSource();ImageIcon 翻开时的图标 =方块 . 获取翻开时的图标 (); 方块 . 设置图标 ( 翻开时的图标 );if(listIocn.size()=0)listIocn.add(翻开时的图标);listBlock.add(方块 );success=1;elseImageIcon temp=(ImageIcon)listIocn.getLast();if(temp=翻开时的图标 &!(listBlock.contains(方块 )success=success+1;listIocn.add(翻开时的图标 );listBlock.add(方块 );if(success=列数 )for(int i=0;iblock.length;i+)blocki.setEnabled(false);18Java 程序设计课程设计报告for(int j=0;jlistBlock.size();j+)Block b=(Block)listBlock.get(j);b.setDisabledIcon(b.获取翻开时的图标();计时器 .stop();Record record=new Record(gradeFile);record.setTime(time);record.setVisible(true);else if(temp!=翻开时的图标)&(!(listBlock.contains(方块 )listIocn.clear();listBlock.clear();listIocn.add(翻开时的图标 );listBlock.add(方块 );success=1;for(int i=0;iblock.length;i+)if(方块 !=blocki)blocki.设置图标 (blocki.获取关闭时的图标();if(计时器是否启动=false)time=0;计时器 .start();计时器是否启动=true;if(e.getSource()=计时器 )time=time+1;显示时间 .setText(您的用时 :+time+秒 );ShowRecord.javapublic class ShowRecord extends JDialog implements ActionListener19记忆测试系统File gradeFile=null;JButton确定,清除;JTextArea show=null;public ShowRecord(JFrame frame,File f)super(frame,记忆测试排行榜:+f.toString();gradeFile=f;show=new JTextArea(6,4);确定 =new JButton(显示排行榜 );确定 .addActionListener(this);清除 =new JButton(清空排行榜 );清除 .addActionListener(this);Container con=getContentPane();con.add(new JScrollPane(show),BorderLayout.CENTER);JPanel p=new JPanel();p.add(确定 );p.add(清除 );con.add(p,BorderLayout.SOUTH);setBounds(100,100,320,185);setVisible(false);setModal(true);addWindowListener(new WindowAdapter()public void windwoClosing(WindowEvent e)setVisible(false);dispose(););public void actionPerformed(ActionEvent e)if(e.getSource()=确定 )tryshow.setText(null);FileInputStream in=new FileInputStream(gradeFile);ObjectInputStream object_in=new ObjectInputStream(in);LinkedList 成绩 =(LinkedList)object_in.readObject(); object_in.close();sort(成绩 );for(int i=0;i成绩 .size();i+)People people=(People)成绩 .get(i);show.append(n+people.getName()+成绩 :+people.getTime();20Java 程序设计课程设计报告catch(Exception ee)if(e.getSource()=清除 )tryFileInputStream in=new FileInputStream(gradeFile);ObjectInputStream object_in=new ObjectInputStream(in);LinkedList 成绩 =(LinkedList)object_in.readObject(); object_in.close();成绩 .clear();FileOutputStream out=new FileOutputStream(gradeFile);ObjectOutputStream object_out=new ObjectOutputStream(out);object_out.writeObject(成绩 );out.close();object_out.close();show.setText(排行榜被清空);catch(Exception ee)public void sort(LinkedList list)for(int i=0;ilist.size()-1;i+)for(int j=i+1;j( (People)list.get(j).getTime()People temp=(People)list.get(j);list.set(j,(People)list.get(i);list.set(i,temp);Record.java21记忆测试系统public class Record extends JFrame implements ActionListener int time=0;JTextField yourName,label;JButton确定,取消;File gradeFile=null;public Record(File f)super(记录你的成绩到:+f.toString();gradeFile=f;setBounds(100,100,330,160);setResizable(false);setVisible(false);确定 =new JButton(确定 );取消 =new JButton(取消 );yourName=new JTextField(8);yourName.setText(匿名 );确定 .addActionListener(this);取消 .addActionListener(this);Container con=getContentPane();con.setLayout(new GridLayout(2,1);label=new JTextField(输入你的姓名, 将成绩存放到排行榜:+f.toString();label.setEditable(false);con.add(label);JPanel p=new JPanel();p.add(yourName);p.add(确定 );p.add(取消 );con.add(p);addWindowListener(new WindowAdapter()public void windwoClosing(WindowEvent e)setVisible(false);dispose(););public void setFile(File f)gradeFile=f;public void setTime(int time)this.time=time;public void actionPerformed(ActionEvent e)if(e.getSource()=确定 )22Java 程序设计课程设计报告tryFileInputStream in=new FileInputStream(gradeFile);ObjectInputStream object_in=new ObjectInputStream(in);LinkedList list=(LinkedList)object_in.readObject();object_in.close();in.close();People people=new People(yourName.getText(),time);list.add(people);FileOutputStream out=new FileOutputStream(gradeFile);ObjectOutputStream object_out=new ObjectOutputStream(out);object_out.writeObject(list);out.close();object_out.close();catch(Exception event)setVisible(false);dispose();if(e.getSource()=取消 )setVisible(false);dispose();
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 演讲稿件


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!