电子时钟设计.docx

上传人:b****6 文档编号:3364769 上传时间:2022-11-22 格式:DOCX 页数:11 大小:52.50KB
下载 相关 举报
电子时钟设计.docx_第1页
第1页 / 共11页
电子时钟设计.docx_第2页
第2页 / 共11页
电子时钟设计.docx_第3页
第3页 / 共11页
电子时钟设计.docx_第4页
第4页 / 共11页
电子时钟设计.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

电子时钟设计.docx

《电子时钟设计.docx》由会员分享,可在线阅读,更多相关《电子时钟设计.docx(11页珍藏版)》请在冰豆网上搜索。

电子时钟设计.docx

电子时钟设计

电子时钟设计

1课程设计要求和内容

1设计目的

本程序旨在训练读者的基本编程能力,使读者熟悉C语

言图形模式下的编程。

本程序涉及时间结构体、数组、绘图

等方面的知识。

通过本程序的训练,使读者能对C语言有一

个更深刻的了解,掌握利用C语言相关函数开发电子时钟的

基本原理,为进一步开发出高质量的程序打下坚实的基础。

2功能描述

如图

(1)所示,此电子时钟主要有以下4个功能组成

(1)电子时钟界面显示模块。

电子时钟界面显示在调用电

子钟运行处理之前完成,在这里主要调用了C语言图形系统函数和字符屏幕处理函数画出时钟程序的主界面。

主界面包括类似Windows自带的电子时钟的界面和帮助界

面两部分。

电子时钟界面包括一个模拟时钟运转的钟表和一

个显示时间的数字钟表。

在帮助界面中,主要包括

一些按键的操作说明。

(2)电子时钟按键控制模块。

按键控制模块主要完成两大部分

功能。

第一,读取用户按键的键值。

第二,通过对键盘按

键值的判断,执行相应的操作,如光标移动、修改时间。

电子时钟

(3)时钟动画处理模块。

在时钟动画处理模块中,通过对相关条件的判断和时钟指针坐标点值的计算,完成时、分、秒指针的擦除和重绘,以达到模拟始终时钟运转的功能。

(4)数字时钟处理模块。

在数字时钟处理模块中,主要实现了数字时钟的显示和数字时钟的修改。

其中,在数字时钟的修改中,用户可先按Tab键定位需要修改内容的位置,然后通过移动按光标(T)或下移(J)键来修改当前时间。

总体设计

功能模块设计

1.电子时钟执行主流程

此电子时钟执行主流程如图

(2)所示。

首先,程序

调用initgraph()函数,使系统进入图形模式,然

后通过使用line()、arc()、outtextxy()和circle

()等函数来绘制主窗口及电子时钟界面,最后调用

Clockhandle()函数来处理时钟的运转及数字时钟

的显示。

在clockhandle()函数中,使用了bioskey

()

函数来获取用户的按键值,当用户按键Esc时,程序

会从clockhandle()函数中返回,从而退出函数。

2.电子时钟界面显示

电子时钟界面的实现比较简单。

值得一提的是,模拟

电子时钟的运转的动画时钟的时间刻度是用大小不

同的圆来表示的,3根长度不同但有一端在相同坐标

位置的直线分别表示时、分、秒针。

开始

绘制帮助界面

 

3电子时钟按键处理模块

在按键处理模块中,使用bioskey()函数来读取用

户按键的键值,然后调用keyhandle()函数对键盘

按键值进行判断,执行相应的操作。

具体按键判断如

下。

(1))若用户按下Tab键,程序会调用clearcursor

()函数来清除上一个位置的光标,然后调用

drawcursor()函数在新位置处绘制一个光标。

(2)若用户按下光标上移键,程序会调用

timeupchange()函数来增加相应的时、分、

秒值。

(3)若用户按下光标下移键,程序会调用

timedownchange()函数来减少相应的时、分、秒值。

(4)若用户按下Esc键,程序会结束时钟运行,从

