《面向对象程序设计》课程设计报告 题目:《记忆测试系统》课程设计

 

《面向对象程序设计》课程设计报告

 

 

 

 

题目:《记忆测试系统》课程设计    

学院:信息工程学院

姓名:

学号:

专业:计算机科学与技术

班级:

指导教师:

 

2016 年 6月


目 录

目录...............................................................................2

1 概    述.................................................................. 1

1.1 课程设计目的....................................................... 1

1.2 课程设计内容....................................................... 1

2 需求分析.................................................................. 1

2.1 设计目标............................................................... 1

2.2 主体功能 ...............................................................1

2.3 开发环境............................................................... 2

3 概要设计.................................................................. 2

3.1 系统的功能模块划分 ...........................................2

3.2 系统流程图 ...........................................................2

4 详细设计 ..................................................................4

5测试........................................................................... 4

5.1 测试方案 ...............................................................4

5.2 测试结果 ...............................................................7

6 课程设计总结 ..........................................................9

附    录 ....................................................................11

附录1 源程序清单 ...................................................11


 

记忆测试系统

1 概    述

1.1 课程设计目的

1) 巩固和提高java编程技术。 

2) 培养掌握成学设计的基本思路和方法。

3) 加强研发、调试程序的能力。

4) 增强分析、解决问题的能力。

5) 提高科技论文写作能力。

1.2课程设计内容

记忆测试系统是通过回忆法测试记忆能力,测试手段分为初级,中级和高级三个级别。记忆测试系统设计要求如下: 

(1)单击“记忆测试”菜单可以选择初级、中级或高级三个级别。 

(2)单击“记忆测试”菜单还可以查看初级记忆榜、中级记忆榜或高级记忆榜,通过记忆榜存储每个级别的成绩。 

(3)选择级别后,将出现相应级别的测试区。测试区由m*n个方块组成,程序通过设置m和n的值来确定相应的测试级别,例如,对于初级级别,m=5,n=6。每个方块上都有一个图标,但该图标默认不可见。用鼠标单击测试区中的任何一个方块,则计时器开始启动动,同时该方块上的图标将显示出来。 

(4)m*n个方块组成的测试区中有m个图标,每个图标重复出现n次,并且随机分布在测试区中的m*n各方块上。用户必须用鼠标连续单击出n个图表相同的方块,也就是说,如果用户已经用鼠标连续单击出p(p<n)个图标相同的方块,当再单击另一个方块时,如果该方块的图标和上一个的相同,那么该方块的图标和前p次单击出的方块的图标仍然可见;否则前p次单击出来的方块的图标全都变得不可见,只有当前单击的方块的图标可现。 

(5)测试区能显示用户的同时,并根据级别的不同,提示用户必须用鼠标连续单击出多个图标相同的方块。  

(6)连续单击出级别所要求的若干个相同的方块后,将弹出保存成绩对话框,用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。 

2 需求分析 

2.1 设计目标

1.单击“记忆测试”菜单可以选择初级、中级、高级三个级别,通过记忆榜可以查看初级记忆榜、中级记忆榜或高级记忆榜。 

2.选择级别后,将显示相应级别的测试区域。测试区域由若干个方块组成,每个方块上都有一个图标,但该图标默认情况下不可见。用鼠标单击测试区中的任何一个方块,则计时器开始启动,同时该方块上的图标将显示出来。对于初级级别,用户必须用鼠标连续单击6个图标相同的方块,也就是说,如果用户已经用鼠标连续单击出n(n<6)个图标相同的方块,单击另一个方块时,如果该方块的图标和上一个相同,那么该方块的图标和前n次单击出的方块的图标仍然可见,否则,前n次单击出的方块的图标都变为不可见。 

3.连续单击出该级别所要求的若干个图标形同的方块后,将显示保存成绩对话框,成绩按所用时间排序。用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。

2.2 主体功能

本游戏是通过由用户点击图片显示出图片后,如果是相同的,便保持图形,如果用户点开的是不同的图片则先前点击的图片被清空。当用户同时点击出规定数目的图片后,弹出保存成绩框。

2.3 开发环境

Win7;MyEclipse 8.5软件 

3 概要设计

3.1系统的功能模块划分

记忆测试系统共包含7个java源文件和若干个图像文件(用户可以增加)。类之间的主要关系如下图所示。  

