1、 滁州学院 课程设计报告 课程名称: Java 面向对象程序设计 设计题目: 画随机圆 系 别: 计算机信息与工程学院 专 业: 计算机科学与技术 组 别: 第五小组 起止日期: 2011年 12月20日 ~ 2012年1月 4日 指导教师: 马骏 高超
2、 计算机与信息工程学院二○一 一年制 课程设计任务书 课程设计题目 画随机圆 组长 张侠 学号 2011220129 班级 11计专1班 系别 计算机与信息工程学院 专业 计算机科学与技术 组员 余静 盛荣春 汪道明 张娟 指导教师 马骏 高超 课程设计目的 进一步加深对Java语言的理解和掌握提供一个独立实践的机会培养我们在项目开发中的团队合作精神和创新意识及实践编程能力 课程设计所需环境 JCreator pr
3、o Jdk1.6工具包 课程设计任务要求 功能要求:实现简单的动画 具体要求:自动出现由小到大变换的圆,位置与颜色随机,变到150直径时擦除,重新再出现圆;变换速度由HTML文件传入的参数控制(控制sleep时间) 界面要求:用Java Applet实现 课程设计工作进度计划 序号 起止日期 工 作 内 容 分工情况 01 2011-12-20~2011-12-23 收集资料 组员共同完成 02 2011-12-24~2011-12-27 编写代码 组员共同完成 03 2011-12-28~2011-12-28 修改补充代码 组员共同完成 0
4、4 2012-1-1~2011-1-2 编写课程设计报告 组员共同完成 05 2012-1-3~2012-12-22 设计报告的完成 组员共同完成 教研室审核意见: 教研室主任签字: 年 月 日 目录 一.引 言 1 二.使用工具说明 1 2.1.总体目标 1 2.2.Applet的工作原理 1 2.3. Applet的工作原理图如图2-1 1 2.4.多线程机制 2 2.5.多线程的优势 2 三.分析与设计 3 3.1.题目及使用环境
5、3 3.2.功能概述 3 3.3.要实现的功能 3 3.4.实现方式 3 3.5.需用到的类和方法 3 四.代码实现 4 五.调试与操作说明 6 六.课程设计总结与体会 6 七.致谢 6 八.参考文献 6 一.引 言 Applet是基于HTML的小程序。浏览器将其暂时下载到用户的硬盘上,并在Web页打开时在本地运行。一般的Applet只能通过appletviewer或者浏览器来运行,Java程序通过继承Applet类也可以嵌入网页运行。在Java Applet中,可以实现图形绘制,字体和颜色控制,动画和声音的插入,人机交互及网络交流等功能。Applet还提供了
6、名为抽象窗口工具箱(Abstract Window Toolkit, AWT)的窗口环境开发工具。AWT利用用户计算机的GUI元素,可以建立标准的图形用户界面,如窗口、按钮、滚动条等等。目前,在网络上有非常多的Applet范例来生动地展现这些功能。 多线程的目的是为了最大限度的利用CPU资源,以前所编写的程序,每个程序都有一个入口、一个出口以及一个顺序执行的序列,在程序执行过程中的任何指定时刻,都只有一个单独的执行点。事实上,在单个程序内部是可以在同一时刻进行多种运算的,这就是所谓的多线程。一个单独的线程和顺序程序相似,从概念上说,一个线程是一个程序内部的一个顺序控制流。线程并不是程序,它自
7、己本身并不能运行,必须在程序中运行。在一个程序中可以实现多个线程,这些线程同时运行,完成不同的功能。 二.使用工具说明 2.1.总体目标 设计一个自动出现由小到大变换的圆,位置与颜色随机,变到150直径时擦除,重新再出现圆;变换速度由HTML文件传入的参数控制。实现简单的动画功能。 2.2.Applet的工作原理 含有Applet的网页的HTML文件代码中部带有这样一对标记,当支持Java的网络浏览器遇到这对标记时,就将下载相应的小应用程序代码并在本地计算机上执行该Applet。Java Applet是用Java语言编写的一些小应用程序,这些程序
8、是直接嵌入到页面中,由支持Java的浏览器(IE 或 遨游)解释执行能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。 包含Applet的网页被称为Java- powered页,可以称其为Java支持的网页。当用户访问这样的网页时,Applet被下载到用户的计算机上执行,但前提是用户使用的是支持 Java的网络浏览器。由于Applet是在用户的计算机上执行的,所以它的执行速度不受网络带宽或者Modem存取速度的限制,用户可以更好地欣赏网页上Applet产生的多媒体效果。含有。 一个HTML文件增加Applet有关的内容只是使网页更加富有生气,如添加声音、动画等这些吸
9、引人的特征,它并不会改变HTML文件中与Applet无关的元素。 2.3. Applet的工作原理图如图2-1 图2-1Applet的工作原理 2.4.多线程机制 在Java中,多线程的实现有两种方式: 扩展java.lang.Thread类 实现java.lang.Runnable接口 每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。每个线程都可以或不可以标记为一个守护程序。当某个线程中运行的代码创建一个新 Thread 对象时,该新线程的初始优先级被设定为创建线程的优先级,并且当且仅当创建线程是守护线程时,新线程才是守护程序。当 Java 虚拟机启动时,通常
10、都会有单个非守护线程(它通常会调用某个指定类的 main 方法)。Java 虚拟机会继续执行线程,直到下列任意一个情况出现时为止:因此,不管是扩展Thread类还是实现Runnable接口来实现多线程,最终还是通过Thread的对象的API来控制线程的如图2-1,熟悉Thread类的API是进行多线程编程的基础。新建状态(New):新创建了一个线程对象。就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。注意:start()方法的调用后并不是立即执行多线程代码,而是使得该线程变为可运行态(R
11、unnable)什么时候运行是由操作系统决定的。从程序运行的结果可以发现,多线程程序是乱序执行。因此,只有乱序执行的代码才有必要设计为多线程。Thread.sleep()方法调用目的是不让当前线程独自霸占该进程所获取的CPU资源,以留出一定时间给其他线程执行的机会。实际上所有的多线程代码执行顺序都是不确定的,每次执行的结果都是随机的。 图2-1线程的状态与周期 2.5.多线程的优势 ⑴ 减轻编写交互频繁、涉及面多的程序的困难,如监听网络端口。 ⑵ 程序的吞吐量会得到改善,同时可以监听多种设备,如网络端口、串口、并口以及其他外设。 ⑶ 有多个处理器的系统,可以并发运行不同的线程,否
12、则,任何时刻只有一个线程在运行。Thread类本身只是线程的虚拟CPU,线程所执行的代码(或者说线程所要完成的功能)是通过方法run()包含在一个特定的对象中来完成的,方法run()称为线程体。实现线程体的特定对象是在初始化线程时传递给线程的。在一个线程被建立并初始化以后,Java的运行时系统就自动调用run( )方法,正是通过run( )方法才使得建立线程的目的得以实现。 ⑷ 线程睡眠:Thread.sleep(long millis)方法,使线程转到阻塞状态。millis参数设定睡眠的时间,以毫秒为单位。当睡眠结束后,就转为就绪Runnable状态。sleep()平台移植性好。 三.分
13、析与设计 3.1.题目及使用环境 课程设计题目:画随机圆 开发环境:JCreator pro Jdk 1.6工具包 编程语言:Java Html 界面要求:用Java Applet实现 运行环境:Windows 操作系统 3.2.功能概述 运行浏览器之后,会自动出现由小到大变换的圆,圆的位置与颜色随机,大小变到150直径时擦除,重新再出现圆,圆变换速度通过HTML文件传入的参数控制,实现简单的动画 3.3.要实现的功能 ⑴ 此程序为实现这些功能模块,必须首先定义画图的对象,对所要画的圆的颜色及其位置进行设置。 ⑵ 此程序为实现简单的动画功能,必会使用到Th
14、erad线程机制。因此会用到实现接口Runable中的run()方法,及通过调用sleep()来显示圆的变化速度。 ⑶ 此程序中,必须用到的包如下: java.applet.Applet; java.awt.Color; java.awt.Graphics; java.util.*; 3.4.实现方式 在Circ.java中首先调用init()方法对线程和画图进行初始化并各自创建一个对象。Circ类通过实现Runnable接口,使得该类有了多线程类的特征run()方法是多线程程序的一个约定。所有的多线程代码都在run方法里面。Thread类实际上也是实现了Runnable接口的类
15、在启动的多线程的时候,需要先通过Thread类的构造方法Thread(Runnable target) 构造出对象,然后调用Thread对象的start()方法来运行多线程代码。实际上所有的多线程代码都是通过运行Thread的start()方法来运行的。 3.5.需用到的类和方法 class Circ 此类用于定义一个线程和Graphics对象,并且使用init()方法将他们分别初使化,以方便在下面的程序中使用它们。 run()方法 此方法用于实现这个程序的大部分功能,在这个方法中定义一些基本变量以及画一个填充圆,还对圆的半径进行了设置,当线程启动后,java类的run()方法就开
16、始执行 init()方法 此方法对线程和Graphics对象进行初始化以及启动线程 paint()方法 此方法实现的是将所画的圆显示在applet窗口的面板上 四.代码实现 Circ.java import java.applet.Applet; import java.awt.Color; import java.awt.Graphics; import java.util.*; import javax.swing.JFrame; public class Circ extends Applet implements Runnable{ Thread c
17、ircle=null; //声明一个线程对象 Graphics g; //声明一个Graphics对象 public void init(){ //applet初始化 circle = new Thread(this); g = getGraphics(); circle.start(); // 启动线程 } public void run(){ // 实现接口Runnable接口中的run()方法 in
18、t i=1,t,m,n,R,G,B; Random r1=new Random(); while(true){ if(i<=75){m=(int)(Math.random()*700); //定义一个在700之内的下标 n=(int)(Math.random()*700); R=r1.nextInt(255); //定义R值的参数 G=r1.nextInt(255); //定义G值的参数
19、 B=r1.nextInt(255); //定义B值的参数 new Color(R,G,B); g.drawOval(m,n,i,i); //画圆的边框 g.fillOval(m,n,i,i); //填充圆 g.setColor(new Color(R,G,B)); //重新设置画笔的颜色 i=i+10; } else
20、 i=0; try{ t=Integer.parseInt(getParameter("s")); //获得从HTML中传递的sleep参数 circle.sleep(t); } catch(InterruptedException e){ System.out.print(e.getMessage()); //输出异常 } repain
21、t(); //重画 }} public void paint(Graphics g) { } public static void main(String[] args) { Circ c=new Circ(); } } Circle.html
22、 //sleep参数值的传递 运行结果显示如图4-1,4-2,4-3所示 图4-1随机产生的圆1位置,颜色随机 图4-2随机产生的圆2位置,颜色随机 图4-3随机产生的圆3位置,颜色随机 五.调试与操作说明 这个小程序操作简单、通俗易懂,是一个Applet程序,把它嵌入在Html文件中并依赖浏览器来运行,把applet程序编译好,然后运行Html文件即可。html文件和applet的字节码文件需放在同一目录下。 六.课程设计总结与体会 此次课程设计采用applet和线程的处理机制,画一个随机圆,产生一个简单的动画,设计的过程中不
23、可避免地遇到一些代码运行错误的问题,深深感到代码的严谨是多么的重要,在开发这个小程序的过程中,我是一边学习一边开发的,学习在实战中成长,不但巩固了自己的Java语言基础知识,也进一步加深了对Java语言的理解和掌握,以及团队合作精神和创新意识,收获也颇多,才知道光掌握课本上的知识是远远不够的,我们要不停的汲取一些先进的更深层次的知识,才能使自己全面发展,对我们以后的发展也会有很大的帮助。 七.致谢 在设计研究和设计报告撰写过程中,感谢我的同学和老师给与的关心和帮助,从中我们学会了很多,不但是专业课的基础知识,还有一些开发一个小程序所应必备的能力,谢谢你们。 八.参考文献 主要参考文献是
24、 [1].赵生慧.Java面向对象程序设计(第2版)[M]. 北京:中国水利水电出版社,2010年 [2].毕广吉.Java程序设计实例教程[M]. 北京:冶金工业出版社,2007年 [3].王保罗.Java面向对象程序设计[M]. 北京:清华大学出版社,2003年 [4].Bruce Eckel.《Thinking in Java 4》American:Prentice Hall PTR [5].O'Reilly & Associates, Inc 《Java Cookbook》in the United States or Canada [6].林邦杰,彻底研究java[J].北京:电子工业出版社,2002年 指导教师评语: 指导教师签名: 年 月 日 成 绩 教研室审核意见: 教研室主任签字: 年 月 日 7