而退出系统。

3.数字时钟处理模块

在数字时钟处理模块中,会每隔一秒调用gettime(t)

函数,获取系统时间,然后调用digitclock()函数

在相应的位置显示时、分、秒值。

至于数字适时钟的

修改,主要由当前光标位置和光标上移(T)或下移

(;)按键两者共同决定。

例如,若当前光标在分钟

显示位置,且按下光标上移键,程序会将当前时间的

分钟值增加1,即增加一分钟,若加1后的分钟值等于60,则将当前分钟值设置为0,最后调用settime(t)函数来设置新的系统时间。

数据结构设计

此程序中,使用了C语言的time结构体和几个全局变量,为了便于读者易于理解程序,这里分别来介绍。

1.Time结构体

Structtime

{

Unsignedcharti_min;

Unsignedcharti_hour;

Unsignedcharti_hund;

Unsignedcharti_sec;

};

Time结构体定义在dos。

h文件中,可用来保存系统

的当前时间,其中各文字的值的含义如下。

①doubleh,m,s:

此3个全局变量分别用来保存小时、

分钟、秒数。

②doublex,x1,x2,y,y1,y2:

保存数字时钟的小时、分、秒在屏幕中显示的坐标值。

③structtimet[1]:

定义一个time结构类型的数组,

此数组只有t[0]一个元素。

函数功能描述

1)keyhandle()

函数原型:

intkeyhandle(intkey,intcount);

keyhandle()函数用于对用户的按键值key进行判断,

然后调用timeupchange(count)或timedownchange(count)

或直接处理Tap按键,其中count的值为1、2、3,1表示

小时、2表示分钟、3表示秒钟。

按Tap键后,count值加1。

2)timeupchange()

函数原型:

inttimeupchange(intcount);

timeupchange()函数用于增加时、分、秒数,然后将新

的时间设置为当前时间。

timedownchange()

函数原型:

inttimedownchange(intcount)

timedownchange()函数用于减少时、分、秒数,然后将

新的时间设置为当前时间。

3)digitclock()

函数原型:

voiddigitclock(intx,inty,intclock);

Digitclock()函数用于在(x,y)位置显示clock值为

时、分、秒值。

drawcursor()

函数原型:

voiddrawcursor(intcount);

drawcursor()函数用于对count进行判断后,在相应位

置绘制一条直线作为光标。

4)clearcursor()

函数原型:

voidclearcursor(intcount);

clearcursor()函数用于对count进行判断后,在相应

位置擦除原来的光标。

voidclockhandle()

函数原型:

voidclockhandle();

voidclockhandle()函数用于完成时钟转动和数字时钟

的显示。

5)8)main()

函数原型:

voidmain()

main()为主函数。

调试分析

在此次课程设计中,遇到了一些问题,通过和同学那个

学以及老师之间的沟通交流,最终把问题解决了。

(1)要减少在部分功能上浪费时间,则在实践之前,

将源代码以及函数所代表的意义搞清楚,才能做到节省做好程序的时间的目的。

(2)对应函数问题的不同意思要搞清,才能把功能搞

清,对后面整个程序有较好的帮助。

(3)在做完程序后,要及时检验可能会出现的问题

(4)最终要运行程序,才能算是彻底做完程序。

小结

此次课程设计,从理论到实践,不仅巩固了以前学过的知识,

而且学到了很多在书本上学不到的知识,在设计中,我们遇

到了许多以前编程从未遇见过的问题,发现自己仍然存在许

多知识上的不足,对一些学过的知识理解的不够深刻,掌握

的不够牢固,进过同学以及老师的帮助,是我理解到了更多,

同时,我也体会到了团队合作的重要性,如果是一个人,根

本不可能在短时间内完成这项编程任务。

通过这次课程设

计,我们进一步巩固了大一学到的编程知识,而且体会到完

成一个大的程序设计工作,应努力增强团队精神和协作能

力,准确的完成老师交给的编程任务。

