java课程设计记忆系统报告.docx

上传人:b****6 文档编号:8848317 上传时间:2023-02-02 格式:DOCX 页数:42 大小:341.28KB
下载 相关 举报
java课程设计记忆系统报告.docx_第1页
第1页 / 共42页
java课程设计记忆系统报告.docx_第2页
第2页 / 共42页
java课程设计记忆系统报告.docx_第3页
第3页 / 共42页
java课程设计记忆系统报告.docx_第4页
第4页 / 共42页
java课程设计记忆系统报告.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

java课程设计记忆系统报告.docx

《java课程设计记忆系统报告.docx》由会员分享,可在线阅读,更多相关《java课程设计记忆系统报告.docx(42页珍藏版)》请在冰豆网上搜索。

java课程设计记忆系统报告.docx

java课程设计记忆系统报告

 

软件学院

课程设计报告书

 

课程名称面向对象程序设计

设计题目记忆测试系统

专业班级软件工程(财升本)11-1班

学号1120970108

姓名李春晓

指导教师徐娇月

 

2011年12月

成绩评定34

1设计时间:

2011年12月19~2011年12月25日

2设计目的:

此次设计课程的目的在于加深对Java基础理论和基础知识的理解,而进行的一次全面的综合训练。

掌握使用java进行软件设计的基本方法,提高运用java(MyEclipse软件)解决实际问题的能力,课程设计是对所学面向对象课程的小结,是提高学对所学知识综合应用能力的一种方式,是集中实践性环节之一。

从而进一步掌握Java语言程序设计方法,提高分析问题、解决问题的综合应用能力。

3设计任务

记忆测试系统通过回忆法测试记忆,分为初级、中级、高级、和自定义四个级别,并通过记忆榜存储每个级别的成绩。

4设计内容

4.1需求分析

4.1.1设计目标

(1)菜单栏包括“选择级别”、“查看排行榜”、“帮助”三项。

其中“选择级别”,包括“初级”、“中级”、“高级”、“自定义级别”,可以分别开始初级中级高级和自定义测试。

“查看排行榜”包括“初级排行榜”、“中级排行榜”、“高级排行榜”,可以打开查看相应级别排行榜对话框;“帮助”又包括“新手入门”,显示系统使用方式。

(2)测试面板可以装载按钮阵列,用来显示图片,并且记录统计图片信息,如果相同图片数量达到要求时,弹出记录用户信息对话框,记录用户信息。

(3)还有实时显示“你所用的时间:

”和提示相应级别测试信息

4.1.2主体功能

1.单击“选择级别”菜单可以选择初级/中级/高级/自定义级别,单击“查看排行榜”菜,可以查看初级记忆榜、中级记忆榜或高级记忆榜。

单击“帮助”菜单可以显示帮助信息。

2.选择级别后,将显示相应级别的测试区域。

测试区域由若干个方块组成,每个方块上都有一个图标,但该图标默认情况下不可见。

用鼠标单击测试区中的任何一个方块,则计时器开始启动,同时该方块上的图标将显示出来。

对于初级级别,用户必须用鼠标连续单击6个图标相同的方块,也就是说,如果用户已经用鼠标连续单击出n(n<6)个图标相同的方块,单击另一个方块时,如果该方块的图标和上一个相同,那么该方块的图标和前n次单击出的方块的图标仍然可见,否则,前n次单击出的方块的图标都变为不可见。

3.连续单击出该级别所要求的若干个图标形同的方块后,将显示保存成绩对话框,成绩按所用时间排序。

用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。

4.1.3开发环境

MyEclipse8.6软件

4.2系统设计

4.2.1系统的功能模块划分

记忆测试系统共包含8个java源文件和若干个图像文件(用户可以增加)。

类之间的主要关系如下图所示。

 

类之间的关系

(1).java文件

Memory.java

该java文件定义的类负责创建记忆测试系统的“主窗口”。

该文件含有main方法,程序从该类开始执行。

用户可以通过主窗口菜单选择级别,然后窗口内显示相应的MemoryTestPane对象。

主窗口默认的MemoryTestPane对象是初级。

