ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:81.79KB ,
资源ID:10237539      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10237539.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Hannoi塔java课程设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Hannoi塔java课程设计.docx

1、Hannoi塔java课程设计Hannoi塔java课程设计Java程序设计课程设计报告 ( 2012 - 2013年度第 1 学期) Hannoi塔 专业 xxxxxxxxxx 学生姓名 xxx 班级 xxxx 学号 xxxx 指导教师 徐 静 完成日期 2012年9月 28日 Hannoi塔 目 录. 2 1 概 述 . 3 1.1 课程设计目的 . 3 1.2 课程设计内容 . 3 2 系统需求分析 . 3 2.1 系统目标 . 3 2.2 主体功能 . 3 2.3 开发环境 . 4 3 系统概要设计 . 4 3.1 系统的功能模块划分 . 4 3.2 系统流程图. 4 4系统详细设计

2、. 6 4.1 总体功能设计 . 6 4.2 HANNOIWINDOW类 . 6 4.3 TOWER类 . 7 4.4 DISC类 . 8 4.5 TOWERPOINT类 . 8 4.6 HANDLEMOUSE类 . 8 4.7 AUTOMOVEDISC类 . 9 5 测试 . 10 5.1 测试方案 . 10 5.2 测试结果 . 10 6 小结 . 12 参考文献. 12 附 录. 14 附录1 源程序清单 . 14 Java程序设计课程设计报告(2012) 学生成绩管理系统的设计 1 概 述 1.1 课程设计目的 按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到

3、举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。 1.2 课程设计内容 我设计的Hannoi塔,除了要编写的6个java文件所给出的类外,还需要java系统提供的一些重要的类,如JButton,JCheckBox等。汉诺塔中有三个

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

5、标选中盘子,然后通过拖动鼠标来移动盘子。释放鼠标来放置该盘子。 2) 程序要求用户在移动盘子的过程中,不允许吧大盘子放置在小盘子的上面,用户最终要完成的是把A座上的全部盘子移动到B座或C座上。 3) 用户可以通过Hannoi塔界面的提供的改变盘子数目功能来改变盘子的数目,同时可以改变盘子的大小以及改变盘子和界面的背景颜色,而且还可以选择控制背景音乐的播放。 4) 用户可以通过单击Hannoi塔界面上提供的按钮,让程序自动完成把A座上的盘子全部移动到C座上。 3 Hannoi塔 5) 用户在移动盘子的过程中,可以随时单击Hannoi塔界面上提供的按钮,重新开始。 2.3 开发环境 JAVA程序设

6、计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。 3 系统概要设计 3.1 系统的功能模块划分 1) HannoiWindow.java(主类) HannoiWindow类负责创建Hannoi塔的主窗口,该类含有main方法,Hannoi塔从该类开始执行。HannoiWindow类的成员变量中有五种重要类型的对象、一个int基本型数据和一个char型数组。五种类型的对象分别是:Tower、JmenuBar、JmenuItem和Jbutton对象。 HannoiWindow类的主要成员的作用将在后面的详细设计中阐述。 2) Tower.java Tower类是javax.swin

7、g包中Jpanel容器的子类,创建的容器被添加到HannoiWindow窗口的中心。Tower类的成员变量中有四种重要类型的对象、一个int基本型数据和一个char型数组。四种类型的对象分别是:Disc、TowerPoint、HandleMouse、和AutoMoveDisc对象。Tower类的主要成员的作用将在后面的详细设计中阐述。 3) Disc.java Disc类是Jbutton的一个子类,创建的对象时Tower容器中的一个按钮,用来表示Tower中的“盘子”。 4) TowerPoint.java TowerPoint类负责在Tower中创建表示位置的塔点对象。 5) HandleM

