收藏 分销(赏)

面向对象程序设计报告.doc

上传人:仙人****88 文档编号:9466933 上传时间:2025-03-27 格式:DOC 页数:31 大小:274KB
下载 相关 举报
面向对象程序设计报告.doc_第1页
第1页 / 共31页
面向对象程序设计报告.doc_第2页
第2页 / 共31页
点击查看更多>>
资源描述
计算机科学与技术学院 《面向对象程序设计》课程设计报告 (2015/2016学年 第二学期) 学生姓名: 刘丽敏 学生专业: 软件工程 学生班级: 142601 学生学号: 201426170114 指导教师: 秦怡 2016年  7月  5日 计算机科学与技术学院 课程设计任务书 课程设计名称 面向对象程序设计 课程设计题目 记忆测试系统 学生姓名 刘丽敏 专业班级 软件工程142601 学号 201426170114 课程设计任务内容 设计内容: 记忆测试系统通过回忆法测试记忆,分为初级、中级、高级三个级别,并通过记忆榜存储每个级别的成绩。 设计要求: 1. 单击“记忆测试”菜单可以选择初级/中级/高级,也可以查看初级记忆榜/中级记忆榜或高级记忆榜。 2. 选择级别后,将显示相应级别的测试区域。测试区域由若干个方块组成,每个方块都有一个图标,但该图标默认情况下不可见。用鼠标单击测试区中的任何一个方块,则计时器开始启动,同时该方块上的图标将显示出来。对于初级级别,用户必须用鼠标连续单击出6个图标相同的方块,也就是说,如果用户已经用鼠标连续单击出n(n<6)个图标相同的方块,单击另一个方块时,如果该方块的图标和上一个相同,那么该方块的图标和前n 次单击出的方块的图标仍然可见,否则,前n次单击出的方块的图标都变为不可见。 3. 连续单击出该级别所要求的若干个图彪相同的方块后,将显示保存成绩对话框,成绩按所用时间排序。用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。 指导教师:秦怡 时 间: 2016 年 7月 4 日 计算机科学与技术学院 课程设计成绩评审表 课程设计名称 面向对象程序设计 课程设计题目 记忆测试系统 学生姓名 刘丽敏 专业班级 软件142601 学号 201426170114      同组人 指导教师 秦怡 设计成绩 评价内容 签 字: 时 间: 年 月 日 目录 一.功能需求描述…………………………………………………1 二.设计描述………………………………………………………3 1 MemoryGame.java(主类)…………………………………………………3 2 MemoryTestArea.java ………………………………………………………3 3 Block.java ……………………………………………………………………4 4 Record.java …………………………………………………………………4 5 ShowRecordDialog.java ……………………………………………………4 6 People.java ……………………………………………………………………4 三.算法描述 ………………………………………………………4 1 MemoryGame类 ………………………………………………………………4 2 MemoryTestArea类 …………………………………………………………7 3 Block类 ……………………………………………………………………9 4 ShowRecordDialog类 ………………………………………………………10 5 People类 ……………………………………………………………………11 6 Record类 ………………………………………………………………………12 7 图像文件 ………………………………………………………………………13 四.开发过程描述……………………………………………………14 五.设计心得体会……………………………………………………27 一.功能需求描述 设计内容: 记忆测试系统通过回忆法测试记忆,分为初级、中级、高级三个级别,并通过记忆榜存储每个级别的成绩。 设计要求: 4. 单击“记忆测试”菜单可以选择初级/中级/高级,也可以查看初级记忆榜/中级记忆榜或高级记忆榜。 5. 选择级别后,将显示相应级别的测试区域。测试区域由若干个方块组成,每个方块都有一个图标,但该图标默认情况下不可见。用鼠标单击测试区中的任何一个方块,则计时器开始启动,同时该方块上的图标将显示出来。对于初级级别,用户必须用鼠标连续单击出6个图标相同的方块,也就是说,如果用户已经用鼠标连续单击出n(n<6)个图标相同的方块,单击另一个方块时,如果该方块的图标和上一个相同,那么该方块的图标和前n 次单击出的方块的图标仍然可见,否则,前n次单击出的方块的图标都变为不可见。 6. 连续单击出该级别所要求的若干个图彪相同的方块后,将显示保存成绩对话框,成绩按所用时间排序。用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。 运行效果图: 二.设计描述 在记忆测试系统中,可以编写6个java源文件:MemoryGame.java、MemoryTestArea.java、Block.java、ShowRecordDialog.java、Record.java和People.java。 记忆测试系统除了上述6个java源文件产生的类之外,还需要java系统提供一些重要的类。记忆测试系统所用到的一些重要的类以及之间的组合关系如图1.1所示。 以下是6个java源文件的总体设计。 1 MemoryGame.java(主类) MemoryGame类负责创建记忆测试系统的主窗口,该类含有main方法,记忆测试系统从该类开始执行。MemoryGame类有4种重要类型的对象,分别是String、File、MemoryTestArea和ShowRecordDialog对象。MemoryGame类创建的窗口对象以及其中的主要成员对象如图1.2所示。MemoryGame类的主要成员的作用将在后面的详细设计中阐述。 2 MemoryTestArea.java MemoryTestArea类是主类MemoryGame窗口中的一个JPanel容器,所创建的对象称为“测试区”,这个“测试区”被添加到MemoryGame窗口的中心。MemoryTestArea主要有6种类型的成员:ArrayList<Block>、String、Record、Timer、File和Thread对象。MemoryTestArea类的主要成员的作用将在后面的详细设计中概述。 3 Block.java Block类是JButton的子类,负责为MemoryTestArea类中的Array<Block>数组表提供Block对象。 4 Record.java Record类是javax.swing包中的JDialog对话框的子类,当用户成功单击出相应级别所要求的图标相同的方块后,Record创建的对象负责保存用用户的名字和成绩到相应的级别文件中。 5 ShowRecordDialog.java ShowRecordDialog类是javax.swing包中JDialog对话框的子类,当用户单击“查看排行榜”时,ShowRecordDialog创建的对象负责显示用户的成绩。 6 People.java People对象封装用户的名字和成绩,以便ShowRecordDialog对象可以按成绩的高低排序用户。 三.算法描述 1 MemoryGame类 UML图 MemoryGame类是javax.swing包中JFrame的一个子类,并实现了ActionListener接口。该类的主要成员变量和方法如下图: JFrame ActionListener MemoryGame bar:JMenuBar imageName:String[] menuGrade,menuResult,menuIcon:JMenu memoryArea:MemoryArea oneGradeItem,twoGradeItem,threeGradeItem:JMenuItem showDialog:ShowRecordDialog oneGradeResult,twoGradeResult,threeGradeResult:JMenuItem m,n:int carImageIcon,animalImageIcon:JMenuItem fileOneGrade,fileTwoGrade,fileThreeGrade,gradeFile:File MemoryGame():无类型 actionPerformed(ActionEvent):void mian(String[]):void MemoryGame类的UML图 以下是UML图中有关数据和方法的详细说明。 1) 成员变量 bar是JMenuBar类创建的菜单条,可以向bar中添加菜单。 menuGrade、menuResult、menuIcon是JMenu类创建的三个菜单,这三个菜单的名称分别是“选择级别”、“查看排行榜”和“选择图标”。 oneGradeItem、twoGradeItem和threeGradeIte是JMenuItem类创建的三个菜单项,被添加到menuGrade菜单中。这三个菜单项的名称分别是“初级”、“中级”和“高级”。 oneGradeResult、twoGradeResult和threeGradeResult是JMenuItem类创建的三个菜单项,被添加到menuResult菜单中。这三个菜单项的名称分别是“初级排行榜”、“中级排行榜”和“高级排行榜”。 carImageIcon、animalImageIcon、fruitImageIcon和buildingImageIcon是JMenuItem类创建的四个菜单项,被添加到menuIcon菜单中。这四个菜单项的名称分别是“汽车图标”、“动物图标”“水果图标”、“建筑图标”。 fileOneGradeResult、fileTwoGradeResult、fileThreeGradeResult和gardeFile是Fiel类创建的四个文件对象。fileOneGrade、fileTwoGradehe和fileThreeGrade三个文件对象所引用的文件分别是“初级记忆排行榜.txt”、“中级记忆排行榜.txt”和“高级记忆排行榜.txt”,分别用来写入三个级别的成绩。gradeFile可以是fileOneGrade、fileTwoGrade和fileThreeGarde中的某一个。 imageName是String类型的数组,每个单元是一个图像文件的名字。 memoryArea是测试区对象,由MemoryArea类负责创建。 showDialog是负责显示成绩对话框,由ShowRecordDialog类负责创建。 m和n是int型数据,其值可以确定相应级数中测试区中方块的数量,例如,对于中级水平,m=6,n=7,测试区一共有42个方块。 2)方法 actionPerformed(ActionEvent)方法是MemoryGame类来实现的ActionListener接口中的方法,负责执行菜单项发出的有关命令。用户选择菜单中的菜单项可触发ActionEvent事件,导致actionPerformed(ActionEvent)方法执行相应的操作。 MemoryGame()是构造方法,的负责完成窗口的初始化。 main(String[])方法是软件运行的入口方法。 2 MemoryTestArea类 UML图 MemoryTestArea类是javax.swing包中JPanel容器的子类,实现了ActionListener和Runnable接口,所创建的对象:memoryArea是MemoryGame类的最重要的成员之一,作为一个容器添加到MemoryGame窗口的中心。标明MemoryTestGame类的主要成员变量、方法以及和MemoryGame类之间组合关系的UML图如下图所示。 JPanel ActionListener Runnable MemoryGame MemoryTestArea memoryArea: MemoryTestArea row,col,usedTime,success:int hintTread:Thread gradeFile:File hintButton:JButton allBlockList:ArrayList<Block> showUsedTime:JTextFiled imageFileName:String[] hintMessage:JTextFiled openIconList:LinkedList<ImagaIcon> timer:Timer openBlockList:LinkedList<Block> record:Record MemoryTestArea():无类型 initBlock(int,int,String[],File):void setImageName(String[]):void actionPerformed(ActionEvent):void run():void 以下是UML图中有关数据和方法的详细说明。 1)成员变量 row和col的值确定测试区中方块的数量。MemoryTestArea类创建的对象memoryArea是MemoryGame中的成员,memoryArea对象通过调用initBlock(int,int,String[],File)方法将MemoryGame类中的m和n值传递给row和col。 usedTime是用户的用时,单位是秒,iconNum是用户鼠标单击的次数,单位是次。 Success的值是用户找到的具有相同的图标方块的个数。 gradeFile是级别文件,memoryArea对象通过调用initBlock(int,int,String[],File)方法见MemoryGame类中的gradeFile的引用传递给memoryArea对象中的gradeFile。 数组表allBlockList单元的个数是row和col的乘积,它的每个单元存放着一个Block对象。memoryArea对象在调用intBlock(int,int,String[],File)方法时完成对allBlockList单元初始化,即创建单元中的Block对象。 字符串数组imageFileName中的每个单元是一幅图像文件的文字。memoryArea对象通过调用setImageName(String[])方法将MemoryGame中存放图像文件名字的imageName数据的引用传递给imageFileName。 链表openIconList用来存放用户找到的图标相同的方块上的图标。 链表openBlockList用来存放用户找到的图标相同的方块。 hintThread是用Thread类创建的线程对象,用来提示测试区中的Block上的图标,提示方式是将测试区中的各个Block上图标持续显示1200毫秒。 hintButton是注册了ActionEvent事件的监视器,当单击它时,启动hintThread线程。 showUsedTime显示用户的用时,即显示usedTime的值,showIconNum是显示用户单击鼠标的次数,即显示showIconNum的值。 record负责提供保存成绩的界面,是一个对话框,默认不见。当用户寻找出级别所要求的相同的图标方块的数目后,该对话框可见,用户可以在该对话框中输入姓名,并保存所输入的姓名和usedTime的值到gradeFile指定的级别文件中。 2) 方法 MemoryTestArea()是构造方法,创建memoryArea对象时需使用该构造方法。 initBlock(int,int,String[],File)方法。memoryArea对象调用该方法将参数的值传递给row、col、imageFileName和gradeFile,并依据这些值设置allBlockList数组表的大小,然后创建allBlockList的单元中的Block对象,并设置Block对象上的图标。 setImageName(String[])方法。memoryArea对象调用该方法可以将MemoryGame中存放图像文件名字的imageName数组的引用传递给imageFileName。当用户单击MemoryGame主类窗口的carImageIcon和animalImageIcon菜单项时,memoryArea对象将调用该方法把存放图像文件名字的imageName数组的引用传递给imageFileName。 actionPerformed(ActionEvent)方法。该方法是MemoryArea类实现的ActionListener接口中的方法。memoryArea中的每个Block对象注册了ActionEvent事件监视器,当用户单击memoryArea中的某个Block对象时,actionPerformed(ActionEvent)方法将被调用执行,所执行的主要操作是:如果该Block对象未显示图标,并且该Block对象设置的图标和openIconList的存放的图标相同,就将该图标添加到链表openIconList中同时将该Block对象上图标显示出来,并将success的值增1;如果该Block对象未显示图标,并且该Block对象设置的图标和OpenIconList的中存放的图标不相同,就将openIconList清空,然后再将该图标添加到链表openIconList中,同时将该Block对象上图标显示出来,并将success的值设置成1。当用户单击hintButton按钮时,actionPerformed(ActionEvent)方法将被调用执行,执行的主要操作是启动hintThread线程。 run()方法。该方法是MemoryArea类实现Runnable接口中的方法,启动hintThread线程后,该方法将执行,其主要操作是将测试区中的未显示图标的各个Block对象上的图标持续显示1200毫秒。 3 Block类 (1)效果图 Block创建的方块效果下如图所示。 (a) 图标不可见时的方块 (b) 图标可见时的方块 Block创建的方块效果图 (2)UML图 Block类是javax.swing包中JButton的子类,所创建的对象作为MemoryTestArea测试区中的方法,被添加到测试区的allBlockList数组表中。标明Block类的主要成员变量、方法以及和MemoryTestArea类之间的关系的UML图如下图所示 以下是UML图中有关数据和方法的详细说明。 1) 成员变量 openStateIcon是方块上的图标。 2) 方法 Block对象调用setOpenStateIcon(ImageIcon)方法可以设置它上面的图标。 Block对象调用getOpenStateIcon()方法可以获得它上面的图标。 JButton allBlockList:ArrayList<Block> MemoryTestArea openStateIcon:ImageIcon setOpenStateIcon(ImageIcon):void getOpenStateIcon():ImageIcon Block 1.3.4 ShowRecordDialog类 UML图 ShowRecordDialog类是javax.swing包中JDialog的子类,并实现了ActionListener接口,该类创建的对象showDialog是MemoryGame窗口的成员之一。当用户选择窗口上的“查看排行榜”菜单中的菜单项,该对话框可见,并显示相应级别文件中存储的成绩。标明ShowRecordDialog类的主要成员变量、方法以及和MemoryGame类之间组合关系的UML图如下图所示 ActionListener JDialog MemoryGame ShowRecordDialog showDialog:ShowRecordDialog gradeFile:File clear:JButton showArea:JTextArea treeSet:TreeSet<People> ShowRecordDialog():无类型 setGradeFile(File):void showRecord():void actionPerformed(ActionEvent):void ShowRecordDialoglei类的UML图 以下是UML图中有关数据和方法的详细说明。 1)成员变量 gradeFile是对话框要读取的文件,该文件存储成绩。 clear是注册了ActionEvent事件的按钮。 showArea文本区显示对话框从gradeFile文件中读出的成绩。 treeSet负责将成绩按高低排序。 2)方法 ShowRecordDialog()是构造方法,负责创新showDialog对象。 setGradeFile(File)方法。ShowRecordDialog类创建的ShowrecordDialog对话框是主类MemoryGame窗口中的一个成员。当用户选择窗口上的“查看排行榜”菜单中的菜单项时,ShowrecordDialog对话框调用setGradeFile(File)方法将相应的级别文件传递给gradeFile。 showRecord()方法。ShowrecordDialog对话框调用该方法读取gradeFile文件中的成绩,为了将成绩按高低顺序显示在showArea文本区中,showRecord()方法跟读取的名字和该名字的对应成绩,创建一个People对象,并将该People对象存放在treeSet树集中。 actionPerformed(ActionEvent)是ActionListener接口中的方法,clear注册了ActionEvent事件,当用户单击clear按钮时,actionPerformed(ActionEvent)方法被调用执行,所执行的操作是清除gradeFile文件中的内容。 5 People类 UML图 People对象中的数据由ShowRecordDialog对话框从gradeFile文件中读取的用户姓名和成绩所构成。ShowRecordDialog对话框将People对象作为其treeSet树集上的节点,以便按着成绩高低顺序排列People对象。标明People类的主要成员变量、方法以及和ShowrecordDialog类之间关系的UML图如下图 treeSet:TreeSet<People> ShowRecordDialog People name:String time:int iconNum:int getTime():int getName():String getIconNum():int compareTo(Object):int People类的UML图 以下是UML图中有关数据和方法的详细说明。 1) 成员变量 Name是用户的名字。 Time是用户的用时。 IconNum是用户鼠标单击次数。 2) 方法 getTime()方法返回time。 getName()方法返回name。 getIconNum()方法返回iconNum。 compareTo(Object)是Compareable接口中的方法,其操作是确定People对象的大小关系。 6 Record类 UML图 Record是javax.swing包中JDialog的子类,并实现了ActionListener接口,该类创建的对象record是MemoryTestArea类的成员之一。当用户成功单击出相应级别所要求的图标相同的方块后,程序弹出Record对话框,用户使用对话框提供的界面将成绩保存到相应的级别文件中。标明了Record类的主要成员变量、方法以及和MemoryTestArea类之间关系的UML图如下图所示。 record:Record time:int enter,cancel:JButton yourName:JTextFiled gradeFile:File lable:JLable Record():无类型 setGradeFile:void setTime(int):void actionPerformed(ActionEvent):void ActionListener JDialog MemoryTestAea Record Record类的UML图 以下是UML图中有关数据和方法的详细说明。 1) 成员变量 time是用户的用时。 yourName是用户用来输入名字和文本框。 enter和cancel是按钮对象,用户单击enter按钮可以保存成绩,单击cancel可以放弃保存成绩。 gradeFile是级别文件。 2) 方法 Record()是构造方法,负责创建record对象。 setGradeFile(File)方法。Record类创建的Record对话框时测试区MemoryTestArea中一个成员。当用户成功单击出相应级别所要求的图标相同的方块后,测试区弹出Record对话框,Record对话框将调用setGradeFile(File)方法将测试区中的级别文件传递给Record对话框gradeFile。 setTime(int)方法。当用户成功单击出相应的级别所要求的图标相同的方块后,测试区弹出对话框,Record对话框将调用setTime(int)方法将测试区记录的用户用时传递给Record对话框中的time。 actionPerformed(ActionEvent)是ActionListener接口中的方法,enter和cancel按钮注册了ActionEvent事件,当用户单击enter时,actionPerformed(ActionEvent)方法被调用执行,其操作是将用户在文本框yourName中输入的名字以及time的值保存到gradeFiel文件中,然后关闭当前对话框;当用户单击cancel按钮时,actionPerformed(ActionEvent)方法被调用执行,其操作是关闭当前对话框。 7 图像文件 创建图标对象需使用如下四组图像文件: (1) car0.jpg、car1.jpg、car2.jpg、car3.jpg、car4.jpg、car5.jpg、car6.jpg、car7.jpg、car8.jpg; (2) animal0.jpg、animal1.jpg、animal2.jpg、animal3.jpg、animal4.jpg、animal5.jpg、animal6.jpg、animal7.jpg、animal8.jpg; (3) fruit0.jpg、 fruit1.jpg、fruit2.jpg、fruit3.jpg、fruit4.jpg、fruit5.jpg、fruit6.jpg、fruit7.jpg、fruit8.jpg; (4) building0.jpg、building1.jpg、building2.jpg、building3.jpg、building4.jpg、building5.jpg、building6.jpg、building7.jpg、building8.jpg。 四.开发过程描述 源代码 (MemoryGame.java) import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.LinkedList; public class MemoryGame extends JFrame implements ActionListener { JMenuBar bar; // 创建 一个菜单栏(条) JMenu menuGrade,menuResult,menuIcon; // 创建三个菜单 JMenuItem oneGradeItem,twoGradeItem,threeGradeItem; // 创建菜单项 JMenuItem oneGradeResult,twoGradeResult,threeGradeResult; JMenuItem carImageIcon,animalImageIcon,fruitImageIcon,buildingImageIcon; File fileOneGrade,fileTwoGrade,fileThreeGrade,gradeFile; // 创建四个File类的对象,分别引用文件“初级记忆排行榜.txt”等!!! String imageName[]; // 用于图片名称数组!!! MemoryTestArea memoryArea; ShowRecordDialog showDialog = null; int m=5,n=6; final int imageNumber = 7; MemoryGame() { fileOneGrade = new File("初级记忆排行榜.txt"); // 创建txt文本文件(对象) fileTwoGrade = new File("中级记忆排行旁.txt"); fileThreeGrade = new File("高记忆排行榜.txt"); bar = new JMenuBar(); menuGrade = new JMenu("选择级别"); oneGradeItem = new JMenuItem("初级"); twoGradeItem = new JMenuItem("中级"); threeGradeItem = new JMenuItem("高级"); menuGrade.add(oneGradeItem); menuGrade.add(twoGradeItem); menuGrade.add(threeGradeItem); menuResult = new JMenu("查看排行榜"); oneGradeResult = new JMenuItem("初级排行榜"); twoGradeResult = new JMenuItem("中级排行榜"); threeGradeResult = new JMenuItem("高级排行榜"); menuResult.add(oneGradeResult); menuResult.add(twoGradeResult); menuResult.add(threeGradeResult); menuIcon = new JMenu("选择图标"); carImageIcon = new JMenuItem("汽车图标"); carImageIcon.addActionListener(this); animalImageIcon = new JMenuItem("动物图标"); animalImageIcon.addActionListener(this); fruitImageIcon = new JMenuItem("水果图标"); // 水果、建筑图标实例化!!! fruitImageIcon.addActionListener(this); buildingImageIcon = new JMenuItem("建筑图标"); buildingImageIcon.addActionListener(this); menuIcon.add(carImageIcon); menuIcon.add(animalImageIcon); menuIcon.add(fruitImageIcon); menuIcon.add(buildingImageIcon); bar.add(menuGrade); bar.add(menuResult); bar.add(menuIcon); setJMenuBar(bar); oneGradeItem.addActionListener(this); twoGradeItem.addActionListener(this); threeGradeItem.addActionListener(this); oneGradeResult.addActionListener(this); twoGradeResult.addActionListener(this); threeGradeResult.addActio
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服