JAVA游戏开发课程设计报告

合集下载

java游戏开发课程设计报告

java游戏开发课程设计报告

3.2 系统设计 3.2.1 系统总体设计
系统功能分析 本系统要用到以下的Java编程技术实现的功能: ① 网络功能:这一程序将由一个服务器程序和一个客户端程序构 成。客户端用来猜测随机字母和随机数的大小。服务器用来产生随机字 母和随机数,来确定是否猜中。 ②多线程功能:当客户端要求与服务器端建立连接时,服务器端就 将用到多线程功能,为每一个建立起来的连接创建一个线程。
7 附录 (1)基本类的程序代码: ① Server类的代码:
import .*; import java.io.*; import java.util.*; import ng.String.*; // 服务器类 public class Server{ // 存储套接字 static DatagramSocket serv; // 存储端口号 static int port; // 存放接收到的数据包中的信息 static byte[] info = new byte[1000]; // 存储接收到的数据包 static DatagramPacket rec = new DatagramPacket(info, info.length); // 存储要发送的数据包 static DatagramPacket snd; // 存储要发送或提取出的信息 static String msg; // 主方法 public static void main(String[] args) { System.out.println("网络益智游戏——服务器"); try { // 将第1个参数转化为端口号 port = (int)Float.parseFloat(args[0]); // 创建套接字
图5 服务器运行界面
在另一台客户端的计算机上打开另一个DOS窗口,输入命令: javac Client.java 进行编译 然后输入命令:java Client 192.168.0.72 6666 运行第客户端程序,Client执行后,windows窗口会显示如图6所 示:

JAVA课程设计报告(小游戏)1

JAVA课程设计报告(小游戏)1

JAVA课程设计报告(小游戏)第一章总体设计1.1本系统的主要功能记忆测试游戏1.2系统包含的类及类之间的关系本系统共包括7个java源文件。

如图1-1所示。

图1-1 类之间的关系2.2 java源文件及其功能1.MemoryGame.java该文件负责创建记忆测试系统的主窗口,该类含有main方法,记忆测试系统从该类开始运行;2.MemoryTestArea.java该文件所包含的MemoryTestArea类是主类MemoryGame窗口的一个JPanel容器,所创建的对象成为测试区,这个测试区被添加到MemoryGame窗口的中心;3.Block.java该文件所包含的Block类是JButton的子类,负责为MemoryTestArea 类中的ArrayList数组表提供Block对象;4.Record.java该文件所包含的Record类是javax.swing包中JDialog对话框的子类,当用户成功单击出相应级别所要求的图标相同的方块后,Record创建的对象负责保存用户的名字和成绩到相应的级别文件中;5.ShowRecordDialog.java该文件所包含的ShowRecordDialog类是javax.swing包中JDialog 对话框的子类,当用户单击查看排行榜时,ShowRecordDialog创建的对象负责显示用户的成绩;6.People.java该文件所包含的People对象封装用户的名字和成绩,以便ShowRecordDialog 对象可以按成绩的高低排列用户。

