模拟时钟课程设计报告(共14页).doc
《模拟时钟课程设计报告(共14页).doc》由会员分享,可在线阅读,更多相关《模拟时钟课程设计报告(共14页).doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上课程设计报告课程: 面向对象程序设计 学号: 姓名: 张扬 李佳珂 金正行 班级: 12计科2班 教师: 钱 田 芬 时间: 2014年12月10日 计算机科学与技术系设计名称:模拟时钟日期:2014年1 2月 10日设计内容:通过多线程技术,重绘界面,绘制一个虚拟的时钟,时钟界面包括表盘和指针。并用数字表显示当前的时间。1 设计目的与要求1.1基本要求编写一个模拟时钟程序,此程序在屏幕中间有一指针式钟面。左上角以数字方式显示时间,该时间应与指针显示的时间一致,且与机器系统时间相同。在设计的过程中,需要用到awt组件和Swing容器与组件,布局管理器,事件处理,绘制图
2、形,还运用到了类的继承,事件监听器和线程。掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。增进Java语言编辑基本功,1.2 设计目的设计一个带有指针、数字时钟,并且具有秒表功能,能方便我们的使用和操作,为我们以后的使用创造一个良好的平台。把自己所学的理论知识运用到实际操作中去,以此来发现自己的不足,及时的改正。在实际的操作中学习及运用还没有学过的知识。最后在调试与测试的过程还可以提升自己的改错能力也是自己经验的积累!2 设计环境、思想和功能描述2.1运行环境:Eclipse+JDK平台CPU:Pentium2.8GHz以上内存:256MB以
3、上硬盘空间:80G以上操作系统:WindowsXP Windows7 Windows82.2主要设计思想:先是利用构造函数创建一个长为200,宽为200的窗体,颜色设置为black,并把窗体设计为固定大小。利用AWT绘制图形的方法,在窗体中间画一个圆,并且绘制时钟上的12个数字,然后利用Calendar类提供的HOUR,MINUTE和SECOND 方法获得现在的时间,在计算时间和度数的关系;在利用AWT绘制图形的方法绘制出各指针,并设置不同的颜色。在利用drawString在窗体的左上角显示出当前的时间。2.3功能描述:设计的时钟界面良好,比较简洁美观,程序有很强的实用性,实现程序与电脑的时间
4、的同步。可以显示时钟,可以显示具体的数字时间,也可以显示分针秒针。3 设计方案的具体论证3.1详细设计3.1.1 界面及布局设计先是利用构造函数创建一个长为200,宽为200的窗体,颜色设置为black,并把窗体设计为固定大小。利用AWT绘制图形的方法,在窗体中间画一个圆,并且绘制时钟上的12个数字,然后利用Calendar类提供的HOUR,MINUTE,SECOND方法获得现在的时间,在计算时间和度数的关系;在利用AWT绘制图形的方法绘制出各指针,并设置不同的颜色。3.1.2 类、方法类名:Clock作用:自定义主类,对鼠标拖拽的初始界面进行声明类名:ClockPain作用:用来画时钟和指针
5、继承的父类:JComponent类实现的接口:没有表 1-成员变量ClockPaint成员变量成员变量描述变量类型名称时针StringH分针StringM秒针StringS表 2-方法表ClockPaint方法方法名功能备注get(Calendar.SECOND)获得秒数接口方法get(Calendar.MINUTE)获得分钟接口方法get(Calendar.HOUR_OF_DAY)获得小时接口方法Paint()画图Run()运行程序3.2 概要设计启动时钟创建一个主窗体利用AWT绘制图形方法在窗体绘制一个圆,并绘制好12个数字计算出时间和度数的关系绘制出各指针关闭时钟时针走时分针走时秒针走时
6、程序流程图定义子类:ClockPaint继承的父类名:JPanel继承的接口名:Runnableinth,m,s/小时,分钟,秒主要成员方法:s=now.get(Calendar.SECOND)*6/获得秒转换成度数m=now.get(Calendar.MINUTE)*6/获得分钟h=(now.get(Calendar.HOUR_OF_DAY)-12)*30+now.get(Calendar.MINUTE)/12*6/获得小时主要成员方法:/清屏super.paint(g)g.setColor(Color.BLACK)g.fillRect(0,0,r*3,r*3)/画圆g.setColor(C
7、olor.WHITE)g.drawOval(x,y,r*2,r*2)/秒针g.setColor(Color.RED)intx1=(int)(r-10)*Math.sin(rad*s)inty1=(int)(r-10)*Math.cos(rad*s)g.drawLine(x+r,y+r,x+r+x1,y+r-y1)/分针g.setColor(Color.BLUE)x1=(int)(r-r/2.5)*Math.sin(rad*m)y1=(int)(r-r/2.5)*Math.cos(rad*m)g.drawLine(x+r,y+r,x+r+x1,y+r-y1)/时针g.setColor(Color
8、.CYAN)x1=(int)(r-r/1.5)*Math.sin(rad*h)y1=(int)(r-r/1.5)*Math.cos(rad*h)g.drawLine(x+r,y+r,x+r+x1,y+r-y1)/数字g.setColor(Color.YELLOW)intd=29for(inti=1;i=12;i+)3.3 程序说明先是利用构造函数创建一个长为200,宽为200的窗体,颜色设置为black,并把窗体设计为固定大小。利用AWT绘制图形的方法,在窗体中间画一个圆,并且绘制时钟上的12个数字,然后利用Calendar类提供的HOUR,MINUTE,SECOND方法获得现在的时间,在计算
9、时间和度数的关系;在利用AWT绘制图形的方法绘制出各指针,并设置不同的颜色。在利用drawString在窗体的左上方画出和时钟相对数字时间。在设计的过程中,需要用到Swing组件和Swing容器与组件,布局管理器,事件处理,绘制图形,还运用到了类的继承,事件监听器和线程。 “GregorianCalendar()”用于显示当前时间;“setColor”用于显示时针、分针和表盘的颜色;“ColornumberColor”用于显示秒针和数字的颜色, “drawOval(x, y, r * 2, r * 2)”用Graphics算法来画圆,其中(x,y)是圆的中心,r为圆半径;“publicvoid
10、paint(Graphicsg)”用于运行时程序;“publicvoidstart()”threat的启动方法; “publicvoidrun()”线程的run方法。run()方法就是分出去让程序同时运行的、用来处理休眠和重画图形的线程。4 设计结果与分析4.1设计结果当程序正常运行的时候,它能清晰的显示时钟界面。默认为与系统时间同步,如果出现错误,就会进行归零。运行界面如图4.2设计分析使用的方法:在Clock的源代码的编写过程中运用了paint()、repaint()、run()等方法。时钟的绘制采用双缓冲图形处理机制,即先在缓冲区内绘制图形,再把图形显示到框架上。时钟的不断绘制是通过一个
11、线程不断读取系统时间,如果时间有变化即绘制。调试方法:首先我是一个类一个类的完成,在每一个类完成后都会对它进行编译,待它能正常的编译之后在进行下面的类的编写。在编译的过程中会有一些错误,比如说语法错误,类的引用格式不正确,会产生一些异常。但是在经过慢慢的调试,这些问题逐渐得到解决遇到的问题和解决方法:在用JAVA编写程序时,我遇到了很多困难,对很多的接口,类,方法都不是很熟悉,只好采用查看API文档,一个一个进行对照学习,同时也上网查看了有关模拟时钟的相关描述,还向同学请教了,翻阅了相关的书籍。专心-专注-专业附录:程序代码import java.awt.Color;import java.a
12、wt.Graphics;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.text.DateFormat;import java.util.Calendar;import java.util.GregorianCalendar;import javax.swing.JFrame;import javax.swing.JPanel;public class Clock extends JFrame private static final long serialVersionUID
13、= 1L; public Clock (int r) ClockPaint cp = new ClockPaint (r); this.add(cp); this.setSize(300,210); this.setResizable(false); this.setLocation(260, 120); this.setTitle(小时钟); this.setVisible(true); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); publi
14、c static void main(String s) new Clock (70); class ClockPaint1 extends JPanel implements Runnable private static final long serialVersionUID = 1L; int x, y, r; /上边距,左边距,钟面半径 int h, m, s; / 时针,分针,秒针对应的度数 double rad = Math.PI / 180; /角度1所对应的弧度 public ClockPaint1(int r) this.x = r/3; this.y = r/3; this
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟 时钟 课程设计 报告 14
限制150内