JAVA课程设计报告.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《JAVA课程设计报告.pdf》由会员分享,可在线阅读,更多相关《JAVA课程设计报告.pdf(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java 程序设计课程设计报告程序设计课程设计报告( 2011 - 2012 年度第年度第 1 学期学期)HannioHannio 塔塔专业专业计算机科学技术(网络工程)计算机科学技术(网络工程)学生姓名学生姓名马千里马千里班级班级B 计算机计算机 102学号学号1010704213指导教师指导教师徐徐 森森完成日期完成日期2012 年年 1 月月 8 日日Hannoi 塔目目录录目录.21 概述.11.1 课程设计目的.11.2 课程设计内容.12 系统需求分析.12.1 系统目标.12.2 主体功能.12.3 开发环境.13 系统概要设计.23.1 系统的功能模块划分.23.2 系统流程图
2、.24 系统详细设计.25 测试.145.1 测试方案.145.2 测试结果.146 小结.16参考文献.17附录1 源程序清单. 18Java 程序设计课程设计报告(2011)1题题目目1概述1.1 课程设计目的随着社会的进步,我们用来娱乐的游戏世界也越来越丰富,越来越复杂。本程序的 Hannoi 塔游戏不但包括了游戏最基本的功能,而且还能培养用户的逻辑思维能力,同时也给玩家提供了一定的娱乐空间。本游戏还包括一个自动演示搬移Hannoi 塔的功能,此功能能够帮助初次接触此游戏的用户了解此游戏的玩法。1.2 课程设计内容设计 HUI 界面的 Hannoi 塔,用户可以通过拖动鼠标移动各个塔上的
3、盘子,程序也可以自动演示盘子的移动过程2 系统需求分析2.1 系统目标可以正常运行程序,并且按照设计目的预想的完成具体功能。2.2 主体功能(1)设计 GUI 界面的 Hannoi 塔。Hannoi 塔中有三个座,名字分别是 A、B 和 C。初始状态 是 A 座上有五个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在 A 座上。用户可以用鼠标选中盘子,然后通过拖动鼠标来移动该盘子、释放鼠标来放置该盘子。(2)程序要求用户在移动盘子过程中,不允许把大盘子放在小盘子的上面,用户最终要完成的是把 A 座上的全部盘子移动到 B 座或 C 座上。(3)用户可以通过单击 Hannoi 塔界面上提
4、供的按钮,让程序自动完成把 A 座上的盘子全部移动到 B 座或 C 座上。(4)用户在移动盘子的过程中,可以随时单击 Hannoi 塔界面上提供的按钮,重新开始游戏。2.3 开发环境JDK1.6。Hannoi 塔23 系统概要设计3.1 系统的功能模块划分(1)Tower.java(主类)Tower 类负责创建 Hannoi 塔的主窗口, 该类含有 main 方法, Hannoi 塔从类开始执行。Tower 类的成员变量中有两种重要类型的对象:一个 int 基本型数据和一个char 型数组。两种类型的对象分别是:HannoiTower 和 Button 对象 。(2)HannoiTower.j
5、avaHannoiTower 类是 javax.swing 包中 JPanel 容器的子类,创建的容器被添加到Tower 窗口的中心。HannoiTower 类的成员变量有两种重要类型的对象、一个 int基类型数据和一个 char 型数组。两种类型的对象分别是:Disk、TowerPoint。(3)TowerPoint.javaTowerPoint 类负责在 HannoiTower 中创建表示位置的塔点对象。(4)Disk.javaDisk 类是 Button 的一个子类,创建的对象是 HannoiTower 容器中的一个按钮,用来表示 HannoiTower 中的盘子。3.2 系统流程图4
6、系统详细设计Tower 类类Tower 类是javax.swing 包中 Frame 的一个子类, 标明该类的主要成员变量和方法: 成员变量tower 是 HannoiTower 创建的对象。tower 对象是一个容器,刻画了 Hannoi 塔的结构,该对象被添加到窗口的中心。盘子数目是 int 型数据,它的默认值是 5。盘子数目的值是用来确定 tower 对象中“盘子”的数目。TowerHannoiTowerButtonDiskTowerPointJava 程序设计课程设计报告(2011)3towerName 是 char 型数组,长度为 3,其三个单元的默认取值依次是 A、B 和C。tow
7、erName 数组的单元的值用来确定 tower 中三个塔的名字。renew 和 auto 是 Button 创建的按钮对象,名字依次为“重新开始”和“自动演示搬盘子”,renew 和 auto 都将当前窗口注册为自己的 ActionEvent 事件监视器。 方法Tower()是构造方法,负责完成窗口的初始化。main 方法是 Hannoi 塔程序运行的入口方法。actionPerformed(ActionEvent)方法是HannoiTower类实现的ActionListener 接口中的方法。HannoiTower 创建的窗口是 renew 和 auto 两个按钮的 ActionEvent
8、 事件监视器。当用户单击按钮时,窗口将执行 actionPerformed(ActionEvent)方法进行相应的操作。 当用户单击 renew 按钮时,actionPerformed(ActionEvent)方法所进行的操作是保持当前的盘子数目的值, 并让 tower 对象根据盘子数目的值设置其初始状态。当用户单击 auto 按钮时, actionPerformed(ActionEvent)方法所进行的操作是让 tower对象返回其中的 AutoMoveDisc 对象,该对象是一个对话框,用户可以通过对话框让程序自动地移动“盘子”。代码代码(Tower.java)import javax.s
9、wing.*;import java.awt.*;import java.awt.event.*;public class Tower extends Frame implements ActionListener,RunnableHannoiTower tower=null;Button renew,auto=null;char towerName=A,B,C;int 盘子数目,盘宽,盘高;Thread thread;TextArea 信息条=null;public Tower()thread=new Thread(this);盘子数目=5;盘宽=80;盘高=18;信息条=new TextA
10、rea(12,12);信息条.setText(null);Hannoi 塔4tower=new HannoiTower(盘子数目,盘宽,盘高,towerName,信息条);renew=new Button(重新开始);auto=new Button(自动演示搬盘子);renew.addActionListener(this);auto.addActionListener(this);add(tower,BorderLayout.CENTER);add(renew,BorderLayout.SOUTH);add(auto,BorderLayout.NORTH);add(信息条,BorderLay
11、out.EAST);addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0);setVisible(true);setBounds(60,20,670,540);validate();public void actionPerformed(ActionEvent e)if(e.getSource()=renew)if(!(thread.isAlive()this.remove(tower);信息条.setText(null);tower=new HannoiTowe
12、r(盘子数目,盘宽,盘高,towerName,信息条);add(tower,BorderLayout.CENTER);validate();elseif(e.getSource()=auto)if(!(thread.isAlive()thread=new Thread(this);trythread.start(); catch(Exception eee)Java 程序设计课程设计报告(2011)5public void run()this.remove(tower);信息条.setText(null);tower=new HannoiTower(盘子数目,盘宽,盘高,towerName,信
13、息条);add(tower,BorderLayout.CENTER);validate();tower.自动演示搬运盘子(盘子数目,towerName0 ,towerName1,towerName2);public static void main(String args)new Tower(); HannoiTower 类类HannoiTower 类是 javax.swing 包中 JPanel 容器的一个子类,创建的对象 tower是 Tower 窗口的成员之一,被添加到 Tower 窗口的中心位置。 成员变量盘子数目是 int 型数据。盘子数目值用来确定 tower 对象中盘子的数目。盘
14、子是 Disk 型数组,该数组的长度由盘子数目值来确定。Disk 数组的每个单元中存放一个 Disk 对象,依次表明 tower 对象中有怎样多的盘子。towerName 是 char 型数组,长度为 3,其三个单元的默认取值依次是 A、B 和C。Height 的值确定每个盘子的高度。pointA、pointB、pointC 都是 TowerPoint 型数组,三个数组的长度与盘子数目相同,即都是盘子数目。pointA、pointB 和 pointC 的单元都是 TowerPoint 创建对象,分别用来表示 Hannoi 塔中三个座上的塔点。A 座、B 座和 C 座上的三个塔点分别由 poin
15、tA、pointB 和 pointC 中的单元来确定。每个座上的五个塔点都是从座顶到座底依次对应数组的相应单元中的 TowerPoint 对象。 方法HannoiTower(char)是构造方法,负责完成 tower 容器的初始化。tower 容器调用 paintComponent(Graphics)方法绘制出塔点的位置和必要的视图。代码(代码(HannoiTower.java)Hannoi 塔6import javax.swing.*;import java.awt.*;import java.awt.event.*;public class HannoiTower extends JPan
16、el implements MouseListener,MouseMotionListenerTowerPoint point;int x,y;boolean move=false;Disk盘子;int startX,startY;int startI ;int 盘子数目=0;int width,height;char towerName=A,B,C;TextArea 信息条=null;publicHannoiTower(int number,int w,int h,char name,TextArea text)towerName=name;盘子数目=number;width=w;heigh
17、t=h;信息条=text;setLayout(null);addMouseListener(this);addMouseMotionListener(this);盘子= new Disk盘子数目;point=new TowerPoint3*盘子数目;int space=20;for(int i=0;i盘子数目;i+)pointi=new TowerPoint(40+width,100+space,false);space=space+height;space=20;for(int i=盘子数目;i2*盘子数目;i+)pointi=new TowerPoint(160+width,100+spa
18、ce,false);space=space+height;space=20;for(int i=2*盘子数目;i=0;i-)盘子i=new Disk(i,this);盘子i.setSize(tempWidth,height);tempWidth=tempWidth-sub;for(int i=0;i=1)盘子i.set 上方有盘(true);public void paintComponent(Graphics g)super.paintComponent(g);Java 程序设计课程设计报告(2011)7g.drawLine(point0.getX(),point0.getY(),point
19、 盘 子 数 目 -1.getX(),point 盘 子 数 目-1.getY();g.drawLine(point 盘 子 数 目 .getX(),point 盘 子 数 目 .getY(),point2* 盘 子 数 目-1.getX(),point2*盘子数目-1.getY();g.drawLine(point2* 盘 子 数 目 .getX(),point2* 盘 子 数 目 .getY(),point3* 盘 子 数 目-1.getX(),point3*盘子数目-1.getY();g.drawLine(point盘子数目-1.getX()-width,point盘子数目-1.getY
20、(),point3*盘子数目-1.getX()+width,point3*盘子数目-1.getY();int leftx=point盘子数目-1.getX()-width;int lefty=point盘子数目-1.getY();int w=(point3*盘子数目-1.getX()+width)-(point盘子数目-1.getX()-width);int h=height/2;g.setColor(Color.orange);g.fillRect(leftx,lefty,w,h);g.setColor(Color.red);int size=4;for(int i=0;i3*盘子数目;i+
21、)g.fillOval(pointi.getX()-size/2,pointi.getY()-size/2,size,size); g.drawString(+towerName0+ 塔 ,point 盘 子 数 目 -1.getX(),point 盘 子 数 目-1.getY()+30);g.drawString(+towerName1+ 塔 ,point2* 盘 子 数 目 -1.getX(),point 盘 子 数 目-1.getY()+30);g.drawString(+towerName2+ 塔 ,point3* 盘 子 数 目 -1.getX(),point 盘 子 数 目-1.g
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 课程设计 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内