Hannoi塔(汉诺塔)--Java课程设计报告
hannoi塔java课程设计

hannoi塔java课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握Hannoi塔问题的算法原理及其Java实现;技能目标要求学生能够运用Java编程解决简单的算法问题;情感态度价值观目标培养学生的逻辑思维能力、问题解决能力和团队合作精神。
通过本课程的学习,学生将了解Hannoi塔问题的背景及其算法实现,能够运用Java编程解决相关问题。
同时,培养学生独立思考、创新解决问题的能力,提高他们对计算机科学的兴趣和热情。
二、教学内容教学内容主要包括Hannoi塔问题的算法原理、Java编程基础及其在解决Hannoi塔问题中的应用。
1.Hannoi塔问题的算法原理:介绍Hannoi塔问题的定义、解决方法及其数学原理。
2.Java编程基础:讲解Java编程的基本语法、数据结构、控制语句和函数。
3.Hannoi塔问题的Java实现:引导学生运用Java编程实现Hannoi塔问题的解决方案,并进行调试和优化。
三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:教师讲解Hannoi塔问题的算法原理、Java编程基础及相关知识。
2.讨论法:学生分组讨论Hannoi塔问题的解决方案,培养团队合作精神和独立思考能力。
3.案例分析法:分析典型的Hannoi塔问题案例,引导学生运用Java编程解决问题。
4.实验法:学生动手实践,编写Java程序实现Hannoi塔问题的解决方案。
四、教学资源教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用权威、实用的Java编程教材,为学生提供系统的学习资料。
2.参考书:提供相关的算法书籍,帮助学生深入了解Hannoi塔问题的算法原理。
3.多媒体资料:制作课件、教学视频等,丰富教学手段,提高学生的学习兴趣。
4.实验设备:提供计算机、网络等实验设备,保障学生实践教学活动的顺利进行。
汉诺塔游戏课程设计

汉诺塔游戏课程设计一、课程目标知识目标:1. 学生能理解汉诺塔游戏的起源、规则及数学原理。
2. 学生能掌握递归算法的基本概念及其在汉诺塔游戏中的应用。
3. 学生能运用数学归纳法推导汉诺塔游戏的步数与盘子数之间的关系。
技能目标:1. 学生能够运用所学知识,独立设计并解决汉诺塔游戏的不同层次问题。
2. 学生能够通过小组合作,提高问题解决能力和团队协作能力。
3. 学生能够运用信息技术工具,进行汉诺塔游戏模拟和数据分析。
情感态度价值观目标:1. 学生对数学产生兴趣,认识到数学与游戏的紧密联系,提高学习数学的积极性。
2. 学生在游戏中培养逻辑思维能力和创新精神,增强自信心和自主探究意识。
3. 学生通过合作与交流,培养团队精神,学会尊重他人,形成积极向上的人生态度。
课程性质:本课程以汉诺塔游戏为载体,结合数学知识和算法,培养学生的逻辑思维能力、问题解决能力和团队协作能力。
学生特点:五年级学生具有一定的数学基础和逻辑思维能力,对游戏具有浓厚兴趣,但可能对递归算法等抽象概念理解有限。
教学要求:结合学生特点,教师需采用生动有趣的教学方法,引导学生主动探究,注重培养学生的实践操作能力和团队协作精神。
通过本课程的学习,使学生将所学知识应用于实际情境,提高学生的综合素养。
二、教学内容1. 汉诺塔游戏背景介绍:包括汉诺塔的起源、发展及其在数学游戏中的地位。
相关教材章节:数学游戏与趣味数学2. 汉诺塔游戏规则及数学原理:讲解汉诺塔的游戏规则,引导学生发现汉诺塔移动盘子过程中的数学原理。
相关教材章节:组合数学基本概念3. 递归算法及其在汉诺塔游戏中的应用:介绍递归算法的概念,通过实例演示递归算法在汉诺塔游戏中的运用。
相关教材章节:算法与程序设计4. 汉诺塔游戏步数与盘子数之间的关系:运用数学归纳法,推导汉诺塔游戏中盘子数与步数之间的关系。
相关教材章节:数学归纳法5. 汉诺塔游戏实践操作:组织学生进行汉诺塔游戏实践,培养学生动手操作能力和问题解决能力。
汉诺塔课程设计报告

汉诺塔游戏学院:理学院班级:信科102班组长:李万东组员1:袁雪娇组员2:张瑜设计期限2012 年3月1开始至2012年6月20 结束课程设计题目:汉诺塔游戏课程设计目的:《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
本课程的程序设计专题实际是计算机相关专业学生学习完《JA V A程序设计》课程后,进行的一次全面的综合训练,JA V A程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
随着社会的进步,我们用来娱乐的游戏世界也越来越丰富,越来越复杂。
本程序的汉诺塔游戏不但包括了游戏最基本的功能,而且还能培养用户的逻辑思维能力,同时也给玩家提供了一定的娱乐空间。
本游戏还包括一个自动演示搬移汉诺塔的功能,此功能能够帮助初次接触此游戏的用户了解此游戏的玩法。
课程设计理论:本程序要求实现用图形界面,画出3个杆和若干个大小不一的矩形盘子,形成3个塔,分别为A塔,B塔,C塔,同时盘子数目可以人工设定。
用户可以用鼠标选中盘子,然后通过拖动鼠标来移动该盘子、释放鼠标来放置该盘子。
用户在移动盘子的过程中,可以随时单击汉诺塔菜单栏的菜单中提供的按钮,重新开始游戏,并且可以通过单击汉诺塔菜单栏的菜单提供的按钮,让程序自动完成把A塔上的盘子全部移动到C塔上,实现自动演示。
汉诺塔算法属于递归算法,该算法过程为:假定要把n个盘子按题目规定由A杆借助B杆移动到C杆。
第一步:先把上面的n-1个盘子借助C杆放到B杆。
第二步:把第n个盘子从A杆直接移到C杆。
第三步:把B杆上的n-1个盘子借助A杆移到B杆。
概要设计:1.课程设计内容:有三个表示塔的对象,分别命名为A、B和C。
A塔上有若干个盘子,盘子的大小不等,并按着大小顺序依次摆放在A塔上,大盘在下,小盘在上。
Java课程设计报告汉诺塔

