为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

模拟时钟转动程序

2019-02-12 17页 doc 46KB 56阅读

用户头像

is_079973

暂无简介

举报
模拟时钟转动程序模拟时钟转动程序 一、课程设计的内容 能模拟机械钟表行走,还要准确利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。 二、课程设计的要求与数据 1. 进一步掌握和利用C语言进行课程设计的能力 2. 进一步理解和运用结构化程序设计的思想和方法 3. 初步掌握开发一个小型实用系统的基本方法 4. 学会调试一个较长程序的基本方法 5. 学会利用流程图和N-S图表示算法 6. 掌握书写程序设计开发文当的能力 三、课程设计应完成的工作 1、 编写完成相应题目的程序 2、 编写课程设计报告,课程设计报告应该包含以下6...
模拟时钟转动程序
模拟时钟转动程序 一、课程设计的内容 能模拟机械钟表行走,还要准确利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。 二、课程设计的要求与数据 1. 进一步掌握和利用C语言进行课程设计的能力 2. 进一步理解和运用结构化程序设计的思想和方法 3. 初步掌握开发一个小型实用系统的基本方法 4. 学会调试一个较长程序的基本方法 5. 学会利用流程图和N-S图表示算法 6. 掌握书写程序设计开发文当的能力 三、课程设计应完成的工作 1、 编写完成相应题目的程序 2、 编写课程设计,课程设计报告应该包含以下6部分 1) 需求分析:包括设计题目、设计要求以及系统功能需求分析 2) 总体设计:包括系统总体设计框架和系统功能模块图 3) 详细设计:包括主要功能模块的算法设计思路以及对应的图 4) 调试分析过程描述:包括测试数据、测试输出结果以及对程序测试过程中存在问题进行思考(主要问题的出错现象、出错原因、解决方法及其效果等,相应效果截图) 5) 总结:课程设计完成了哪些主要功能,是否有扩展功能?还有哪些地方需要改进?课程设计的学习与体会?有哪些合理化建议? 6) 附录:主要原程序代码含必要的注释 3、  答辩:在实验室建立程序运行环境,并在指导教师的监督下,独立解决问题,运行程序和回答教师的提问。 四、课程设计进程安排 序号 设计各阶段内容 地点 起止日期 1 下达任务书,说明设计要求,收集资料 实验3#607 6.1 2 总体设计、详细设计 实验3#607 6.2 3 编写程序调试分析 实验3#607 6.3 4 撰写报告并上交,答辩 实验3#607 6.5         五、应收集的资料及其主要参考文献 [1] 谭浩强.C程序设计(第三版)[M]北京:清华大学出版社,2005年9月 [2] 谭浩强.C程序设计题解与上机指导(第三版)[M]北京:清华大学出版社,2005年7月 [3] 夏宝岚 张慕蓉 夏耘.程序设计教程(第二版)[M],上海:华东理工出版社,2003.1 [4] 陈锦昌 赵明秀.C语言计算机绘图教程(第一版)[M],广州:华南理工大学出版社,1998.9 发出任务日期:2010年12月15日        指导教师签名: 计划完成日期:2010年12月30日     基层教学单位责任人签名: 主管院长签章: 目   录 1. 设计目的与要求…………………………………………………5 2. 总体设计…………………………………………………………6 3. 详细设计…………………………………………………………7                              3.1画出钟表的轮廓 3.2获取系统时间 3.3时间和声音的表达 4.调试分析…………………………………………………………8 5.总结………………………………………………………………9 6.附录(程序)……………………………………………………10 7.答辩(正文处留出适当空白)……………………………13 8.指导教师意见(正文处留出适当空白)………………………14 1. 目的与要求  要求: 能模拟机械钟表行走,还要准确利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。 总体要求: ①对系统进行功能模块分析、控制模块分析正确; ②系统设计要实用; ③编程简练,可用,功能全面,具有较好的健壮性; ④、流程图要清楚。 课程设计报告要求: ①需求和规格说明:问题描述:题目要解决的问题是什么? ②设计 ⊕设计思路:主要算法思想。 ⊕总体设计:程序设计组成框图、N-S流程图。 ⊕详细设计:模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)。 ③调试与测试:调试过程中遇到的主要问题,是如何解决的;对设计和编码的回顾讨论和分析;改进设想;经验和体会等。 ④附录:源程序清单和结果。如果题目规定了测试数据,则结果要包含这些测试数据和运行输出,当然还可以含其他测试数据和运行输出;清单中应有足够的注释。 2. 总体设计 首先,先画出个钟的大致轮廓。从输出数字到画出外轮廓,到标出短线到画出时针、分针、秒针。这个轮廓就已经完成了。 然后,为了更加这个钟的实用性。就通过获取系统时间来结合实际意义,这是最简单,最好的方法。从应用上,它显示的是实际的时间,增强了可用性;从编程上,不用再复杂地再编一个更时间一样的函数来,减少程序的篇幅、复杂性和编程者的工作量。接着顺带利用时间的变量名来画时针,分针,秒针。 最后,为了让时针,分针,秒针让观察者看起来是连续的变化,即形象地模拟真实的机械钟表那样运动,就用函数让时针,分针,秒针跟着时间一齐走动。 3. 详细设计 1. 画出钟表的轮廓: 1)钟表的外轮廓  circle(320,240,189); circle(320,240,180); 2)画出钟内的短线 x1=180*sin(i*6*pi/180)+320; y1=180*cos(i*6*pi/180)+240; x2=(180-l)*sin(i*6*pi/180)+320; y2=(180-l)*cos(i*6*pi/180)+240; line(x1,y1,x2,y2); 3)画出时针、分针、秒针 d(120,n,30); d(140,m,6); d(160,s,6); 2. 获取系统时间: getdate(d); gettime(t); 3. 时间和声音的表达: 1)时间 时针 d(120,h,30); h=t[0].ti_hour; d(120,h,30); 分针 d(140,m,6); m=t[0].ti_min; d(140,m,6); 秒针 d(160,s,6); s=t[0].ti_sec; d(160,s,6); 2)声音 delay() sound() 4. 调试分析 5. 总结 在这次模拟时钟转动程序设计中,我遇到了很多困难,通过查资料,向同学、师兄、老师请教,才一一得到解决。我发现平时自学到的知识太少了,“书到用时方恨少”,今后我要把更多时间用在基础学习上,利用课余时间多看课外书籍,拓宽知识面。C语言的设计必须结合实际,充分考虑界面友好等人性化设置,这就要求我们要多观察,敢创新。另外上机实验是必不可少的,理论的东西学得再好,不结合实验区验证始终只能停留在理论阶段。通过此次实战演练,我还学到很重要的一点,就是要虚心请教他人,个人的力量总是有限的,只有发挥众人的智慧才能把任务完成的更好,这在今后的工作中也是相当重要的。 6. 附录 #include"graphics.h" #include"math.h" #include"dos.h" #define pi 3.141592654 #define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+320 #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(320,240,x,y) Void init()                                    /*划时钟边框函数*/ { int i,l,x1,x2,y1,y2; circle(320,240,189); circle(320,240,180); for(i=0;i<60;i++) { if(i%5==0) l=18; else l=6; x1=180*sin(i*6*pi/180)+320; y1=180*cos(i*6*pi/180)+240; x2=(180-l)*sin(i*6*pi/180)+320; y2=(180-l)*cos(i*6*pi/180)+240; line(x1,y1,x2,y2); } } main() { int x,y,i,k=1; int gdriver=9,gmode=2; unsigned char h,m,s; int o,p,q; float e; struct time t[1]; struct date d[1]; initgraph(&gdriver,&gmode,"D:\\tc"); /*设置图形驱动程序的目录路径*/ for(i=0;i<=6;i++) { settextstyle(TRIPLEX_FONT,HORIZ_DIR,i);    /*控制输出字体,方向,大小*/ cleardevice(); settextjustify(1,1);          /*在指定坐标上输出字符*/ outtextxy(320,100,"12") ; outtextxy(460,240,"3"); outtextxy(320,380,"6"); outtextxy(180,240,"9"); } init(); setwritemode(1);                      /*设置画线的输出模式*/ if(k!=0) { getdate(d);                          /*获得系统日期函数*/ o=d[0].da_year; p=d[0].da_mon; q=d[0].da_day; gettime(t);                          /*获得系统时间函数*/ h=t[0].ti_hour; m=t[0].ti_min; s=t[0].ti_sec; } setcolor(3);                                /*设置时针颜色*/ e=(float)h+(float)m/60; d(120,e,30);                                    /*画出时针*/ setcolor(14);                              /*设置分针颜色*/ d(140,m,6);                                      /*画出分针*/ setcolor(4);                              /*设置秒针颜色*/ d(160,s,6);                                      /*画出秒针*/ while(!kbhit())                  /*控制程序按下任意键退出*/ { while(t[0].ti_sec==s) gettime(t); gotoxy(46,19);                  /*使光标移动到指定坐标*/ printf("\b\b\b\b\b\b\b\b\b");      /*退格,使表示时间的字符串不断变化*/ sound(400);                /*按给定的频率打开PC扬声器*/ delay(70);              /*中断程序的执行,时间为70毫秒*/ sound(200); delay(30); nosound();                /*按给定的频率关闭PC扬声器*/ setcolor(4); d(160,s,6); s=t[0].ti_sec; d(160,s,6); if(t[0].ti_min!=m) { setcolor(14); d(140,m,6); m=t[0].ti_min; d(140,m,6); } if(t[0].ti_hour!=h) { setcolor(3); d(120,h,30); h=t[0].ti_hour; d(120,h,30); sound(1000); delay(240); nosound(); delay(140); sound(2000); delay(240); nosound(); } if(s<10)                        /*用字符的形式输出时间*/ { if(m<10) printf("%u:0%u:0%u",h,m,s); else printf("%u:%u:0%u",h,m,s); } else { if(m<10) printf("%u:0%u:%u",h,m,s); else printf("%u:%u:%u",h,m,s); } gotoxy(36,20);                  /*在指定坐标上输出日期*/ printf("%d:%d:%d",o,p,q); printf("\b\b\b\b\b\b\b\b\b"); } getch(); closegraph(); } 7. 答辩记录 序号 问题 回答                                     8. 指导教师意见 指导教师签名:  
/
本文档为【模拟时钟转动程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索