hannoi塔java课程设计

上传人:第*** 文档编号:61572964 上传时间:2018-12-04 格式:DOC 页数:23 大小:606.30KB
返回 下载 相关 举报
hannoi塔java课程设计_第1页
第1页 / 共23页
hannoi塔java课程设计_第2页
第2页 / 共23页
hannoi塔java课程设计_第3页
第3页 / 共23页
hannoi塔java课程设计_第4页
第4页 / 共23页
hannoi塔java课程设计_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《hannoi塔java课程设计》由会员分享,可在线阅读,更多相关《hannoi塔java课程设计(23页珍藏版)》请在金锄头文库上搜索。

1、Java程序设计课程设计报告(2012)文 献 综 述题 目: Hannoi塔游戏和其java 具体实现过程 学 院 名 称: 电子与信息工程学院 专 业: 计算机科学与技术 班 级: 计科12-3 姓 名: 12401010323 定稿日期: 2015 年 1 月 10 日11 概 述 1.1 课程设计目的按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程

2、序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。1.2 课程设计内容我设计的Hannoi塔,除了要编写的6个java文件所给出的类外,还需要java系统提供的一些重要的类,如JButton,JCheckBox等。汉诺塔中有三个座,名字分别为A,B,C。刚开始的时候A塔上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上。用户可以用鼠标选中盘子,然后通过拖动鼠标来移动盘子。释放鼠标来放置该盘子。程序要求用户在移动盘子的过程中

3、,不允许吧大盘子放置在小盘子的上面,用户最终要完成的是把A座上的全部盘子移动到B座或C座上2 系统需求分析2.1 系统目标可以正常运行程序,并且按照设计目的预想的完成具体功能。2.2 主体功能1) 设计GUI界面的Hannoi塔。汉诺塔中有三个座,名字分别为A,B,C。初始状态时A塔上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上。用户可以用鼠标选中盘子,然后通过拖动鼠标来移动盘子。释放鼠标来放置该盘子。2) 程序要求用户在移动盘子的过程中,不允许吧大盘子放置在小盘子的上面,用户最终要完成的是把A座上的全部盘子移动到B座或C座上。3) 用户可以通过Hannoi塔界面的提

4、供的改变盘子数目功能来改变盘子的数目,同时可以改变盘子的大小以及改变盘子和界面的背景颜色,而且还可以选择控制背景音乐的播放。4) 用户可以通过单击Hannoi塔界面上提供的按钮,让程序自动完成把A座上的盘子全部移动到C座上。5) 用户在移动盘子的过程中,可以随时单击Hannoi塔界面上提供的按钮,重新开始。2.3 开发环境JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。3 系统概要设计3.1 系统的功能模块划分1) HannoiWindow.java(主类)HannoiWindow类负责创建Hannoi塔的主窗口,该类含有main方法,Hannoi塔从该类开始执行

5、。HannoiWindow类的成员变量中有五种重要类型的对象、一个int基本型数据和一个char型数组。五种类型的对象分别是:Tower、JmenuBar、JmenuItem和Jbutton对象。HannoiWindow类的主要成员的作用将在后面的详细设计中阐述。2) Tower.javaTower类是javax.swing包中Jpanel容器的子类,创建的容器被添加到HannoiWindow窗口的中心。Tower类的成员变量中有四种重要类型的对象、一个int基本型数据和一个char型数组。四种类型的对象分别是:Disc、TowerPoint、HandleMouse、和AutoMoveDisc

6、对象。Tower类的主要成员的作用将在后面的详细设计中阐述。3) Disc.javaDisc类是Jbutton的一个子类,创建的对象时Tower容器中的一个按钮,用来表示Tower中的“盘子”。4) TowerPoint.javaTowerPoint类负责在Tower中创建表示位置的塔点对象。5) HandleMouse.javaHandleMouse类创建的对象负责处理鼠标事件。6) AutoMoveDisc.javaAutoMoveDisc类创建的对象负责自动移动盘子从一个座到另一个座。4系统详细设计4.1 总体功能设计在设计hannoi塔时,需编写6个java源文件:HannoiWind