在测试系统中,可以编写5个Java源文件:Memory.java、Block.java、ShowRecord.java、Record.java、People.java。  记忆测试系统除了上述5个Java源文件产生的类外,还需要Java系统提供的一些重要的类。  记忆测试系统所用到的一些重要的类以及之间的组合关系如图3.1所示。

Block(方块) MemoryTestPane(测试版) ShowRecord(显示成绩)

图3.1 类之间的组合关系

RandomSetIcon(随机排列图标)               Record(记录成绩)

People(用户信息)

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\java Memory  程序运行后选择各菜单,分别进行功能测试。

 5.2 测试结果 

(1)   运行效果

(2)    当选择“记忆力测试”后,自己可以设置游戏的难度,效果如图

初级效果图

中级效果图

 

高级效果图

(3)当游戏结束后,查看“初级排行榜”,将显示初级的成绩记录效果。

初级成绩记录

 

6 课程设计总结

Java程序设计是本专业的一门重要的面向对象的程序语言。在刚开始学习时,一直担心自己、也没把握自己能否学好,也曾担心过不了考试这一关。经过近大半学期老师您不厌其烦的教导,引导我们去学习。我对Java语言有了一定的了解,但那绝对是远远不够的,还是要不断地把它应用到实践中去,融会贯通。 

经过为期一周的Java课程设计,亲身感受体验敲、改写Java程序代码的乐趣,我对Java编程有了较为深入的了解,不仅巩固了以前在课本上学到的知识,还学会了很多其他东西,比如Java程序不同调试平台的使用、错误的调试及数据库路径的配置等等。  

一直以来,或许有不少人跟我一样,总是觉得编程是很枯燥乏味的,但是这次 的体验下来,其实以前我们的想法错误的。感觉到看着敲击的代码变为一个个可以自娱自乐小游戏程序,其实是一件非常有趣的事情。并且在添加功能的过程中,不仅可以启发自己的想象力,还可以培养灵活运用知识的能力。在此过程中,我们认识到编程的重要步骤是分析,分析问题的本身和现实要求。分析过程中采用根据设置框架选择功能使我的思路特别清晰。拿到一个题目不能只局限在一种思想一种方法上,要尽量的多尝试其他的做法,然后比较,集各家之所长,拿出最优秀的程序来。其次也是最重要的就是我们应当打开我们的视野,我们应当从我们的生活的这个世界中去领悟解决问题的思想和方法 

通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程。作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义。


 

附  录

附录1 源程序清单

Block.java

import javax.swing.*;

import java.awt.event.*;

public class Block extendsJButton implements ActionListener

{

 ImageIcon 翻开时的图标=null,关闭时的图标=null;

 public Block()

  {

    addActionListener(this);

  }

 public ImageIcon 获取翻开时的图标()

  {

    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(翻开时的图标);

  }

}

Memory.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

importjava.util.LinkedList;

