


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、模拟时针转动程序姓名:李建利学号: 12020326完成日期: 2012 年 12 月设计目的加深对讲授内容的理解,尤其是一些语法规定。通过课程设计,自然地、熟 练地掌握。熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。 学会上机调试程序。熟悉C语言图形模式下的编程,掌握利用C语言相关函数开 发电子时钟的基本原理。能模拟机械钟表行走;要准确地利用数字显示时间;在屏幕上显示一个活动 时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数 字式时钟的时间显示与指针式时钟显示一致。总体设计电子时钟1J11动画显示模块转动时针处理模块数字时钟处理模块电子时钟的功能描述开始
2、进入图形模式进入主体界面显示动态图像转动时钟数字时钟的显示退出系统显示结束电子时钟流程图模块描述动画处理模块在屏幕上显示sin和cos型的动态函数图像,显示运动的问候语转时针动处理模块指针式的时钟表盘为椭圆形并且圆周上有分布均匀的12个刻度刻度显示清楚钟面上有长度不相同的指针即时针、分针、秒针指针的运动具有规律性为顺时针。数字时钟处理模块数字钟显示时间的格式是年月日时分秒小时为24进制,分钟和秒是60进制,指针式的时钟和数字式的时钟显示的时间同步且两个时钟 所显示的时间与计算机的系统时间一致。详细设计time结构体strume timeusig ned char ti_min;usig ned
3、 char ti_hour;usig ned char ti_hud;usig ned 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 型的彩带,且在整个函数中保留结果。
4、2. abc()函数原型 : void abc()abc()函数是用来在退出系统是输出运动的问候语,函数类型单一且比较简单。3 .digitclock ()函数原型 :void digitclock ()digitclock函数用于在(x,y)位置显示clock值,clock值为时分秒。4. clockhandle()函数原型 :void clockhandle()clockhandle ()函数用于完成时针转动和数字时钟的显示,包括时针转动角度的 运算,还有对声音的输出。5 . main()函数原型 : void main()main ()函数是主函数,既包括绘画表盘的基本框架,又有对其他函
5、数的调用函数测试与调试像 这些问但在函数编写完成后,进行过多次测试。在测试过程中遇到很多的问题, 数字时钟的显示位置与理想中的有偏差, 转动时针移动后痕迹不能清除。 题通过对 clockhandle ()的调整得到了很好的解决。还有就是在动画处理上运动时间的间隔和遇到路程的测试遇到了问题, 最后通过查阅资料都得到了解决。源程序清单#include<graphics.h>#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<math.h>#include<dos.
6、h>#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;
7、自动检测显示设备 */ 初始化图形系统 */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);/*
8、画主体框架的边角弧线 */ 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);显示标题 */绘制矩形时钟框架 */ 规定划线的方式(将所画位置的outt
9、extxy(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,2
10、70,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);/* 绘制表示分针或秒针的圆点 */setco
11、lor(3);for(i=0,m=0;i<=59;m+,i+)x=100*sin(m/30*PI)+451;y=200-100*cos(m/30*PI);setlinestyle(0,0,1);circle(x,y,1);setlinestyle(0,0,5);setcolor(5);outtextxy(110,90,"Name :Li Jianli"); outtextxy(110,105,"Xuehao:12020326"); setcolor(10);outtextxy(108,90,"Name");outtextxy(1
12、08,105,"Xuehao");setcolor(14);outtextxy(180,410,"Press Esc to change windows!");def();clockhandle(); /*开始调用时针处理程序 */abc();closegraph(); /* return 0;关闭图形函数 */* 时针处理函数 */ void clockhandle()int k=0,n=0;setcolor(15);gettime(t); /*h=t0.ti_hour;m=t0.ti_min;x=50*sin(h*60+m)/360*PI)+451;
13、 /* y=200-50*cos(h*60+m)/360*PI); /* line(451,200,x,y);获取系统时间 */时针的 x 坐标值 */ 时针的 y 坐标值 */x1=80*sin(m/30*PI)+451;/*y1=200-80*cos(m/30*PI);/*line(451,200,x1,y1);分针的 x 坐标值 */ 分针的 y 坐标值 */* 在数字时钟中显示时间 */digitclock(408,318,digithour(h);digitclock(446,318,digitmin(m);setwritemode(1); /*for(;k!=ESC;)setcol
14、or(12);/* 声音处理 */sound(500);/*delay(700);/*秒*/sound(200);delay(300);nosound(); /*s=t0.ti_sec;m=t0.ti_min;h=t0.ti_hour;x2=98*sin(s/30*PI)+451;/*y2=200-98*cos(s/30*PI);/*line(451,200,x2,y2);设置图形方式下划线输出模式 */以频率为500Hz打开PC扬声器*/发一个500Hz的音调,维持700毫关闭PC扬声器*/秒针的 x 坐标值 */ 秒针的 y 坐标值 */* 运动的问候语 */setfillstyle(0,
15、2); bar(100,115,320,150);setcolor(4);settextstyle(1,0,99); outtextxy(101+n*5,140,"Welcome!"); n=n+1;if(n>28) 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
16、)+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
17、(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-
18、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(
19、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(q<10)q=q+1;for(n=1;n<=35;n+) cleardevice(); setcolor(2); setlines
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年十八项医疗核心制度考试试题库及参考答案
- 辽宁省沈阳市康平县2024-2025学年八年级下学期期末语文试题(解析版)
- 小学技术考试试题及答案
- 2025培训中心合作协议模板
- 2025授权代理协议书全新版
- 2025劳动合同解除证明书电子版
- 搬运作业培训课件
- 搜寻动人事课件
- 2025执业医师合同范本
- 时政面试全攻略:如何应对最近时政面试题
- GB/T 2820.12-2002往复式内燃机驱动的交流发电机组第12部分:对安全装置的应急供电
- 设备基础知识-动设备课件
- GB/T 12599-2002金属覆盖层锡电镀层技术规范和试验方法
- 2023年哈尔滨市动力区法院书记员招聘笔试模拟试题及答案解析
- 2023年西安陕鼓动力股份有限公司招聘笔试题库及答案解析
- JG-017结构实体位置与尺寸偏差检测作业指导书
- 压铸件常见问题-气孔
- 放射源辐射事故专项应急预案
- 景观工程工作流程解读(PPT)
- 走近数字PCR学习培训课件
- 群控系统试运行及调试方案
评论
0/150
提交评论