东华理工大学Java课程设计报告题目:汉诺塔所在院系:理学院学生:漆俊、朱学曼、颜瑶专业:信息与计算科学班级:1223201-2指导老师:黄国辉2014年 12月29日目录一.概述1.题目概述2.题目分析二.课程设计1.课程设计目的2.课程设计容3.课程设计环境4.课程设计要求三.系统需求分析1.系统目标2.主体功能3.开发环境四.系统概要设计1.系统功能模块划分2.流程图3.自定义类说明五.系统详细设计六.测试1.测试方案2.测试结果七.小结八.参考文献九.程序代码一.概述1.题目概述:Hannoi塔:设计GUI界面的Hannoi塔,用户可以通过拖动鼠标移动各个塔上的盘子,程序也可以自动演示盘子的移动过程。
设计要求1.有三个表示塔的对象,分别命名为A、B和C。
A塔上有若干个盘子,盘子的大小不等,并按着大小顺序依次摆放在A塔上,大盘在下,小盘在上。
用户可以用鼠标拖动盘子,把A 塔上的盘子全部移动到另外两个塔中的任何一个塔上。
要求每次只能移动一个盘子,在任何时候不允许大盘压在小盘的上面。
2.用户也可以选择让程序自动演示。
选择自动演示后,程序将以动画形式演示把A塔上的盘子全部移到C塔的过程,并将移动过程以文本形式显示在一个文本区中。
2.题目分析:(1)在窗口中画出初始时塔和碟子的状态。
(2)可以以自动或手动两种方式搬移碟子。
(3)自动搬移可以通过定时器或多线程的方法,每一次移动的时间间隔可以自定,以人眼观察比较舒服为宜,每一次的移动过程如能实现动画最好。
(4)定义塔的描述类和碟子的描述类。
(5)在程序中,碟子的数目及每次移动的时间间隔可以通过对话框设置(也应该有默认值)。
(6)支持暂停功和继续的功能(在自动搬移过程中可以暂停,并继续)。
(7)暂停后,可以将当前的状态保存(碟子和塔的组合关系)。
(8)可以从7中保存的文件中读出某个状态,并继续移动。
二.课程设计1.课程设计目的《JAVA程序设计》是计算机相关专业的选修专业基础课程,其实践性、应用性很强。
java课程设计汉诺塔

java课程设计汉诺塔一、课程目标知识目标:1. 学生能理解汉诺塔游戏的规则,掌握其数学原理。
2. 学生能运用Java语言实现汉诺塔游戏的算法。
3. 学生了解递归算法的概念,并能够运用递归方法解决汉诺塔问题。
技能目标:1. 学生通过编写代码,培养逻辑思维能力和问题解决能力。
2. 学生掌握Java中的数组、函数定义和递归调用的应用。
3. 学生能够在实际编程过程中,调试和优化代码,提高程序性能。
情感态度价值观目标:1. 学生培养对计算机编程的兴趣,激发学习Java的热情。
2. 学生在团队协作中,学会沟通和分享,培养合作精神。
3. 学生在解决问题的过程中,锻炼耐心和毅力,形成良好的学习习惯。
课程性质:本课程为实践性较强的Java编程课程,通过汉诺塔项目的设计与实现,使学生掌握基本的编程方法和技巧。
学生特点:学生已经具备一定的Java基础,熟悉基本语法和编程环境,但可能对递归算法和复杂逻辑处理尚不熟练。
教学要求:结合学生特点,课程目标分解为具体学习成果,教学过程中注重引导学生动手实践,培养编程兴趣和实际操作能力。
同时,注重团队合作,提高学生的沟通与协作能力。
通过课后评估,确保学生达到课程目标。
二、教学内容1. 汉诺塔游戏规则及数学原理介绍(教材第X章)- 游戏起源与基本规则- 汉诺塔问题的数学描述- 最优解与递归关系2. Java编程基础回顾(教材第X章)- 数据类型与变量- 循环结构(for、while)- 选择结构(if、switch)- 数组的使用3. 递归算法与汉诺塔实现(教材第X章)- 递归概念与递归三要素- 汉诺塔递归算法设计- Java中递归函数的编写与调用4. 汉诺塔程序编写与调试(教材第X章)- 编程规范与注释- 代码编写与测试- 调试技巧与性能优化5. 团队协作与项目展示(教材第X章)- 团队分工与协作- 项目总结与展示- 评价与反馈教学内容安排与进度:第1课时:汉诺塔游戏规则及数学原理介绍第2课时:Java编程基础回顾第3课时:递归算法与汉诺塔实现第4课时:汉诺塔程序编写与调试第5课时:团队协作与项目展示三、教学方法1. 讲授法(教材第X章)- 对于汉诺塔游戏规则、数学原理以及递归算法等理论知识,采用讲授法进行教学。
Java课程设计报告--Hannoi塔

课程设计报告课程名称 Java程序设计课题名称 Hannoi塔专业计算机科学与技术班级学号姓名指导教师李远辉2013 年 6月 27日湖南工程学院课程设计任务书课程名称 Java程序设计课题 Hannoi塔专业班级学生姓名学号指导老师李远辉审批李远辉任务书下达日期 2013 年 6 月20 日任务完成日期2013 年 6 月 27 日目录1.设计要求 (1)1.1 界面要求 (1)1.2 功能要求 (1)2.总体设计 (2)2.1 总体概述 (2)2.2 主要类功能设计 (3)3.详细设计 (5)3.1 HannoiWindow类 (5)3.2 Tower类 (5)3.3 HandleMouse类 (6)3.4 AutoMoveDisc类 (7)3.5 TimeCount类 (8)4.调试与结果分析 (9)4.1 初级游戏 (9)4.2 游戏界面属性设置 (10)4.3 游戏外观设置 (10)4.4 自动移动演示 (10)5.设计总结与心得体会 (12)附录 (13)1 参考书 (13)2 源代码 (13)1 设计要求1.1 界面要求用户界面为GUI界面,其分为菜单栏以及游戏区两个部分。
游戏区中分布有三座Hannoi塔,其名字分别为A、B、C。
初始状态下A座有三个大小不等的盘子,其按照从大到小的顺序依次摆放在A座上。
1.2 功能要求1.2.1 游戏规则用户用鼠标选中盘子,然后通过拖动鼠标来移动盘子、释放鼠标来放置该盘子。
其中主要的规则就是:(1)移动盘子时,盘子上方必须无盘子(2)放置盘子时,其位置必须在塔点处,而且盘子必须比下方盘子小(3)游戏结束的条件是:所有的盘子均从A座移到B或C座1.2.2 游戏设置功能用户可以通过游戏-》选项来设置游戏的一些基本的属性,如是否播放音乐、难度、盘子大小等等1.2.3 游戏帮助功能用户可以通过菜单栏中的帮助能过初步了解游戏的相关信息,以及如何操作。
其中必须实现游戏的自动完成功能以指导用户如何操作。
java课程设计方案Hannoi汉诺塔游戏

