c语言课程设计整点报时时钟.doc

上传人:laozhun 文档编号:2384833 上传时间:2023-02-17 格式:DOC 页数:11 大小:46.50KB
返回 下载 相关 举报
c语言课程设计整点报时时钟.doc_第1页
第1页 / 共11页
c语言课程设计整点报时时钟.doc_第2页
第2页 / 共11页
c语言课程设计整点报时时钟.doc_第3页
第3页 / 共11页
c语言课程设计整点报时时钟.doc_第4页
第4页 / 共11页
c语言课程设计整点报时时钟.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《c语言课程设计整点报时时钟.doc》由会员分享,可在线阅读,更多相关《c语言课程设计整点报时时钟.doc(11页珍藏版)》请在三一办公上搜索。

1、C语言实习报告 专业:xxxx班 姓名:xxx实习题目:整点报时时钟实习地点: 实习时间: 实习学院:专业班级: 实习者: 指导教师: 这次的计算机实训,我选择的题目是整点报时时钟;它的功能有以下几个:a. 具有指针式表盘界面(方形或圆形);b. 具有时针+分针+秒针并正确旋转;c. 时钟时间与系统时间相一致,秒针具有“滴答”声音效果.并实现整点报时.它的C语言源程序代码是:#include #define PI 3.1416#includemath.h#includedos.hvoid init_sceen(int,int,int); /*画时钟屏幕*/void sec();void mai

2、n()int x0=320,y0=240,r0=150; /* 时钟的中心位置(320,240) 以及 半径(150) */init_sceen(x0,y0,r0);sec();closegraph();void init_sceen(int x0,int y0,int r0)int i,x,y,graphdriver,graphmode;char s10;float alpha,a0=90;graphdriver=DETECT;initgraph(&graphdriver,&graphmode,); /* 初始化图形系统 */setbkcolor(0); /* 设置背景颜色为黑色 */set

3、color(2); /* 用绿色画出时钟的边框 */fillellipse(x0,y0,r0,r0+50);fillellipse(x0,y0,r0+30,r0+80);setfillstyle(1,1); /* 把时钟钟面以外都填成蓝色 */floodfill(x0-r0-50,y0,2);for(i=12;i=1;i-) /* 计算出数字112的位置 并在相应的位置输出数字*/ alpha=(a0+30*(11-i)*PI/180); x=x0+cos(alpha)*(r0-10); y=y0-sin(alpha)*r0; sprintf(s,%2d,i); setcolor(4); se

4、ttextstyle(0,0,1); /* 设置输出数字的字体 大小 */ outtextxy(x,y,s); /*画出刻度*/ for(i=60;i=1;i-) alpha=(a0+6*(60-i)*PI/180); x=x0+cos(alpha)*(r0-20); y=y0-sin(alpha)*(r0-20); setcolor(14); if(i%5=0) circle(x,y,5); else circle(x,y,2); floodfill(x,y,14); setlinestyle(0,0,3); /*以上部分的作用是完成表盘的设计*/ void sec(void)int x,y

5、,i,j,k,xj,yj,xk,yk,xi,yi,x0=320,y0=240,r0=150;union REGS r;unsigned char *shijian=;unsigned char *daa=;struct time tim;struct date dat;float alphai,alphak,alphaj,a0=90;xi=x0;yi=y0;xj=x0;yj=y0;xk=x0;yk=y0;do x=38;y=12;gettime(&tim); /* 从本机中获取时间 */sprintf(shijian,%02d:%02d:%02d,tim.ti_hour,tim.ti_min,

6、tim.ti_sec); /*获取日期*/getdate(&dat);sprintf(daa,%02d-%02d-%02d,dat.da_year,dat.da_mon,dat.da_day);bar(255,290,385,310); /* 一数字的形式输出日期 */setcolor(RED);outtextxy(275,295,daa);x=290;y=460;setcolor(RED);outtextxy(100,y,Designed by YANG FAN); /* 在指定位置显示字符 */setcolor(LIGHTRED);outtextxy(x,y0+20, WATCH );se

