《Java课程设计报告汉诺塔.docx》由会员分享,可在线阅读,更多相关《Java课程设计报告汉诺塔.docx(28页珍藏版)》请在第一文库网上搜索。
1、东华理工大学Java课程设计报告题目:汉诺塔所在院系:理学院学生姓名:漆俊、朱学曼、颜瑶专业:信息与计算科学班级:12232012指导老师:2023年12月29日目录屣1 .题目概述2 .题目分析二 .课程设计1 .课程设计目的2 .课程设计内容3 .课程设计环境4 .课程设计要求三 .系统需求分析1 .系统目标2 .主体功能3 .开辟环境四 .系统概要设计1 .系统功能模块划分2 .流程图3 .自定义类说明五.系统详细设计六.测试1测试方案4 .测试结果七.小结八.参考文献九.程序代码一.概述1 .题目概述:Hannoi塔:设计GUI界面的HarInOi塔,用户可以通过拖动鼠标挪移各个塔上的
2、盘子,程序也可以自动演示盘子的挪移过程。设计要求1. 有三个表示塔的对象,分别命名为A、B和C。A塔上有若干个盘子,盘子的大小不等,并按着大小顺序挨次摆放在A塔上,大盘在下,小盘在上。用户可以用鼠标拖动盘子,把A塔上的盘子全部挪移到此外两个塔中的任何一个塔上。要求每次只能挪移一个盘子,在任何时候不允许大盘压在小盘的上面。2. 用户也可以选择让程序自动演示。选择自动演示后,程序将以动画形式演示把A塔上的盘子全部移到C塔的过程,并将挪移过程以文本形式显示在一个文本区中。2 .题目分析:(1)在窗口中画出初始时塔和碟子的状态。(2)可以以自动或者手动两种方式搬移碟子。(3)自动搬移可以通过定时器或者
3、多线程的方法,每一次挪移的时间间隔可以自定,以人眼观察比较舒畅为宜,每一次的挪移过程如能实现动画最好。(4)定义塔的描述类和碟子的描述类。(5)在程序中,碟子的数目及每次挪移的时间间隔可以通过对话框设置(也应该有默认值)。(6)支持暂停功和继续的功能(在自动搬移过程中可以暂停,并继续)。(7)暂停后,可以将当前的状态保存(碟子和塔的组合关系)。(8)可以从7中保存的文件中读出某个状态,并继续挪移。二.课程设计1课程设计目的JAVA程序设计是计算机相关专业的选修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完JAVA程序
4、设计课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系-3-东华理工大学理学院信计JaVa课程设计统地掌握程序设计及其在网络开辟中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开辟、并在实践应用方面打下一定基础。2.课程设计内容我设计的Hannoi塔,除了要编写的6个java文件所给出的类外,还需要java系统提供的一些重要的类,JButton,JCheCkBOX等。汉诺塔中有三个座,名字分别为A,B,Co刚开始的时候A塔上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序挨次摆放在A座上。用户可以用鼠标
5、选中盘子,然后通过拖动鼠标来挪移盘子。释放鼠标来放置该盘子。程序要求用户在挪移盘子的过程中,不允许吧大盘子放置在小盘子的上面,用户最终要完成的是把A座上的全部盘子挪移到B座或者C座上。用户可以通过Hannoi塔界面的提供的改变盘子数目功能来改变盘子的数目,同时可以改变盘子的大小以及改变盘子和界面的背景颜色,而且还可以选择控制背景音乐的播放。用户可以通过单击Hannoi塔界面上提供的按钮,让程序自动完成把A座上的盘子全部挪移到C座上。用户在挪移盘子的过程中,可以随时单击Hannoi塔界面上提供的按钮,重新开始。3 .课程设计环境硬件要求能运行Windows9.X操作系统的微机系统。JAVA程序设
6、计语言及相应的集成开辟环境,J2SDK和EC11PSE开辟工具。4 .课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提得。三.系统需求分析1 .系统
7、目标所设计代码可以正常运行程序,并且按照设计目的预想的完成具体功能。2 .主体功能设计GU1界面的Hannoi塔。Hannoi塔中有三个座,名字分别是A、B和C。初始状态是A座上有五个大小不等的盘子,这些盘子从座底到座顶按着大小顺序挨次摆放在A座上。用户可以用鼠标选中盘子,然后通过拖动鼠标来挪移该盘子、释放鼠标来放置该盘子。(2)程序要求用户在挪移盘子过程中,不允许把大盘子放在小盘子的上面,用户最终要完成的是把A座上的全部盘子挪移到B座或者C座上。(3)用户可以通过单击Hannoi塔界面上提供的按钮,让程序自动完成把A座上的盘子全部挪移到B座或者C座上。(4)用户在挪移盘子的过程中,可以随时单
8、击HannOi塔界面上提供的按钮,重新开始游戏。3 .开辟环境JAVA程序设计语言及相应的集成开辟环境,JDK1.6。四.系统概要设计主要要实现的功能有:完成汉诺塔的“手工挪移演示”;完成汉诺塔的“自动挪移演示”;增加计时功能,即显示用户完成挪移盘子所花费的时间;用户可以设置最大和最小盘子的大小;用户可以选择播放和暂停背景音乐;用户可以设置盘子的数目;用户可以设置盘子的颜色以及背景颜色;用户可以将自动挪移盘子的文本信息保存到文件。1 .系统功能模块划分TOWer.java(主类)TOWer类负责创建Hannoi塔的主窗口,该类含有main方法,Hannoi塔从类开始执行。TOWer类的成员变量
9、中有两种重要类型的对象:一个int基本型数据和一个Char型数组。两种类型的对象分别是:HarInOiTOWer和BUtton对象。2 2)HannoiTower.javaHannoiToWer类是javax.swing包中JPane1容器的子类,创建的容器被添加到东华理工大学理学院信计JaVa课程设计TOWer窗口的中心。HannoiToWer类的成员变量有两种重要类型的对象、一个int基类型数据和一个Char型数组。两种类型的对象分别是:Disk、TowerPointo(S)TowerPointjavaTOWerPOint类负责在HannoiTower中创建表示位置的塔点对象。4 4)Di
10、skjavaDiSk类是BUttOn的一个子类,创建的对象是HannOiToWer容器中的一个按钮,用来表示HannoiToWer中的盘子。5 .流程图(图4-1)6 .自定义类说明(1)自定义类类名:JButton作用:自定义主类,实现圆盘的类DiSC继承JBUtton类继承的父类:Disc类实现的接口:没有(2)成员变量JButton成员变量成员变量描述变量类型名称控制盘子数目StringJ1abeI重新开始Stringreew.setText开始游戏Stringrenew.setText背景颜色Stringbgco1or盘子颜色Stringpzco1orChesspad方法方法名功能备注
11、fi11Rect()绘制出矩形区域构造方法g.fi11va1()绘制相同数目点构造方法drawString()绘制出A、B、C座构造方法SetBackgroundO设置背景颜色和盘子颜色构造方法Timer(inta,Objectb)创建一个计时器构造方法stop()住手计时器计时接口方法write保存文件接口方法actionPerformed事件处理eva1uate评估五.系统详细设计TOWer类ToWer类是javax.swing包中Frame的一个子类,标明该类的主要成员变量和方法:成员变量tower是HannoiTOWer仓IJ建的对象。tower对象是一个容器,刻划了HannOi塔的结
12、构,该对象被添加到窗口的中心。盘子数目是int型数据,它的默认值是5o盘子数目的值是用来确定tower对象中“盘子”的数目。towerName是Char型数组,长度为3,其三个单元的默认取值挨次是A、B和C0towerName数组的单元的值用来确定tower中三个塔的名字。renew和auto是BUtton创建的按钮对象,名字挨次为“重新开始”和“自动演示搬盘子”,renew和auto都将当前窗口注册为自己的ACtionEVent事件监视器。方法ToWer()是构造方法,负责完成窗口的初始化。main方法是Hannoi塔程序运行的入口方法。actionPerformed(ActionEvent
13、)HannOiToWer类实现的ACtion1iStener接口中的方法。HannoiToWer创建的窗口是renew和auto两个按钮的ACtionEVent事件监视器。当用户单击按钮时,窗口将执行actionPerforned(ActionEvent)方法进行相应的操作。当用户单击renew按钮时,actionPerformed(ACtionEVent)方法所进行的操作是保持当前的盘子数目的值,并让tower对象根据盘子数目的值设置其初始状态。当用户单击auto按钮时,actionPerformed(ActionEvent)方法所进行的操作是让tower对象返回其中的AUtOMoVeDiS
14、C对象,该对象是一个对话框,用户可以通过对话框让程序自动地挪移“盘子”。六.测试1 .测试方案本程序的初始状态是A塔上有五个大小不等的盘子,这些盘子从座底到座顶按着大小顺序挨次摆放在A塔上。用户可以用鼠标选中盘子,然后通过拖动鼠标来挪移该盘子、释放鼠标来放置该盘子。程序要求用户在挪移盘子过程中,不允许把大盘子放在小盘子的上面,用户最终要完成的是把A塔上的全部盘子挪移到B塔或者C塔上。用户可以通过单击HanrIoi塔界面上提供的按钮,让程序自动完成把A塔上的盘子全部挪移到B塔或者C塔上。用户在挪移盘子的过程中,可以随时单击HannOi塔界面上提供的按钮,重新开始游戏。2 .测试结果IC向为百访标
15、一塔塔?堵培培培培悦CHcacciia划石乱或到划IIJ到JrJMB塔Cff珞主部盒子从A塔覆五郛H首次Cd区回nJII一9B809985g到不T1“二J-i-1141BAACrBCAACABBABCCRBAAC格*郡畲孑从陋横运刹B愕龙Cff七.小结通过着为期两天的时间,我学到了不少,自然在这期间遇到的艰难数不胜数,开始最让我没辙的是题目不知道该订什么好,想过不少个题目但往往跟其他同学重复了,为了避免做出来的东西雷同了,只能继续想其他方面的,想过去做些复杂的,但实在是能力有限,最后我们小组终于决定做这个Hannoi塔游戏.这个Hannoi塔游戏就是在原有的程序基础上增加了改变盘子数目功能、改变盘子大小功能、改变背景颜色功能、改变盘子颜色功能、计时器功能以及保存信息到文件功能,由于是在原有的基础上修改的,虽然理论上那个来讲这应该很简单,不会太难,但当我真正着手做起来得时候才发现