HUBEINORMALUNIVERSITYJava程序设计Hannoi塔游戏论文题目Hannoi塔游戏学生指导教师所在院系专业名称完成时间摘要《JAVA语言实用教程》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
实践教案环节是必不可少的一个重要环节。
本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA语言实用教程》课程后,进行的一次全面的综合训练,JAVA语言实用教程的设计目的是加深对理论教案内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
目录一、课程设计任务及要求31、课程设计任务32、设计要求3二、需求分析41、系统需求分析42、系统概述53、系统运行环境6三、设计思路6概要设计7四、详细设计7package Hannoi。
7HannoiWindow类7AutoMoveDisc类15Disc类21HandleMouse类22Tower类27TowerPoint 类31五、运行调试与分析讨论33六、设计体会与小结361.设计体会362.小结36参考文献37致谢37一、课程设计任务及要求1、课程设计任务设计GUI界面的Hannoi塔游戏,用户可以通过拖动鼠标移动各个塔上的盘子,程序也可以自动演示盘子的移动过程。
2、设计要求(1)有三个表示塔的对象,分别命名为A、B和C。
A塔上有若干个盘子,盘子的大小不等,并按着大小顺序依次摆放在A 塔上,大盘在下,小盘在上。
用户可以用鼠标拖动盘子,把A 塔上的盘子全部移动到另外两个塔中的任何一个塔上。
要求每次只能移动一个盘子,在任何时候不允许大盘压在小盘的上面。
(2)用户也可以选择让程序自动演示。
选择自动演示后,程序将以动画形式演示把A塔上的盘子全部移到C塔的过程,并将移动过程以文本形式显示在一个文本区中。
(3)可以由用户自己设置盘子数量和盘子大小。
java课课程设计汉诺塔

java课课程设计汉诺塔一、教学目标本节课的教学目标是使学生掌握汉诺塔问题的解法及其在Java中的应用。
知识目标要求学生了解汉诺塔问题的定义、解法及其与递归算法的关联;技能目标要求学生能够运用Java编写汉诺塔问题的解决方案;情感态度价值观目标则是培养学生的逻辑思维能力、问题解决能力和团队合作精神。
二、教学内容本节课的教学内容主要包括三个部分:汉诺塔问题的定义与解法、汉诺塔问题的Java实现、以及汉诺塔问题在实际应用中的案例分析。
1.汉诺塔问题的定义与解法:介绍汉诺塔问题的背景、定义及其解法,包括递归解法和迭代解法。
2.汉诺塔问题的Java实现:讲解如何利用Java实现汉诺塔问题的递归解法和迭代解法,并分析两种解法的优缺点。
3.汉诺塔问题在实际应用中的案例分析:通过分析实际应用案例,使学生了解汉诺塔问题在现实生活中的应用,提高学生解决实际问题的能力。
三、教学方法为了达到本节课的教学目标,我们将采用以下教学方法:1.讲授法:用于讲解汉诺塔问题的定义、解法及其与递归算法的关联。
2.案例分析法:通过分析实际应用案例,使学生了解汉诺塔问题在现实生活中的应用。
3.实验法:让学生动手编写汉诺塔问题的Java解决方案,提高学生的实际操作能力。
4.小组讨论法:引导学生分组讨论汉诺塔问题的解法,培养学生的团队合作精神。
四、教学资源为了支持本节课的教学内容和方法,我们将准备以下教学资源:1.教材:提供汉诺塔问题的定义、解法及其Java实现的理论知识。
2.多媒体资料:通过图片、视频等形式,生动形象地展示汉诺塔问题及其解法。
3.实验设备:提供计算机等设备,让学生动手编写汉诺塔问题的Java解决方案。
4.网络资源:为学生提供相关的在线案例和教程,帮助学生更好地理解和应用汉诺塔问题。
五、教学评估本节课的教学评估将采取多元化评价方式,全面客观地评价学生的学习成果。
评估方式包括:1.平时表现:通过观察学生在课堂上的参与度、提问回答、小组讨论等环节的表现,评估学生的学习态度和理解能力。
Java课程设计报告(汉诺塔)

Java课程设计报告(汉诺塔)东华理工大学Java课程设计报告题目:汉诺塔所在院系:理学院学生姓名:漆俊、朱学曼、颜瑶专业:信息与计算科学班级:1223201-2指导老师:黄国辉2014年12月29日- 2 -目录一.概述1.题目概述2.题目分析二.课程设计1.课程设计目的2.课程设计内容3.课程设计环境4.课程设计要求三.系统需求分析1.系统目标2.主体功能3.开发环境四.系统概要设计1.系统功能模块划分2.流程图3.自定义类说明五.系统详细设计六.测试1.测试方案2.测试结果七.小结八.参考文献九.程序代码- 3 -一.概述1.题目概述:Hannoi塔:设计GUI界面的Hannoi塔,用户可以通过拖动鼠标移动各个塔上的盘子,程序也可以自动演示盘子的移动过程。
设计要求1.有三个表示塔的对象,分别命名为A、B和C。
A塔上有若干个盘子,盘子的大小不等,并按着大小顺序依次摆放在A塔上,大盘在下,小盘在上。
用户可以用鼠标拖动盘子,把 A 塔上的盘子全部移动到另外两个塔中的任何一个塔上。
要求每次只能移动一个盘子,在任何时候不允许大盘压在小盘的上面。
2.用户也可以选择让程序自动演示。
选择自动演示后,程序将以动画形式演示把A塔上的盘子全部移到C塔的过程,并将移动过程以文本形式显示在一个文本区中。
- 4 -2.题目分析:(1)在窗口中画出初始时塔和碟子的状态。
(2)可以以自动或手动两种方式搬移碟子。
(3)自动搬移可以通过定时器或多线程的方法,每一次移动的时间间隔可以自定,以人眼观察比较舒服为宜,每一次的移动过程如能实现动画最好。
(4)定义塔的描述类和碟子的描述类。
(5)在程序中,碟子的数目及每次移动的时间间隔可以通过对话框设置(也应该有默认值)。
(6)支持暂停功和继续的功能(在自动搬移过程中可以暂停,并继续)。
(7)暂停后,可以将当前的状态保存(碟子和塔的组合关系)。
(8)可以从7中保存的文件中读出某个状态,并继续移动。
汉诺塔实验报告

计算机学院
实验报告
课程名称:数据结构
实验名称:汉诺塔
学生姓名:朱孝彬
学生学号:20110511001
实验日期:2012
一、实验目的
1.理解数据结构中汉诺塔
2.掌握汉诺塔的C++描述。
二、实验内容
1.编制汉诺塔的程序。
三、实验步骤
1.需求分析
本演示程序用C++6.0编写,完成汉诺塔的生成,
2.概要设计
1)为了实现上述程序功能,需要定义单链表的抽象数据类型:
(1)insert
初始化状态:单链表可以不为空集;操作结果:插入一个空的单链表L。
(2)decelt
操作结果:删除已有的单链表的某些结点。
(3)display
操作结果:将上述输入的元素进行排列显示。
(4)modify
操作结果:将上述输入的某些元素进行修改。
(5)save
操作结果:对上述所有元素进行保存。
(6)load
操作结果:对上述元素进行重新装载。
3.使用说明
程序执行后显示
======================
1.单链表的创建
2.单链表的显示
3.单链表的长度
4.取第i个位置的元素
5.修改第i个位置的元素
6.插入元素到单链表里
7.删除单链表里的元素
8.合并两个单链表
9.退出系统
=======================
6.测试结果
四、实验总结(结果分析和体会)
单链表的最后一个元素的next为null ,所以,一旦遍历到末尾结点就不能再重新开始;而循环链表的最后一个元素的next为第一个元素地址,可返回头结点进行重新遍历和查找。
Hannoi塔(汉诺塔)--Java课程设计报告

