课程设计.docx
《课程设计.docx》由会员分享,可在线阅读,更多相关《课程设计.docx(10页珍藏版)》请在冰豆网上搜索。
![课程设计.docx](https://file1.bdocx.com/fileroot1/2022-10/28/3111deb5-d81d-4095-87fc-c252ccd714c8/3111deb5-d81d-4095-87fc-c252ccd714c81.gif)
课程设计
通信技术实践
设
计
报
告
课题名称:
基于Java语言的游戏飞机大战
专业班级:
通信工程一班
学生姓名:
方恩山
学号:
631206040110
指导教师:
王宏刚
起止时间:
2015年3月16日至2015年6月25日
重庆交通大学
信息科学与工程学院
重庆交通大学信息科学与工程学院课程设计任务书
课程
通信技术实践
班级
一班
指导教师
王宏刚
题目
基于JAVA语言的游戏飞机大战
同组人数
1人
任务要求
1、了解Java语言基础知识
2、用JAVA语言设计飞机大战
3、完成流程图
4、调试并运行飞机大战
报告书要求
设计报告主要包括内容(参见后面的格式):
1.系统的功能需求及分析
2.系统总体结构
3.系统实现(包括数据结构、主要算法的实现,界面设计等,根据自己的系统实际情况可以增加或删除部分内容)
4.系统功能测试
5.设计体会
要求:
Ø学生完成设计后,每个同学均应提交设计报告及软件或硬件(同一小组共同完成的系统可只提交一份软件);
Ø设计报告要求文字通畅,排版规范;
Ø设计报告文字原则上不少于3000字(程序代码除外),并装订成册。
版面要求
1.题目用黑体三号,段后距18磅(或1行),居中对齐;
2.标题用黑体四号,段前、段后距6磅(或0.3行);
3.正文用小四号宋体,行距为固定值“20”,程序代码用固定值“15”;
4.标题按“一”、“㈠”、“1”、“⑴”顺序编号。
指导地点及考核时间
1、指导地点:
语音大楼60103
2、考核时间:
第18周星期三上午(答辩方式考核,学生用PPT汇报及演示)
重庆交通大学信息学院课程设计评分表
序号
项目
评分标准及说明
评分
1
纪律及平时成绩(20%)
按规定时间到实验室完成实验及综合实验,每缺1次实验扣2分,缺4次及以上不得分。
2
系统演示(功能)及答辩(40%)
根据学生PPT汇报、系统演示及回答问题情况,由答辩组(老师)给出答辩等级(直接在此评分表中打“√”),指导教师按等级相应分值打分
答辩等级
分值
A+
39-40
A
38
A-
36-37
B+
34-35
B
32-33
B-
30-31
C+
28-29
C
26-27
C-
24-25
D
0-23
3
项目设计报告(40%)
根据学生完成的项目设计报告书情况,由指导教师给定等级(直接在此评分表中打“√”)及成绩(特别提醒:
设计报告相同者均记0分)
报告等级
分值
A+
39-40
A
38
A-
36-37
B+
34-35
B
32-33
B-
30-31
C+
28-29
C
26-27
C-
24-25
D
0-23
指导教师:
总分:
目录
一、课题意义5
二、相关知识5
三、系统设计5
(一)实现条件11
(二)设计流程图12
(三)运行结果及分析13
四、设计心得15
五、结论与展望15
(一)结论15
(二)展望15
六、参考文献15
一、课题意义
Java的诞生是对传统计算机模式的挑战,对计算机软件开发和软件产业都产生了深远的影响:
软件4A目标要求软件能达到任何人在任何地方在任何时间对任何电子设备都能应用。
这样能满足软件平台上互相操作,具有可伸缩性和重用性并可即插即用等分布式计算模式的需求。
基于构建开发方法的崛起,引出了CORBA国际标准软件体系结构和多层应用体系框架。
在此基础上形成了Java.2平台和.NET平台两大派系,推动了整个IT业的发展。
对软件产业和工业企业都产生了深远的影响,软件从以开发为中心转到了以服务为中心。
中间提供商,构件提供商,服务器软件以及咨询服务商出现。
企业必须重塑自我,B2B的电子商务将带动整个新经济市场,使企业获得新的价值,新的增长,新的商机,新的管理。
对软件开发带来了新的革命,重视使用第三方构件集成,利用平台的基础设施服务,实现开发各个阶段的重要技术,重视开发团队的组织和文化理念,协作,创作,责任,诚信是人才的基本素质。
二、相关知识
对象:
对象是面向对象编程的核心部分,是实际存在的具体实体,具有明确定义的状态和行为;类:
类是具有相同属性和和行为的一组对象的集合。
类与对象的区别:
类是用来描述实体的“模板”或“原型”;对象是实际的实体,每一个对象都是类的一个具体实例;类用来定义对象所有的属性和方法,同一类的所有对象都拥有相同的特征和操作;可以将类理解成生产产品的模具,而对象则是根据此模具生产的一个个产品。
封装:
封装其实就是有选择性地公开或隐藏某些信息,它解决了数据的安全性问题。
继承:
继承就是重用现有的类来生成新类的一种特征;多态:
多态是指同一函数在不同的类中有不同的实现;抽象:
把相同的或相似的对象归为一类的这个过程就是抽象,所以,抽象就是分析问题的方法;
抽象的基本原则:
只关心主要问题,而不关心次要问题;只关心主要矛盾,而不关心次要矛盾;只关心相同的东西,而不关心不同的东西;只关心问题是什么,能够完成什么,而不关心怎样去完成。
访问权限public和private:
为了避免从类外部直接访问类成员而造成的数据损坏,Java对类成员的访问制定了约束;关键字public和private是访问修饰符,用来说明某个成员是否可以从类外部进行访问;public修饰的成员可以在任何地方进行访问,不受任何约束;private修饰的成员只能够被本类中的其它成员访问,而不能从类的外部进行访问。
方法重载:
用于定义一组方法,这些方法具有相同的名称,并执行类似的操作,但是却使用不同的参数列表;方法重载的三大原则:
1方法名相同2参数不同(可以有三方面的不同)-数量不同-类型不同-顺序不同3同一作用域。
重载构造方法:
可以定义一组构造方法,使其构成重载关系,从而方便使用者能够灵活机动地以各种不同的方式来实例化对象。
this关键字:
每个成员方法都有一个隐含的this引用,它总是指向调用它的对象;关键字this给出用于调用成员方法的对象的地址;每当调用成员方法时,编译器会向this分配调用该方法的对象的地址;可以像使用任何引用那样使用this。
对象数组:
在Java中不但可以声明由原始数据组成的数组,还可以声明由对象组成的数组;面向对象的程序设计有三大特征:
封装:
解决了数据的安全性问题;继承:
解决了代码的重用问题;多态:
解决了程序的扩展问题类的访问权限:
还可以在定义类时为类添加访问修饰符,对类进行访问权限控制;对类使用的访问修饰符只有public和缺省两种;被public修饰的类可以从任何地方访问,不受限制;不加访问修饰符,缺省修饰的类只能从本包中访问,不同包则无法访问到;但要注意的是:
在一个源文件中只能有一个被public修饰的类,并且文件名必须与public的类同名;如果要定义多个public的类,则必须分别写在不同的源文件中,一个源文件只写一个类是良好的编程习惯。
在Java中,super关键字有两个主要用途.第一种用途是:
在子类的构造方法中,super关键字可以显式地调用父类的构造方法,用于将参数传递给它;第二种用途是:
如果父类和子类中有同名成员,在子类中默认访问是属于自己的那一个成员;super关键字可以明确地指定要访问父类中的成员;this关键字有两种意义:
表示一个指向“implicitparameter”的引用调用本类中的另一个构造器。
super关键字也有两种意义:
调用父类的方法;调用父类的构造器。
多线程:
Java支持编写多线程的程序;多线程最大的好处在于可以同时并发执行多个任务,当程序的某个功能部分正在等待某些资源的时候,此时又不愿意因为等待而造成程序暂停,那么就可以创建另外的线程进行其它的工作;多线程可以最大限度地减低CPU的闲置时间,从而提高CPU的利用率;在Java中实现线程有两种方式,分别是:
扩展java.lang.Thread类、实现java.lang.Runnable接口线程优先级:
事实上,计算机只有一个CPU,各个线程轮流获得CPU的使用权,才能执行任务;优先级较高的线程有更多获得CPU的机会,反之亦然;优先级用整数表示,取值范围是1~10,一般情况下,线程的默认优先级都是5,但是也可以通过setPriority和getPriority方法来设置或返回优先级;Thread类有如下3个静态常量来表示优先级:
MAX_PRIORITY:
取值为10,表示最高优先级MIN_PRIORITY:
取值为1,表示最底优先级;NORM_PRIORITY:
取值为5,表示默认的优先级GUI(GraphicalUserInterface)即图形用户界面,它能够使应用程序看上去更加友好;在Java的早期版本中,GUI组件由名为AWT(AbstractWindowToolkit,抽象窗口工具包)的标准库来提供;除了GUI组件外,AWT还包括其它功能来支持图像绘画、处理剪切/复制类型的数据传送,以及其它相关操作。
java.awt包是Java内置的包,属于Java基础类库(JFC)的一部分,其中包括以下内容:
便于用户输入的一组丰富的界面组件;将组件放置在适当位置的几种布局管理器;事件处理模型;图形和图像工具等等。
Swing简介以及javax.swing包:
Swing组件是在AWT组件基础上发展而来的轻量级组件,与AWT相比不但改进了用户界面,而且所需的系统资源更少;Swing是纯Java组件,使得应用程序在不同的平台上运行时具有相同外观和相同的行为。
javax.swing包中包含了一系列Swing组件,如果要使用该包中的类,则必须显式地声明如下语句:
importjavax.swing.*;
SwingGUI组件:
监听器与监听器接口:
针对每一类型的事件,都有与之相对应的监听器,用于监听事件的发生;
在Java中,监听器由一系列接口来提供;实际上,事件监听器就是实现了事件监听接口的类,监听器不断监听事件源的动作,当事件源产生一个事件后,监听器接收到事件源的通知,就调用特定的方法,以执行指定的动作。
特定的事件监听器只对特定的事件感兴趣。
java.awt.event包:
包含了一系列与事件处理相关的类和接口,其中包括:
监听器接口,事件对象和事件适配器等;一般来说,编写图形用户界面程序都必须显式地导入此包;每种事件监听器接口都是以类似于XxxListener的形式来命名的,如:
ActionListener、MouseListener、ItemListener等;
匿名类:
匿名类其实就是一种比较特殊的内部类,只是这个类没有名字而已;匿名类与内部类相似,能够访问到外部类中的所有成员;
很多情况下(特别是在事件处理中),匿名类一般被定义在外部类的某个方法中,所以也被称为局部内部类,对于局部内部类,它还可以访问到这个方法的参数;在适当的情况下,使用匿名类来实现事件处理,会使代码更简洁,更灵活。
事件源与监听器的对应关系:
事件源与监听器之间并不是一对一的对应关系,也就是说,一个监听器并不是只可以监听一个事件源,而一个事件源也并不是只能够注册到一个监听器;
在某些情况下,为了使代码更灵活,程序控制更方便,我们会使用一个监听器监听多个事件源。
系统设计
三、系统实现
3.1实现条件
硬件条件:
笔记本电脑
软件条件:
eclipse,JAVA
3.2设计流程图
3.3运行结果及分析
游戏开始:
四、设计心得
本次设计是通过JAVA设计一款简单地飞机大战游戏。
在设计之前的几周,我们通过跟学校实训系统的简单地学习了JAVA语