C语言之电子时钟的实现

上传人:yi****an 文档编号:54844938 上传时间:2018-09-20 格式:DOC 页数:12 大小:82KB
返回 下载 相关 举报
C语言之电子时钟的实现_第1页
第1页 / 共12页
C语言之电子时钟的实现_第2页
第2页 / 共12页
C语言之电子时钟的实现_第3页
第3页 / 共12页
C语言之电子时钟的实现_第4页
第4页 / 共12页
C语言之电子时钟的实现_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《C语言之电子时钟的实现》由会员分享,可在线阅读,更多相关《C语言之电子时钟的实现(12页珍藏版)》请在金锄头文库上搜索。

1、目目 录录1 1、程序的功能、程序的功能.12 2、时钟界面设计和图形函数的使用、时钟界面设计和图形函数的使用.13 3 总体设计总体设计24 4 详细设计详细设计26 6 调试分析调试分析107 7 改进与设想改进与设想108 8 总结总结109 9 参考文献参考文献1111、程序的功能设计并实现一个“电子时钟”的程序。使用键盘输入,通过上下键修改时间,并调用相关函数处理调节数字时钟,然后通过函数绘制主窗口和时钟界面,然后调用函数处理时钟对时针,分针,秒针的运转及当前数字时钟的显示,同时当光标移动时通过调节相应频率会发出嘀哒的声音2、时钟界面设计和图形函数的使用电子时钟主页面主要包括电子时钟

2、和数字时钟和按键提示。右面是电子时钟,而模拟时钟运转的动画时针的刻度使用大小不同的圆来表示,和 3 根长短不同的直线表示时,分,秒。在电子表盘下面为数字时钟,而数字时钟主要是通过数字的使用来具体显示时间。在表盘的右侧是提示信息。main()main(); 主函数Keyhandle(); 作为此程序的主调程序timeupchange(); 增加时,分,秒timedownchange; 减少时,分,秒digithour(); /*将 double 型的小时数转换成 int 型*/digitmin(); /*将 double 型的分钟数转换成 int 型*/int digitsec(double);

3、 /*将 double 型的秒钟数转换成 int 型*/void digitclock(int,int,int ); /*在指定位置显示时钟或分钟或秒钟数*digitclock( ); 在(x,y)显示 clock 上的值drawcursor(); 绘制一个光标clearcursor(); 消除前一个光标clockhandle(); 时钟处理double h,m,s; /*全局变量:小时,分,秒*/double x,x1,x2,y,y1,y2; /*全局变量:坐标值*/3 总体设计电子时钟是针对人们判断时间的落后和不准确性,通过利用计算机来实现对时间的系统 计算,增加了准确性。整体设计自上而下

4、,逐步细化,模块设计。系统结构图:电子时钟界面显示模块按键控制模块动画处理模块数字时钟模块图 1 系统功能结构图4 详细设计4.1 时钟按键控制模块在按键控制模块中,使用 bioskey()函数来读取按键的键值,int keyhandle(int,int); /*键盘按键判断,并调用相关函数处理*/然后调用 keyhandle()函数对键盘键进行判断 int keyhandle(int,int); /*键盘按键判断,并调用相关函数处理*/,int keyhandle(int,int); /*键盘按键判断,并调用相关函数处理*/int timeupchange(int); /*处理上移按键*/i

5、nt timedownchange(int); /*处理下移按键*/执行操作,具体如下:a Tab 键是用来清除上一个光标,然后在绘制一个光标。b 光标上键是用来增加相应的时,分,秒。c 光标下键是用来减少相应的时,分,秒。d Esc 键是用来结束程序的。4.2 电子时钟界面显示电子时钟界面的难度主要在于模块时钟运转的动画时钟的时间时刻是用大小不同的圆来表示的,3 根长度不同的但有一端在相同坐标位置的直线分表表示时,分,秒。void digitclock(int,int,int ); /*在指定位置显示时钟或分钟或秒钟数*void drawcursor(int); /*绘制一个光标*/void

6、 clearcursor(int);/*消除前一个光标*/void clockhandle(); /*时钟处理*/double h,m,s; /*全局变量:小时,分,秒*/double x,x1,x2,y,y1,y2; /*全局变量:坐标值*/driver=DETECT; /*自动检测显示设备*/initgraph(/*初始化图形系统*/setlinestyle(0,0,3); /*设置当前画线宽度和类型:设置三点宽实线*/setbkcolor(0);/*用调色板设置当前背景颜色*/setcolor(9); /*设置当前画线颜色*/line(82,430,558,430);line(70,62

7、,70,418);line(82,50,558,50);line(570,62,570,418);line(70,62,570,62);line(76,56,297,56);line(340,56,564,56); /*画主体框架的边直线*/*arc(int x, int y, int stangle, int endangle, int radius)*/arc(82,62,90,180,12);arc(558,62,0,90,12);setlinestyle(0,0,3);arc(82,418,180,279,12);setlinestyle(0,0,3);arc(558,418,270,

8、360,12); /*画主体框架的边角弧线*/setcolor(15);outtextxy(300,53,“CLOCK“); /*显示标题*/setcolor(7);rectangle(342,72,560,360); /*画一个矩形,作为时钟的框架*/setwritemode(0); /*规定画线的方式。mode=0, 则表示画线时将所画位置的原来信息覆盖*/ setcolor(5);for(i=431;i=470;i+=39)for(j=317;j=324;j+=7)setlinestyle(0,0,3);circle(i,j,1); /*以(i, y)为圆心,1 为半径画圆*/setco

9、lor(15);line(424,315,424,325); /*在运行电子时钟前先画一个光标*/*绘制表示小时的圆点*/for(i=0,m=0,h=0;i=11;i+,h+)x=100*sin(h*60+m)/360*PI)+451;y=200-100*cos(h*60+m)/360*PI);setlinestyle(0,0,3);circle(x,y,1);/*绘制表示分钟或秒钟的圆点*/for(i=0,m=0;i=59;m+,i+)x=100*sin(m/30*PI)+451;y=200-100*cos(m/30*PI);setlinestyle(0,0,1);circle(x,y,1)