Java课程设计报告题目汉诺塔所在院系软件学院学生姓名邓小文专业土木+软件工程班级08-1班学号14号2010年7月17日一、总体设计1.本系统的主要功能(1)本软件是汉诺塔游戏;(2)可以实现计时功能;(3)游戏结束时记录排名;(4)在玩游戏的同时还可以欣赏歌曲;(5)不知如何玩时可以实现自动演示;2.系统包含的类及类之间的关系为了实现本软件的各项功能,对要在本软件中需要用到的源文件进行总体设计。
本系统共包括12个java 源文件。
1.各个类之间的关系如图1所示。
Hel TowerHannoiTower Musi Disk TowerPoint TimeRecord ShowRecor Peopl图1-1各个类之间的关系2.java 源文件及其功能,如表所示。
表1java 源文件及其功能二、详细设计为了实现总体设计中的各个类之间的接口连接,使玩家能够顺畅的使用本软件进行游戏,考虑用详细设计来给玩家一一介绍。
以下是对本软件的详细设计:序号文件名主要功能备注1Tower 用户可以在主窗口选择开始搬运盘子或自动演示。
程序默认的情况是手动搬运盘子2HannoiTower 该文件生成的类负责创建Hannoi塔,汉诺塔由A、B、C 三个塔组成,可以用鼠标搬运各个塔上的盘子。
3Disk该文件生成的类负责创建盘子对象4TowerPoint 该文件生成的类负责为Hannoi 塔创建塔点对象,即盘子放置的位置。
5Time 记录玩家完成游戏所需的时间6People 记录成绩能够排进排行榜的选手7About 关与本软件的制作信息8Help 帮助主题9Record 记录10Music 该文件负责生成一款播放器,可以选取玩家自己喜欢的歌曲欣赏。
播放的歌曲需要是“wav”等形式的。
11ShowRecord该文件用来实现玩家看英雄榜的情况。
1.主类Tower(1)该类用到的主要成员变量见表5表5类Tower主要成员变量成员变量描述变量类型名称汉诺塔对象HannoiTower tower塔名数组Char[]TowerName盘子数目int盘子数目p float盘子从上到下缩小的比例盘子大小Int盘宽,盘高自动演示线程Thread Threadfile初级,file高级File初级高级排行榜记录file1,file2File规则帮助文本自动演示文字显示搬运过程TextArea信息条背景音乐Music music菜单条JMenuBar bar菜单JMenu fileMenu1,fileMenu2,fileMenu3菜单项JMenuItem 开始游戏,重新开始,自动演示,英雄榜,退出,背景音乐,帮助主题,关于汉诺塔;显示时间JTextField显示时间(2)方法见表6表6类Tower主要方法名称功能备注Tower创建窗口构造方法(3)源代码见文件Tower.java2.类HannoiTower(1)该类用到的主要成员变量见表7表7类HannoiTower主要成员变量成员变量描述变量类型变量名位置int X,Yp float盘子从上到下缩小的比例搬运坐标int Shartx,Starty,Starti盘子数目int盘子数目塔名char Towername[]时间int spendtime塔点TowerPoint point[]移动状态boolean move盘子Disk盘子[]显示移动信息TextArea信息条用来计时Time计时计时器是否启动boolean计时器是否启动(2)方法见表8表8类HannoiTower主要方法名称功能(3)源代码见文件HannoiTower.java3.类TowerPoint(1)该类用到的主要成员变量见表9表9类TowerPoint主要成员变量成员变量描述变量类型变量名位置Int X,Yboolean有盘子查看是否有盘子创建盘子Disk盘子创建塔HannoiTower con (2)方法见表10表10类TowerPoint主要方法名称功能是否有盘子返回“有盘子”变量的状态(3)源代码见文件TowerPoint.java4.类Disk(1)该类用到的主要成员变量见表11表11类Disk主要成员变量成员变量描述变量类型变量名数目int number 上方有无盘子boolean上方有盘(2)方法见表12表12类Disk主要方法名称功能get上方有盘得到“上方有盘”set上方有盘设置“上方有盘”getNumber得到盘子号(3)源代码见文件Disk.java5.类Time(1)该类用到的主要成员变量见表13表13类Time主要成员变量成员变量描述变量类型变量名时间int time计时器javax.swing.Timer计时器显示时间JTextField显示时间计时器是否启动boolean计时器是否启动(2)方法见表14表14类Time主要方法名称功能actionPerformed处理ActionEvent事件begin设置开始计时rebegin设置重新开始计时pause设置停止计时clear设置计时清零且不显示(3)源代码见文件Time.java6.类Music(1)该类用到的主要成员变量见表15表15类Music主要成员变量成员变量描述变量类型变量名线程Thread thread音频对象AudioClip clip按钮Button buttonPlay,buttonLoop,buttonStop选择框Choice choice面板Panel p1,p2盒式容器Box baseBox,boxV1,boxV2标签Label标签1,标签2(2)方法见表16表16类Music主要方法名称功能Music创建背景音乐对话框run启动线程actionPerformed处理ActionEvent事件(3)源代码见文件Music.java7.类People(1)该类用到的主要成员变量见表17表17类People主要成员变量成员变量描述变量类型变量名测试者姓名String name测试所用时间int time(2)方法见表18表18类People主要方法名称功能People获取测试者姓名getTime获取测试所用时间(3)源代码见文件People.java8.类Record(1)该类用到的主要成员变量见表19表19类Record主要成员变量变量类型变量名功能int time记录游戏所用时间int n判断级别JTextFile yourName记录测试者的名字File gradeFile存放成绩的文件JButton确定,取消是否保存成绩的按钮(2)方法见表20表20类Record主要方法名称功能Record创建保存成绩窗口setTime设置时间setFile设置文件actionPerformed处理ActionEvent事件(3)源代码见文件Record.java9.类ShowRecord(1)该类用到的主要成员变量见表21表21类ShowRecord主要成员变量变量类型变量名功能File gradeFile存放成绩的文件JButton确定,清除按钮JTextArea Show显示成绩的区域(2)方法见表22表22类ShowRecord主要方法名称功能ShowRecord创建显示成绩窗口actionPerformed处理ActionEvent事件(3)源代码见文件ShowRecord.java10.类Help(1)该类用到的主要成员变量见表25表25类Help主要成员变量变量类型变量名功能TextArea text存放帮助主题的文件FileReader f帮助主题的文本文档(2)方法见表26表26类Help主要方法名称功能Help创建帮助窗口三、运行效果1、将10个java文件打包保存到同一个文件夹中,并且分别编译生成相应的字节码文件。
汉诺塔