Memory.Java

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

importjava.io.*;

importjava.util.LinkedList;

publicclassMemoryextendsJFrameimplementsActionListener//主类,实现ActionListener接口

{

JMenuBarbar;

JMenufileMenu;

JMenuhelpMenu;

JMenugradeMenu;

JMenuItem初级,中级,高级,初级排行榜,中级排行榜,高级排行榜,关于;

JMenuItem自定义级别;

Blockblock[];

ImageIconicon[];

MemoryTestPane记忆测试板=null;

Filefile初级=newFile("初级记忆排行榜.txt"),

file中级=newFile("中级记忆排行榜.txt"),

file高级=newFile("高级记忆排行榜.txt");

LinkedList成绩表=null;

ShowRecord显示成绩表对话框=null;

ShowHelp显示帮助文档=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+".png");

}

for(inti=0;i

block[i]=newBlock();

block[i].设置关闭时的图标(newImageIcon("关闭.png"));

}

bar=newJMenuBar();

fileMenu=newJMenu("查看排行榜");

helpMenu=newJMenu("帮助");

gradeMenu=newJMenu("选择级别");

关于=newJMenuItem("新手入门");

初级=newJMenuItem("初级");

中级=newJMenuItem("中级");

高级=newJMenuItem("高级");

自定义级别=newJMenuItem("自定义级别");

helpMenu.setMnemonic('H');//键盘助记符号

fileMenu.setMnemonic('F');

gradeMenu.setMnemonic('X');

关于.setMnemonic('C');

初级.setMnemonic('B');

中级.setMnemonic('M');

高级.setMnemonic('A');

自定义级别.setMnemonic('D');

高级排行榜=newJMenuItem("高级排行榜");

中级排行榜=newJMenuItem("中级排行榜");

初级排行榜=newJMenuItem("初级排行榜");

初级排行榜.setMnemonic('O');

中级排行榜.setMnemonic('N');

高级排行榜.setMnemonic('L');

gradeMenu.add(初级);//将单个菜单项添加到菜单组中

gradeMenu.addSeparator();//分隔线

gradeMenu.add(中级);

gradeMenu.addSeparator();//分隔线

gradeMenu.add(高级);

gradeMenu.addSeparator();//分隔线

gradeMenu.add(自定义级别);

helpMenu.add(关于);

fileMenu.add(初级排行榜);

fileMenu.addSeparator();//分隔线

fileMenu.add(中级排行榜);

fileMenu.addSeparator();//分隔线

fileMenu.add(高级排行榜);

bar.add(gradeMenu);

bar.add(fileMenu);

bar.add(helpMenu);

setJMenuBar(bar);

关于.addActionListener(this);//对每个菜单项注册监听器,并且大量使用了动作监听器(ActionListener)。

初级.addActionListener(this);//ActionListener只监听一个事件,

中级.addActionListener(this);//这个事件在其相关组件上产生了动作时被触发,

高级.addActionListener(this);//因此叫作动作事件(ActionEvent)。

自定义级别.addActionListener(this);//ActionListener只有一个方法需要实现,

初级排行榜.addActionListener(this);//就是actionPerformed(ActionEventae)。

中级排行榜.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,350,350);

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+".png");

}

for(inti=0;i

block[i]=newBlock();

block[i].设置关闭时的图标(newImageIcon("关闭.png"));

}

记忆测试板=newMemoryTestPane(block,icon,m,n,gradeFile);

con.removeAll();

con.add(记忆测试板,BorderLayout.CENTER);

con.add(提示条,BorderLayout.SOUTH);

con.validate();

this.validate();

}

publicvoid给出级别测试(int宽,int高)//为自定义级别而写重写了publicvoid给出级别测试(int宽,int高,Filef)方法

{//由于不需要排行榜文件所以把第三个File类型参数除去

m=宽;

n=高;

图标个数=m;

block=newBlock[m*n];

icon=newImageIcon[图标个数];

for(inti=0;i

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

}

for(inti=0;i

block[i]=newBlock();

block[i].设置关闭时的图标(newImageIcon("关闭.png"));

}

记忆测试板=newMemoryTestPane(block,icon,m,n);

con.removeAll();

con.add(记忆测试板,BorderLayout.CENTER);

con.add(提示条,BorderLayout.SOUTH);

con.validate();

this.validate();

}

