计算机技能实习报告
整点声音报时时钟
整点声音报时时钟:
a.具有指针式表盘界面(方形或圆形);
b.具有时针+分针+秒针并正确旋转;
c.时钟时间须与系统时间相一致,秒针具有“滴答”声音效果,并实现整点报时。
参考资料:a.C语言程序设计(谭浩强-清华大学出版社)b.C语言程序设计教程(谭浩强,张基温-高等教育出版社)c.专业李老师提供的时钟界面设计源程序等等。
时钟源程序:
#include
#include
#include
#define pi 3.1415926
#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300;
#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240;
#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)
int x1,y1,x2,y2;
void init()
{int i,l,x1,x2,y1,y2;
char s[10];
float f;
setbkcolor(0);
setcolor(2);
circle(300,240,180);
circle(300,240,200);
circle(300,240,5);
for(i=12;i>=1;i--)
{f=(30*(i-12)*pi/180);
x1=300+sin(f)*(180-6)-16;
y1=240-cos(f)*(180-6);
sprintf(s,"%2d",i);
setcolor(13);
settextstyle(0,0,2);
outtextxy(x1,y1,s);
}
for(i=0;i<60;i++)
{
if(i%5==0)
{setcolor(5);
setlinestyle(0,0,3);
l=15;}
else
{setcolor(14);
l=5;}
x1=160*cos(i*6*pi/180)+300;
y1=160*sin(i*6*pi/180)+240;
x2=(160-l)*cos(i*6*pi/180)+300;
y2=(160-l)*sin(i*6*pi/180)+240;
line(x1,y1,x2,y2);
}
}
main()
{
int x,y;
int gd=VGA,gm=2;
unsigned char h,m,s;
struct time t[1];
initgraph(&gd,&gm,"d:\\tc");
init();
setwritemode(1);
gotoxy(30,20);
printf("made by li yun zhan");
gettime(t);
/*h=t[0].ti_hour;*/
if(t[0].ti_hour>12)
t[0].ti_hour=t[0].ti_hour-12;
if(t[0].ti_hour<4)
h=abs(t[0].ti_hour-3);
m=t[0].ti_min;
s=t[0].ti_sec;
setcolor(7);
d(80,h,30);
setcolor(14);
d(110,m,6);
setcolor(4);
d(150,s,6);
while(!kbhit())
{while(t[0].ti_sec==s)
gettime(t);
sound(400);
delay(70);
sound(200);
delay(30);
nosound();
setcolor(4);
d(150,s,6);
s=t[0].ti_sec;
d(150,s,6);
if (t[0].ti_min!=m)
{
setcolor(14);
d(110,m,6);
m=t[0].ti_min;
d(110,m,6);
}
if (t[0].ti_hour!=h)
{ setcolor(7);
d(80,h,30);
h=t[0].ti_hour;
d(80,h,30);
sound(1000);
delay(240);
nosound();
delay(140);
sound(2000);
delay(240);
nosound();
}
}
getch();
closegraph();
}
时钟源程序运行截图:
修改后的源程序:
#include
#include
#include
#define pi 3.1415926
#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300;
#define Y(a,b,c) y=