机械模拟时钟Word格式.docx
- 文档编号:7175790
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:13
- 大小:64.09KB
机械模拟时钟Word格式.docx
《机械模拟时钟Word格式.docx》由会员分享,可在线阅读,更多相关《机械模拟时钟Word格式.docx(13页珍藏版)》请在冰点文库上搜索。
八.参考文献14
一概述
1.课程设计的目的
1、设计一个Applet程序模拟时钟运行仿照时钟外观(有圆形盘面、数字刻度、时针、分针和秒针),能方便我们的使用和操作,为我们以后的使用创造一个良好的平台。
2、把自己所学的理论知识运用到实际操作中去,以此来发现自己的不足,及时的改正。
在实际的操作中学习及运用还没有学过的知识。
最后在调试与测试的过程还可以提升自己的改错能力也是自己经验的积累!
2.课程设计的要求
编写一个模拟时钟程序,此程序在屏幕左方有一指针式钟面,右方有两个矩形框,上面以数字方式显示日期和时间,该时间应与指针显示的时间一致。
在设计的过程中,需要用到Java.util包和awt组件,事件处理,绘制图形,还运用到了类的继承,事件监听器和多线程编程。
还涉及到Java图形编程,以及绘制各指针及之间的关系。
为了完成自己的设计,必须API、教材以及相关的资料来解决这些尚未掌握的问题。
老师的要求就是尽量实现设计的功能,尽可能的锻炼自己的动手能力,提高自己的基础知识。
二总体方案设计
1、编写一个模拟时钟程序,此程序在屏幕左方有一指针式钟面。
2、时钟的下面以数字方式显示日期和时间,该时间应与指针显示的时间一致。
3、
三详细设计
1.先是利用构造函数创建一个长为300,宽为200的窗体。
2利用g.drawArc方法在窗体左方画一个圆,并且在时钟上绘制数字,然后利用Calendar类提供的HOUR,MINUTE,SECOND和MILLISECOND方法获得现在的时间,在计算时间和度数的关系;
利用g.drawLine方法绘制表针,并设置不同的颜色。
3.在利用drawString在窗体的右上方画出一个小的框并在里面现在和时钟相对数字时间。
3.在编写主函数,在运行程序
所完成的具体功能及用到的算法(详细分析)。
程序流程图
主要部分的详细流程图
四程序的调试与运行结果说明
调试的方法:
首先我是一个类一个类的完成,在每一个类完成后都会对它进行编译,待它能正常的编译之后在进行下面的类的编写。
在编译的过程中会有一些错误,比如说语法错误,类的引用格式不正确,会产生一些异常。
但是在经过慢慢的调试,这些问题逐渐得到解决。
五课程设计总结
对于课程设计,基本上实现了模拟时钟程序的要求,此程序在屏幕左方有一指针式钟面,显示日期和时间,该时间应与指针显示的时间一致,但没实现窗口的关闭,也没在钟面上显示12个刻度。
该设计的特点是时钟上标有4个刻度,并且各指针是不同的颜色,但看上去比较普通。
但功能基本上以实现。
困难及解决途径
在上机实习完成课程设计的过程中,遇到了不少的问题,一是有一些东西自己没有学过,而是在编写的过程中由于思路不清晰以及自己的粗心给自己制造了一些麻烦,还有就是会产生一些异常。
但是在经过自己和老师、同学的交流,以及自己查阅资料和API文档,针对性的对不懂得问题进行查询,自己没有学过但是又要用到得逐渐的得到解决,再经过自己反复的理清思路和反复的检查由思路不清晰和粗心带来的麻烦也慢慢得到了解决。
六后记
首先,java作为一种计算机语言,它具备语言的特性,就是我们在课堂上认真听取了老师的指导之后,还得自己回去认真看书写程序,并且上机实习才能发现问题及时解决问题。
就像我们学习语言一样要通过和同学之间的交流才能提高我们的实际应用能力。
所以,我们在自己认真刻苦学习的同时,一定要多和同学老师交流,从他们那里吸取好的思维方式、好的学习方法。
在上机实习的时候,我现在回顾自己一学期的学习,觉得首先应该熟悉java的概念,明白程序开发的基本思想,熟悉开发环境之后马上进行自主学习,自己学习的步伐千万不能落于老师讲课授课的速度。
如果这样的话,我们很可能处于一种被动学习的劣势,失去对java学习的热情,以至于恶性循环,到最终的无可救药。
在平时的训练和刚刚结束的上机实习中我深刻的体会到了学习好java我们就要一定要掌握好java的基本语句,包括条件语句和循环语句。
这些就是我们编写程序这棵大树的必要组成枝叶。
建立起关键语句的之后,我们才能有更强的功能和实用性。
Java作为一个面向对象的编程语言,在图像方面具有很强的实现能力。
这样很能激发我们的学习兴趣。
在编写程序的时候发现,虽然它是一个面向对象的编程语言,我们一定要学会如何编写多个类和方法,在不断地摸索中培养我们自身设计面向对象解决方案的能力。
作为学生的我们,是一个学习的过程,我们应该学习如何写好程序。
而好的程序不仅仅是一系列语句的拼凑,我们要联系自身实际,用编程语言解决问题和实施解决问题的方案。
在学习java的这一段时间当中,图形激发了我学习的巨大热情。
所以,我觉得我自己一定要在打好坚实的基础的情况下,对图形学进行认真学习。
在学习图形和图形用户接口的时候,觉得变得吃力起来。
因为随着课程的加重,发现自己动手能力越来越若,在事件处理和图形用户接口的使用中,出现了知识点模棱两可的情况。
当然,任何的困难挫折在不断地努力中都会变得脆弱,只是暂时的阴影。
在以后的日子里,我要不断地学习这个博大精深的语言,继续不断的深化自己的实际动手能力。
七附录
importjava.util.*;
importjava.awt.*;
importjava.applet.*;
importjava.text.*;
publicclassMyClockextendsAppletimplementsRunnable{
privatevolatileThreadtimer;
//显示时钟的线程
privateintlastxs,lastys,lastxm,
lastym,lastxh,lastyh;
//绘制表针的坐标
privateSimpleDateFormatformatter;
//对时钟格式化
privateStringlastdate;
//存储上一次显示的时钟
privateFontclockFaceFont;
//时钟显示的字体
privateDatecurrentDate;
//当前时钟
privateColorhandColor;
//时钟主表针和钟盘的颜色
privateColornumberColor;
//时钟第二个表针以及字体的颜色
privateintxcenter=80,ycenter=55;
//中间位置
publicvoidinit(){
intx,y;
lastxs=lastys=lastxm=lastym=lastxh=lastyh=0;
formatter=newSimpleDateFormat(
"
EEEMMMddhh:
mm:
ssyyyy"
Locale.getDefault());
currentDate=newDate();
lastdate=formatter.format(currentDate);
clockFaceFont=newFont("
Serif"
Font.PLAIN,14);
handColor=Color.red;
numberColor=Color.darkGray;
try{
setBackground(newColor(
Integer.parseInt(getParameter("
bgcolor"
),16)));
}catch(NullPointerExceptione){
}catch(NumberFormatExceptione){
}
handColor=newColor(
fgcolor1"
),16));
numberColor=newColor(
fgcolor2"
resize(300,300);
//设置时钟显示窗口的大小
//绘制时钟显示的主体部分
publicvoidupdate(Graphicsg){
intxh,yh,xm,ym,xs,ys;
ints=0,m=10,h=10;
Stringtoday;
formatter.applyPattern("
s"
);
s=Integer.parseInt(formatter.format(currentDate));
}catch(NumberFormatExceptionn){
s=0;
m"
m=Integer.parseInt(formatter.format(currentDate));
m=10;
}
h"
h=Integer.parseInt(formatter.format(currentDate));
h=10;
//设置表针头位置
xs=(int)(Math.cos(s*Math.PI/30-Math.PI/2)*45+xcenter);
ys=(int)(Math.sin(s*Math.PI/30-Math.PI/2)*45+ycenter);
xm=(int)(Math.cos(m*Math.PI/30-Math.PI/2)*40+xcenter);
ym=(int)(Math.sin(m*Math.PI/30-Math.PI/2)*40+ycenter);
xh=(int)(Math.cos((h*30+m/2)*Math.PI/180-
Math.PI/2)*30+xcenter);
yh=(int)(Math.sin((h*30+m/2)*Math.PI/180-
Math.PI/2)*30+ycenter);
//获取显示在底部的日期
EEEMMMddHH:
today=formatter.format(currentDate);
g.setFont(clockFaceFont);
//重新绘制时钟
g.setColor(getBackground());
if(xs!
=lastxs||ys!
=lastys){
g.drawLine(xcenter,ycenter,lastxs,lastys);
g.drawString(lastdate,5,125);
if(xm!
=lastxm||ym!
=lastym){
g.drawLine(xcenter,ycenter-1,lastxm,lastym);
g.drawLine(xcenter-1,ycenter,lastxm,lastym);
if(xh!
=lastxh||yh!
=lastyh){
g.drawLine(xcenter,ycenter-1,lastxh,lastyh);
g.drawLine(xcenter-1,ycenter,lastxh,lastyh);
//显示日期和表针
g.setColor(numberColor);
g.drawString(today,5,125);
g.drawLine(xcenter,ycenter,xs,ys);
g.setColor(handColor);
g.drawLine(xcenter,ycenter-1,xm,ym);
g.drawLine(xcenter-1,ycenter,xm,ym);
g.drawLine(xcenter,ycenter-1,xh,yh);
g.drawLine(xcenter-1,ycenter,xh,yh);
lastxs=xs;
lastys=ys;
lastxm=xm;
lastym=ym;
lastxh=xh;
lastyh=yh;
lastdate=today;
currentDate=null;
publicvoidpaint(Graphicsg){
//绘制钟盘和钟盘上的数字
g.drawArc(xcenter-50,ycenter-50,100,100,0,360);
g.drawString("
9"
xcenter-45,ycenter+3);
3"
xcenter+40,ycenter+3);
12"
xcenter-5,ycenter-37);
6"
xcenter-3,ycenter+45);
publicvoidstart(){
timer=newThread(this);
timer.start();
publicvoidstop(){
timer=null;
publicvoidrun(){
Threadme=Thread.currentThread();
while(timer==me){
Thread.currentThread().sleep(100);
}catch(InterruptedExceptione){
repaint();
publicstaticvoidmain(Stringargs[]){
Framef=newFrame("
时钟显示"
f.setSize(300,200);
MyClockmc=newMyClock();
mc.init();
mc.start();
f.add(mc);
f.show();
}
参考文献:
《Java语言与面向对象程序设计》(第二版),清华大学出版社
《Java十大经典案例》,科学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机械 模拟 时钟