public class Memoryextends 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 Block[m*n];

    图标个数=m;

    icon=new ImageIcon[图标个数];

    for(int i=0;i<icon.length;i++)

       {

         icon[i]=newImageIcon("a"+i+".gif");

       }

    for(int i=0;i<block.length;i++)

       {

         block[i]=new Block();

         block[i].设置关闭时的图标(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=newFileOutputStream("初级记忆排行榜.txt");

          ObjectOutputStream object_out=newObjectOutputStream(out);

          object_out.writeObject(成绩表);

          object_out.close();

          out.close();

         }

      catch(IOException e)

         {

         }

     }

     if(!file中级.exists())

     {

      try{

          FileOutputStream out=newFileOutputStream("中级记忆排行榜.txt");

          ObjectOutputStream object_out=newObjectOutputStream(out);

          object_out.writeObject(成绩表);

          object_out.close();

          out.close();

         }

      catch(IOException e)

         {

         }

     }

     if(!file高级.exists())

     {

      try{

          FileOutputStream out=newFileOutputStream("高级记忆排行榜.txt");

          ObjectOutputStream object_out=newObjectOutputStream(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(WindowEvente)

         {

          System.exit(0);

         }

      });

    con=getContentPane();

    记忆测试板=newMemoryTestPane(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 Block[m*n];

    icon=new ImageIcon[图标个数];

       for(int i=0;i<icon.length;i++)

       {

         icon[i]=newImageIcon("a"+i+".gif");

       }

    for(int i=0;i<block.length;i++)

       {

         block[i]=new Block();

         block[i].设置关闭时的图标(new ImageIcon("关闭.gif"));

       }

    记忆测试板=newMemoryTestPane(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(event.getSource()==高级)

       { 

         给出级别测试(7,8,file高级);

         setBounds(100,100,360,300);

         this.validate();

         提示条.setText("高级:您需要连续找出"+8+"个相同图标的方块");

       }

   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();

  }

}

MemoryTestPane.java

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

importjava.util.LinkedList;

import java.io.*;

 

public classMemoryTestPane extends JPanel implements ActionListener

{

  RandomSetIcon 排列图标=null;

  Block block[];                        

  ImageIcon icon[];                     

  LinkedList listIocn=null,            

              listBlock=null;           

  int 行数=0,列数=0;

  int success=0;                        

 

  int time=0;                           

  javax.swing.Timer 计时器=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;

     行数=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;i<block.length;i++)

        {

          center.add(block[i]);

          block[i].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);

     计时器=newTimer(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;                                            

         }

        else

         {

           ImageIcontemp=(ImageIcon)listIocn.getLast();       

           if(temp==翻开时的图标&&!(listBlock.contains(方块))) 

              {

                success=success+1;                             

                listIocn.add(翻开时的图标);                    

                listBlock.add(方块);

                if(success==列数)

                  {

                    for(inti=0;i<block.length;i++)          

                     {

                       block[i].setEnabled(false);

                     }

                    for(intj=0;j<listBlock.size();j++)

                     {

                       Blockb=(Block)listBlock.get(j);

                       b.setDisabledIcon(b.获取翻开时的图标());

                     }

                    计时器.stop();

                    Record record=newRecord(gradeFile);

                    record.setTime(time);

                    record.setVisible(true);

                  }   

               }

           else if((temp!=翻开时的图标)&&(!(listBlock.contains(方块))))

               {

                listIocn.clear();                         

                listBlock.clear();

                listIocn.add(翻开时的图标);               

                listBlock.add(方块);

                success=1;                                

                for(inti=0;i<block.length;i++)           

                  {

                    if(方块!=block[i])

                       {

                         block[i].设置图标(block[i].获取关闭时的图标());

                       }

                 }               

               } 

         }

 

       if(计时器是否启动==false)

         {

          time=0;

          计时器.start();                                  

          计时器是否启动=true;                              

         }

    }

   if(e.getSource()==计时器)

    {

      time=time+1;

      显示时间.setText("您的用时:"+time+"秒");

    }

 

 }

}

People.java

publicclass People implements java.io.Serializable

{

  String name=null;

int time=0;                         

public People(String name,int t)

  {

this.name=name;

    time=t;

  }

publicint getTime()

  {

return time;

  }

public String getName()

  {

return name;

  }

}

RandomSeticon.java

importjavax.swing.*;

importjava.util.Vector;

class Point

{

  int x;

  Point(int i)

  {

    x=i;

  }

  public int getInt()

  {

    return x;

  }

}

public class  RandomSetIcon

 {

  public RandomSetIcon()

    {

    }

  public void 随机设置图标(Block[] block,ImageIcon icon[])

    {

      Vector vector=new Vector();                  

      int n=icon.length;

     for(int i=0;i<block.length;i++)               

       {

         int x=i%n;

         Point p=new Point(x);

         vector.addElement(p);

       }

     for(int i=0;i<block.length;i++)

       {

         intm=(int)(Math.random()*vector.size());

         Pointp=(Point)vector.elementAt(m);      

         int x=p.getInt();                        

         block[i].设置翻开时的图标(icon[x]);

         vector.remove(m);          

       }

    }

 }

Recorsd.java

import java.io.*;

importjava.util.*;

importjavax.swing.*;

importjava.awt.event.*;

import java.awt.*;

 

public classRecord 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);

    确定=newJButton("确定");

    取消=newJButton("取消");

    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 voidwindwoClosing(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()==确定)

     {

      try{

          FileInputStream in=newFileInputStream(gradeFile);

          ObjectInputStream object_in=newObjectInputStream(in);

          LinkedListlist=(LinkedList)object_in.readObject();

          object_in.close();

          in.close();

          People people=newPeople(yourName.getText(),time);

          list.add(people);

          FileOutputStream out=newFileOutputStream(gradeFile);

          ObjectOutputStream object_out=newObjectOutputStream(out);

          object_out.writeObject(list);

          out.close();

          object_out.close();

 

         }

     catch(Exception event)

         {

            System.out.println(event);

         }

 

       setVisible(false);

       dispose();

     }

    if(e.getSource()==取消)

     {

       setVisible(false);

       dispose();

     } 

  }

}

 