7、ow.java、Tower.java、TowerPoint.java、Disc.java、HandleMouse.java和AutoMoveDisc.java。Hannoi塔除了要编写的6个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如JMenuBar、JMenu、JMenuItem和JButton。Hannoi塔所用到的一些重要的类以及之间的组合关系。HannoiWindowTowerJButtonJMenuJMenuBarJMenuItemHandleMouseAutoMoveDiscTowerPointDisc图4.1 类之间的组合关系4.2 HannoiWindo

8、w类图4.2 HannoiWindow类的UML图4.3 Tower类1、成员变量(1)amountOfDisc是int型数据。amountOfDisc值用来确定tower对象中盘子的数目,即确定tower对象中Disc类型数组disc的长度。(2)disc是Disc型数组,该数组的长度由amountOfDisc值来确定。Disc数组的每个单元中存放一个Disc对象,依次表明tower对象中有怎样多的盘子。(3)towerName是char型数组,长度为3,其三个单元的默认取值依次是A、B和C。towerName是数组的单元的值用来确定tower中三个座的名字。(4)maxDiscWidth和

9、minDiscWidth的值分别用来确定最大盘子的宽度和最小盘子的宽度,discHeight的值确定每个盘子的高度。(5)pointA、pointB和pointC都是TowerPoint型数组,三个数组的长度与盘子数目相同,即都是amountOfDisc。pointA、pointB和pointC单元都是TowerPoint创建对象,分别用来表示Hannoi塔中三个座上的塔点。A座、B座和C座上的三个塔点分别由pointA、pointB和pointC中的单元来确定。每个座上的三个塔点都是从座顶依次对应数组的相应单元中的TowerPoint对象。例如,A座最上面的塔点是pointA0,中间的塔点是

10、pointA1,最下面的塔点是pointA2。(6)handleMouse是HandleMouse类创建的鼠标事件监视器,用来监视disc数组的Disc对象上触发的鼠标事件。(7)autoMoveDisc是AutoMoveDisc创建的对话框。通过该对话框可以实现程序自动移动盘子。2、方法(1)Tower(char)是构造方法,负责完成tower容器的初始化。(2)tower容器调用setAmountOfDisc(int)方法可以设置amountOfDisc的值。(3)tower容器调用setMaxDiscWidth(int)方法可以设置最大的盘子的大小。(4) tower容器调用setMin

11、DiscWidth(int)方法可以设置最小的盘子的大小。(5) tower容器调用setDiscHeight(int)方法可以设置盘子的高度。(6) tower容器调用putDiscOnTower ()方法可以将盘子放置在Hannoi塔的A座上,即在pointA指定的塔点上放置disc数组的成员。(7) tower容器调用getAutoMoveDisc ()方法返回其中的AutoMoveDisc对象:autoMoveDisc。tower是HannoiWindow窗口中的成员,当用户单击HannoiWindow窗口中的autoButton按钮时,窗口中的actionPerformed(Acti

12、onEvent)方法将被执行,该方法所进行的操作是让tower对象返回其中的AutoMoveDisc对象,该对象是一个对话框,用户可以通过该对话框让程序自动地移动盘子。(8) tower容器调用removeDisk ()方法可以移调tower容器中的盘子。(9) tower容器调用paintComponent (Graphics)方法绘制出塔点的位置和必要的视图。综上所述,Tower创建的容器效果如图4.3所示。图4.3 Tower创建的容器4.4 Disc类JButtonTowerDiscnumber: intpoint: TowerPointDisc():无类型setNumber(int

13、n): voidgetNumber(): intsetPoint(TowerPoint): voidgetPoint(): TowerPointdisc: Disc图4.4 Disc类的UML图4.5 TowerPoint类TowerTowerPOintx,y: inthaveDisc: booleandisc: DiscTowerPoint(int,int): 无类型isHaveDisc(): booleansetHaveDisc(boolean): voidgetX(): intgetY(): intPointA: TowerPointPointB: TowerPointPointC: T

14、owerPointEquals(TowerPoint): booleanputDisc(Component,Container): voidgetDiscOnPoint(): DiscremoveDisc(Component,Container): void图4.5 TowerPoint类的UNL图4.6 HandleMouse类MouseMotionListenerMouseListenerTowerHandleMouseHandleMouse: HandleMousepointA,pointB,pointC: TowerPointstartPoint,endPoint: TowerPointcon: ContainerHandleMouse(Container): 无类型setPointA(TowerPoint): voidsetPointB(TowerPoint): voidsetPointC(TowerPoi

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号