java汉诺塔课设
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
辽宁工业大学
JA V A程序设计课程设计(论文)题目:汉诺塔
院(系):软件学院
专业班级:
学号:
学生姓名:
指导教师:
教师职称:讲师
起止时间: 2012.6.18至2012.7.1
程序设计专题(报告)任务及评语
目录
第1章课程设计的目的与要求 (1)
1.1 课程设计目的 (1)
1.2 课程设计的实验环境 (1)
1.3 课程设计的预备知识 (1)
1.4 课程设计要求 (1)
第2章课程设计内容 (2)
1.需求分析 (2)
2.1 界面及布局设计 (2)
2.2 A、B、C 座的实现方法 (2)
2.3 圆盘的实现方法 (3)
2.4 添加背景音乐的方法 (4)
2.5 改变背景和盘子颜色的方法 (5)
2.6 记录时间方法 (5)
2.7 文件保存方法 (5)
3.总体设计 (7)
3.1 总体功能图 (7)
3.2 总体流程图 (8)
4.主要功能设计流程 (9)
4.1 A、B、C 座实现流程图 (9)
4.2 圆盘画法流程图 (10)
4.7 记录时间流程图 (11)
5.代码实现 (11)
5.1 类之间关系图 (11)
5.2 运行效果图 (12)
5.3 程序打包发布过程 (13)
第3章课程设计总结 (14)
参考资料 (15)
第1章课程设计的目的与要求
1.1 课程设计目的
《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JA V A程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
1.2 课程设计的实验环境
硬件要求能运行Windows 9.X操作系统的微机系统。JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。
1.3 课程设计的预备知识
熟悉JAVA语言及ECLIPSE开发工具。
1.4 课程设计要求
按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JA V A程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。
第2章课程设计内容
2.1.需求分析
2.1.1界面及布局设计
系统的整体布局为:BorderLayout布局, 采用了菜单、按钮、面板…等组件,菜单主要包括选择级别,盘子个数,选择颜色,设置大小,按钮的功能包括重新开始,自动演示,播放,循环,停止,保存,演示,暂停,继续,关闭。
2.1.2 A、B、C 座的实现方法
Tower类是javax.swing包中JPanel容器的一个子类,创建的对象tower是HannoiWindow窗口的成员之一,被添加到HannoiWindow窗口的中心位置。标明Tower 类的主要成员变量和方法以及和HannoiWindow类之间组合关系的UML图如图1-1所示。
图1-1 Tower类的UML图
以下是UML图中有关数据和方法的详细说明。
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和minDiscWidth的值分别用来确定最大盘子的宽度和最小盘子的
宽度,discHeight的值确定每个盘子的高度。
(5)pointA、pointB和pointC都是TowerPoint型数组,三个数组的长度与盘子数目相同,即都是amountOfDisc。pointA、pointB和pointC单元都是TowerPoint创建对象,分别用来表示Hannoi塔中三个座上的塔点。A座、B座和C座上的三个塔点分别由pointA、pointB和pointC中的单元来确定。每个座上的三个塔点都是从座顶依次对应数组的相应单元中的TowerPoint对象。例如,A座最上面的塔点是pointA[0],中间的塔点是pointA[1],最下面的塔点是pointA[2]。
(6)handleMouse是HandleMouse类创建的鼠标事件监视器,用来监视disc数组的Disc对象上触发的鼠标事件。
(7)autoMoveDisc是AutoMoveDisc创建的对话框。通过该对话框可以实现程序自动移动盘子。
2、方法
(1)Tower(char[])是构造方法,负责完成tower容器的初始化。
(2)tower容器调用setAmountOfDisc(int)方法可以设置amountOfDisc的值。
(3)tower容器调用setMaxDiscWidth(int)方法可以设置最大的盘子的大小。
(4) tower容器调用setMinDiscWidth(int)方法可以设置最小的盘子的大小。
(5) tower容器调用setDiscHeight(int)方法可以设置盘子的高度。
(6) tower容器调用putDiscOnTower ()方法可以将盘子放置在Hannoi塔的A座上,即在pointA指定的塔点上放置disc数组的成员。
(7) tower容器调用getAutoMoveDisc ()方法返回其中的AutoMoveDisc对象:autoMoveDisc。tower是HannoiWindow窗口中的成员,当用户单击HannoiWindow窗口中的autoButton按钮时,窗口中的actionPerformed(ActionEvent)方法将被执行,该方法所进行的操作是让tower对象返回其中的AutoMoveDisc对象,该对象是一个对话框,用户可以通过该对话框让程序自动地移动盘子。
(8) tower容器调用removeDisk ()方法可以移调tower容器中的盘子。
(9) tower容器调用paintComponent (Graphics)方法绘制出塔点的位置和必要的视图。
综上所述,Tower创建的容器效果如图1-2所示。
图1-2 Tower创建的容器
2.1.3 圆盘的实现方法
Disc类是javax.swing包中Jbutton类的子类,所创建的对象称作Hannoi塔中的“盘子”。Tower类有Disc类型的数组disc。Disc数组的单元是用Disc创建的对象,