publicvoidactionPerformed(ActionEventevent){

if(event.getSource()==初级){

给出级别测试(5,6,file初级);

setBounds(100,100,350,350);

this.validate();

提示条.setText("初级:

您需要连续找出"+6+"个相同图标的方块");

}

if(event.getSource()==中级){

给出级别测试(6,7,file中级);

setBounds(100,100,390,390);

this.validate();

提示条.setText("中级:

您需要连续找出"+7+"个相同图标的方块");

}

if(event.getSource()==高级){

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

setBounds(100,100,440,460);

this.validate();

提示条.setText("高级:

您需要连续找出"+8+"个相同图标的方块");

}

if(event.getSource()==自定义级别){

try{

intx,y;

Stringinput=JOptionPane.showInputDialog("请输入矩形的高(小于等于14):

");

intk=Integer.parseInt(input);

x=(k-1)*20+350;

Stringwidth=JOptionPane.showInputDialog("请输入连续找出相同图标的个数:

");

intw=Integer.parseInt(width);

y=(w-1)*20+350;

给出级别测试(k,w);

setBounds(100,100,x,y);

this.validate();

提示条.setText("初级:

您需要连续找出"+w+"个相同图标的方块");

}catch(NumberFormatExceptione){

JOptionPane.showMessageDialog(null,"你输入的格式不对","警告",JOptionPane.ERROR_MESSAGE);

}

}

if(event.getSource()==高级排行榜){

显示成绩表对话框=newShowRecord(this,file高级);

显示成绩表对话框.setVisible(true);

}

if(event.getSource()==中级排行榜){

显示成绩表对话框=newShowRecord(this,file中级);

显示成绩表对话框.setVisible(true);

}

if(event.getSource()==初级排行榜){

显示成绩表对话框=newShowRecord(this,file初级);

显示成绩表对话框.setVisible(true);

}

if(event.getSource()==关于){

显示帮助文档=newShowHelp();

显示帮助文档.setVisible(true);

}

}

publicstaticvoidmain(Stringargs[]){

newMemory();

}

}

Block.java

该文件生成的类负责创建测试区中的Block对象。

使用鼠标左键单击Block对象,可以显示该对象上的图标。

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

}

publicvoidactionPerformed(ActionEvente){

this.setIcon(翻开时的图标);

}

}

MemoryTestPane.java

该文件生成的类负责为主类Memory创建MemoryTestPane对象,主类将级别、Block对象、图标对象等传递给MemoryTestPane。

MemoryTestPane.java

importjavax.swing.*;

importjava.awt.event.*;

importjava.awt.*;

importjava.util.LinkedList;

importjava.io.*;

publicclassMemoryTestPaneextendsJPanelimplementsActionListener{

RandomSetIcon排列图标=null;

Blockblock[];

ImageIconicon[];

LinkedListlistIocn=null,

listBlock=null;

int行数=0,列数=0;

intsuccess=0;

inttime=0;

javax.swing.Timer计时器=null;

JTextField显示时间=null;

FilegradeFile=null;

boolean计时器是否启动=false;

publicMemoryTestPane(Block[]block,ImageIcon[]icon,intm,intn,Filef){

排列图标=newRandomSetIcon();

this.block=block;

this.icon=icon;

行数=m;

列数=n;

gradeFile=f;

listIocn=newLinkedList();

listBlock=newLinkedList();

setLayout(newBorderLayout());

JPanelcenter=newJPanel();

center.setLayout(newGridLayout(行数,列数));

for(inti=0;i

center.add(block[i]);

block[i].addActionListener(this);

}

JPanelsouth=newJPanel();

显示时间=newJTextField(12);

显示时间.setEditable(false);

显示时间.setForeground(Color.red);

south.add(显示时间);

add(center,BorderLayout.CENTER);

add(south,Bor

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1