《JA V A语言程序设计》课程设计题目:汉诺塔随着计算机的普及越来越多得人使用计算机,人们得生活工作越来越离不开计算机!但是人们面对长时间的电脑工作,难免会有厌倦情绪,而现代人使用最多得打发无聊时间得方式,多是:聊天,浏览网页,看电影,玩大型得网游,结果到头来,花费勒很多得时间却发现自己并没有放松,相反还使自己更加精力疲倦!汉诺塔是一款益智小游戏,花费得时间不多,但是你却要经过思考来完成,从而获得身心得放松!关键词:汉诺塔;计算机;游戏;演示;移动1.引言 (1)1.1问题的提出 (1)1.2 任务设计内容 (1)2.需求分析 (2)2.1 界面及布局设计 (2)2.2 A、B、C 座的实现方法 (2)2.3 圆盘的实现方法 (3)2.4 记录时间方法 (3)3.总体设计 (4)3.1总体功能图 (4)3.2总体流程图 (5)4.主要功能设计流程 (6)4.1 A、B、C 座实现流程图 (6)4.2圆盘画法流程图 (7)4.3保存流程图 (7)4.4时间流程图 (8)5.代码实现 (8)5.1间关系图 (8)5.2 运行效果图 (9)6.总结与说明 (10)7.负责的部分原代码 (11)8.参考文献 (23)1.引言1.1问题的提出随着计算机得普及,人们越来越多得接触到计算机,人们得生活工作中无处不有计算机得身影!人们面对长时间的难免会有倦怠的情绪!而人们大多得缓解情绪得网络活动其实并不能起到放松心情得作用!现代人得生活节奏越来越快,有没有一种快速缓解疲倦得游戏呢?我们提出设计一款益智得小游戏,这种游戏不会花太多时间,同时把玩家得思维带动起来,达到一举多得得效果!1.2 任务设计内容(1)设计Hannoi塔中有三个座,名字分别是A、B和C。
初始状态是A座上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A 座上。
用户可以用鼠标选中盘子,然后通过拖动鼠标来移动该盘子、释放鼠标来放置该盘子;(2)程序要求用户在移动盘子过程中,不允许把大盘放置在小盘的上面,用户最终要完成的是把A座上的全部盘子移动到B座或C座上;(3)用户可以通过Hannoi塔界面提供的菜单来选择初级、中级、高级和自定义四个级别。
汉诺塔游戏java编程