7、tlinestyle(0,0,3);k=tim.ti_hour;j=tim.ti_min;i=tim.ti_sec;alphak=(a0+30*(12-k)-j*5/60.*6)*PI/180;alphaj=(a0-6*j)*PI/180; /* 画秒针 */alphai=(a0+6*(60-i)*PI/180;x=x0+cos(alphai)*(r0-32);y=y0-sin(alphai)*(r0-32);setcolor(WHITE);line(x0,y0,xi,yi);setcolor(RED);line(x0,y0,x,y);xi=x;yi=y; /* 画分针 */x=x0+cos(

8、alphaj)*(r0-60);y=y0-sin(alphaj)*(r0-60);setcolor(WHITE);line(x0,y0,xj,yj);setcolor(12);line(x0,y0,x,y);xj=x;yj=y; /* 画时针 */x=x0+cos(alphak)*(r0-80);y=y0-sin(alphak)*(r0-80);setcolor(WHITE);line(x0,y0,xk,yk);setcolor(13);line(x0,y0,x,y);xk=x;yk=y;delay(1000);while(!kbhit();/*在不按任何键的时候执行上面的命令.即按任何键退出

9、 */该程序运行结果是:一个椭圆形表盘,背景为黑色,时钟钟面以外都填成蓝色,时钟的边框为绿色。时钟时针,分针,秒针都正常运转。时钟中心下方有“WATCH”字样,左下方有“Designed by YANG FAN”字样。该设计的缺点是表盘上无数字“9”显示,且表盘的数字与刻度有一些偏差。修改后的C语言程序代码是:#include #define PI 3.1416#includemath.h#includedos.h#include#include#define S1 45#define S2 S1/2#define S4 S1/4#define S8 S1/8#define S16 S1/16

10、enum FREQDEF L1=131,L2=147,L3=165,L4=175,L5=196,L6=220,L7=247, N1=262,N2=296,N3=330,N4=349,N5=392,N6=440,N7=494, H1=523,H2=587,H3=659,H4=698,H5=784,H6=880,H7=988, I1=1047,I2=1175,I3=1319,I4=1397,I5=1568,I6=1760,I7=1976song= N2,S4,N2,S8,N3,S16,N2,S16,N1,S4,L6,S4,L5,S8,L3,S8,L5,S8,L6,S8,N1,S2,L6,S4, L

11、6,S8,N1,S8,N5,S8,N6,S8,N3,S8,N5,S8,N2,S1,N3,S4,N3,S8,N2,S8,N3,S8,N5,S4,N3,S4, L5,S8,L3,S8,L5,S8,L6,S8,N1,S2,L6,S4,L6,S8,N1,S8,L6,S8,L6,S8,L2,S8,L3,S8,L5,S1,N2,S4, N2,S4,N5,S4,N6,S8,N5,S8,N4,S2,N5,S2,N6,S4,N5,S8,N3,S8,N2,S8,N3,S16,N2,S16,N1,S8,L6,S16, N1,S16,N2,S1,N3,S4,N2,S8,N3,S8,N5,S4,N3,S4,L5,S8,

12、L3,S8,L5,S8,L6,S8,N1,S2,L6,S4, L6,S8,N1,S8,N2,S8,L6,S8,N1,S8,N3,S8,N2,S1,0;/*编写报时音乐*/void init_sceen(int,int,int); /*画时钟屏幕*/void sec();void main()int x0=320,y0=240,r0=150; /* 时钟的中心位置(320,240) 以及 半径(150) */init_sceen(x0,y0,r0);sec();closegraph();void init_sceen(int x0,int y0,int r0)int i,x,y,graphdri

13、ver,graphmode;char s10;float alpha,a0=90;graphdriver=DETECT;initgraph(&graphdriver,&graphmode,); /* 初始化图形系统 */setbkcolor(0); /* 设置背景颜色为黑色 */setcolor(2); /* 用绿色画出时钟的边框 */fillellipse(x0,y0,r0+50,r0+30);fillellipse(x0,y0,r0+50,r0+30);setcolor(2); fillellipse(200,80,30,50);fillellipse(200,100,18,30);fil

14、lellipse(430,80,30,50);fillellipse(430,100,18,30); /* 用绿色画出耳朵 */setcolor(0);circle(260,180,15);circle(380,180,15);circle(260,180,2);circle(380,180,2); /* 用黑色画出眼睛 */setcolor(2);line(260,220,180,210);line(260,240,175,240);line(260,260,180,270);line(380,220,460,210);line(380,240,465,240);line(380,260,4

15、60,270); /* 用绿色画出胡子 */setfillstyle(1,1); /* 把时钟钟面以外都填成蓝色 */floodfill(x0-r0-50,y0,2);for(i=12;i=1;i-) /* 计算出数字112的位置 并在相应的位置输出数字*/ alpha=(a0+30*(11-i)*PI/180)+0.05; x=x0+cos(alpha)*r0-10; y=y0-sin(alpha)*r0-5; /* 使显示的数字水平 */ sprintf(s,%2d,i); setcolor(4); settextstyle(0,0,1); /* 设置输出数字的字体 大小 */ outte

16、xtxy(x,y,s); /*画出刻度*/ for(i=60;i=1;i-) alpha=(a0+6*(60-i)*PI/180)+10; /* 使显示的刻度水平 */ x=x0+cos(alpha)*(r0-20); y=y0-sin(alpha)*(r0-20); setcolor(14); if(i%5=0) circle(x,y,5); else circle(x,y,2); floodfill(x,y,14); setlinestyle(0,0,3); /*以上部分的作用是完成表盘的设计*/ void sec(void)int x,y,i,j,k,xj,yj,xk,yk,xi,yi,

17、x0=320,y0=240,r0=150;union REGS r;unsigned char *shijian=;unsigned char *daa=;struct time tim;struct date dat;float alphai,alphak,alphaj,a0=90;xi=x0;yi=y0;xj=x0;yj=y0;xk=x0;yk=y0;do x=38;y=12;gettime(&tim); /* 从本机中获取时间 */sprintf(shijian,%02d:%02d:%02d,tim.ti_hour,tim.ti_min,tim.ti_sec);char a10;setc

18、olor(RED);sprintf(shijian,%02d:%02d:%02d,tim.ti_hour,tim.ti_min,tim.ti_sec);outtextxy(290,320,shijian);/* 显示时间 */if(0tim.ti_hour8); control=inportb(0x61); outportb(0x61,(control)|0x3); goal=(clock_t)dur+clock(); while(goalclock(); if(fre) outportb(0x61,control); goal=(clock_t)0; note=note+2; /* 整点报时

19、 */ /*获取日期*/getdate(&dat);sprintf(daa,%02d-%02d-%02d,dat.da_year,dat.da_mon,dat.da_day);bar(255,290,385,310); /* 一数字的形式输出日期 */setcolor(RED);outtextxy(275,295,daa);x=290;y=460;setcolor(RED);outtextxy(230,y,Designed by DUAN ZHI HAO); /* 在指定位置显示字符 */setcolor(LIGHTRED);outtextxy(x,y0+20, WATCH );setline

20、style(0,0,3);k=tim.ti_hour;j=tim.ti_min;i=tim.ti_sec;alphak=(a0+30*(12-k)-j*5/60.*6)*PI/180;alphaj=(a0-6*j)*PI/180; /* 画秒针 */alphai=(a0+6*(60-i)*PI/180;x=x0+cos(alphai)*(r0-32);y=y0-sin(alphai)*(r0-32);setcolor(WHITE);line(x0,y0,xi,yi);setcolor(RED);line(x0,y0,x,y);xi=x;yi=y; /* 画分针 */ x=x0+cos(alph

21、aj)*(r0-60);y=y0-sin(alphaj)*(r0-60);setcolor(WHITE);line(x0,y0,xj,yj);setcolor(12);line(x0,y0,x,y);xj=x;yj=y;/* 画时针 */x=x0+cos(alphak)*(r0-80);y=y0-sin(alphak)*(r0-80);setcolor(WHITE);line(x0,y0,xk,yk);setcolor(13);line(x0,y0,x,y);xk=x;yk=y;delay(1000);while(!kbhit(); /*在不按任何键的时候执行上面的命令.即按任何键退出 */修

22、改后的程序运行结果为:背景颜色为黑色,时钟钟面为白色,上面有一个小猫的头像,且在图案上出现了时间的显示。小猫的图案由绿色画出。时钟时针,分针,秒针都正常运转。时钟中心下方有“WATCH”字样,左下方有“Designed by DUAN ZHI HAO”字样。经过修改后,钟表表盘上的数字,刻度,指针都一一对应,且具有了整点报时的功能,响铃时间三十秒。实习心得:一周的上机实习结束了,在这段时间内,我的C语言知识得到了温习,我觉得这次实习很重要,而且是恰逢其时,当然通过自己对程序改编的过程,也有了一些心得:首先改程序是一个很费力的活动,你必须先把改编之前的程序全部弄明白后,才能知道程序中的不足,对其

23、进行完善;其次,编程要有一个扎实的知识储备,没把课本看好,没把例题看好,不会读得懂程序,更不可能把程序修改的更好,同时,如果不多看程序,不断吸收别人的编程思想,也就不会编出精彩的程序;当然也不能忽略与别人讨论与请教,在这过程中,我们可以相互交流编程想法,找到解决问题的最佳路径,这种团结协作的精神也是必须要有的。一周很短,编程的过程却很漫长,思考,编程,运行,这就是编程的感觉。感谢帮助我,还有一起讨论问题的同学,在遇到小问题的时候,他们总是很耐心的解释,感谢这次上机机会,让我重新温习了C语言,也让我对明年的等级考试更有信心。在初学语言的一个学期后,我们进行了语言实训阶段,尝试改编一个比较复杂的程

24、序系统。在这次实训中,我对C语言有了一个更深的了解认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序成功,让我对下面的项目就充满信心。通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。这次的实训,使我对C语言的学习产生浓厚的兴趣。通过这次实训,也使我们发现了许多问题。在实训中,我们认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的变态,以后要克服,尽量保持一颗良好的心态,学好C语言,也学好用C语言编写一个按要求的系统。一年来,我们已经学习了C语言,在应用这些语言的过程中,我们的逻辑思维得到了加强,更重要的是我们把在数学上学习到的算法应用到计算机程序中,通过分析问题,调查研究,最终解决问题。尽管每次解决问题的过程不会都很顺利,尤其是在出错的时候总是很难解决那些很细微的错误,比如一个符号打错,或者漏掉一个标点,检查起来都会很麻烦,但是,每次成功的运行,得到的不仅仅是一个正确的结果,更多的是体会到了过程,有了一种成就感。还有就是对于下学期的C+,我觉得我还必须在C语言上进行提高,以应对下学期更高难度的C+。总之,这一切都成为我记忆里面的一个篇章,更是在C语言编程上的一个里程碑。

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号