源码分析

1.程序预处理

 

#include

#include

#include

#include

#include

#definePI3.1415926

#defineUP0x4800

#defineDOWN0x5000

#defineESC0x11b

#defineTAB0xf09

intkeyhandle(int,int);

inttimeupchange(int);

inttimedownchange(int);

intdigithour(double);

intdigitmin(double);

intdigitsec(double);

voiddigitclock(int,int,int);

voiddrawcursor(int);

voidclearcursor(int);

voidclockhandle();

doubleh,m,s;

doublex,x1,x2,y,y1,y2;

structtimet;

时钟按键处理模块在电子时钟中,按键控制模块最主要的工作就是必须能够读取用户按键,对按键值进行判断,并调用相关函数来执行相关操作。

intkeyhandle(intkey,intcount)/*键盘控制*/

{switch(key)

{caseUP:

timeupchange(count-1);/*因为count的初

始值为2,所以此处减1*/

break;

caseDOWN:

timedownchange(count-1);/*因为count的初始值为2,所以此处减1*/

break;

caseTAB:

setcolor(15);

clearcursor(count);/*清除原来的光标*/

drawcursor(count);/*显示一个新的光标*/

count++;

break;

}

returncount;

inttimeupchange(intcount)/*

{

处理光标上移的按键*/

if(count==1){

t[0].ti_hour++;

if(t[0].ti_hour==24)t[0].ti_hour=0;

settime(t);/*设置新的系统时间*/

}

if(count==2){

t[0].ti_min++;

if(t[0].ti_min==60)t[0].ti_min=0;

settime(t);/*设置新的系统时间*/

}

if(count==3){

t[0].ti_sec++;

if(t[0].ti_sec==60)t[0].ti_sec=0;

settime(t);/*设置新的系统时间*/

}

inttimedownchange(intcount)/*

{

if(count==1){

处理光标下移的按键*/

t[0].ti_hour--;

if(t[0].ti_hour==0)t[0].ti_hour=23;

settime(t);/*设置新的系统时间*/

}

if(count==2){

t[0].ti_min--;

if(t[0].ti_min==0)t[0].ti_min=59;

settime(t);/*设置新的系统时间*/

}

if(count==3){

t[0].ti_sec--;

if(t[0].ti_sec==0)t[0].ti_sec=59;

settime(t);/*设置新的系统时间*/

}

}

数字时钟处理模块

在数字时钟处理模块中,主要实现数字时钟的显示和数字时

钟的修改。

其中,在数字时钟的修改中,用户先按Tab健定

位需要修改的内容,然后通过按光标上移(T)或下移(J)

键来修改当前时间。

voiddigitclock(intx,inty,intclock)/*在指定位置显

示数字时钟:

时分秒*/

{charbuffer1[10];

setfillstyle(0,2);

bar(x,y,x+15,328);

if(clock==60)clock=0;

sprintf(buffer1,"%d",clock);

outtextxy(x,y,buffer1);

}

intdigithour(doubleh)/*将double型的小时数转换成int

型*/

{inti;

for(i=0;i<=23;i++)

{if(h==i)returni;}

}

intdigitmin(doublem)/*将double型的分钟数转换成int

型*/

{inti;

for(i=0;i<=59;i++)

{if(m==i)returni;}

}

intdigitsec(doubles)/*将double型的秒钟数转换成int

型*/

{inti;

for(i=0;i<=59;i++)

{if(s==i)returni;}

}

voiddrawcursor(intcount)/*根据count的值,画一

个光标*/

{switch(count)

{

case1:

line(424,315,424,325);break;

case2:

line(465,315,465,325);break;

case3:

line(505,315,505,325);break;

}

}

voidclearcursor(intcount)/*根据count的值,清

除前一个光标*/

{switch(count)

{

case2:

line(424,315,424,325);break;

case3:

line(465,315,465,325);break;

case1:

line(505,315,505,325);break;

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1