汉诺塔游戏java编程————————————————————————————————作者:————————————————————————————————日期:辽宁工业大学JA V A语言程序设计课程设计(论文)题目:汉诺塔游戏设计院(系):软件学院专业班级:计算机网络技术091班学号:091406015学生姓名:张铎赢指导教师:赵凯教师职称:讲师起止时间:2010.12.13至2010.12.24程序设计专题(报告)任务及评语院(系):软件学院教研室:软件教研室学号091406015 学生姓名张铎赢专业班级计算机网络技术091班程序设计(报告)题目汉诺塔游戏设计程序设计(报告)任务程序设计专题的任务与要求:(1)掌握Java编程、面向对象的基础知识。
(2)较熟练地编写Java应用程序Application。
(3)了解Java的常用标准类库、编程技巧、异常处理。
(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。
(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。
正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。
指导教师评语及成绩成绩:指导教师签字:2010 年12月24 日目录第1章课程设计的目的与要求 (1)1.1 课程设计目的 (1)1.2 课程设计的实验环境 (1)1.3 课程设计的预备知识 (1)1.4 课程设计要求 (1)第2章课程设计内容 (2)2.1课程设计主要内容 (2)2.2概要设计 (2)2.2.1自定义类说明 (2)2.3详细设计 (3)2.4.1程序运行情况 (13)2.4.2程序异常处理 (16)第3章课程设计总结 (17)附录参考资料 (18)第1章课程设计的目的与要求1.1 课程设计目的《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
JAVA汉诺塔课程设计

JAVA汉诺塔课程设计一、课程目标知识目标:1. 学生能理解汉诺塔问题的背景和基本规则。
2. 学生能掌握利用递归方法解决汉诺塔问题的基本原理。
3. 学生能掌握Java编程语言中方法定义、递归调用以及基本控制流程。
技能目标:1. 学生能够运用Java编写解决汉诺塔问题的程序代码。
2. 学生能够通过编程实践,培养逻辑思维和问题解决能力。
3. 学生能够通过小组合作,提高沟通协作能力和团队意识。
情感态度价值观目标:1. 学生对计算机编程产生兴趣,树立学习自信。
2. 学生在解决问题的过程中,培养克服困难的毅力。
3. 学生意识到编程在生活中的应用价值,增强对信息技术学科的认识。
课程性质分析:本课程为信息技术学科,结合汉诺塔问题进行Java编程教学,旨在让学生通过实践掌握编程技能,并培养其逻辑思维和问题解决能力。
学生特点分析:学生为初中年级,具备一定的逻辑思维能力和计算机操作基础,对编程有一定的了解,但对递归等较复杂的概念可能不够熟悉。
教学要求:1. 教师应注重引导学生从实际问题出发,激发学生编程兴趣。
2. 教师应循序渐进地引导学生理解递归原理,确保学生能够掌握汉诺塔问题的编程解决方法。
3. 教师应关注学生的个体差异,给予不同层次的学生适当指导,使他们在课程中都能获得成就感。
二、教学内容1. 汉诺塔问题背景介绍:引导学生了解汉诺塔问题的起源、规则及其数学特性。
相关教材章节:第一章 认识算法与程序设计2. 递归概念讲解:讲解递归的定义、递归调用的执行过程及递归与循环的关系。
相关教材章节:第二章 算法基础3. Java编程基础复习:回顾Java中的方法定义、控制流程(if-else,for,while等)。
相关教材章节:第三章 Java编程基础4. 汉诺塔问题递归解法:分析汉诺塔问题的递归解法,引导学生理解并掌握递归算法的设计。
相关教材章节:第四章 递归算法5. 编程实践:指导学生编写Java程序实现汉诺塔问题的递归解法,并调试运行。
图解汉诺塔问题(Java递归实现)

图解汉诺塔问题(Java递归实现)汉诺塔简介最近在看数据结构和算法,遇到了⼀个⾮常有意思的问题——汉诺塔问题。
先看下百度百科是怎么定义汉诺塔的规则的:汉诺塔(⼜称河内塔)问题是源于印度⼀个古⽼传说的益智玩具。
⼤梵天创造世界的时候做了三根⾦刚⽯柱⼦,在⼀根柱⼦上从下往上按照⼤⼩顺序摞着64⽚黄⾦圆盘。
⼤梵天命令婆罗门把圆盘从下⾯开始按⼤⼩顺序重新摆放在另⼀根柱⼦上。
并且规定,在⼩圆盘上不能放⼤圆盘,在三根柱⼦之间⼀次只能移动⼀个圆盘。
额,好吧,好像有点啰⾥啰嗦的。
其实⼀句话就是,在三个柱⼦之间移动盘⼦,⼀次只能移动⼀个,并且要保证每⼀步上边的盘⼦都要⽐下边的盘⼦⼩,最终实现把所有的盘⼦都从最左边柱⼦移动到最右边的柱⼦上。
我找了⼀个⼩游戏,可以玩⼀下,体验⼀下这个过程。
相信我,你玩不过第五关的!嘿嘿,玩不过再过来看⼀下,我是怎么给你做游戏攻略(作弊)的。
地址:我相信,有很多童鞋在学递归的时候,都会受到这个问题的困扰。
别着急,你不是⼀个⼈,我第⼀次看到这个也是⼀脸懵逼,这什么⿁啊,这么复杂。
下⾯我通过图解的⽅式,演⽰整个移动过程,帮助你理解⽤递归解决这个问题的思想。
汉诺塔图解我们⼀步⼀步从简单到复杂。
为了⽅便,我把三个柱⼦从左到右分别叫 A,B,C。
盘⼦的数字从上到下依次增⼤。
⼀个盘⼦只有⼀个盘⼦的时候,就⽐较简单了。
如图,只需要⼀步,直接把第 1 个盘⼦从 A移动到 C就完成了。
两个盘⼦两个盘⼦的时候,也⽐较简单,如下图,只需要借助⼀下 B 柱⼦即可完成。
这个过程可以表述为:把第1个盘⼦从A移到B把第2个盘⼦从A移到C把第1个盘⼦从B移到C三个盘⼦三个盘⼦的时候,稍微复杂⼀些,但是我们⼀般也是可以通过⼼算,把过程推演出来的。
把第1个盘⼦从A移到C把第2个盘⼦从A移到B把第1个盘⼦从C移到B把第3个盘⼦从A移到C把第1个盘⼦从B移到A把第2个盘⼦从B移到C把第1个盘⼦从A移到Cn 个盘⼦铛铛铛,现在到了第四关了,我相信已经有部分⼩伙伴感觉开始吃⼒了,通过演算就不好搞了。
JAVA汉诺塔报告

JA VA技术大作业院(系)电气与信息工程学院专业班级计科100X班学生姓名XXX 学号XXXXXXX 成绩年月日摘要汉诺塔(又称河内塔)是源于印度一个古老传说的益智玩具。
其游戏规则是:假设有三根柱子分别命名为A,B,C。
开始时,有大小不一的几个圆盘从大到小的顺序放在A柱上,在B的条件下,最后将A柱上的所有圆盘移至C柱上,且在移动过程中小圆盘不能放置在大圆盘下,只能将小圆盘放置于大圆盘之上,移动完成后,C柱上的圆盘以由小到大的顺序排列。
本java程序正是以将此游戏移至电脑上,通过java算法的实现在计算机上运行,且不破坏此游戏规则。
在此软件中,运用了大量java包、java自身所包含的类等,实现了汉诺塔的界面设计等功能,且在电脑上可简单操作,也可让程序自己进行演示。
关键字:汉诺塔 java 界面设计包目录1. 设计内容及要求............................................... - 4 -1.1 设计内容................................................ - 4 -1.2 设计要求................................................ - 4 -2 需求分析...................................................... - 5 -2.1 界面需求分析............................................ - 5 -2.2 塔座及圆盘实现方法...................................... - 5 -2.3 游戏自动演示的实现...................................... - 6 -3 系统设计...................................................... - 7 -3.1 总体功能分析............................................ - 7 -3.2 总体流程................................................ - 7 -4 主要功能设计流程分析.......................................... - 8 -4.1 塔座实现流程............................................ - 8 -4.2 圆盘实现流程............................................ - 8 -4.3 自动演示流程............................................ - 9 - 5代码分析及程序调试........................................... - 10 -5.1 类之间的关系图......................................... - 10 -5.2 代码分析及实现图....................................... - 10 -5.2.1 盘子的实现........................................ - 10 -5.2.2 实现盘子搬动,演示开始、暂停、继续、关闭按钮功能.. - 12 -5.2.3 菜单的创建以及“重新开始”、“自动演示”的实现...... - 14 -5.2.4 运行调试及分析.................................... - 16 -6 总结......................................................... - 17 -7 致谢......................................................... - 18 -8 参考文献..................................................... - 19 - 附加:程序代码................................................. - 20 -1. 设计内容及要求1.1 设计内容(1)设计GUI界面的Hannoi塔;(2)用户可用鼠标移动塔上的圆盘;(3)用户可自行选择游戏等级,分有初级、中级、高级;(4)程序可自动演示移动盘子的全过程。
hannoi塔java课程设计

hannoi塔 java课程设计一、课程目标知识目标:1. 学生能理解汉诺塔问题的背景、原理及其数学特性。
2. 学生能掌握利用Java编程语言实现汉诺塔问题的递归算法。
3. 学生能掌握基本的Java语法,如变量声明、循环结构、条件判断和函数定义。
技能目标:1. 学生能够运用递归思想解决实际问题,提高逻辑思维能力。
2. 学生通过编写Java代码实现汉诺塔问题,掌握程序调试和错误处理的方法。
3. 学生能够在团队合作中发挥个人优势,提高沟通与协作能力。
情感态度价值观目标:1. 学生对计算机科学产生兴趣,培养探索精神和创新意识。
2. 学生在编程过程中,培养面对困难、解决问题的勇气和毅力。
3. 学生通过学习汉诺塔问题,认识到数学与计算机科学的紧密联系,增强跨学科学习的意识。
课程性质:本课程为信息技术学科,以实践操作为主,注重培养学生的编程能力和逻辑思维。
学生特点:学生处于高中年级,具备一定的数学基础和编程经验,好奇心强,喜欢挑战性任务。
教学要求:结合学生特点,课程设计需注重理论与实践相结合,充分调动学生的主观能动性,引导学生在实践中掌握知识,提高技能。
同时,关注学生的情感态度价值观培养,激发学生的学习兴趣和内在动机。
通过分解课程目标,为后续教学设计和评估提供明确依据。
二、教学内容1. 汉诺塔问题背景介绍:引导学生了解汉诺塔问题的起源、发展及其数学原理。
- 教材章节:第一章 计算机问题求解基础2. Java编程基础回顾:变量声明、数据类型、循环结构、条件判断和函数定义。
- 教材章节:第二章 Java编程基础3. 递归算法原理及实现:介绍递归的概念、汉诺塔问题的递归解法。
- 教材章节:第三章 算法基础、第七章 递归算法4. 编写汉诺塔问题的Java程序:引导学生动手编写代码,实现汉诺塔问题的递归解法。
- 教材章节:第四章 Java面向对象编程、第七章 递归算法5. 程序调试与优化:教授学生如何调试程序、处理错误,并对代码进行优化。
课程实践报告_汉诺塔

课程实践报告题目:汉诺塔姓名:学号:班级:日期:一实践目的1、初步具备根据应用需求选择合理数据结构并进行算法设计的能力;2、进一步提升C语言的应用能力;3、初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;4、提高综合运用所学的理论知识和方法独立分析和解决问题的能力;5、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;6、提升文档写作能力。
二问题定义及题目分析汉诺塔(又称河内塔)问题是印度的一个古老的传说。
开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。
这是一个著名的问题,几乎所有的教材上都有这个问题。
由于条件是一次只能移动一个盘,且不允许大盘放在小盘上面,所以64个盘的移动次数是:18,446,744,073,709,551,615这是一个天文数字,若每一微秒可能计算(并不输出)一次移动,那么也需要几乎一百万年。
我们仅能找出问题的解决方法并解决较小N值时的汉诺塔,但很难用计算机解决64层的汉诺塔。
后来,这个传说就演变为汉诺塔游戏: 1.有三根杆子A,B,C。
A杆上有若干圆盘。
2.每次移动一块圆盘,小的只能叠在大的上面。
3.把所有圆盘从A杆全部移到C杆上。
经过研究发现,汉诺塔的破解很简单,就是按照移动规则向一个方向移动圆盘:如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C。
程序所能达到的功能:用户只需要输入所需的层数即可,程序会自动计算出最终需要的步骤,并同时给出中间移动的过程。
三概要设计1、设计思想如果盘子为1,则将这个盘子从塔座A移动到塔座C;如果不为1,则采用递归思想。
将塔座A的前n-1个盘子借助C盘(即目的盘)移到塔座B,移后,此时C为空座,那我们就可以将塔座A的第n个盘子移到塔座C了。
汉诺塔java课程设计

汉诺塔java课程设计一、课程目标知识目标:1. 理解汉诺塔问题的背景和数学原理;2. 掌握使用Java编程解决汉诺塔问题的方法;3. 学会运用递归思想进行程序设计;4. 理解并运用循环、条件判断等基本控制结构。
技能目标:1. 能够运用Java编写出解决汉诺塔问题的程序;2. 能够通过递归算法分析并解决实际问题;3. 培养逻辑思维和问题解决能力;4. 提高编程实践操作能力,形成良好的编程习惯。
情感态度价值观目标:1. 激发对计算机科学和程序设计的兴趣;2. 培养合作学习、探究学习的积极态度;3. 增强面对问题时的耐心和毅力,培养克服困难的决心;4. 提高创新意识,敢于尝试新方法解决问题。
课程性质:本课程为信息技术学科,以实践操作为主,侧重于培养学生的编程能力和逻辑思维能力。
学生特点:学生处于具备一定编程基础和逻辑思维能力的年级,对实际操作感兴趣,但需进一步引导和激发。
教学要求:结合汉诺塔问题,引导学生通过Java编程解决实际问题,注重培养学生的动手能力和问题解决能力,将理论与实践相结合。
在教学过程中,关注学生的情感态度价值观的培养,提高学生的综合素养。
通过具体的学习成果的分解和评估,确保课程目标的实现。
二、教学内容1. 汉诺塔问题背景介绍:介绍汉诺塔问题的起源、数学原理及在计算机科学中的应用。
相关教材章节:第一章 计算机问题求解基础2. Java编程基础复习:回顾Java基本语法、数据类型、控制结构等,为后续编程打下基础。
相关教材章节:第二章 Java语言基础3. 递归算法原理:讲解递归的概念、原理以及在实际编程中的应用。
相关教材章节:第三章 算法设计与分析4. 汉诺塔问题求解:分析汉诺塔问题,引导学生利用递归思想设计求解程序。
相关教材章节:第四章 递归算法与应用5. 编程实践:安排学生进行汉诺塔问题编程实践,巩固所学知识。
相关教材章节:第五章 Java编程实践6. 程序调试与优化:教授学生如何调试程序,对程序进行优化,提高运行效率。
Hannoi塔java课程设计

封面作者:PanHongliang仅供个人学习文献综述题目:Hannoi塔游戏和其java具体实现过程学院名称:电子与信息工程学院专业:计算机科学与技术班级:计科12-3姓名: 12401010323定稿日期: 2015 年 1 月 10 日1概述1.1 课程设计目的按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个工程解决一类问题.要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JA V A程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术.同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高.1.2 课程设计内容我设计的Hannoi塔,除了要编写的6个java文件所给出的类外,还需要java系统提供的一些重要的类,如JButton,JCheckBox等.汉诺塔中有三个座,名字分别为A,B,C.刚开始的时候A塔上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上.用户可以用鼠标选中盘子,然后通过拖动鼠标来移动盘子.释放鼠标来放置该盘子.程序要求用户在移动盘子的过程中,不允许吧大盘子放置在小盘子的上面,用户最终要完成的是把A座上的全部盘子移动到B座或C座上2 系统需求分析2.1 系统目标可以正常运行程序,并且按照设计目的预想的完成具体功能.2.2 主体功能1) 设计GUI界面的Hannoi塔.汉诺塔中有三个座,名字分别为A,B,C.初始状态时A塔上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上.用户可以用鼠标选中盘子,然后通过拖动鼠标来移动盘子.释放鼠标来放置该盘子.2) 程序要求用户在移动盘子的过程中,不允许吧大盘子放置在小盘子的上面,用户最终要完成的是把A座上的全部盘子移动到B座或C座上.3) 用户可以通过Hannoi塔界面的提供的改变盘子数目功能来改变盘子的数目,同时可以改变盘子的大小以及改变盘子和界面的背景颜色,而且还可以选择控制背景音乐的播放.4) 用户可以通过单击Hannoi塔界面上提供的按钮,让程序自动完成把A 座上的盘子全部移动到C座上.5) 用户在移动盘子的过程中,可以随时单击Hannoi塔界面上提供的按钮,重新开始.2.3 开发环境JA V A程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具.3 系统概要设计3.1 系统的功能模块划分1) HannoiWindow.java(主类)HannoiWindow类负责创建Hannoi塔的主窗口,该类含有main方法,Hannoi塔从该类开始执行.HannoiWindow类的成员变量中有五种重要类型的对象、一个int基本型数据和一个char型数组.五种类型的对象分别是:Tower、JmenuBar、JmenuItem和Jbutton对象.HannoiWindow类的主要成员的作用将在后面的详细设计中阐述.2) Tower.javaTower类是javax.swing包中Jpanel容器的子类,创建的容器被添加到HannoiWindow窗口的中心.Tower类的成员变量中有四种重要类型的对象、一个int基本型数据和一个char型数组.四种类型的对象分别是:Disc、TowerPoint、HandleMouse、和AutoMoveDisc对象.Tower类的主要成员的作用将在后面的详细设计中阐述.3) Disc.javaDisc类是Jbutton的一个子类,创建的对象时Tower容器中的一个按钮,用来表示Tower中的“盘子”.4) TowerPoint.javaTowerPoint类负责在Tower中创建表示位置的塔点对象.5) HandleMouse.javaHandleMouse类创建的对象负责处理鼠标事件.6) AutoMoveDisc.javaAutoMoveDisc类创建的对象负责自动移动盘子从一个座到另一个座.4系统详细设计4.1 总体功能设计在设计hannoi塔时,需编写6个java源文件:HannoiWindow.java、Tower.java、TowerPoint.java、Disc.java、HandleMouse.java和AutoMoveDisc.java.Hannoi塔除了要编写的6个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如JMenuBar、JMenu、JMenuItem和JButton.Hannoi塔所用到的一些重要的类以及之间的组合关系.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和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创建的容器效果如图4.3所示.图4.3 Tower创建的容器4.4 Disc类图5.3 程序截图36 小结两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情.在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督.学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世.课程设计是我们专业课程知识综合应用的实践训练,带着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础通过这次的课程设计,我对Java这门语言有了更深刻的理解.其中包括类、对象、接口、继承、方法以及Java语言中的常用包等的使用方法,特别是图形用户界面里各种组件的创建,事件处理等相关知识.使我对Java语言是一种非常难懂的语言的思想有了极大的改观.参考文献[1]耿祥义,张跃平. Java2实用教程(第三版)[M] . 北京:清华大学出版社, 2006[2]耿祥义. Java课程设计(第三版)[M] . 北京:清华大学出版社, 2004[3]张跃平.Java2实用教程实验指导与习题解答(第三版)[M]. 北京:清华大学出版社, 2004……附录附录1 源程序清单1)HannoiWindow.java(主类)import javax.swing.*。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java课程设计报告题目汉诺塔
所在院系软件学院
学生姓名邓小文专业土木+软件工程班级08-1班学号14号
2010年7 月17 日
一、总体设计
1.本系统的主要功能
(1)本软件是汉诺塔游戏;
(2)可以实现计时功能;
(3)游戏结束时记录排名;
(4)在玩游戏的同时还可以欣赏歌曲;
(5)不知如何玩时可以实现自动演示;
2.系统包含的类及类之间的关系
为了实现本软件的各项功能,对要在本软件中需要用到的源文件进行总体设计。
本系统共包括12个java源文件。
1.各个类之间的关系如图1所示。
图1-1各个类之间的关系
2.java源文件及其功能,如表所示。
表1java源文件及其功能
二、详细设计
为了实现总体设计中的各个类之间的接口连接,使玩家能够顺畅的
使用本软件进行游戏,考虑用详细设计来给玩家一一介绍。
以下是对本软件的详细设计:
1.主类Tower
(1)该类用到的主要成员变量见表5
表5类Tower主要成员变量
(2)方法见表6
表6类Tower主要方法
(3)源代码见文件Tower.java
2.类HannoiTower
(1)该类用到的主要成员变量见表7
(2)方法见表8
表8类HannoiTower主要方法
(3)源代码见文件HannoiTower.java
3.类TowerPoint
(1)该类用到的主要成员变量见表9
(2)方法见表10
(3)源代码见文件TowerPoint.java
4.类Disk
(1)该类用到的主要成员变量见表11
(2)方法见表12
表12类Disk主要方法
(3)源代码见文件Disk.java
5.类Time
(1)该类用到的主要成员变量见表13
表13类Time主要成员变量
(2)方法见表14
(3)源代码见文件Time.java
6.类Music
(1)该类用到的主要成员变量见表15
表15类Music主要成员变量
(2)方法见表16
表16类Music主要方法
(3)源代码见文件Music.java
7.类People
(1)该类用到的主要成员变量见表17
表17类People主要成员变量
(2)方法见表18
(3)源代码见文件People.java
8.类Record
(1)该类用到的主要成员变量见表19
表19类Record主要成员变量
(2)方法见表20
表20类Record主要方法
(3)源代码见文件Record.java
9.类ShowRecord
(1)该类用到的主要成员变量见表21
(2)方法见表22
(3)源代码见文件ShowRecord.java
10.类Help
(1)该类用到的主要成员变量见表25
表25类Help主要成员变量
(2)方法见表26
表26类Help主要方法
三、运行效果
1、将10个java文件打包保存到同一个文件夹中,并且分
别编译生成相应的字节码文件。
然后用java解释器如下运行主类:源代码java Tower
1 系统主界面
效果如图3-1所示:
图2-1 启动画面
此时游戏是隐藏着的,点击菜单栏的“开始游戏”->“开始”开始Hannoi Tower游戏。
2、hannoita录入界面
点击“开始游戏”->“开始”之后进入游戏状态,同时下边的计时器开始计时。
在这个界面下可以看到,盘子是以按钮形式存在的,有一个信息条,显示时间条和一个菜单条。
玩家可以点击游戏开始玩游戏,可以看软件自动演示,可以查看英雄榜的情况;如果嫌游戏单调,还可以听听软件自带的歌曲;如果不知道怎么玩游戏,可以点击帮助查看游戏规则。
效果如图3-2所示:
图2-2 游戏界面及个功能菜单
点击盘子时,所选的盘子会变成蓝色
3、在“开始游戏”菜单下可以选择游戏的级别,选择“级别”->“初级”是5个盘子,选择“级别”->高级是6个盘子。
默认是初级,5个盘子。
效果如图3-3所示:
图2-3选择游戏的级别
4、玩家点击“开始游戏”->“自动演示”,它将自动搬运盘子,同时信息条同步显示搬运信息。
效果如图2-4所示:
图2-4自动演示
5当玩家把所有的盘子都搬到c塔时,玩家成功过关软件会自动停
止计时,并且弹出记录榜对话框,玩家输入姓名,软件记录下玩家的姓名和游戏所用时间。
效果如图2-5所示:
图2-5记录榜
6、玩家点击菜单栏“排行榜”->“初级榜”弹出初级排行榜对话框,再点击“显示”,显示出初级排行榜,点击“清除”清除排行榜记录。
效果如图2-6所示:
图2-6初级排行榜
高级排行榜同理,点击“排行榜”->“高级榜”显示高级排行榜。
7、点击“设置”->“背景音乐”,玩家可以选择自己喜欢的歌曲,然后点播放进行欣赏;如果玩家喜欢听某一首歌,可以点击循环按钮,反复收听同一首歌曲;也可以点击停止按钮暂停播放。
效果如图4所示:
图2-7 播放器
8、点击“设置”->“背景色”可以改变背景染色,有白、绿、黄三种颜色可供选择。
效果如图2-8所示:
图2-8改变背景色
9、如果玩家不会玩汉诺塔这款游戏,可以点击帮助中的帮助主题查看游戏规则。
如果向了解关于制作的信息,就点击关于Hannoi Tower。
效果如图2-9和图2-10所示:
图2-9规则
图2-10 关于Hannoi Tower。