C语言模拟时钟转动课设报告附代码Word格式文档下载.docx

上传人:b****4 文档编号:6505815 上传时间:2023-05-06 格式:DOCX 页数:17 大小:715.37KB
下载 相关 举报
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第1页
第1页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第2页
第2页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第3页
第3页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第4页
第4页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第5页
第5页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第6页
第6页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第7页
第7页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第8页
第8页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第9页
第9页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第10页
第10页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第11页
第11页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第12页
第12页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第13页
第13页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第14页
第14页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第15页
第15页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第16页
第16页 / 共17页
C语言模拟时钟转动课设报告附代码Word格式文档下载.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言模拟时钟转动课设报告附代码Word格式文档下载.docx

《C语言模拟时钟转动课设报告附代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言模拟时钟转动课设报告附代码Word格式文档下载.docx(17页珍藏版)》请在冰点文库上搜索。

C语言模拟时钟转动课设报告附代码Word格式文档下载.docx

这三个变量分别保存小时,分钟,秒。

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

保存数字时钟中小时分钟秒在屏幕中显示的位置。

structtimet[1];

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

函数功能的描述

1.def()

函数原型:

voiddef()

def()函数是用来输出一组彩带的,通过输入位置和颜色的变化来输出sin型的彩带,且在整个函数中保留结果。

2.abc()

函数原型:

voidabc()

abc()函数是用来在退出系统是输出运动的问候语,函数类型单一且比较简单。

3。

digitclock()

voiddigitclock()

digitclock函数用于在(x,y)位置显示clock值,clock值为时分秒.

4。

clockhandle()

voidclockhandle()

clockhandle()函数用于完成时针转动和数字时钟的显示,包括时针转动角度的运算,还有对声音的输出.

5。

main()

voidmain()

main()函数是主函数,既包括绘画表盘的基本框架,又有对其他函数的调用。

函数测试与调试

在函数编写完成后,进行过多次测试。

在测试过程中遇到很多的问题,像数字时钟的显示位置与理想中的有偏差,转动时针移动后痕迹不能清除。

这些问题通过对clockhandle()的调整得到了很好的解决。

还有就是在动画处理上运动时间的间隔和遇到路程的测试遇到了问题,但最后通过查阅资料都得到了解决。

源程序清单

#include〈graphics。

h〉

#include<

stdlib。

h>

#include〈conio。

#include<

stdio.h〉

math.h〉

dos.h〉

#definePI3.1415926

#defineESC0x11b

#definestep10

/*函数声明*/

intdigithour(double);

intdigitmin(double);

intdigitsec(double);

voiddigitclock(int,int,int);

voidclockhandle();

voidabc();

voiddef();

doubleh,m,s,day,mon;

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

structtimet[1];

/*主函数*/

main()

intdriver,mode=0,i,j;

driver=DETECT;

/*自动检测显示设备*/

initgraph(&

driver,&mode,"

”);

/*初始化图形系统*/

setlinestyle(0,0,3);

setbkcolor(0);

/*画主体框架的边线*/

setcolor(12);

line(82,430,558,430);

line(70,62,70,418);

line(82,50,558,50);

line(570,62,570,418);

line(70,62,570,62);

line(76,56,295,56);

line(342,56,564,56);

/*画主体框架的边角弧线*/

setlinestyle(0,0,3);

arc(82,62,90,180,12);

setlinestyle(0,0,3);

arc(558,62,0,90,12);

arc(82,418,180,279,12);

setlinestyle(0,0,3);

arc(558,418,270,360,12);

setlinestyle(0,0,7);

setcolor(9);

outtextxy(301,53,”CLOCK"

);

setcolor(15);

outtextxy(299,53,"

CLOCK"

);

/*显示标题*/

setcolor(9);

rectangle(342,72,560,380);

/*绘制矩形时钟框架*/

setwritemode(0);

/*规定划线的方式(将所画位置的原来信息覆盖)*/

setcolor(13);

outtextxy(405,75,”BeiJingShijian"

/*绘制电子时钟的边框*/

setlinestyle(0,0,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);

/*绘制数字时钟的分隔符*/

setcolor(5);

for(i=431;

i〈=470;

i+=39)

for(j=317;

j〈=324;

j+=7){

circle(i,j,1);

}

/*绘制表示小时的圆点*/

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);

setcolor(5);

circle(x,y,1);

/*绘制表示分针或秒针的圆点*/

setcolor(3);

