1、设计题目:模拟时钟转动程序目 录源程序3题目与要求9功能设计说明10详细设计分析11主函数分析12时间输出13小结14源程序:#includegraphics.h#includemath.h#includedos.h#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)void init() int i,l,x1,x2,y1,y
2、2; setbkcolor(3); circle(300,240,200); circle(300,240,205); circle(300,240,100); circle(300,240,2); for(i=0;i60;i+) if(i%5=0) l=15; else l=5; 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; line(x1,y1,x2,y2); main() int x,y,i,k=
3、1; int gdriver=9,gmode=2; unsigned char h,m,s; float n; struct time t1; struct date d1; initgraph(&gdriver,&gmode,c:win-tc); initgraph(&gdriver,&gmode,c:win-tc); for(i=0;i=6;i+) settextstyle(TRIPLEX_FONT,HORIZ_DIR,i); cleardevice(); settextjustify(1,1); outtextxy(300,80,12) ; outtextxy(300,390,6); o
4、uttextxy(140,230,9); outtextxy(460,230,3); outtextxy(380,100,1); outtextxy(220,100,11); outtextxy(430,160,2); outtextxy(430,310,4); outtextxy(380,370,5); outtextxy(220,370,7); outtextxy(160,160,10); outtextxy(160,310,8); init(); setwritemode(1); if(k!=0) gettime(t); h=t0.ti_hour; m=t0.ti_min; s=t0.t
5、i_sec; setcolor(9); n=(float)h+(float)m/60; d(140,n,30); setcolor(14); d(160,m,6); setcolor(4); d(180,s,6); while(!kbhit() while(t0.ti_sec=s) gettime(t); gotoxy(44,18); printf(bbbbbbbbb); delay(70); delay(30); setcolor(4); d(180,s,6); s=t0.ti_sec; d(180,s,6); if(t0.ti_min!=m) setcolor(14); d(160,m,6
6、); m=t0.ti_min; d(160,m,6); if(t0.ti_hour!=h) setcolor(7); d(140,h,30); h=t0.ti_hour; d(140,h,30); delay(240); delay(140); delay(240); if(s10) if(m10) printf(%u:0%u:0%u,h,m,s); else printf(%u:%u:0%u,h,m,s); else if(m10) printf(%u:0%u:%u,h,m,s); else printf(%u:%u:%u,h,m,s); printf(bbbbbbbbb); getch()
7、; closegraph(); 1、 题目与要求1、1设计任务:能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。1、 2涉及程序: c语言图形的简单设计及for循环体的使用。2、 功能设计说明2.1程序结构分析模拟时钟转动的程序指针式时钟数字式时钟2.2时钟要求2.2.1指针式时钟:指针式时钟表盘为圆形,并且圆周上有分布均匀的刻度,钟面上有长度不同的指针,即时针,分针,秒针。指针运动有规律性,顺时针转动。2.2.2数字时针数字时钟显示的时间格式是时,分,秒,显示的时间和时钟的同步,且与系统时间同步。3、 详细设计分析3.1 头文件#inclu
8、degraphics.h#includemath.h#includedos.h#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) ( 定义时钟圆心及指针坐标)3.2画时钟边框函数void init() int i,l,x1,x2,y1,y2; setbkcolor(3); circle(300,240,200)
9、; circle(300,240,205); circle(300,240,100); circle(300,240,2);3.3划钟点上的短线for(i=0;i60;i+) if(i%5=0) l=15; else l=5; 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; line(x1,y1,x2,y2); 4、主函数分析 main()4.1 主函数的定义 int x,y,i,k=1; int gdr
10、iver=9,gmode=2; unsigned char h,m,s; float n; struct time t1; struct date d1; initgraph(&gdriver,&gmode,h:win-tc); initgraph(&gdriver,&gmode,h:win-tc);4.2表盘上数字的输出for(i=0;i=6;i+) settextstyle(TRIPLEX_FONT,HORIZ_DIR,i); (控制输出字符的字体,方向,大小) cleardevice(); settextjustify(1,1); (在指定坐标上输出字符串) outtextxy(300,
11、80,12) ; outtextxy(300,390,6); outtextxy(140,230,9); outtextxy(460,230,3); outtextxy(380,100,1); outtextxy(220,100,11); outtextxy(430,160,2); outtextxy(430,310,4); outtextxy(380,370,5); outtextxy(220,370,7); outtextxy(160,160,10); outtextxy(160,310,8); init(); setwritemode(1); (设置画线的输出模式) if(k!=0)4.
12、3画指针setcolor(9); (时针)n=(float)h+(float)m/60; (控制指针平滑的走动)d(140,n,30); setcolor(14); (分针) d(160,m,6); setcolor(4); (秒针) d(180,s,6); while(!kbhit() (控制程序按下任意键退出)5、时间的输出5.1获得系统时间函数gettime(t);h=t0.ti_hour;m=t0.ti_min;s=t0.ti_sec;5.2用字符的形式输出时间if(s10) if(m10)printf(%u:0%u:0%u,h,m,s);elseprintf(%u:%u:0%u,h,
13、m,s);else if(m10)printf(%u:0%u:%u,h,m,s);elseprintf(%u:%u:%u,h,m,s); 5.3结束程序getch();closegraph();6.运行结果7、小结7.1设计小结这次课程设计第一次使用了图形库函数,刚开始调试的时候出现了很多错误,尤其是刚编译的时候出现指针不走动,时间不显示,时间不正确等问题,后来通过查阅了相关资料,逐步将程序完善,现在它能获取系统的时间,并准确地行走。通过这次课程设计,不仅对书上的知识有所巩固和加深,还通过查阅资料,对课外知识有了一定的了解,从而启发我,想要做好一个程序,光是上课听老师讲课是不够的,还应该在课后多看各种资料,学会吸收和采纳各种好的程序序段,编程时也应该细心,耐心地检查,出现错误要认真地修改,否则还是会出现新的错误。7.2参考文献1谭浩强.C程序设计(第二版).北京:清华大学出版社,19992田淑清.C语言程序设计.北京:高等教育出版社,2006.忽略此处.7