第二章详细设计2.1主类MemoryGame.java(1)成员变量见表2-1表2-1 主要成员变量(属性)成员变量描述变量类型名称菜单条JMenuBar bar 字符串数组Sring imagename 测试区对象MemoryArea memoryarea 菜单JMenu menuGrade(2)方法见表2-2表2-2 主要方法成员变量描述功能备注MemoryGame() 完成窗口初始化构造函数actionPerformed(实现接口中的方法ActionEvent)Main(String[]) 软件运行的入口(3)源代码见文件×××.java2.2类×××××(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称测试区的行列数int Row,col用户的用时int usedtime 提供存储成绩的界面Record record(2)方法见表2-4表2-4 主要方法方法名功能备注MemoryTestArea() 创建memoryGame对象构造函数run() 显示图标1200毫秒2.3类Block(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称openStateIcon是方块上的图标ImageIcon openStateIcon (2)方法见表2-4表2-4 主要方法方法名功能备注setOpenStateIcon( ImageIcon)Block 对象调用setOpenStateIcon(ImageIcon)方法可也设置它上面的图标getOpenStateIcon()Block 对象调用getOpenStateIcon()方法可以获得它上面的图标2.4类ShowRecordDialog(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称gradeFile是对话框要读取的文件,该文件存储读取的成绩File gradeFile Clear是注册ActionEvent JButton clear事件的按钮showArea文本区显示对话从gradeFile文本中读出的成绩JTextArea showArea(2)方法见表2-4表2-4 主要方法方法名功能备注ShowRecorDialog()ShowRecorDialog()是构造方法,负责创建shoeDialog对象setGradeFile(File)ShowRecorDialog类创建的ShowRecorDialog对话框是主类MemoryGame窗口中的一个成员2.5 People类(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称用户的名字String name用户的用时int time(2)方法见表2-4表2-4 主要方法方法名功能备注getTime()返回timegetName()返回namecompareTo(Object)确定People对象的大小关系2.6 Record类(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称用户的用时int time 用来输入名字的文本框JTextField yourName保存成绩的按钮对象JButton enter 放弃保存成绩的按钮对象JButton cancel 级别文件File gradeFile(2)方法见表2-4表2-4 主要方法方法名功能备注Record()负责创建record对象的构造方法setGradeFile (File)Record类创建的Record对话框是测试区MemoryTextArea 中的一个成员。

小游戏Java课程设计报告书-V1

小游戏Java课程设计报告书-V1

小游戏Java课程设计报告书-V1本篇文章主要介绍小游戏Java课程设计报告书的相关内容。

1. 引言本次小游戏Java课程设计的目的是提高学生对Java语言的掌握能力和实际开发能力。

该小游戏为一款基于Java语言的桌面游戏。

2. 开发环境本次小游戏的开发环境采用Eclipse编译器,并使用Java语言作为主要开发语言。

游戏使用了Swing界面库和各种Java类库来实现不同的功能。

3. 游戏功能分析游戏的主要功能分为三个部分:游戏界面、游戏规则和游戏控制。

3.1 游戏界面游戏的界面主要由几个部分组成:标题栏、游戏画面和控制按钮。

其中,游戏画面包括了地图、玩家、敌人以及游戏元素等。

控制按钮用来控制玩家移动或者其他相关操作。

3.2 游戏规则游戏的规则很简单,玩家需要通过操作控制按钮,使得玩家在地图上移动,同时避免敌人的攻击,并到达游戏终点。

3.3 游戏控制游戏的控制主要包括以下几个方面:1. 玩家移动控制;2. 敌人移动控制;3. 游戏胜负判断;4. 游戏关卡和等级控制。

4. 实现方法和关键技术本次小游戏的实现主要涉及以下几个技术和方法:1. Java GUI编程;2. Java面向对象编程;3. Java事件处理;4. 游戏逻辑设计。

5. 结论通过对小游戏Java课程设计的开发实现,学生对Java编程技术进一步深入学习和掌握,同时提高了学生的合作开发与沟通协作能力。

本次小游戏的开发实践活动是一次有效的教学方法,为以后的Java学习和实践工作奠定了坚实的基础。

基于JAVA的剪刀石头布游戏设计——Java课程设计报告_

基于JAVA的剪刀石头布游戏设计——Java课程设计报告_

目录前言 (2)1剪刀石头布游戏设计思路阐述 (3)2程序概要设计 (3)2.1功能需求分析 (3)2.2性能需求分析 (3)2.3程序框图 (3)2.4 Java类及自定义类相互继承的层次关系 (4)2.4.1 Java类及自定义类的说明 (4)2.4.2类中成员及作用 (5)2.5 程序运行效果及存在的问题 (5)2.5.1运行效果图 (5)2.5.2存在的问题 (6)3程序详细设计 (6)3.1 包的加载 (6)3.2自定义类创建服务器端和客户端 (6)3.3创建程序线程 (7)4测试运行 (9)5源代码清单 (10)6总结 (13)7致谢 (13)参考文献 (13)基于JAVA的剪刀石头布游戏设计摘要:本课程设计使用Java语言,运用 java.io包和包及getInputStream()、getOutputStream()等方法,编写出一个能在dos环境中显示出剪刀石头布游戏界面,启动服务器端线程,运行客户端线程,提示玩家出拳,然后,程序把玩家输入的数据传入到服务器端,通过服务器端线程的函数得出结果,然后再把结果传输到界面上。

关键字:方法;网络编程;多线程;输入输出流前言Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。

用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。

从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet【1】。

在面向对象程序设计中,通过继承可以简化类的定义。

继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。

对象的一个新类可以从现有的类中派生,这个过程称为类继承【2】。

新类继承了原始类的特性,新类称为原始类的派生类,而原始类称为新类的超类。

派生类可以从它的基类那里继承方法和变量,并且类可以修改或增加新的方法使之更适合特殊的需要。

打豆豆游戏java课程设计

打豆豆游戏java课程设计

打豆豆游戏 java课程设计一、课程目标知识目标:1. 让学生掌握Java基础语法,包括变量、数据类型、运算符、控制结构等。

2. 帮助学生理解面向对象编程思想,熟练运用类和对象。

3. 使学生掌握Java图形用户界面(GUI)编程,能使用Swing组件开发打豆豆游戏界面。

技能目标:1. 培养学生运用Java编程解决问题的能力,能独立设计、编写和调试打豆豆游戏代码。

2. 提高学生分析问题的能力,使他们能够根据游戏需求进行模块划分和功能实现。

3. 培养学生的团队协作能力,通过小组合作完成游戏开发。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发他们主动探索新技术的热情。

2. 培养学生克服困难的勇气和信心,使他们勇于面对和解决问题。

3. 培养学生的创新精神,鼓励他们发挥想象力和创造力,设计和实现个性化的打豆豆游戏。

课程性质:本课程为实践性较强的Java课程设计,旨在让学生通过动手实践,掌握Java编程的基本知识和技能。

学生特点:学生已具备一定的Java基础,具有较强的学习能力和动手能力,但对实际项目的开发经验不足。

教学要求:注重理论与实践相结合,充分调动学生的积极性,引导他们主动探究和解决问题。

将课程目标分解为具体的学习成果,以便在教学设计和评估中予以体现。

二、教学内容1. Java基础语法复习:变量、数据类型、运算符、控制结构(条件语句、循环语句)。

2. 面向对象编程:类与对象、封装、继承、多态。

3. Java图形用户界面(GUI)编程:- Swing组件:JFrame、JButton、JPanel等。

- 事件处理:动作事件、鼠标事件、键盘事件。

4. 游戏设计:- 游戏需求分析:功能模块划分、界面设计。

- 游戏逻辑实现:豆豆移动、得分计算、游戏结束判定。

- 游戏界面绘制:使用Swing组件搭建游戏界面。

5. 项目实践:- 分组讨论:小组成员共同分析游戏需求,进行任务分配。

- 代码编写:根据分工,完成各自模块的代码编写。

java课程设计报告2048

java课程设计报告2048

java课程设计报告2048一、教学目标本课程旨在通过2048游戏的项目实践,让学生掌握Java编程的基本概念和方法。

知识目标包括理解Java的基本语法、数据结构、控制流程和类与对象的概念。

技能目标则是培养学生运用Java编程解决实际问题的能力,以及良好的编程习惯和团队协作能力。

情感态度价值观目标则是激发学生对计算机科学的兴趣,培养他们勇于探索和创新的科学精神。

二、教学内容教学内容以《Java编程思想》教材为基础,涵盖Java基本语法、数据类型、控制结构、面向对象编程、异常处理等核心知识点。

课程将从简单的Java程序设计开始,逐步深入到复杂的数据结构和算法,最后通过实现2048游戏,让学生运用所学知识解决实际问题。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。

讲授法用于讲解Java的基本语法和概念,案例分析法用于分析实际编程问题,实验法用于让学生动手实践,巩固所学知识。

通过多样化的教学方法,激发学生的学习兴趣,提高他们的主动性和创新能力。

四、教学资源教学资源包括《Java编程思想》教材、相关参考书籍、网络资源以及实验设备。

教材为学生提供系统的学习材料,参考书籍用于拓展知识视野,网络资源提供丰富的学习资料和实践案例。

实验设备则为学生提供动手实践的机会,让他们在实践中加深对Java编程的理解。

五、教学评估本课程的评估方式包括平时表现、作业、考试和项目实践四个方面。

平时表现主要评估学生的课堂参与度和团队协作能力,作业则评估学生对知识点的理解和应用能力,考试则评估学生的知识掌握程度,项目实践则评估学生的实际编程能力和解决问题的能力。

评估方式将尽量客观、公正,全面反映学生的学习成果。

六、教学安排本课程的教学安排将紧凑合理,确保在有限的时间内完成教学任务。

课程将按照教材的章节顺序进行,每个章节都将有足够的时间进行讲解和实践。

同时,教学安排还会考虑学生的实际情况和需要,如学生的作息时间、兴趣爱好等,尽量使教学安排符合学生的需求。

JAVA游戏开发课程设计报告

JAVA游戏开发课程设计报告

《JAVA游戏开发》课程设计报告题目多线程端口扫描器姓名: 申伶俐学号:专业: 软件技术班级: 软件081计算机科学与技术系2009年6月目录1 设计任务与要求 ............................................................ 错误!未定义书签。

2 系统功能描述 ................................................................ 错误!未定义书签。

2.1功能概述................................................................ 错误!未定义书签。

2.2本系统要实现的功能............................................ 错误!未定义书签。

3 系统总体设计 ................................................................ 错误!未定义书签。

3.1总体分析................................................................ 错误!未定义书签。

3.2界面设置构思图.................................................... 错误!未定义书签。

3.3界面使用设置构思................................................ 错误!未定义书签。

3.4后台设计构思........................................................ 错误!未定义书签。

4 系统详细设计 ................................................................ 错误!未定义书签。

【推荐】魔板游戏Java课程设计报告-可编辑

【推荐】魔板游戏Java课程设计报告-可编辑

GUI应用开发(JA V A)期末报告学号:06姓名:马伟班级:Y122092班老师:谢从华目录目录 (1)1 概述 01.1 课程设计目的 01.2 课程设计内容 02 系统需求分析 02.1 系统目标 02.2 主体功能 02.3 开发环境 03 系统概要设计 (1)3.1 系统的功能模块划分 (1)3.2 系统流程图 (3)4系统详细设计 (3)5 测试 (4)5.1 测试方案 (4)5.2 测试结果 (5)6 小结 (5)附录 (6)附录1 源程序清单 (6)附录1 1.1PUZZLEFRAME模块源程序 (6)附录1.2 PUZZLEPAD模块源程序 (8)附录1.3 SQUAREPOINT类模块源程序 (15)模板游戏的设计1 概述1.1 课程设计目的利用所学高级语言的语法特性,结合数据结构算法、网络知识、文件处理和数据库等知识完成综合题目的设计和代码实现,并培养锻炼分析程序、撰写报告等能力。

1.2 课程设计内容(1)设计一款经典的智力游戏,魔板游戏。

魔板由3*3或4*4个格子组成。

对于3*3魔板,在前8个格子里随即放置8个编号1-8的方块,最后一个格子是未放置方块的空格子;对于4*4的魔板,在前15格子里随即放置15编号1-15的方块,最后一个格子是未放置方块的空格子。

(2)用鼠标单击任何与空格子水平或垂直相邻的方块可以把该方块移入空格子,而当前方块移动之前所在的格子成为空格子。

通过不断地移动方块可以将方块一行一行地按数字顺序排好,例如,对于3*3格子组成的魔板,要求方块最后排列的顺序如图6.1所示。

(3)魔板游戏也可以使用图像来代替数字。

例如,对于4*4的魔板,将一幅图像分成4*4幅小图像,除去最后一幅小图像(图像的右下角),将其余各幅小图像打乱顺序后放在魔板方块上,最终目标是通过移动方块恢复原始图像(不包括图像的右下角)。

2 系统需求分析2.1 系统目标设计GUI界面的魔板游戏程序。

java_扫雷游戏课程设计报告(共5篇)

java_扫雷游戏课程设计报告(共5篇)

java_扫雷游戏课程设计报告(共5篇)第一篇:java_扫雷游戏课程设计报告一、设计任务与要求扫雷游戏的基本要求Windows 2000/XP系统提供的扫雷游戏是一个很有趣的游戏。

本章的课程设计使用Java语言编写一个与其类似的扫雷游戏。

具体要求如下:(1)扫雷游戏分为初级、中级和高级三个级别,扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。

单击游戏菜单可以选择“初级”、“中级”和“高级”或“查看英雄版”。

(2)选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器。

(3)用户要揭开某个方块,可单击它。

若所揭方块下有泪,用户便输了这一局,若所揭方块下五雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。

(4)如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。

用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。

(5)扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。

(6)用户可以选择标记疑问的方块,用可以勾选游戏菜单下的标记(或者用快捷键alt+G 然后M)即可,此时双击右键并可出现“?”标记。

另有颜色选项,当用户勾选此项时,游戏将以最低图像像素来显示。

(7)如果用户需要即使提示声,并可选中声音选项,此时将听到计时的卡塔声。

当用户点中雷时,将有爆炸声产生,胜利时,将有凯旋的旋律播放,此时企鹅出现欢悦表情。

二、需求分析1、扫雷游戏概述扫雷是一种具有迷惑性的对记忆和推理能力的简单测试,它是长久以来最受欢迎的Windows游戏之一。

游戏目标:找出空方块,同时避免触雷。

2、扫雷的操作方法游戏主区域由很多个方格组成。

使用鼠标随机点击一个方格,方格即被打开并显示出方格中的数字;方格中数字则表示其周围的8个方格隐藏了几颗雷;如果点开的格子为空白格,即其周围有0颗雷,则其周围格子自动打开。

java游戏课程设计报告

java游戏课程设计报告

java游戏课程设计报告一、课程目标知识目标:1. 让学生掌握Java语言的基本语法和程序结构,理解面向对象编程的核心概念;2. 使学生了解游戏开发的基本流程,掌握游戏设计的基本框架;3. 帮助学生掌握Java游戏编程中常用的数据结构和算法。

技能目标:1. 培养学生运用Java语言进行游戏开发的能力,能够独立设计和编写简单的Java游戏;2. 提高学生分析问题和解决问题的能力,能够在游戏开发过程中灵活运用所学知识;3. 培养学生的团队协作能力,学会与他人合作共同完成游戏项目。

情感态度价值观目标:1. 激发学生对编程和游戏开发的兴趣,培养其探索精神和创新意识;2. 培养学生积极向上的学习态度,养成自主学习、合作学习的良好习惯;3. 引导学生正确对待游戏,认识到游戏在娱乐和学习中的积极作用,树立正确的价值观。

课程性质:本课程为选修课程,适用于对Java编程和游戏开发感兴趣的学生。

学生特点:学生具备一定的Java编程基础,对游戏开发有浓厚的兴趣,具有较强的动手能力和创新意识。

教学要求:结合学生特点和课程性质,注重实践操作,以项目为导向,培养学生的实际动手能力和团队协作能力。

在教学过程中,关注学生的个体差异,提供个性化的指导和帮助,确保课程目标的实现。

通过本课程的学习,使学生能够掌握Java游戏编程的基本技能,为后续深入学习奠定基础。

二、教学内容1. Java基本语法和程序结构复习:包括变量、数据类型、运算符、控制结构等,涉及教材第一章至第三章内容。

2. 面向对象编程基础:类与对象、构造方法、继承与多态、接口与实现,涉及教材第四章至第六章内容。

- 游戏设计基本框架:游戏循环、游戏状态、场景切换等。

3. Java游戏编程常用数据结构和算法:数组、链表、堆栈、队列、排序和搜索算法等,涉及教材第七章至第八章内容。

4. Java游戏开发实践:- 游戏项目策划:学习如何撰写游戏设计文档,明确游戏类型、玩法、角色设定等。

java迷宫课程设计报告

java迷宫课程设计报告

java迷宫课程设计报告一、教学目标本课程的教学目标是使学生掌握Java编程基础,能够运用Java语言设计并实现一个迷宫游戏。

具体分为以下三个部分:1.知识目标:学生需要掌握Java语言的基本语法、数据结构、控制流程和面向对象编程思想。

2.技能目标:学生能够运用Java语言独立设计并实现一个迷宫游戏,培养学生的编程能力和问题解决能力。

3.情感态度价值观目标:通过完成迷宫游戏的设计与实现,培养学生对编程的兴趣,增强学生自信心,培养学生的创新精神和团队合作意识。

二、教学内容本课程的教学内容主要包括Java语言的基本语法、数据结构、控制流程和面向对象编程思想。

具体安排如下:1.第一章:Java语言概述,介绍Java语言的发展历程、特点和应用领域。

2.第二章:Java基本语法,包括变量、数据类型、运算符、表达式等。

3.第三章:控制流程,包括条件语句、循环语句等。

4.第四章:数据结构,包括数组、链表、栈和队列等。

5.第五章:面向对象编程,包括类、对象、继承、多态和封装等。

6.第六章:迷宫游戏设计与实现,运用所学知识设计并实现一个迷宫游戏。

三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括:1.讲授法:讲解Java语言的基本语法、数据结构、控制流程和面向对象编程思想。

2.案例分析法:通过分析实际案例,使学生更好地理解和掌握Java编程技巧。

3.实验法:安排适量实验,让学生亲自动手编写代码,培养学生的编程能力和问题解决能力。

4.小组讨论法:学生进行小组讨论,分享学习心得和经验,培养学生的团队合作意识。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《Java编程基础》,作为主要学习资料,为学生提供系统的Java编程知识。

2.参考书:《Java核心技术》,为学生提供更深入的Java编程知识。

3.多媒体资料:制作教学PPT,生动形象地展示Java编程知识点。

Java扫雷游戏课程设计实训报告

Java扫雷游戏课程设计实训报告

Java应用技术实训报告一.总体设计本系统共包括3个java源文件和4个图像文件。

1•类之间的关系如图1.1所示。

图1.1类之的关系2.java源文件及其功能如表1所示。

3.图像文件Bomb.gif:地雷方块上的图标。

question.gif:疑惑探雷是否正确。

bomb_big.gif:触雷时方块上的图标。

flag.gif:探雷标记。

二、详细设计1.主类Main(1)成员变量(见表2)(2)成员变量(见表3)(3)源代码见文件Main.java import java.awt.*;import java.awt.event.*;import javax.swing.*;/*主类*/public class Main(public static void main(String args[]) ((new MainBomb()).show();))2.挖雷游戏MainBomb(1)成员变量(见表4)(2)方法见(表5)(3)源代码见文件MainBomb.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;/*窗口及算法实现类*/class MainBomb extends JFrame implements ActionListener,MouseListener(public JTextField text;public Label nowBomb,setBomb;public int BlockNum,BombNum;//当前方块数当前雷数public Icon icon_bomb = new ImageIcon("Bomb.gif");//踩雷public Icon icon_bomb_big = new ImageIcon("bomb_big.gif"); //踩雷标记public Icon icon_flag = new ImageIcon("flag.gif");//雷标记public Icon icon_question = new ImageIcon("question.gif"); //疑惑是否有雷public JButton start = new JButton("开始");public Panel MenuPamel = new Panel();public Panel mainPanel = new Panel();public Bomb[][] bombButton;/*界面设计*/public MainBomb()super("成型04-2李超JAVA课程设计");BlockNum = 64;BombNum = 10;Container c=getContentPane();c.setBackground(Color.gray);c.setLayout(new BorderLayout());text=new JTextField("10 ",3);nowBomb = new Label(%前雷数"+" "+BombNum+"");setBomb= new Label("设置地雷数");start.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){BombNum = Integer.parseInt(text.getText().trim());if(BombNum >= 10 && BombNum < 50 )replay();else{JOptionPane msg = new JOptionPane();JOptionPane.showMessageDialog(null,"您设置的地雷数太多了,请重设!","错误",2);))});MenuPamel.add(setBomb);MenuPamel.add(text);MenuPamel.add(start);MenuPamel.add(nowBomb);c.add(MenuPamel,"North");mainPanel.setLayout(new GridLayout( (int)Math.sqrt(BlockNum)(int)Math.sqrt(BlockNum)));bombButton=new Bomb[ (int)Math.sqrt(BlockNum) ][]; for(int i = 0 ; i < (int)Math.sqrt(BlockNum) ; i++)(bombButton[ i ]=new Bomb[ (int)Math.sqrt(BlockNum)]; )for(int i = 0 ; i < (int)Math.sqrt(BlockNum) ; i++ )for(int j = 0 ; j < (int)Math.sqrt(BlockNum) ; j++ )(bombButton[ i ][ j ]=new Bomb(i,j);bombButton[ i ][ j ].setForeground( Color.gray);bombButton[ i ][ j ].addActionListener(this);bombButton[ i ][ j ].addMouseListener(this);)for(int i = 0 ; i < (int)Math.sqrt(BlockNum) ; i++ )for(int j = 0 ; j < (int)Math.sqrt(BlockNum) ; j++ )mainPanel.add(bombButton[ i ][ j ]);c.add(mainPanel,"Center");startBomb();setSize(400,400);setLocation(350,200);setResizable(false);)/*布雷*/public void startBomb()for(int i=0;i<BombNum;i++)(int x =(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1)); int y =(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1));if(bombButton[ x ][ y ].isBomb==true)i--;elsebombButton[ x ][ y ].isBomb=true ;))/*重新开始*/public void replay()(nowBomb.setText("当前雷数"+" "+BombNum+"");for(int i = 0 ; i < (int)Math.sqrt(BlockNum) ; i++)for(int j = 0 ; j < (int)Math.sqrt(BlockNum) ; j++)(bombButton[ i ][ j ].isBomb=false;bombButton[ i ][ j ].isClicked=false;bombButton[ i ][ j ].setEnabled(true);bombButton[ i ][ j ].setText("");bombButton[ i ][ j ].setIcon(null);)startBomb();)/*是否挖完了所有的雷*/public void isWin()(int findBomb=0; //找至帕勺地雷数for(int i=0;i< (int)Math.sqrt(BlockNum); i++)for(int j=0;j< (int)Math.sqrt(BlockNum ); j++)(if(bombButton[ i ][ j ].isBomb == true && bombButton[ i ][ j ].isRight==true)findBomb++;)if( findBomb == Integer.parseInt(text.getText().trim()))(JOptionPane msg = new JOptionPane();JOptionPane.showMessageDialog(this,"您挖完了所有的雷,您胜利了!",, 您胜利了”,2);))/*计算方块周围雷数*/public void CountRoundBomb()(for (int i=0; i< (int)Math.sqrt(BlockNum); i++)(for (int j = 0; j < (int)Math.sqrt(BlockNum); j++)(int count = 0;//当需要检测的单元格本身无地雷的情况下,统计周围的地雷个数if (bombButton[ i ][ j ].isBomb != true) {if ( (i - 1 >= 0) && (j - 1 >= 0)) {if (bombButton[i - 1][j - 1].isBomb == true) {count += 1; //检测左上方空格是否是地雷))if ( (i - 1 >= 0)) {if (bombButton[i - 1][ j ].isBomb == true) {count += 1; //检测上方空格是否为地雷))if ( (i - 1 >= 0) && (j + 1 <= (int)Math.sqrt(BlockNum)-1)) { if (bombButton[i - 1][j + 1] .isBomb == true) {count += 1; //检测右上方是否为地雷))if ( (j - 1 >= 0)) {if (bombButton[ i ][j - 1] .isBomb == true) {count += 1; //检测左边是否为地雷)if ( (i >= 0) && (j + 1 <= (int)Math.sqrt(BlockNum)-l)) {if (bombButton[ i ][j + 1].isBomb == true) {count += 1; //右边))if ( (j - 1 >= 0) && (i + 1 <= (int)Math.sqrt(BlockNum)-1)) {if (bombButton[i + 1][j - 1].isBomb == true) {count += 1; //左下))if ( (i + 1 <= (int)Math.sqrt(BlockNum)-1)) {if (bombButton[i + 1][ j ].isBomb == true) {count += 1; //下))if ( (j + 1 <= (int)Math.sqrt(BlockNum)-1) && (i + 1 <= Math.sqrt(BlockNum)-1)) {if (bombButton[i + 1][j + 1].isBomb == true) {count += 1; //右下))bombButton[ i ][ j ].BombRoundCount = count;))/**当选中的位置为空,则翻开周围的地图**/public void isNull(Bomb[][] bombButton,Bomb ClickecButton)(int i,j;i=ClickecButton.num_x;j=ClickecButton.num_y;if (ClickecButton.isBomb==true) {)else {if ( (i - 1 >= 0) && (j - 1 >= 0)) { //检测左上方空格是否是空if (bombButton[i - 1][j - 1].isBomb == false && bombButton[i - 1][j -1].isClicked == false && bombButton[i - 1][j - 1].isRight == false) {bombButton[i-1][j-1].setText((bombButton[i-1][j-1].BombRoundCount)+"" ); bombButton[i - 1][j - 1].setEnabled(false);bombButton[i - 1][j - 1].isClicked=true;))if ( (i - 1 >= 0)) { //检测上方空格是否为空if (bombButton[i-1][ j].isBomb == false && bombButton[i - 1][ j ].isClicked == false && bombButton[i - 1][ j ].isRight == false){bombButton[i-1][ j].setText((bombButton[i- 1][ j ].BombRoundCount)+"");bombButton[i - 1][ j ].setEnabled(false);bombButton[i - 1][ j ].isClicked=true;)if ( (i - 1 >= 0) && (j + 1 <= ((int)Math.sqrt(BlockNum)-l)) ) { //检测右上方是否为空if (bombButton[i - 1][j + 1] .isBomb == false && bombButton[i - 1][j + 1].isClicked == false && bombButton[i - 1][j + 1].isRight == false){bombButton[i - 1][j + 1].setText((bombButton[i - 1][j + 1].BombRoundCount)+"");bombButton[i - 1][j + 1].setEnabled(false);bombButton[i - 1][j + 1].isClicked=true;))if ( (j - 1 >= 0)) { //检测左边是否为空if (bombButton[ i ][j - 1].isBomb == false && bombButton[ i ][j -1].isClicked == false && bombButton[ i ][j - 1].isRight == false) {bombButton[ i ][j - 1].setText((bombButton[ i ][j - 1].BombRoundCount)+"");bombButton[ i ][j - 1].setEnabled(false);bombButton[ i ][j - 1].isClicked=true;))if ( (i >= 0) && (j + 1 <= ((int)Math.sqrt(BlockNum)-1)) ) {/检测右边空格是否是空if (bombButton[ i ][j + 1].isBomb == false && bombButton[ i ][j +1].isClicked == false && bombButton[ i ][j + 1].isRight == false) {bombButton[ i ][j + 1].setText((bombButton[ i ][j + 1].BombRoundCount)+"");bombButton[ i ][j + 1].setEnabled(false);bombButton[ i ][j + 1].isClicked=true;))if ( (j - 1 >= 0) && (i + 1 <= ((int)Math.sqrt(BlockNum)-1)) ) { //检测左下空格是否是空if (bombButton[i + 1][j - 1].isBomb == false && bombButton[i + 1][j - 1].isClicked == false && bombButton[i + 1][j - 1].isRight == false) {bombButton[i + 1][j - 1].setText((bombButton[i + 1][j - 1].BombRoundCount)+"");bombButton[i + 1][j - 1].setEnabled(false);bombButton[i + 1][j - 1].isClicked=true;))if ( (i + 1 <= ((int)Math.sqrt(BlockNum)-1)) ) { //检测下边空格是否是空if (bombButton[i + 1][ j ].isBomb == false && bombButton[i +1][ j ].isClicked == false && bombButton[i + 1][ j ].isRight == false) {bombButton[i + 1][ j ].setText((bombButton[i +1][ j ].BombRoundCount)+"");bombButton[i + 1][ j ].setEnabled(false);bombButton[i + 1][ j ].isClicked=true;))if ( (j + 1 <= ((int)Math.sqrt(BlockNum)-1) ) && (i + 1 <= ((int)Math.sqrt(BlockNum)-1)) ) {//检测右下边空格是否是空if (bombButton[i + 1][j + 1].isBomb == false && bombButton[i + 1][j + 1].isClicked == false && bombButton[i + 1][j + 1].isRight == false){bombButton[i+1][j+1].setText((bombButton[i+1][j+1].BombRoundCo unt)+"");bombButton[i + 1][j + 1].setEnabled(false);bombButton[i + 1][j + 1].isClicked=true;))if ( (i - 1 >= 0) && (j - 1 >= 0))//检测左上isNull(bombButton,bombButton[i - 1][j - 1]);if ( (i - 1 >= 0))isNull( bombButton,bombButton[i - 1][ j ]);//检测上方if ( (i - 1 >= 0) && (j + 1 <= (int)Math.sqrt(BlockNum)-1))isNull( bombButton,bombButton[i - 1][j + 1]);//检测右上if ( (j - 1 >= 0))isNull(bombButton,bombButton[i][j - 1]);//检测左边if ( (i >= 0) && (j + 1 <= ((int)Math.sqrt(BlockNum)-1)))isNull(bombButton,bombButton[i][j + 1]);//检测右边if ( (j - 1 >= 0) && (i + 1 <= ((int)Math.sqrt(BlockNum)-1)))isNull(bombButton,bombButton[i + 1][j - 1]); //检测左下if ( (i + 1 <= ((int)Math.sqrt(BlockNum)-1)) ) //检测下isNull(bombButton,bombButton[i + 1][ j ]);if ( (j + 1 <= ((int)Math.sqrt(BlockNum)-1)) && (i + 1 <= ((int)Math.sqrt(BlockNum)-1)) )//检测右下isNull(bombButton,bombButton[i + 1][j + 1]);))public void actionPerformed(ActionEvent e)(CountRoundBomb();if(((Bomb)e.getSource()).isBomb==false&&((Bomb)e.getSource()).isClicked==false)( ((Bomb)e.getSource()).setText(( ((Bomb)e.getSource()).BombRoundCount) +"”);((Bomb)e.getSource()).isClicked=true;((Bomb)e.getSource()).setIcon(null);((Bomb)e.getSource()).setEnabled(false);if((((Bomb)e.getSource()).BombRoundCount) == 0)isNull(bombButton,(Bomb)e.getSource());isWin();)else if(((Bomb)e.getSource()).isBomb == true)(for(int i=0;i<(int)Math.sqrt(BlockNum);i++)for(int j=0;j<(int)Math.sqrt(BlockNum);j++)(if(bombButton[ i ][ j ].isBomb == true)bombButton[ i ][ j ].setIcon(icon_bomb);)((Bomb)e.getSource()).setIcon(icon_bomb_big);JOptionPane msg = new JOptionPane();JOptionPane.showMessageDialog(this,"你踩至。

Java课程设计报告-超级马里奥游戏的设计与开发

Java课程设计报告-超级马里奥游戏的设计与开发

超级马里奥游戏的设计与开发目录1.课程设计要求.................................................. - 2 -1.1课设题目................................................. - 2 -1.2课设目的................................................. - 2 -1.3开发环境................................................. - 2 -1.4课设内容................................................. - 2 -1.4.1游戏介绍........................................... - 2 -1.4.2开发流程........................................... - 4 -2.设计过程...................................................... - 5 -2.1总体设计................................................. - 5 -2.1.1所用类的设计....................................... - 5 -2.1.2功能设计........................................... - 5 -2.2详细设计................................................. - 5 -2.2.1窗体的设计......................................... - 6 -2.2.2游戏场景的开发..................................... - 6 -2.2.3障碍物的开发....................................... - 6 -2.2.4将障碍物添加到场景中去............................. - 7 -2.2.5马里奥的开发....................................... - 7 -2.2.6将马里奥对象加入到窗体中........................... - 8 -2.2.7将马里奥与障碍物进行设置........................... - 8 -2.2.8敌人的开发......................................... - 9 -2.2.9敌人放到场景中..................................... - 9 -2.2.10其他游戏相关..................................... - 10 -3.具体实现..................................................... - 10 -3.1窗体类.................................................. - 10 -3.2马里奥类................................................ - 11 -3.3场景类.................................................. - 14 -3.4障碍物类................................................ - 15 -3.5敌人类.................................................. - 15 -4.调试过程..................................................... - 17 -4.1系统测试................................................ - 17 -4.2出现的问题和解决的方法.................................. - 19 -5.小结......................................................... - 20 -6.参考资料..................................................... - 20 -1.课程设计要求1.1课设题目超级马里奥游戏的设计与开发1.2课设目的《Java程序设计》课程是网络工程专业的一门专业必修课程,特针课程进行为期两周的实践教学,旨在提升本专业学生对此课程中的理论知识的综合应用能力、提高学生的逻辑思维能力、软件开发能力。

java制作游戏的课程设计

java制作游戏的课程设计

java制作游戏的课程设计一、课程目标知识目标:1. 让学生掌握Java语言的基本语法和面向对象编程思想;2. 让学生了解游戏开发的基本流程和关键环节;3. 让学生掌握简单的图形绘制和动画实现方法;4. 让学生理解事件监听和处理机制在游戏中的应用。

技能目标:1. 培养学生运用Java语言编写简单游戏的能力;2. 培养学生独立分析问题和解决问题的能力;3. 培养学生运用所学知识进行创新设计和实践的能力。

情感态度价值观目标:1. 激发学生对编程和游戏开发的兴趣,提高学习积极性;2. 培养学生的团队合作精神和沟通能力,增强协作意识;3. 引导学生关注游戏的社会影响,树立正确的价值观。

课程性质:本课程为选修课,面向有一定Java基础的学生,以实践为主,注重培养学生的编程能力和创新意识。

学生特点:学生具备基本的Java编程知识,对游戏开发有浓厚兴趣,但缺乏实际操作经验。

教学要求:结合学生特点和课程性质,采用案例教学、分组合作、实践操作等方式,使学生在掌握基本知识的基础上,提高实际操作能力和创新能力。

通过分解课程目标,确保学生在课程结束后能够独立完成一个简单游戏的开发。

二、教学内容1. Java基本语法回顾:变量、数据类型、运算符、控制流程(教材第1章)2. 面向对象编程基础:类与对象、继承与多态、接口与实现(教材第2章)3. Java图形用户界面(GUI):Swing组件、事件处理、布局管理器(教材第3章)4. 游戏开发基本概念:游戏循环、游戏状态、资源管理(教材第4章)5. 图形绘制与动画实现:Canvas绘图、双缓冲技术、帧动画(教材第5章)6. 游戏对象与碰撞检测:游戏对象设计、碰撞检测算法(教材第6章)7. 游戏音效与背景音乐:音频播放、音效处理(教材第7章)8. 游戏案例分析与实战:选取合适的小游戏案例,进行讲解和实战操作(教材实例)教学安排与进度:第1周:Java基本语法回顾,面向对象编程基础第2周:Java图形用户界面(GUI)第3周:游戏开发基本概念,图形绘制与动画实现第4周:游戏对象与碰撞检测第5周:游戏音效与背景音乐第6-8周:游戏案例分析与实战,分组合作完成一个简单游戏开发教学内容与教材紧密关联,确保学生在掌握基础知识的同时,能够学以致用,完成游戏开发实践。

jave课程设计报告

jave课程设计报告

jave课程设计报告一、教学目标本课程的教学目标是使学生掌握Java编程的基本语法和结构,能够运用Java 语言解决简单的编程问题。

具体分为以下三个部分:1.知识目标:学生需要掌握Java的基本语法、数据类型、控制结构、函数、数组、字符串等基本概念。

2.技能目标:学生能够熟练使用Java开发工具,如Eclipse、IntelliJIDEA等,能够编写、调试和运行Java程序。

3.情感态度价值观目标:培养学生对编程的兴趣和热情,使学生能够主动探索新知识,提高自主学习的能力。

二、教学内容本课程的教学内容主要包括Java的基本语法、数据类型、控制结构、函数、数组、字符串等基本概念,以及相关的编程实践。

具体安排如下:1.第一章:Java概述,介绍Java的发展历程、特点和应用领域。

2.第二章:Java基础语法,讲解变量、数据类型、运算符、输入输出等基本概念。

3.第三章:控制结构,讲解条件语句、循环语句等控制结构的使用。

4.第四章:函数和数组,讲解函数的定义和调用、数组的概念和操作。

5.第五章:字符串和字符,讲解字符串的创建、操作和字符的处理。

6.第六章:编程实践,综合运用所学知识解决实际问题。

三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:教师讲解基本概念和语法,引导学生理解并掌握知识点。

2.讨论法:教师学生分组讨论,促进学生之间的交流和合作。

3.案例分析法:教师通过分析典型案例,引导学生运用所学知识解决实际问题。

4.实验法:学生动手编写和调试程序,巩固所学知识,提高编程能力。

四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料和实验设备。

1.教材:选用权威、实用的Java编程教材,如《Java核心技术》等。

2.参考书:提供相关领域的参考书籍,如《Java编程思想》等。

3.多媒体资料:制作精美的PPT课件,为学生提供直观的学习材料。

java坦克大战课程设计报告

java坦克大战课程设计报告

《Java语言程序设计》课程设计报告题目:坦克大战专业:软件工程学号:姓名:指导教师:成绩:2011年 12 月18日目录一、系统分析 (3)可行性分析 (3)需求分析 (3)二、概要设计 (4)项目规划.................................................................................................... 错误!未定义书签。

工作流程图................................................................................................ 错误!未定义书签。

开发及运行环境 (5)三、详细设计与算法实现 (5)游戏主窗口 (5)游戏数据的输出 (5)封装的游戏元素 (8)四、测试.......................................................................................................... 错误!未定义书签。

测试环境 (9)测试结果 (9)五、软件截图 (10)六、总结.......................................................................................................... 错误!未定义书签。

七、参考文献 (11)一、系统分析可行性分析1.技术可行性软件使用swing、GUI、Socket、面向对象设计等技术实现,这些技术均已是非常成熟的技术,之前已有相当多使用这些技术的成功案例,故现使用这些技术是可行的。

2.经济可行性本软件为免费软件,将免费提供软件的下载、运行和维护服务,软件暂无收入,待公布之后随着使用者越来越多,将添加相应的广告、服务,从而增加收入,若使用者寥寥无几,将再次分析是否重新策划软件或者放弃开发,以减少损失。

java编程小游戏课程设计

java编程小游戏课程设计

java编程小游戏课程设计一、课程目标知识目标:1. 学生能理解并掌握Java编程基础,包括数据类型、变量、运算符和简单控制流程。

2. 学生能运用面向对象编程思想,设计并实现游戏中的角色和物品类。

3. 学生能运用Java异常处理机制处理游戏中可能出现的错误。

技能目标:1. 学生能够独立设计并编写简单的Java小游戏,展示故事情节和互动性。

2. 学生通过项目实践,掌握使用集成开发环境(IDE)进行代码编写、调试和运行的能力。

3. 学生能够运用所学的Java知识解决实际编程问题,具备初步的编程调试技巧。

情感态度价值观目标:1. 学生通过游戏编程激发对计算机编程的兴趣,培养自主学习能力和创新思维。

2. 学生在团队协作中培养沟通能力和集体荣誉感,学会共同解决问题。

3. 学生通过编程实践,认识到编程对生活的影响,增强社会责任感。

课程性质:本课程为实践性强的Java编程课程,通过设计小游戏的方式,使学生在实践中掌握编程知识。

学生特点:学生具备一定的Java编程基础,对游戏有浓厚兴趣,喜欢动手实践。

教学要求:课程注重理论与实践相结合,鼓励学生主动探索,培养解决问题的能力。

教学过程中,关注学生个体差异,提供个性化指导。

通过课程学习,学生能够达到以上设定的知识、技能和情感态度价值观目标,为后续学习奠定基础。

二、教学内容本课程教学内容紧密结合课程目标,确保学生能够系统地学习和掌握Java编程小游戏的设计与开发。

1. Java基础复习:回顾课本中数据类型、变量、运算符、控制流程等内容,为游戏编程打下基础。

- 教材章节:第1章 Java语言概述,第2章 基本数据类型与表达式,第3章 流程控制。

2. 面向对象编程:学习类与对象的概念,掌握封装、继承、多态等特性,应用于游戏角色和物品的设计。

- 教材章节:第4章 类与对象,第5章 继承与多态。

3. 异常处理:学习Java异常处理机制,编写健壮的游戏代码。

- 教材章节:第6章 异常处理。

JAVA火柴小游戏课程设计报告

JAVA火柴小游戏课程设计报告
mainPanel.add(compBtn);//按钮添加到主面板上
高 20
compTxt = new JLabel();//定义一个空标签 compTxt.setBounds(10, 70, 400, 20);//设置空标签的位置,左上角坐标为(10,70),大小为宽 400,
mainPanel.add(compTxt);//将空标签加到主面板上
高 20
JButton btn11 = new JButton("Reset");//定义一个重新来的按钮 btn11.addActionListener(new ActionListener()//为“Reset”添加行为事件监听器,采用匿名类的方式 {
public void actionPerformed(ActionEvent e)//实现监听器中的方法 {
系统设计目的.............................1 系统实现思路..............................2 系统详细设计..............................3 系统调试运行..............................10 课程设计心得.............................13 参考文献.................................13 附录...............................14
public class ha//定义一个公共的主类 Test {
public static void main(String[] args)//定义主方法 main {
new ha();//调用 Test 类的构造方法 Test() }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《JAVA游戏开发》课程设计报告题目多线程端口扫描器姓名: 申伶俐学号: 081011136专业: 软件技术班级: 软件081计算机科学与技术系2009年6月目录1 设计任务与要求 (4)2 系统功能描述 (4)2.1功能概述 (4)2.2本系统要实现的功能 (4)3 系统总体设计 (5)3.1总体分析 (5)3.2界面设置构思图 (5)3.3界面使用设置构思 (5)3.4后台设计构思 (6)4 系统详细设计 (7)4.1界面设计 (7)4.2界面设计图 (7)4.3后台设计 (8)5 实现与测试 (11)5.1运行要求与环境 (11)5.2运行程序流程图 (12)5.3运行界面 (13)6 设计总结 (15)参考文献 (16)附件 (16)多线程端口扫描器1 设计任务与要求加深对《JA V A游戏开发》课程所学知识的理解,进一步巩固Java语言的语法规则。

分析系统的可行性,让系统有一个明确的方向,使开发更具合理性,并能分析出系统的具体流程,为后面的开发做好铺垫。

明确本次课程设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。

通过编写一个基于Java的应用系统综合实例,来掌握Java 语言编程技巧。

并学会编制结构清晰、风格良好的Java语言程序,从而具备解决综合性实际问题的能力,学会使用Java编程工具,如EditPlus,Eclipse等。

2 系统功能描述2.1 功能概述多线程端口扫描器是实现计算机的端口的扫描,只要在在前台设置好所要扫描的IP、起始端口、结束端口以及所要用到的线程数,点击扫描,就可以扫描到所输入IP 地址主机的开放端口,并显示在主窗体中;点击退出,则可以退出该程序。

IP设置应为所在主机的IP地址,起始端口和结束端口应为0~65535之间的一个数,且起始端口应小于结束端口的大小。

线程数为0~200之间的一个数。

点击开始后就会运行,直到扫描完毕显示出开放端口,如果没有开放端口,则只显示扫描完毕。

2.2 本系统要实现的功能①端口扫描功能:扫描开放的端口,并将扫描到的开放端口号送到前台。

②图像显示功能:显示界面图形。

③多线程功能:当客户端要求与服务器端建立连接时,服务器端就将用到多线程功能,为每一个建立起来的连接创建一个线程。

④异常抛出功能:对于明显的错误,能提示出错误的类型并结束程序的运行。

3 系统总体设计3.1 总体分析本程序分为前后台系统,后台系统用于扫描主机开放端口,并把节扫描的数据送至前台窗口显示;前台要显示扫描的结果,所以应为一个窗口,这个窗口应能够设置主机的IP地址,设置端口的开始端口、结束端口和线程数,并且还能够显示扫描的状态。

在中央是显示结果的窗体。

本程序还应能够有控制扫描的状态命令,附加设置最小化和关闭按钮。

3.2 界面设置构思图图1 系统构思图3.3 界面使用设置构思当出现如图所示的界面时,填写好要扫描的IP地址,需要扫描的端口范围和线程数,单击命令提示按钮就可以开始扫描,扫描结果就会显示在中间的扫描结果显示区域,在扫描状态显示区就会显示是否扫描完毕。

流程图如下:图2 系统构思流程图3.4 后台设计构思后台系统使用Scanner和Scan类,创建前台布局和创建扫描端口、事件处理,并且能对简单的错误进行判断,显示错误原因。

调用数据处理包,处理异常情况;调用皮肤包,美化显示窗口。

4 系统详细设计4.1 界面设计本程序界面图形设计要能清楚显示扫描后的结果,并且能很好的体现出界面的整洁大方,但并不失去吸引人眼球的画面,所以在做界面的时候考虑了界面的色彩,并且添加了皮肤,界面上面的字体设置和windows窗口设置一样采用宋体,界面上的按钮不设置过多的按钮,仅设置有必要的按钮即可,界面设置大方。

使用的时候有默认的IP地址、需要扫描的端口和线程数,如果需要扫描其他主机,只需要填写好要扫描的主机的IP地址,需要扫描的端口范围和线程数,单击命令提示按钮就可以开始扫描,扫描结果就会显示在中间的扫描结果显示区域,在扫描状态显示区就会显示是否扫描完毕。

4.2 界面设计图本程序采用小窗口形式,外围大小为170mm*90mm,字体采用宋体五号,结果显示区域框架大小为160mm*45mm,底色为粉红,结果显示字幕为主机地址加开放端口。

添加个性皮肤。

其余地方设置按钮和扫描的主机地址、端口和线程数。

设计的预计页面图形如图:显示粉红底色添加个性皮肤图3 系统界面设计图4.3 后台设计本程序使用了为主要的Scanner类和Scan类。

Scan类的作用是创建线程扫描端口,然后把结果显示到前台。

Scanner类的作用是构造前台布局,调用Scan类添加事件处理,对输入进行错误判断,如果输入不在允许的范围之内则显示相关错误。

在本程序中用到了网络编程的两个类,下面介绍这两个类的常用方法。

InetSocketAddress类构造方法如下:●InetSocketAddress(InetAddress addr, int port):根据IP 地址和端口号创建套接字地址。

●InetSocketAddress(int port):创建套接字地址,其中IP 地址为通配符地址,端口号为指定值。

●InetSocketAddress(String hostname, int port):根据主机名和端口号创建套接字地址。

Socket类常用方法如下:●Socket():通过系统默认类型的SocketImpl 创建未连接套接字●Socket(InetAddress address, int port):创建一个流套接字并将其连接到指定IP 地址的指定端口号。

●void bind(SocketAddress bindpoint):将套接字绑定到本地地址。

●void close():关闭此套接字。

●void connect(SocketAddress endpoint):将此套接字连接到服务器。

●void connect(SocketAddress endpoint, int timeout):将此套接字连接到具有指定超时值的服务器。

●boolean isClosed():返回套接字的关闭状态。

●boolean isConnected():返回套接字的连接状态。

本程序还调用其他的一些类和包,比如软件包java.awt.color 、java.awt.event、io.IOException、Javax.Swing、jvnet.substance.*。

●java.awt.color包的的描述:提供用于颜色空间的类。

它包含了基于国际色彩联盟(ICC) 配置文件格式规范的颜色空间实现。

它还包含了基于ICC 配置文件格式规范的颜色配置文件。

用来使界面更加具有色彩。

Result.setBackground(Color.PINK);//设置窗口为粉红●java.awt.event 的描述:提供处理由AWT 组件所激发的各类事件的接口和类。

事件由事件源所激发,向事件源注册的事件侦听器可接收有关特定事件类型的通知。

此包定义了事件和事件侦听器,以及事件侦听器适配器,它是让事件侦听器的编写过程更为轻松的便捷类。

在本程序中使用:public void actionPerformed(ActionEvent e) {String cmd = e.getActionCommand();if(cmd.equals("Start"))…………}●io.IOException包的描述:用来处理io的错误,不仅仅是文件读写,还包括很多stream的读写,而且throws是用来放在函数定义的函数体前函数名后的,表示这个函数将会在出现异常的书后会抛出io异常,所以在以后的程序中调用这个函数的时候就必须用try和catch来捕获异常,否则编译会报错,这主要涉及到java的安全机制。

本程序中使用如下:try {minPort = Integer.parseInt(PortStart.getText());maxPort = Integer.parseInt(PortEnd.getText());threadNum = Integer.parseInt(ThreadNum.getText());} catch (NumberFormatException e1) {DLGError.setBounds(300, 280, 299, 120);DLGINFO.setText("错误的端口号或线程数!端口号和线程数必须为整数!");DLGINFO.setBounds(10, 20, 280, 20);OK.setBounds(110, 50, 60, 30);DLGError.setVisible(true);return;…………}●Javax.Swing集合描述:由所有Java图形用户界面(GUI)组件所构成,可运行在任一支持Java虚拟机(JVM)的本地平台上。

由于这些组件全都是用Java语言编写的,因此它们可以提供比本地平台GUI组件更多的功能。

(与抽象窗口工具箱对比)。

Java Swing是Java Foundation Classes(JFC)的一部分。

在Swing中,Sun开发了一个经过仔细设计的、灵活而强大的GUI 工具包。

Swing是在AWT组件基础上构建的。

它所提供的功能要比AWT提供的更为广泛。

它也是Java技术的一种标准配置。

Swing模型一个Java GUI通常由顶层容器、中间容器以及多个原子组件组成。

每个原子组件或容器都可能触发相应事件的产生。

容器是一类能够在其中容纳其他组件的特殊组件。

Swing的GUI组件类是按照类属层次以树状结构进行组织的。

在这个树的最顶层,即树的根部,使一个最基本的容器类,被称为顶层容器。

Swing 提供了三个通用的顶层容器类JFrame,JDialog和JApplet。

JFrame提供了基于窗体的应用程序,JDialog提供对话框形式的界面,JApplet提供Java小应用程序的界面形式。

在顶层容器下是中间容器,用于容纳其他的组件。

通常窗格本身在显示界面中是看不到的。

面板类Panel是一种中间容器,它的唯一作用是使组件更容易定位。

顶层容器通过getContentPane()方法获取内部的一个内容窗格。

Swing包的组成:●javax.swing:基本Swing包,包括Swing容器、组件及相关设置的类和接口。

●javax.swing.border:包括与边界设计相关的类和接口。

●javax.swing.colorchooser:与颜色选择相关的类和接口。

●javax.swing.event:包括事件处理相关的类和接口。

相关文档
最新文档