for(i=0,m=0;

i<

=59;

m++,i++){

x=100*sin(m/30*PI)+451;

y=200-100*cos(m/30*PI);

circle(x,y,1);

setlinestyle(0,0,5);

outtextxy(110,90,"

Name:

LiJianli"

outtextxy(110,105,”Xuehao:

12020326"

setcolor(10);

outtextxy(108,90,”Name”);

outtextxy(108,105,"

Xuehao"

setcolor(14);

outtextxy(180,410,"

PressEsctochangewindows!

def();

clockhandle();

/*开始调用时针处理程序*/

abc();

closegraph();

/*关闭图形函数*/

return0;

/*时针处理函数*/

voidclockhandle()

{

intk=0,n=0;

gettime(t);

/*获取系统时间*/

h=t[0].ti_hour;

m=t[0]。

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);

/*在数字时钟中显示时间*/

digitclock(408,318,digithour(h));

digitclock(446,318,digitmin(m));

setwritemode

(1);

/*设置图形方式下划线输出模式*/

for(;

k!

=ESC;

){

/*声音处理*/

sound(500);

/*以频率为500Hz打开PC扬声器*/

delay(700);

/*发一个500Hz的音调,维持700毫秒*/

sound(200);

delay(300);

nosound();

/*关闭PC扬声器*/

s=t[0].ti_sec;

m=t[0]。

ti_min;

h=t[0]。

ti_hour;

x2=98*sin(s/30*PI)+451;

/*秒针的x坐标值*/

y2=200-98*cos(s/30*PI);

/*秒针的y坐标值*/

line(451,200,x2,y2);

/*运动的问候语*/

setfillstyle(0,2);

bar(100,115,320,150);

setcolor(4);

settextstyle(1,0,99);

outtextxy(101+n*5,140,"

Welcome!

n=n+1;

if(n〉28)n=0;

/*利用此循环,延时一秒*/

while(t[0].ti_sec==s&

&t[0]。

ti_min==m&

&t[0].ti_hour==h)

{gettime(t);

if(bioskey

(1)!

=0){

k=bioskey(0);

/*数字时钟的秒针*/

digitclock(485,318,digitsec(s)+1);

/*用原来的颜色在原来位置再绘制秒针,清除当前秒针*/

x2=98*sin(s/30*PI)+451;

y2=200—98*cos(s/30*PI);

line(451,200,x2,y2);

/*分针处理*/

if(t[0].ti_min!

=m){

/*消除当前分针*/

x1=80*sin(m/30*PI)+451;

y1=200-80*cos(m/30*PI);

line(451,200,x1,y1);

/*绘制新的分针*/

m=t[0].ti_min;

digitclock(446,318,digitmin(m));

/*在数字时钟中显示新的钟值*/

x1=80*sin(m/30*PI)+451;

y1=200—80*cos(m/30*PI);

line(451,200,x1,y1);

/*小时处理*/

if((t[0]。

ti_hour*60+t[0]。

ti_min)!

=(h*60+m)){

/*消除当前时针*/

setcolor(15);

x=50*sin((h*60+m)/360*PI)+451;

y=200—50*cos((h*60+m)/360*PI);

line(451,200,x,y);

/*绘制新的时针*/

x=50*sin((h*60+m)/360*PI)+451;

y=200-50*cos((h*60+m)/360*PI);

line(451,200,x,y);

/*在指定位置显示数字时钟*/

voiddigitclock(intx,inty,intclock)

{charbufferl[10];

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

/*画一个二维码*/

if(clock==60)clock=0;

sprintf(bufferl,”%d"

clock);

outtextxy(x,y,bufferl);

/*将double型的小时数转换成int型*/

intdigithour(doubleh)

{inti;

for(i=0;

i〈=23;

i++)

{if(h==i)returni;

/*将double型的分针数转换成int型*/

intdigitmin(doublem)

{inti;

{if(m==i)returni;

/*将double型的秒钟数转换成int型*/

intdigitsec(doubles)

{inti;

for(i=0;

i〈=59;

{if(s==i)returni;

/*滚动的字幕*/

intn,size,q=0;

staticintstartx=5;

staticintstarty=10;

setbkcolor

(1);

while(q<

10)

q=q+1;

for(n=1;

n〈=35;

n++)

{

cleardevice();

setcolor

(2);

setlinestyle(0,0,1);

setfillstyle(1,10);

rectangle(startx+n*step,starty+n*step,startx+n*step+160,starty+n*step+80);

/*绘制矩形*/

floodfill(startx+n*step+10,starty+n*step+20,2);

settextstyle(1,0,20);

outtextxy(startx+40+n*step,starty+n*step+40,"

Thankyou!

delay(6e10);

/*绘画彩带函数*/

doublea;

intd,e,color=1;

for(a=75;

a〈=300;

a+=1)

setcolor(color);

/*计算划线位置*/

d=220+30*cos(a/47。

75);

e=200+30*sin(a/47。

75—PI/2);

line(a,d,a+30,d);

line(a,e,a+30,e);

setcolor(color+5);

line(a,d+90,a+30,d+90);

line(a,e+90,a+30,e+90);

delay(10000);

color++;

if(color〉15)

color=1;

getch();

运行结果

电子时钟的初运行状态

电子时钟的转动与运行

退出电子时钟

小结

通过这次的编程训练,让我对C语言有了更好的理解,在学习生活的同时能够更好的去利用这门课程.

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2