Hannoi塔java课程设计.docx

上传人:b****8 文档编号:10237539 上传时间:2023-02-09 格式:DOCX 页数:38 大小:81.79KB
下载 相关 举报
Hannoi塔java课程设计.docx_第1页
第1页 / 共38页
Hannoi塔java课程设计.docx_第2页
第2页 / 共38页
Hannoi塔java课程设计.docx_第3页
第3页 / 共38页
Hannoi塔java课程设计.docx_第4页
第4页 / 共38页
Hannoi塔java课程设计.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

Hannoi塔java课程设计.docx

《Hannoi塔java课程设计.docx》由会员分享,可在线阅读,更多相关《Hannoi塔java课程设计.docx(38页珍藏版)》请在冰豆网上搜索。

Hannoi塔java课程设计.docx

Hannoi塔java课程设计

Hannoi塔java课程设计

Java程序设计课程设计报告

(2012--2013年度第1学期)

Hannoi塔

专业xxxxxxxxxx学生姓名xxx

班级xxxx学号xxxx指导教师徐静完成日期2012年9月28日

Hannoi塔

目录.............................................................................................................................................2

1概述........................................................................................................................................3

1.1课程设计目的......................................................................................................31.2课程设计内容......................................................................................................32系统需求分析................................................................................................................................3

2.1系统目标.............................................................................................................32.2主体功能.............................................................................................................32.3开发环境.............................................................................................................43系统概要设计................................................................................................................................4

3.1系统的功能模块划分..........................................................................................43.2系统流程图..........................................................................................................44系统详细设计.................................................................................................................................6

4.1总体功能设计......................................................................................................64.2HANNOIWINDOW类.................................................................................................64.3TOWER类..............................................................................................................74.4DISC类................................................................................................................84.5TOWERPOINT类.....................................................................................................84.6HANDLEMOUSE类...................................................................................................84.7AUTOMOVEDISC类.................................................................................................95测试...............................................................................................................................................10

5.1测试方案...........................................................................................................105.2测试结果...........................................................................................................106小结...............................................................................................................................................12

参考文献...........................................................................................................................................12

附录...........................................................................................................................................14

附录1源程序清单.........................................................................................................................14

Java程序设计课程设计报告(2012)

学生成绩管理系统的设计

1概述

1.1课程设计目的

按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。

要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。

同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。

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座上。

3

Hannoi塔

5)用户在移动盘子的过程中,可以随时单击Hannoi塔界面上提供的按钮,重新开始。

2.3开发环境

JAVA程序设计语言及相应的集成开发环境,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.swing包中Jpanel容器的子类,创建的容器被添加到HannoiWindow窗口的中心。

Tower类的成员变量中有四种重要类型的对象、一个int基本型数据和一个char型数组。

四种类型的对象分别是:

Disc、TowerPoint、HandleMouse、和AutoMoveDisc对象。

Tower类的主要成员的作用将在后面的详细设计中阐述。

3)Disc.java

Disc类是Jbutton的一个子类,创建的对象时Tower容器中的一个按钮,用来表示Tower中的“盘子”。

4)TowerPoint.java

TowerPoint类负责在Tower中创建表示位置的塔点对象。

5)HandleMouse.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

TowerPoint.java、Disc.java、HandleMouse.java和AutoMoveDisc.java。

Hannoi塔除了要编写的6个Java源文件所给出的类外,还需要Java系统提供

的一些重要的类,如JMenuBar、JMenu、JMenuItem和JButton。

Hannoi塔所用到AutoMoveDiscJMenuBar的一些重要的类以及之间的组合关系。

HannoiWindowHandleMouse

Tower

Disc

TowerPoint

图4.1类之间的组合关系4.2HannoiWindow类

图4.2HannoiWindow类的UML图

6

Java程序设计课程设计报告(2012)

4.3Tower类

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所示。

7

Hannoi塔

图4.3Tower创建的容器

4.4Disc类

JButton

DiscTower

disc:

Disc[]number:

int

point:

TowerPoint

Disc():

无类型

setNumber(intn):

void

getNumber():

int

setPoint(TowerPoint):

void

getPoint():

TowerPoint

图4.4Disc类的UML图4.5TowerPoint类

TowerPOintTower

PointA:

TowerPoint[]x,y:

intPointB:

TowerPoint[]haveDisc:

booleanPointC:

TowerPoint[]disc:

DiscEquals(TowerPoint):

booleanTowerPoint(int,int):

无类型

putDisc(Component,Container):

voidisHaveDisc():

boolean

getDiscOnPoint():

DiscsetHaveDisc(boolean):

void

removeDisc(Component,Container):

voidgetX():

int

getY():

int

图4.5TowerPoint类的UNL图4.6HandleMouse类

8

Java程序设计课程设计报告(2012)

MouseListenerMouseMotionListener

HandleMouseTower

HandleMouse:

HandleMousepointA,pointB,pointC:

TowerPointstartPoint,endPoint:

TowerPointcon:

ContainerHandleMouse(Container):

无类型

setPointA(TowerPoint[]):

void

setPointB(TowerPoint[]):

void

setPointC(TowerPoint[]):

void

mousePressed(MouseEvent):

void

mouseDragged(MouseEvent):

void

mouseReleased(MouseEvent):

void图4.6HandleMouse类的UML图

4.7AutoMoveDisc类

ActionListener

AutoMoveDiscTower

autoMoveDisc:

amountOfDisc:

intShowStep:

JTextAreaAutoMoveDiscbStart,bStop,bContinue,bClose:

pointA,pointB,pointC:

TowerPoint[]JButtontowerName:

char[]con:

Containertime:

Timer

moveStep:

StringBuffer

AutoMoveDisc(Containercon):

无类型

setPointA(TowerPoint[]):

void

setPointB(TowerPoint[]):

void

setPointC(TowerPoint[]):

void

actionPerformed(ActionEvent):

void

setTowerName(char[]):

voidsetAmountOfDisc(int):

voidsetMoveStep(int,char,char,char):

voidautoMoveDisc(char,char):

void

图4.7AutoMoveDisc类的UML图

9

Hannoi塔

5测试

5.1测试方案

将前面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小结

两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。

在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。

学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。

课程设计是我们专业课程知识综合应用的实践训练,带着是我们迈向社会,从事职业工作前一个必不少的过程(”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义(我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础

通过这次的课程设计,我对Java这门语言有了更深刻的理解。

其中包括类、对象、接口、继承、方法以及Java语言中的常用包等的使用方法,特别是图形用户界面里各种组件的创建,事件处理等相关知识。

使我对Java语言是一种非常难懂的语言的思想有了极大的改观。

参考文献

[1]耿祥义,张跃平.Java2实用教程(第三版)[M].北京:

清华大学出版社,2006[2]耿祥义.Java课程设计(第三版)[M].北京:

清华大学出版社,2004

12

Java程序设计课程设计报告(2012)[3]张跃平.Java2实用教程实验指导与习题解答(第三版)[M].北京:

清华大学出版社,2004

„„

13

Hannoi塔

附录

附录1源程序清单

1)HannoiWindow.java(主类)

importjavax.swing.*;

importjava.awt.*;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

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

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