8、ouse.java HandleMouse类创建的对象负责处理鼠标事件。 6) AutoMoveDisc.java AutoMoveDisc类创建的对象负责自动移动盘子从一个座到另一个座。 3.2 系统流程图 4 Java程序设计课程设计报告(2012) 开始 选择级 别 高级 初级 中级 自动演示 重新开始 演示 暂停 关闭 继续 完成 结束 图3.1 系统流程图 5 JButton Hannoi塔 JMenuItem 4系统详细设计 4.1 总体功能设计 在设计hannoi塔时,需编写6个java源文件:HannoiWindow.java、Tower.java、JMenu TowerPoi

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

10、程设计报告(2012) 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和minDiscW

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

12、,最下面的塔点是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

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

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

15、TowerPoint Disc():无类型 setNumber(int n): void getNumber(): int setPoint(TowerPoint): void getPoint(): TowerPoint 图4.4 Disc类的UML图 4.5 TowerPoint类 TowerPOint Tower PointA: TowerPoint x,y: int PointB: TowerPoint haveDisc: boolean PointC: TowerPoint disc: Disc Equals(TowerPoint): boolean TowerPoint(int,i

16、nt): 无类型 putDisc(Component,Container): void isHaveDisc(): boolean getDiscOnPoint(): Disc setHaveDisc(boolean): void removeDisc(Component,Container): void getX(): int getY(): int 图4.5 TowerPoint类的UNL图 4.6 HandleMouse类 8 Java程序设计课程设计报告(2012) MouseListener MouseMotionListener HandleMouse Tower HandleMo

17、use: HandleMouse pointA,pointB,pointC: TowerPoint startPoint,endPoint: TowerPoint con: Container HandleMouse(Container): 无类型 setPointA(TowerPoint): void setPointB(TowerPoint): void setPointC(TowerPoint): void mousePressed(MouseEvent): void mouseDragged(MouseEvent): void mouseReleased(MouseEvent): vo

18、id 图4.6 HandleMouse类的UML图 4.7 AutoMoveDisc类ActionListener AutoMoveDisc Tower autoMoveDisc: amountOfDisc: int ShowStep: JTextArea AutoMoveDisc bStart,bStop,bContinue,bClose: pointA,pointB,pointC: TowerPoint JButton towerName: char con: Container time: Timer moveStep: StringBuffer AutoMoveDisc(Contain

19、er con):无类型 setPointA(TowerPoint): void setPointB(TowerPoint): void setPointC(TowerPoint): void actionPerformed(ActionEvent): void setTowerName(char): void setAmountOfDisc(int): void setMoveStep(int,char,char,char): void autoMoveDisc(char,char): void 图4.7 AutoMoveDisc类的UML图 9 Hannoi塔 5 测试 5.1 测试方案 将

20、前面6个Java源文件:HannoiWindow.java、Tower.java、TowerPoint.java、Disc.java、HandleMouse.java和AutoMoveDisc.java保存同一目录中。分别编译这6个Java源文件,或运行“javac *.java”命令,编译全部源文件,然后运行主类,即运行HannoiWindow类。 5.2 测试结果 图5.1 程序截图1 10 Java程序设计课程设计报告(2012) 图5.2 程序截图2 图5.3 程序截图3 11 Hannoi塔 6 小结 两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去

21、把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。 课程设计是我们专业课程知识综合应用的实践训练,带着是我们迈向社会,从事职业工作前一个必不少的过程(”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义(我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础 通过这次的课程设计,我对Java这门语言有了更深刻的理解。其中包括类、对象、接口、继承、方法以及Java语言中的常用包等的使用方法,

22、特别是图形用户界面里各种组件的创建,事件处理等相关知识。使我对Java语言是一种非常难懂的语言的思想有了极大的改观。 参考文献 1耿祥义,张跃平. Java2实用教程(第三版)M . 北京:清华大学出版社, 2006 2耿祥义. Java课程设计(第三版)M . 北京:清华大学出版社, 2004 12 Java程序设计课程设计报告(2012) 3张跃平.Java2实用教程实验指导与习题解答(第三版)M. 北京:清华大学出版社, 2004 13 Hannoi塔 附 录 附录1 源程序清单 1) HannoiWindow.java(主类) import javax.swing.*; import java.awt.*;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1