收藏 分销(赏)

C语言课程设计-图形时钟.doc

上传人:仙人****88 文档编号:11230226 上传时间:2025-07-09 格式:DOC 页数:10 大小:187.04KB 下载积分:10 金币
下载 相关 举报
C语言课程设计-图形时钟.doc_第1页
第1页 / 共10页
C语言课程设计-图形时钟.doc_第2页
第2页 / 共10页


点击查看更多>>
资源描述
《C 语言程序设计课程设计报告》 《C语言程序设计》课程设计 实验报告 题目: 图形时钟 班级: 学号: 姓名: 成绩: 指导教师: 完成日期: 2011 年 1 月 25 日 目 录 §1.系统功能模块结构图﹣﹣﹣﹣﹣ P2-4 §2. 程序结构(画流程图)﹣﹣﹣﹣﹣﹣ P4 §3. 数据结构设计及用法说明﹣﹣﹣ P5 §4. 试验结果(包括输入数据和输出结果)﹣﹣P5 §5.体会 ﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣ P6 §6.参考文献 ﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣P7 §7.附录:程序清单及源程序﹣﹣﹣﹣ P7-8 §1.系统功能模块结构图 ---各模块的功能及程序分析 (1) void Drawclock函数 void DrawClock(int x,int y,int color) { int r=150; float th; setcolor(color); circle(x,y,r); circle(x,y,2); } 作用:画表盘 r为表盘的半径 x.y为圆心的坐标 (2) void DrawHand 函数 void DrawHand(int x,int y,float th,int l,int color) { int x1,y1; x1=x+l*sin(th); y1=y-l*cos(th); setcolor(color); line(x,y,x1,y1); } 作用:画指针 x:直线起点的横坐标 y:直线起点的纵坐标 x1:直线终点的横坐标 y1:直线终点的纵坐标 (3) void main() 函数 Part ①: int gdriver=DETECT,gmode; struct time curtime; - - - - - - - -类型和最高分辨率 float th_hour,th_min,th_sec; initgraph(&gdriver,&gmode,""); (用于配适器类型未知的情况) Graphdriver - - -配适器 graphmode - - - 显示模式 Part ②:setbkcolor(0); - - - - - - - - - - - - - - - - - 背景色 Part ③: while(! kbhit()) { DrawClock(x0,y0,14); - - - - - - - - - - -函数(1) gettime(&curtime); - - - - - - - - - - - - -得到当前系统时间 gotoxy(35,20); - - - - - - - - - - - - - - - -定位输出位置 Part ④: if((float)curtime.ti_hour<=12) - - - - - - - - - - - -上午的时间处理 {printf("AM "); if((float)curtime.ti_hour<10) printf("0"); - - - - 十点之前在小时数前加零 printf("%.0f:",(float)curtime.ti_hour); - - - - - - - 输出小时 } else - - - - - - - - - - - -下午的时间处理 {printf("PM "); if((float)curtime.ti_hour-12<10) printf("0");- - - - - - - 如果时间减去12小时小于10 printf("%.0f:",(float)curtime.ti_hour-12); - - - - - - - - 输出小时 } Part ⑤: if((float)curtime.ti_min<10) printf("0"); - - - - - - - - - - - 相当于小时的计算方法 printf("%.0f:",(float)curtime.ti_min); - - - - - - - - - - - 输出分钟(同part ④) if((float)curtime.ti_sec<10) printf("0"); - - - - - - - - - - - printf("%.0f",(float)curtime.ti_sec);- - - - - - - - - - - - - - Part ⑥: 以下三行计算表针转动角度,以竖直向上为起点,顺时针为正 th_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); - - - - - - - - - - 画分针 DrawHand(x0,y0,th_sec,140,12); - - - - - - - - - - 画秒针 Part ⑧ : settextstyle(2,0,3); - - - - - - - - - -设置字体 2-----文字的字体 0-----文字的方向 3-----文字的大小 outtextxy(270,160,"MADE BY:SDW"); - - - - - - - - - -输出字体 MADE BY:SDW (270,160)为字体的坐标 Part ⑨ : sleep(1); - - - - - - - - - - 延时一秒后刷新 cleardevice(); - - - - - - - - - - 清除图形屏幕 } closegraph(); - - - - - - - - - -关闭图形系统,退出图形方式 §2.程序结构 §3.数据结构设计 用法说明 试验结果 本程序设计分三步: 1、是对时钟程序做全面的分析,即对程序要使用的编写方法 功能,运行方式进行分析,并做出正确的解决方案。 2、是程序的编写。由于该程序所涉 及的信息内容比较广泛 ,所以程序的编写也有 些复杂。程序的编写是一 项困难的任务 ,完成此程序必须运用书 中的大部分知识,而且要 有清晰的思路和较强的 语言组织能力 。 3、是程序的检查和系统的调用。当程序运行后,显示出 一个时钟, 用法说明:第一步,用编辑程序把编制的源程序按照一定的书写格式送到计算机中。 第二步,把送入的源程序 翻译成机器语言,即 用编译程序对源程序进行语 法检查并将符合语法规则的源程 序语句翻译成计算机能 识别的“语言”。 第三步,使用计算机中的 连接程序,把翻译好 的计算机语言程序连接起 来,并扶植成一个计算机能真正运 行的程序。 第四步,将修改后的程序运行。(保存) 第五步,以后使用时双击clock.exe文件即可 试验结果:在屏幕上显示一个时钟,(包括:时针,分针,秒针) 时针所显示的时间为系统时间,用户可以通过修改系统的时间来修改时钟的时间。                                        §5.体会 图 - 6 - 形钟这个程序的设计,需要 我们理解并掌握了 C 语言基本编程方 法并, 掌握一些函数的使用方法。这次 的课程设计是珍贵的一次实践机会,是 我们大学开学以来第一次完全依靠自己 一步一步地上网搜索,从一开始的毫无 头绪到后来一个模块又一个模块慢慢地 研究,理解并为我所用,直到最后完成 设计任务。这次的课程设计不仅使我们 的理论知识在实践中得到了巩固,个人 能力得到了提升,也使自己从摸索中学 到了许多课本上所没有的内容与知识。 如果 没有这次机会,我想 我也许会一 直停留在对 C 语言略知皮毛的阶段 上,而现在我可以把 知识应用起来,设 计一个小 程序。从闻所未闻的画图函 数,文字处理函数,各个图形所对应的 函数名称,大体的理解,到每一条程序 所包含的意义及功能的研究。从画表盘, 画指 针开始,到从系统调用时间进而准确地表现到指针上。从程序的大体布局到每一条 程序中各条数学函数的转化运算,一个小小的程序看起来简单,但真正到了自己做 才会觉得是那么的复杂。程序虽然简单,但通过自己完成的喜悦是其他人所永远感 受不到的。经过一段时间的上机的不断调试,也才终于顺利的完成 了设计任务。 在研究设计过 程中,我不仅增强了自学的能力。对一些软件开发模式有了更加深 刻的认识,对C语言应用软件的熟练程度有所提高,也学会了如何进行设计一个 综合完整的软件。使自己的知识不再停留在书本的层面上。本次的实践中认识自己 的不足,包括在声音,背景及表盘创新方面的工作,还有很大的提升空间和余地。 希望在今后的学习过 程中能明确自己的奋斗目标并为此努力学习,踏踏实实学好 专业知识,也是为将来的就业做好充分的准备工作。 §6.参考文献 1.张基温.C 语言程序设计案例教程.清华大学出版社,2005 2.王德银实用 C 语言程序设计.人民邮电出版社,2005 3.谭浩强.C 语言程序设计教程.高等教育出版社,2006 4. 段兴.C言实用程序设计 100 例.人民邮电出版社,2002 5.杨旭.C 语言程序设计案例教程.中国铁道工业出版社,2004 6.网上,论坛,百度知道等等,2011。 §7.附:源程序 #include<graphics.h> #include<math.h> #include<dos.h> #define PI 3.1415926 #define x0 320 #define y0 240 void DrawClock(int x,int y,int color) { float th; setcolor(color); circle(x,y,171); circle(x,y,172); circle(x,y,170); circle(x,y,173); circle(x,y,174); circle(x,y,2); circle(x,y,175); circle(x,y,3); circle(x,y,1); circle(x,y,4); } void Drawxy() { setcolor(6); circle(393,93,3);circle(383,113,3); circle(447,177,3);circle(467,167,3); circle(447,293,3);circle(467,303,3); circle(383,367,3);circle(393,387,3); circle(237,387,3);circle(247,367,3); circle(173,313,3);circle(193,303,3); circle(173,157,3);circle(193,167,3); circle(237,93,3);circle(247,113,3); } void DrawHand(int x,int y,float th,int l,int color) { int x1,y1; x1=x+l*sin(th); y1=y-l*cos(th); setcolor(color); line(x,y,x1,y1); } void main() {int gdriver=DETECT,gmode; struct time curtime; float th_hour,th_min,th_sec; initgraph(&gdriver,&gmode,""); setbkcolor(9); while(! kbhit()) { DrawClock(x0,y0,14); Drawxy(); gettime(&curtime); gotoxy(35,20); if((float)curtime.ti_hour<=12) {printf("AM "); if((float)curtime.ti_hour<10) printf("0"); /*十点之前在小时数前加零*/ printf("%.0f:",(float)curtime.ti_hour); } else {printf("PM "); if((float)curtime.ti_hour-12<10) printf("0"); printf("%.0f:",(float)curtime.ti_hour-12); } if((float)curtime.ti_min<10) printf("0"); printf("%.0f:",(float)curtime.ti_min); if((float)curtime.ti_sec<10) printf("0"); printf("%.0f",(float)curtime.ti_sec); /*以下三行计算表针转动角度,以竖直向上为起点,顺时针为正*/ th_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 */ DrawHand(x0,y0,th_hour,70,2); DrawHand(x0,y0,th_min,110,3); DrawHand(x0,y0,th_sec,140,12); setcolor(2); settextstyle(2,0,3); outtextxy(270,160,"MADE BY:SDW"); settextstyle(2,0,12); outtextxy(320,80,"12"); outtextxy(480,240,"3"); outtextxy(320,400,"6"); outtextxy(160,240,"9"); sleep(1); cleardevice(); } closegraph(); } - 9 -
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服