课程设计报告 题目:《记忆测试系统》课程设计"/>
《面向对象程序设计》课程设计报告 题目:《记忆测试系统》课程设计
《面向对象程序设计》课程设计报告
题目:《记忆测试系统》课程设计
学院:信息工程学院
姓名:
学号:
专业:计算机科学与技术
班级:
指导教师:
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);
}
}
}
}
}
更多推荐
《面向对象程序设计》课程设计报告 题目:《记忆测试系统》课程设计
发布评论