您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 理学 > -java模拟时钟课设
..JAVA模拟时钟课设1.课程设计的目的Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了一周的Java程序设计课程设计。通过此次课程设计,巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。使学生通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。2.设计方案论证2.1运行环境:JCreator+JDK平台CPU:Pentium2.8GHz以上内存:256MB以上硬盘空间:80G以上操作系统:WindowsXP2.2设计思路及功能描述Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。Java去掉了C++语言的许多功能,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。这将减少平常出错的50%。而且,Java很小,整个解释器只需215K的RAM。..因此运用Java程序编写模拟时钟程序,实现简单显示时间的功能。本次课程设计做的是Java简单模拟时钟,它是图形界面、线程、流与文件等技术的综合应用,其界面主要采用了java.awt包,javax.swing包等。程序实现了模拟时钟的基本功能。我设计的时钟有的界面良好,比较简洁美观,程序有很强的实用性,实现程序与电脑的时间的同步。可以显示时钟,也可以显示分针秒针,并可以在相应位置调整时间。而且初始运行会自动与电脑的时间校对,一般默认为同步,但还可以自己再次调节,提高了实用性。本系统共包括1个java源文件。Clock源文件是本程序的主函数其作用是初始化棋盘。setCurrentTime源文件实现电脑设置时间。paintHourPointer源文件为时针.paintSecondPointer源文件实现人与电脑设置秒针.paintMinuteDot源文件人与电脑设置分针。2.3方案论证2.3.1详细设计类名:Clock作用:自定义主类,对鼠标拖拽的初始界面进行声明继承的父类:JComponent类实现的接口:没有表1-成员变量表Clock成员变量成员变量描述变量类型名称..时针StringHour分针StringMinute秒针StringSecond时间点TextFieldtext_1表2-方法表Clock方法方法名功能备注setCurrentTime设置当前时间构造方法paintHourPointer设置时针接口方法paintSecondPointer设置秒针接口方法paintMinuteDot设置分针接口方法actionPerformed事件处理run程序运行2.3.2概要设计..图1程序基本框图程序中引入的包:packageClockimportjava.awt.Clockimportjava.awt.Graphicsimportjava.awt.event.WindowAdapterimportjava.awt.event.WindowEventimportjava.util.Calendarimportjava.util.GregorianCalendar用户自定义类:类名:Clock作用:定义模拟时钟继承的父类:JFramepublicclassclockextendsJFrame{定义的对象:启动时钟注册界面秒针走时分针走时时针走时关闭时钟..ClockPaintsizeResizableLocationTitleVisibleWindowListener,WindowClosing主要成员方法:publicvoidcenter//定义小程序查看器的位置publicvoidactionPerformed//定义处理异常机制定义子类:ClockPaint继承的父类名:JPanel继承的接口名:RunnableclassClockPaintextendsJPanelimplementsRunnableinth,m,s//小时,分钟,秒主要成员方法:publicClockPaintthis.x=xthis.y=ythis.r=rs=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..//获得小时主要成员方法:publicvoidpaint(Graphicsg)//清屏super.paint(g)g.setColor(Color.BLACK)g.fillRect(0,0,r*3,r*3)//画圆g.setColor(Color.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.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++)..x1=(int)((r-10)*Math.sin(rad*d))y1=(int)((r-10)*Math.cos(rad*d))g.drawString(i+,x+r+x1-4,x+r-y1+5)d+=30//小点d=0;for(inti=0;i60;i++)x1=(int)((r-2)*Math.sin(rad*d))y1=(int)((r-2)*Math.cos(rad*d))g.drawString(.,x+r+x1-1,x+r-y1+1)d+=6//显示时间//Calendarnow1=newGregorianCalendar();//g.drawString(now1.get(Calendar.HOUR_OF_DAY)+://+now1.get(Calendar.MINUTE)+:+now1.get(Calendar.SECOND),//0,10);主要成员方法:publicvoidrun捕获异常catch(Exceptionex)完成显示实时数据s+=6if(s=360)s=0m+=6..if(m==72||m==144||m==216||m==288)h+=6if(m=360)m=0h+=6;if(h=360)h=0;this.repaint();用Java实现动画的原理与放映动画片类似,就是取若干个相关的图像或图片,顺序、连续地在屏幕上先显示、后擦除,循环往复就可以获得动画的效果。在动画设计中,一般会用到paing()、repaint()、和update()方法。在动画设计中,有时会存在抖动问题,但一般来说,浏览器能很好地解决显示和刷新问题。在图形设计中,若重写paint()方法可以自动绘制所希望的图形,在需要更新图形时可调用repaint()方法,而不需要重写repaint()方法。至于update()方法,一般情况下既不需要重写,也不需要调用。只是在动画设计中,如果仅重写paint()方法,会产生抖动现象,为消除抖动现象,需要重写update()方法。在主页中经常会看到卡通似的动画效果,制作这种动画的原理也是很简单的,就是通过快速地放映许多张图片,利用人眼的视觉暂留特性来达到动画的效果。动画的质量除了取决于图片的好坏之外,动画中动画的平滑速度,也是非常关键的。2.4程序说明先是利用构造函数创建一个长为500,宽为200的窗体,颜色设置为black,并把窗体设计为固定大小,并且创建一个监听事件进行监听。随即创建一个时间计数器,最后实现ActionListener接口的实现方法。利用2D绘制图形的方法,在窗体左方画一个..圆,并且绘制时钟上的12个汉字,然后利用Calendar类提供的HOUR,MINUTE,SECOND和MILLISECOND方法获得现在的时间,在计算时间和度数的关系;在利用2D绘制图形的方法绘制出各指针,并设置不同的颜色。在利用drawString在窗体的右上方画出一个小的框并在里面现在和时钟相对数字时间;然后根据相同的方法在数字时间下面显示秒表功能。在设计的过程中,需要用到Swing组件和Swing容器与组件,布局管理器,事件处理,绘制图形,还运用到了类的继承,事件监听器和线程。“SimpleDateFormatformatter”用于格式化时间显示,“Stringlastdate”用于保存当前时间的字符串,“FontclockFaceFont”用于设置显示时钟里面的数字的字体;“DatecurrentDate”用于显示当前时间;“ColorhandColor”用于显示时针、分针和表盘的颜色;“ColornumberColor”用于显示秒针和数字的颜色,“publicvoidinit()”用于设计时钟格式并捕捉异常;“publicvoidplotpoints(intx0,inty0,intx,inty,Graphicsg)”用于计算四分之一的圆弧;“publicvoidcircle(intx0,inty0,intr,Graphicsg”)用Bresenham算法来画圆,其中(x0,y0)是圆的中心,r为圆半径;“publicvoidpaint(Graphicsg)”用于运行时钟程序;“publicvoidstart()”applet的启动方法;“publicvoidstop()”applet的停止方法;“publicvoidrun()”线程的run方法。run()方法就是分出去让程序同时运行的、用来处理休眠和重画图形的线程。3.设计结果与分析3.1设计结果当程序正常运行的时候,它能清晰的显示时钟界面。默认为与系统时间同步,如果出现错误,就会进行归零。运行界面如图..图2运行界面3.2设计分析本程序可以在HTML文件中设置,变化出多姿多彩的时钟模型,在MyClock.class的源代码的编写过程中运用了paint()、repaint()、update()等方法。时钟的绘制采用双缓冲图形处理机制,即先在缓冲区内绘制图形,再把图形显示到网页上可以有效的防止闪烁。时钟的不断绘制是通过一个线程不断读取系统时间,如果时间有变化即绘制。采用一个线程绘制。遇到的问题和解决方法:在用JAVA编写程序时,我遇到了很多困难,对很多的接口,类,方法都不是很熟悉,只好采用查看API文档,一个一个进行对照学习,同时也上网查看了有关模拟时钟的相关描述,还向同学请教了,翻阅了相关的书籍。程序异常处理:程序在运行过程中可能会出现错误且断正常的控制流,这就是异常处理。不提供处理异常代码的程序可能会在不期望终止的时候终止,甚至可能引发严重问题。Java的异常处理子系统可以为程序员提供处理运行是错误即异常处理的
本文标题:-java模拟时钟课设
链接地址:https://www.777doc.com/doc-6054698 .html