10、;4.3、电子时钟执行主流程首先,程序调用 initgraph()函数,使系统进入图象模式,int driver, mode=0,i,j;driver=DETECT; /*自动检测显示设备*/initgraph(/*初始化图形系统*/setlinestyle(0,0,3); /*设置当前画线宽度和类型:设置三点宽实线*/setbkcolor(0);/*用调色板设置当前背景颜色*/setcolor(9); /*设置当前画线颜色*/然后通过使用 line(),are(),outtextxy(),和 circle()等函数来绘制主窗口及电子时钟界面,line(82,430,558,430);line

11、(70,62,70,418);line(82,50,558,50);line(570,62,570,418);line(70,62,570,62);line(76,56,297,56);line(340,56,564,56); /*画主体框架的边直线*/*arc(int x, int y, int stangle, int endangle, int radius)*/arc(82,62,90,180,12);arc(558,62,0,90,12);setlinestyle(0,0,3);arc(82,418,180,279,12);setlinestyle(0,0,3);arc(558,41

12、8,270,360,12); /*画主体框架的边角弧线*/setcolor(15);outtextxy(300,53,“CLOCK“); /*显示标题*/setcolor(7);rectangle(342,72,560,360); /*画一个矩形,作为时钟的框架*/然后调用 clockhandle()函数来时钟的运转及数字时钟的显示。setcolor(7);line(392,310,510,310);line(392,330,510,330);arc(392,320,90,270,10);arc(510,320,270,90,10); /*绘制电子动画时钟下的数字时钟的边框架*/*绘制数字时钟

13、的时分秒的分隔符*/setcolor(5);for(i=431;i=470;i+=39)for(j=317;j=324;j+=7)setlinestyle(0,0,3);circle(i,j,1); /*以(i, y)为圆心,1 为半径画圆*/setcolor(15);line(424,315,424,325); /*在运行电子时钟前先画一个光标*/*绘制表示小时的圆点*/for(i=0,m=0,h=0;i=11;i+,h+)x=100*sin(h*60+m)/360*PI)+451;y=200-100*cos(h*60+m)/360*PI);setlinestyle(0,0,3);circl

14、e(x,y,1);/*绘制表示分钟或秒钟的圆点*/for(i=0,m=0;i=59;m+,i+)x=100*sin(m/30*PI)+451;y=200-100*cos(m/30*PI);setlinestyle(0,0,1);circle(x,y,1);在 clockhandle()函数中,使用 bioskeu()函数来获取用户的按键值,当用户按键为 esc 时,程序会从 clockhandle()函数中返回,从而退出程序。4.4 时钟动画处理模块先通过坐标点的计算,在做好时钟动画处理流程,最后退出程序。具体的程序如下:int k=0,count;setcolor(15);gettime(t

15、);/*取得系统时间,保存在 time 结构类型的数组变量中*/h=t0.ti_hour;m=t0.ti_min;x=50*sin(h*60+m)/360*PI)+451; /*时针的 x 坐标值*/y=200-50*cos(h*60+m)/360*PI); /*时针的 y 坐标值*/line(451,200,x,y);/*在电子表中绘制时针*/x1=80*sin(m/30*PI)+451; /*分针的 x 坐标值*/y1=200-80*cos(m/30*PI); /*分针的 y 坐标值*/line(451,200,x1,y1); /*在电子表中绘制分针*/4.5 数字时钟处理模块在数字时钟处

16、理模块中,会每隔一秒调用 gettime()函数,获取系统时间,在调用digitclock 函数然后显示时,分,秒的值。而数字的修改可以通过光标的位置和上下键共同决定。gettime(t);/*取得系统时间*/if(bioskey(1)!=0)k=bioskey(0);count=keyhandle(k,count);if(count=5) count=1;setcolor(15);digitclock(485,318,digitsec(s)+1);/*数字时钟增加秒*/setcolor(7);line(392,310,510,310);line(392,330,510,330);arc(392,320,90,270,10);arc(510,320,270,90,10); /*绘制电子动画时钟下的数字时钟的边框架*/*绘制数字时钟的时分秒的分隔符*/d

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > C/C++资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号