您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > c语言-----图形模拟时钟
学号1408210136《高级语言程序设计》课程设计报告题目:图形模拟时钟专业:计算机科学与技术班级:14级(2)班姓名:王欣指导教师:陈广宏成绩:计算机学院2015年5月20日2014-2015学年第二学期计算机学院《高级语言程序设计》课程设计1目录1设计内容及要求...........................................................21.1设计要求.................................................................21.2程序结构流程图.....................................................22概要设计.......................................................................42.1概要分析.................................................................42.2数据结构设计.........................................................62.3用法说明.................................................................62.4实验结果要求.........................................................73设计结果与分析...........................................................73.1实验结果.................................................................73.2实验结果与分析.....................................................74小结...............................................................................8致谢...................................................................................8参考文献...........................................................................8源代码...............................................................................9计算机学院《高级语言程序设计》课程设计21设计内容及要求1.1设计要求模拟机械钟表行走;要准确地利用数字显示日期和时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致;按任意键时程序退出。在屏幕上显示一个图形时钟(用程序绘制一个班于时钟样式相似即可),时间与系统时间一致,且要随着时间的走到准确的走动。1.2程序结构流程图图1:总程序流程计算机学院《高级语言程序设计》课程设计3图2:指针转动流程图计算机学院《高级语言程序设计》课程设计42概要设计2.1概要分析(1)voidDrawclock函数voidDrawClock(intx,inty,intcolor){intr=150;floatth;setcolor(color);circle(x,y,r);circle(x,y,2);}作用:画表盘(r为表盘的半径,x,y为圆心的坐标。)(2)voidDrawHand函数voidDrawHand(intx,inty,floatth,intl,intcolor){intx1,y1;x1=x+l*sin(th);y1=y-l*cos(th);setcolor(color);line(x,y,x1,y1);}作用:画指针x:直线起点的横坐标y:直线起点的纵坐标x1:直线终点的横坐标y1:直线终点的纵坐标(3)voidmain()函数Part①:intgdriver=DETECT,gmode;structtimecurtime;..............类型和最高分辨率floatth_hour,th_min,th_sec;initgraph(&gdriver,&gmode,);计算机学院《高级语言程序设计》课程设计5Graphdriver---配适器graphmode---显示模式Part②:setbkcolor(0);....................背景色Part③:while(!kbhit()){DrawClock(x0,y0,14);..................函数gettime(&curtime);.........得到当前系统时间gotoxy(35,20);...............定位输出位置Part④:if((float)curtime.ti_hour=12).............上午的时间处理{printf(AM);if((float)curtime.ti_hour10)printf(0);....十点之前在小时数前加零printf(%.0f:,(float)curtime.ti_hour);}...........输出小时else............下午的时间处理{printf(PM);if((float)curtime.ti_hour-1210)printf(0);.........如果时间减去12小时小于10printf(%.0f:,(float)curtime.ti_hour-12);}..........输出小时Part⑤:if((float)curtime.ti_min10)printf(0);.........相当于小时的计算方法printf(%.0f:,(float)curtime.ti_min);.......输出分钟(同part④)if((float)curtime.ti_sec10)printf(0);printf(%.0f,(float)curtime.ti_sec);Part⑥:以下三行计算表针转动角度,以竖直向上为起点,顺时针为正计算机学院《高级语言程序设计》课程设计6th_sec=(float)curtime.ti_sec*0.1047197551;-------------*(2π/60=0.1047197551)th_min=(float)curtime.ti_min*0.1047197551+th_sec/60.0;th_hour=(float)curtime.ti_hour*0.523598775+th_min/12.0;----*(2π/12=0.5235987755)Part⑦:画指针DrawHand(x0,y0,th_hour,70,2);...................画时针DrawHand(x0,y0,th_min,110,3);...................画秒针Part⑧:settextstyle(2,0,3);..............设置字体2:文字的字体;0:文字的方向;3:文字的大小outtextxy(270,160,MADEBY:SDW);.............输出字体(270,160)为字体的坐标Part⑨:sleep(1);...........延时一秒后刷新cleardevice();.............清除图形屏幕closegraph().......关闭图形系统,退出图形方式2.2数据结构设计1)是对时钟程序做全面的分析,即对程序要使用的编写方法功能,运行方式进行分析,并做出正确的解决方案。2)是程序的编写。由于该程序所涉及的信息内容比较广泛,所以程序的编写也有些复杂。程序的编写是一项困难的任务,完成此程序必须运用书中的大部分知识,而且要有清晰的思路和较强的语言组织能力。3)是程序的检查和系统的调用。当程序运行后,显示出一个时钟。2.3用法说明第一步,用编辑程序把编制的源程序按照一定的书写格式送到计算机中;第二步,把送入的源程序翻译成机器语言,即用编译程序对源程序进行语法并将符合语法规则源程序语句翻译成计算机能识别的“语言”;计算机学院《高级语言程序设计》课程设计7第三步,使用计算机中的连接程序,把翻译好的计算机语言程序连接起来,并扶植成一个计算机能真正运行的程序;第四步,将修改后的程序运行;第五步,以后使用时双击clock.exe文件即科。2.4试验结果要求在屏幕上显示一个时钟,(包括:时针,分针,秒针)时针所显示的时间为系统时间,用户可以通过修改系统的时间来修改时钟的时间。3设计结果与分析3.1实验结果图4:实验结果计算机学院《高级语言程序设计》课程设计83.2实验结果分析与讨论问题:程序清单中某个符号添加错误,导致编译时出现错误,执行不出结果。分析:经小组讨论分析与搜索,源程序中符号“::”无意义,删除程序清单中所有“::”符号,在编译时,无错误。4小结刚开始做时基本上什么都不懂,用TC做,我更不会。不过参考了很多资料,到网上查,泡了几天图书馆,差不多能写出基本程序,虽然很多是借鉴别人的,不过能写成这样,我心里还是挺高兴的。有了一点成功我就很兴奋,这是动力。程序很奇特,很多问题都可以用程序编写,看到那些大型程序我就感觉我也能写出这样的程序。程序设计主要靠理解与运用,有些没有学过的知识不一定要懂得彻底,只要会运用就行。不足之处也很多,程序思路不太清晰可能有些混乱。有很多程序设计使用并不熟练,甚至有些方法掌握不了,更容易忘记。算法结构了解并不深入,独立自主的想法占据总体达不到要求。需要加强练习和对知识的理解与掌握。通过上机实验加深对课内所学的C和C++语言函数图形编程基本操作的理解,熟练掌握常见的绘图函数,并熟悉和熟练掌握TC的应用和开发环境,在图像编辑也有了很大的进步,在图形程序设计方法,图形生成算法以及C和C++语言编程环境,程序的调试额测试方面受到比较系统和严格的训练。我看到了计算机编程这门课中有意义的一面,增加了我学习这门课程的兴趣,计算机编程大大简化了我们生活中的很多复杂的工作,也使我们的生活更加方便,简单。提高了生活的效率,加快了生活的节奏。计算机在现在必将方便生活,为人民带来高质量的生活。这也让我对自己的专业课充满了信心和对该课程的爱好,我一定会积极的学习专业课知识,充分发挥该门课程的作用,查找更多的专业资源,用来补偿我的不足。在以后的学习中我会更加努力,更多动手,多学习。计算机学院《高级语言程序设计》课程设计9致谢在这次C语言课程设计中,我的老师和同学给了我及大的帮助。特别是我的指导老师陈广宏老师,还有我的小组组长仇媛媛的耐心帮助,在此,我对他们表示感谢!感谢他们在我面对困难时给了我帮助和支持。也感谢那些给我帮助的所有同学!参考文献[1]张基温.C语言程序设计案例教程.清华大学出版社,2005[2]王德银实用C语言程序设计.人民邮电出版社,2005[3]谭浩强.C语言程序设计教程.高等教育出版社,2006[4]段兴.C言实用程序设计10100例.人民邮电出版社,2002[5]杨旭.C语言程序设计案例教程.中国铁道工业出版社,2004源代码#includegraphics.h#includemath.h#includedos.h#definepi3.1415926voiddraw(inta,intb,intc){floatx,y;x=a*cos(b*c*pi/180-pi/2)+300;/*确定横坐标*/y=a*sin(b*c*pi/180-pi/2)+240;
本文标题:c语言-----图形模拟时钟
链接地址:https://www.777doc.com/doc-4209067 .html