ShowRecord.java

import java.io.*;

importjava.util.*;

importjavax.swing.*;

importjava.awt.event.*;

import java.awt.*;

public classShowRecord extends JDialog implements ActionListener

{

  File gradeFile=null;

  JButton 确定,清除;

  JTextArea show=null;

 public ShowRecord(JFrame frame,File f)

  {

    super(frame,"记忆测试排行榜:"+f.toString());

    gradeFile=f;

    show=new JTextArea(6,4);

    确定=newJButton("显示排行榜");

    确定.addActionListener(this);

    清除=newJButton("清空排行榜");

    清除.addActionListener(this);

    Container con=getContentPane();

    con.add(newJScrollPane(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 voidwindwoClosing(WindowEvent e)

                            {

                             setVisible(false);

                              dispose();

                            }

                        }

                     );

   }

 

 public void actionPerformed(ActionEvent e)

  {

 

    if(e.getSource()==确定)

     {

       try

         {

           show.setText(null);

           FileInputStream in=newFileInputStream(gradeFile);

           ObjectInputStream object_in=newObjectInputStream(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());

            }

         }

        catch(Exception ee)

         {

         }

     }

   if(e.getSource()==清除)

     {

       try

         {

           FileInputStream in=newFileInputStream(gradeFile);

           ObjectInputStream object_in=newObjectInputStream(in);

           LinkedList 成绩=(LinkedList)object_in.readObject();

           object_in.close();

           成绩.clear();

           FileOutputStream out=newFileOutputStream(gradeFile);

           ObjectOutputStream object_out=newObjectOutputStream(out);

           object_out.writeObject(成绩);

           out.close();

           object_out.close();

           show.setText("排行榜被清空");

         }

        catch(Exception ee)

         {

         }

     }   

  }

 public void sort(LinkedList list)

  {

    for(int i=0;i<list.size()-1;i++)

      {

 

         for(int j=i+1;j<list.size();j++)

            {

            if(((People)list.get(i)).getTime()>((People)list.get(j)).getTime())

                {

                   Peopletemp=(People)list.get(j);

                  list.set(j,(People)list.get(i));

                   list.set(i,temp);

                }

            }

      }

  }

}

 

 

 

  • 5
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
第1章 记忆测试软件1.1. 设计内容1.2. 设计要求1.3. 总体设计1.4. 具体设计1.4.1. 运行效果与程序发布1.4.2. 主类Memory1.4.3. 方块 Block1.4.4. 记忆测试MemoryTestPane1.4.5. 显示成绩 ShowRecord1.4.6. 记录成绩 Record1.4.7. 随机排列图标 RandomSetIcon1.4.8. 测试者 People1.5. 课程设计作业第2章 计算器2.1. 设计内容2.2. 设计要求2.3. 总体设计2.4. 具体设计2.4.1. 运行效果与程序发布2.4.2. 主类 ComputerPad2.4.3. 数值按钮NumberButton2.4.4. 运算符号按钮OperationButton2.5. 课程设计作业第3章 HANNOI-塔3.1. 设计内容3.2. 设计要求3.3. 总体设计3.4. 具体设计3.4.1. 运行效果与程序发布3.4.2. 主类 Tower3.4.3. Hannoi-塔 HannoiTower3.4.4. 塔点 TowerPoint3.4.5. 盘子 Disk3.5. 课程设计作业第4章 JPEG图象生成器4.1. 设计内容4.2. 设计要求4.3. 总体设计4.4. 具体设计4.4.1. 运行效果与程序发布4.4.2. 主类 MakeJPEG.java4.5. 课程设计作业第5章 标准化考试系统 (单机版)5.1. 设计内容5.2. 设计要求5.3. 总体设计5.4. 具体设计5.4.1. 运行效果与程序发布5.4.2. 主类EnglishTest5.4.3. 考试区域TestArea5.4.4. 读取试题 ReadTestquestion5.5. 课程设计作业第6章 标准化考试系统 (C/S网络版)6.1. 设计内容6.2. 设计要求6.3. 总体设计6.4. 具体设计6.4.1. 运行效果与程序发布6.4.2. 客户端主类Client6.4.3. 客户端选择试题界面ChoiceFile6.4.4. 客户端考试界面ClientTestArea6.4.5. 服务器端主类Server6.4.6. 服务器端读取试题 ReadTestquestion6.5. 课程设计作业第7章 标准化考试系统 (B/S网络版)7.1. 设计内容7.2. 设计要求7.3. 总体设计7.4. 具体设计7.4.1. 运行效果与程序发布7.4.2. 客户端主类ClientBS7.4.3. 客户端选择试题界面ChoiceFile7.4.4. 客户端考试界面ClientTestArea7.4.5. 服务器端主类Server7.4.6. 服务器端读取试题 ReadTestquestion7.5. 课程设计作业第8章 日历记事本8.1. 设计内容8.2. 设计要求8.3. 总体设计8.4. 具体设计8.4.1. 运行效果与程序发布8.4.2. 主类CalendarPad8.4.3. 记事本NotePad8.4.4. 年Year8.4.5. 月Month8.5. 课程设计作业18.6. 课程设计作业2第9章 学籍管理系统9.1. 设计内容9.2. 设计要求9.3. 总体设计9.4. 具体设计9.4.1. 运行效果与程序发布9.4.2. 主类StudentManager9.4.3. 录入界面StudentSituation9.4.4. 查询界面Inquest9.4.5. 修改界面ModifySituation9.4.6. 删除界面Delete9.4.7. 学生对象Student9.5. 课程设计作业第10章 图书查询系统 (B/S网络版)10.1. 设计内容10.2. 设计要求10.3. 总体设计10.4. 具体设计10.4.1. 运行效果与程序发布10.4.2. 客户端主类DatabaseClient10.4.3. 服务器端主类DatabaseServer10.5. 课程设计作业第11章 中国象棋打谱软件11.1. 设计内容11.2. 设计要求11.3. 总体设计11.4. 具体设计11.4.1. 运行效果与程序发布11.4.2. 主类 Chess11.4.3. 对弈棋盘ChessBoard11.4.4. 棋子ChessPiece11.4.5. 棋点 ChessPoint11.4.6. 走棋法则Rule11.4.7. 步骤MoveStep11.4.8. 记录棋谱MakeChessManual11.4.9. 棋谱演示Demon11.5. 课程设计作业111.6. 课程设计作业2第12章 魔板游戏12.1. 设计内容12.2. 设计要求12.3. 总体设计12.4. 具体设计12.4.1. 运行效果与程序发布12.4.2. 主类PuzzleFrame12.4.3. 魔板PuzzlePad12.4.4. 魔板中的点SquarePoint12.5. 课程设计作业第13章 挖雷游戏13.1. 设计内容13.2. 设计要求13.3. 总体设计13.4. 具体设计13.4.1. 运行效果与程序发布13.4.2. 主类Game13.4.3. 方块 Block13.4.4. 雷区 MineSquare13.4.5. 雷标数目 FindAroundMineMarkNumber13.4.6. 雷标判断 DetermineMineMarkIsRightOrWrong13.4.7. 成片挖开区域 DetermineDigArea13.4.8. 无雷连通区 FindSafeArea13.4.9. 随机布雷 RandomSetMine13.4.10. 周围地雷个数FindAroundMineNumber13.4.11. 显示剩余雷数CountMine13.4.12. 计时器TimeCount13.4.13. 英雄榜录入对话框Record13.4.14. 显示英雄榜对话框ShowRecord13.4.15. 挖雷成功DecideWinner13.5. 课程设计作业第14章 网络聊天室 (B/S模式)14.1. 设计内容14.2. 设计要求14.3. 总体设计14.4. 具体设计14.4.1. 运行效果与程序发布14.4.2. 客户端主类ClientChat14.4.3. 客户端输入妮称界面InputNameTextField14.4.4. 客户端聊天界面ChatArea14.4.5. 服务器端主类ChatServer14.5. 课程设计作业第15章 局域网络广播系统15.1. 设计内容15.2. 设计要求15.3. 总体设计15.4. 具体设计15.4.1. 运行效果与程序发布15.4.2. 客户端主类Receive15.4.3. 服务器端主类BroadCastWord15.5. 课程设计作业

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值