




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模拟时针转动程序姓名:学号:完成日期:2012年12月 设计目的加深对讲授内容的理解,尤其是一些语法规定。通过课程设计,自然地、熟练地掌握。熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。学会上机调试程序。熟悉C语言图形模式下的编程,掌握利用C语言相关函数开发电子时钟的基本原理。能模拟机械钟表行走;要准确地利用数字显示时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致。 总体设计电子时钟动画显示模块转动时针处理模块数字时钟处理模块 电子时钟的功能描述开始进入图形模式进入主体界面 显示动态图像结束退出系统显示转动时钟数字时钟的显示 电子时钟流程图模块描述动画处理模块 在屏幕上显示sin和cos型的动态函数图像,显示运动的问候语。转时针动处理模块 指针式的时钟表盘为椭圆形并且圆周上有分布均匀的12个刻度刻度显示清楚钟面上有长度不相同的指针即时针、分针、秒针指针的运动具有规律性为顺时针。数字时钟处理模块 数字钟显示时间的格式是年月日时分秒小时为24进制,分钟和秒是60进制,指针式的时钟和数字式的时钟显示的时间同步且两个时钟所显示的时间与计算机的系统时间一致。 详细设计time结构体strume time usigned char ti_min; usigned char ti_hour; usigned char ti_hud; usigned char ti_sec; ;time 结构体定义在dos.h文件中,可以保存系统的当前时间。全局变量double h,m,s;这三个变量分别保存小时,分钟,秒。double x,y,x1,y1,x2,y2;保存数字时钟中小时分钟秒在屏幕中显示的位置。struct time t1;定义一个time结构类型的数组。函数功能的描述1. def()函数原型: void def()def()函数是用来输出一组彩带的,通过输入位置和颜色的变化来输出sin型的彩带,且在整个函数中保留结果。2. abc()函数原型: void abc()abc()函数是用来在退出系统是输出运动的问候语,函数类型单一且比较简单。3 .digitclock()函数原型:void digitclock()digitclock函数用于在(x,y)位置显示clock值,clock值为时分秒。4. clockhandle()函数原型:void clockhandle()clockhandle()函数用于完成时针转动和数字时钟的显示,包括时针转动角度的运算,还有对声音的输出。5 . main()函数原型: void main()main()函数是主函数,既包括绘画表盘的基本框架,又有对其他函数的调用。 函数测试与调试 在函数编写完成后,进行过多次测试。在测试过程中遇到很多的问题,像数字时钟的显示位置与理想中的有偏差,转动时针移动后痕迹不能清除。这些问题通过对clockhandle()的调整得到了很好的解决。 还有就是在动画处理上运动时间的间隔和遇到路程的测试遇到了问题,但最后通过查阅资料都得到了解决。 源程序清单#include#include#include#include#include#include#define PI 3.1415926#define ESC 0x11b#define step 10 /*函数声明*/int digithour(double);int digitmin(double);int digitsec(double);void digitclock(int,int,int);void clockhandle();void abc();void def();double h,m,s,day,mon;double x,x1,x2,y,y1,y2;struct time t1; /*主函数*/main() int driver,mode=0,i,j; driver=DETECT; /*自动检测显示设备*/ initgraph(&driver,&mode,); /*初始化图形系统 */ setlinestyle(0,0,3); setbkcolor(0); /*画主体框架的边线*/ setcolor(12); line(82,430,558,430); line(70,62,70,418); line(82,50,558,50); line(570,62,570,418); line(70,62,570,62); line(76,56,295,56); line(342,56,564,56); /*画主体框架的边角弧线*/ setlinestyle(0,0,3); arc(82,62,90,180,12); setlinestyle(0,0,3); arc(558,62,0,90,12); setlinestyle(0,0,3); arc(82,418,180,279,12); setlinestyle(0,0,3); arc(558,418,270,360,12); setlinestyle(0,0,7); setcolor(9); outtextxy(301,53,CLOCK); setcolor(15); outtextxy(299,53,CLOCK); /*显示标题*/ setcolor(9); rectangle(342,72,560,380); /*绘制矩形时钟框架 */ setwritemode(0); /*规定划线的方式(将所画位置的原来信息覆盖)*/ setcolor(13); outtextxy(405,75,BeiJing Shijian); /*绘制电子时钟的边框*/ setlinestyle(0,0,1); setcolor(7); line(392,310,510,310); line(392,330,510,330); arc(392,320,90,270,10); arc(510,320,270,90,10); /*绘制数字时钟的分隔符*/ setcolor(5); for(i=431;i=470;i+=39) for(j=317;j=324;j+=7) setlinestyle(0,0,3); circle(i,j,1); /*绘制表示小时的圆点*/ for(i=0,m=0,h=0;i=11;i+,h+) x=100*sin(h*60+m)/360*PI)+451; y=200-100*cos(h*60+m)/360*PI); setlinestyle(0,0,3); setcolor(5); circle(x,y,1); /*绘制表示分针或秒针的圆点*/ setcolor(3); for(i=0,m=0;i28) n=0; /*利用此循环,延时一秒*/ while(t0.ti_sec=s&t0.ti_min=m&t0.ti_hour=h) gettime(t); if(bioskey(1)!=0) k=bioskey(0); /*数字时钟的秒针*/ setcolor(15); digitclock(485,318,digitsec(s)+1); /*用原来的颜色在原来位置再绘制秒针,清除当前秒针*/ setcolor(12); x2=98*sin(s/30*PI)+451; y2=200-98*cos(s/30*PI); line(451,200,x2,y2); /*分针处理*/ if(t0.ti_min!=m) /*消除当前分针*/ setcolor(15); x1=80*sin(m/30*PI)+451; y1=200-80*cos(m/30*PI); line(451,200,x1,y1); /*绘制新的分针*/ m=t0.ti_min; digitclock(446,318,digitmin(m); /*在数字时钟中显示新的钟值*/ x1=80*sin(m/30*PI)+451; y1=200-80*cos(m/30*PI); line(451,200,x1,y1); /*小时处理*/ if(t0.ti_hour*60+t0.ti_min)!=(h*60+m) /*消除当前时针*/ setcolor(15); x=50*sin(h*60+m)/360*PI)+451; y=200-50*cos(h*60+m)/360*PI); line(451,200,x,y); /*绘制新的时针*/ h=t0.ti_hour; digitclock(408,318,digithour(h); x=50*sin(h*60+m)/360*PI)+451; y=200-50*cos(h*60+m)/360*PI); line(451,200,x,y); /*在指定位置显示数字时钟*/ void digitclock(int x,int y,int clock) char bufferl10; setfillstyle(0,2); bar(x,y,x+15,328); /*画一个二维码*/ if(clock=60) clock=0; sprintf(bufferl,%d,clock); outtextxy(x,y,bufferl); /*将double型的小时数转换成int型*/ int digithour(double h) int i; for(i=0;i=23;i+) if(h=i) return i; /*将double型的分针数转换成int型*/ int digitmin(double m) int i; for(i=0;i=59;i+) if(m=i) return i; /*将double型的秒钟数转换成int型*/ int digitsec(double s) int i; for(i=0;i=59;i+) if(s=i) return i; /*滚动的字幕*/ void abc() int n,size,q=0; static int startx=5; static int starty=10; setbkcolor(1); while(q10) q=q+1; for(n=1;n=35;n+) cleardevice(); setcolor(2); setlinestyle(0,0,1); setfillstyle(1,10); rectangle(startx+n*step,starty+n*step,startx+n*step+160,starty+n*step+80); /*绘制矩形*/ floodfill(startx+n*step+10,starty+n*step+20,2); settextstyle(1,0,2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年苏教版七年级生物学上下册期末模拟考试题卷(一)
- 工业废弃物处理技术
- 工业废水处理技术与案例分享
- 工业机器人技术与产业发展
- 工业用地效率评价与提升途径
- 工业机器人技术及其产业升级的推动力
- 工业机器人技术的发展及应用前景
- 工业物联网的推进与智能制造的实践
- 工业节能与新能源的融合实践
- 工业热处理中的机器学习技术应用
- 进一步财会监督复习试题附答案
- 江西省赣州市2024-2025学年高二上学期1月期末考试英语试题(解析版)
- 2024年中国心力衰竭诊断与治疗指南更新要点解读
- 篮球裁判员手册
- 方形和圆筒形电容器对比
- DeepSeek从入门到精通培训课件
- 统编版(2025版)七年级下册道德与法治期末复习知识点背诵提纲详细版
- 护理文件书写导致的纠纷
- 2024年全国职业院校技能大赛高职组(研学旅行赛项)考试题库(含答案)
- A3精益报告书培训
- 标准菌株管理
评论
0/150
提交评论