java课程设计记忆系统报告.docx
- 文档编号:8848317
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:42
- 大小:341.28KB
java课程设计记忆系统报告.docx
《java课程设计记忆系统报告.docx》由会员分享,可在线阅读,更多相关《java课程设计记忆系统报告.docx(42页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 记忆 系统 报告