c语言图形时钟课程设计实验报告文档格式.docx
《c语言图形时钟课程设计实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《c语言图形时钟课程设计实验报告文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
(3)时钟表设计思想:
第一步,确定秒钟的走时。
将圆等分成60份每过一秒,秒钟要转1/60个圆,亦即一等份。
第二步,确定分钟的走时。
将圆等分成60份每过一分,分钟要转1/60个圆,亦即一等份。
分钟自己走的再加秒钟的,才是分钟此时的位置。
第三步,确定时钟的走时。
将圆等分成12等分。
每过一时,时钟走一等份。
和分钟一样,
得加上分钟,秒钟的走时,才是此刻时钟的位置。
(4)时钟走动与系统时间联系:
每过一秒画出秒针,并除去前一秒的秒针,分针秒针同样可用。
画线函数与时间联系使用变量。
(5)设置横纵坐标
x=a*cos(b*c*pi/180-pi/2)+300;
y=a*sin(b*c*pi/180-pi/2)+240;
设置表针的动态坐标点
x1=200*sin(i*6*pi/180)+300;
y1=200*cos(i*6*pi/180)+240;
x2=(200-l)*sin(i*6*pi/180)+300;
y2=(200-l)*cos(i*6*pi/180)+240;
●程序结构(画流程图)
总流程图:
指针转动流程图:
●各模块的功能
功能
确定横纵坐标,确定针分针秒针函数
voiddraw(inta,intb,intc)
●试验结果(包括输入数据和输出结果)
●体会:
刚开始做时基本上什么都不懂,用TC做,我更不会。
不过参考了很多资料,到网上查,泡了几天图书馆,差不多能写出基本程序,虽然很多是借鉴别人的,不过能写成这样,我心里还是挺高兴的。
有了一点成功我就很兴奋,这是动力。
程序很奇特,很多问题都可以用程序编写,看到那些大型程序我就感觉我也能写出这样的程序。
程序设计主要靠理解与运用,有些没有学过的知识不一定要懂得彻底,只要会运用就行。
不足之处也很多,程序思路不太清晰可能有些混乱。
有很多程序设计使用并不熟练,甚至有些方法掌握不了,更容易忘记。
算法结构了解并不深入,独立自主的想法占据总体达不到要求。
需要加强练习和对知识的理解与掌握。
●参考文献:
《C程序设计思想与方法》
《C语言完全手册》
《C语言课程设计指导》
《XX知道图形时针》
●附录:
程序清单及源程序(使用TC)
#include<
graphics.h>
math.h>
dos.h>
#definepi3.1415926
{
floatx,y;
x=a*cos(b*c*pi/180-pi/2)+300;
/*确定横坐标*/
y=a*sin(b*c*pi/180-pi/2)+240;
/*确定纵坐标*/
line(300,240,x,y);
/*绘制时针或分针或秒针*/
}
voidinit()/*划时钟边框函数*/
{
inti,l,x1,x2,y1,y2;
circle(300,240,200);
/*以(300,240)为圆心,200为半径画圆*/
circle(300,240,5);
/*以(300,240)为圆心,5为半径画圆*/
for(i=0;
i<
60;
i++)/*划钟点上的短线*/
{
if(i%5==0)
l=15;
else
l=5;
x1=200*sin(i*6*pi/180)+300;
/*画线函数*/
x2=(200-l)*sin(i*6*pi/180)+300;
y2=(200-l)*cos(i*6*pi/180)+240;
line(x1,y1,x2,y2);
}
XX文库-让每个人平等地提升自我}
main()
intx,y,i;
intgdriver,gmode;
unsignedcharh,m,s;
structtimet[1];
gdriver=DETECT;
initgraph(&
gdriver,&
gmode,"
"
);
/*初始化*/
=6;
i++)
outtextxy(300,80,"
12"
);
outtextxy(300,390,"
6"
outtextxy(140,230,"
9"
outtextxy(460,230,"
3"
init();
/*调用init()函数*/
setwritemode
(1);
/*将当前线与原有的线进行异或操作*/
gettime(t);
/*将计算机时间写入结构体t中*/
h=t[0].ti_hour;
/*h赋初值当前时数*/
m=t[0].ti_min;
/*m赋初值当前分数*/
s=t[0].ti_sec;
/*s赋初值当前秒数*/
setcolor(7);
draw(150,h,30);
/*画时针*/
setcolor(14);
draw(170,m,6);
/*画分针*/
setcolor(4);
draw(190,s,6);
/*画秒针*/
while(!
kbhit())
{
while(t[0].ti_sec==s)
/*清除前面画的秒针*/
if(t[0].ti_min!
=m)
/*清除前面画的分针*/
}
if(t[0].ti_hour!
=h)
draw(150,h,30);
/*清除前面画的时针*/
getch();
closegraph();
/*退出图形界面*/