C语言课程设计报告格式.doc

上传人:z**** 文档编号:61076175 上传时间:2022-11-19 格式:DOC 页数:19 大小:314.50KB
返回 下载 相关 举报
C语言课程设计报告格式.doc_第1页
第1页 / 共19页
C语言课程设计报告格式.doc_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《C语言课程设计报告格式.doc》由会员分享,可在线阅读,更多相关《C语言课程设计报告格式.doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、优质文本C程序课程设计设计题目:图形时钟 专 业: 班 级: 姓 名: 指导教师: 2016 年 秋季 学期目录1.设计任务-P22.系统总体模块设计,给出模块图- P33.小组任务分工,描述每个人应完成的任务- P44.子系统设计方案-P45.子系统主要程序流程图,并附文字说明-P5-P96.详细代码及运行结果附主要代码-P9-P147.个人设计小结与心得体会- P158.小组设计总结独立完成的不写- P161. 设计任务:l 在屏幕上显示一个图形时钟用程序绘制一个与时钟样式相似即可,时间与系统时间一致,且要随着时间的走动准确的走动;l 在钟表转动过程中实现“滴答声;l 实现整点报时;l 实

2、现闹钟的功能包括设定,停止,延时。预期结果图为:2.系统总体模块设计,给出模块图: 在编程过程中主要包括: 编程前准备:要学习中的graphics,了解如何在VC中应用它;学会图形函数的根本使用方法。 编程中:分为主函数和子程序;包括画表盘、获取电脑时间确定指针转动、控制声音的函数、闹钟函数设定、中断和延时、整点报时。 总体模块图为:开始先图形方式初始化initgraph()确定表盘中心坐标直接用define定义,写出画表盘的函数包括实心圆函数:fillcircle,画刻度函数line()获取电脑时间(time ( ),使指针转动。画静态指针的函数为定义的void draw()。整点报时,利用

3、if语句,和整点报时声音函数void Highclick()设定闹铃,应用if语句,声音控制函数为void Naoling()指针转动的声音控制函数void Click()结束3.小组任务分工,描述每个人应完成的任务:l 编写程序:;l 方案书:XX;l 制作ppt:XX;l 报告书:XX;l ppt辩论:XX。4.子系统设计方案每人一份: l XX:1先画出表盘;2获取系统时间;3由获取的时间计算画出表针,每秒刷屏一次实现钟表的转动;4编写控制声音的函数,为实现表针转动滴答声,整点报时,闹钟声音做准备; 5编写设定闹钟的函数;6优化外观,给表盘添颜色。l :(1) 画表盘;(2) 画指针;(

4、3) 获取系统时间;(4) 调用2中的函数,使指针转起来,到达根本要求。综合考虑,以第一个方案为最终方案。5.子系统主要程序流程图,并附文字说明每人一份:l XX:画指针的程序流程图:开始float endx,endy;float a_sec,a_min,a_hour;a_sec=(sec)*2*pi/60;a_min=(min)*2*pi/60+a_sec/60;a_hour=(hour)*2*pi/12+a_min/12;endx=midx+100*sin(a_hour);endy=midy-100*cos(a_hour);setcolor(BLUE);line(midx,midy,end

5、x,endy);endx=midx+170*sin(a_min);endy=midy-170*cos(a_min);setcolor(RED);line(midx,midy,endx,endy);endx=midx+180*sin(a_sec);endy=midy-180*cos(a_sec);setcolor(WHITE);line(midx,midy,endx,endy);结束指针的转动流程图:开始Time_t temp; struct tm *p;P=localtime(&temp);draw(p-tm_hour,p-tm_min,p-tm-sec);结束closedevice注:a_s

6、ec=(sec)*2*pi/60;a_min=(min)*2*pi/60+a_sec/60;a_hour=(hour)*2*pi/12+a_min/12;为将获得的时间转化为角度的算法;endx=midx+100*sin(a_hour);endy=midy-100*cos(a_hour);为时针末端坐标的计算;endx=midx+170*sin(a_min);endy=midy-170*cos(a_min);为分针末端角度的计算;endx=midx+180*sin(a_sec);endy=midy-180*cos(a_sec) ;位秒针末端角度的计算;其中midx和midy为圆心坐标,100,

7、170,180为指针长度,a_min为获取电脑时间之后换算的指针所指角度。setcolor(BLUE);为控制指针颜色的函数;line(midx,midy,endx,endy);为画指针的函数,括号里边是指针的两端坐标。最后采用closedevice()函数清屏。闹钟的设定流程图:开始closegraph()closegraph();char p;start1:system(cls);printf(是否设定闹钟:(y/n/s)?);p=getch();if(p=y)system(cls);printf(请输入闹铃时间n);printf(小时:);scanf(%d,&h);system(cls)

8、;printf(%02d:,h);printf(n分钟:);scanf(%d,&m);system(cls);printf(闹铃时间:n);printf(%02d:%02dn,h,m);getch();goto start;getch();else if(p=n)goto start;else if(p=s)m=m+1;goto start;elsesystem(cls);goto start1;if(p-tm_hour=h&p-tm_min=m)Naoling();Sleep(830);if(p-tm_hour=h&p-tm_min=m)Naoling();cleardevice();结束注

9、:设闹钟时首先要用closegraph()函数清屏,进入选择设定闹钟的界面;system(“clrs)为清屏,每输入一次清一次屏。应用goto进入start或start1局部的运行。 闹钟的声音控制函数为:void Naoling()Beep(2000,200);。l XX: 整点报时流程图:开始if(p-tm_min=0&p-tm_sec=0)Highclick();else Click();Time_t temp; struct tm *p;P=localtime(&temp);结束注:当获取的时间里分钟和秒都为零时,高声报时Highclick(),否那么为普通声音Click()。控制声音

10、的函数要用到C/C+里边的Beep(x,y)函数,其中x是指声音的频率,其值为37到32767,单位为Hz,y为持续时间,单位为毫秒。Highclick()函数为:void Highclick()Beep(1000,200);Sleep(CLICKDELAY);;Click()函数为:void Click()Beep (700,100);Sleep(CLICKDELAY); 。程序应用函数说明:画表盘时,用到graphics里边的:fillcirclex,y,r/画实心圆;setfillcolor(BLUE)/给实心圆添颜色;括号里边的颜色根据需要自定义;setcolor/给线添颜色;setb

11、kcolor()/改变背景颜色;line(x1,y1,x2,y2)/两端点画线;outtextxy(x,y,“)/用来给表盘指定位置添加数字1-12;start: goto /实现闹钟功能选择页面和模拟表盘页面之间的切换;6.详细代码及运行结果:(1)详细代码:#include #include#include#include#include#include#define pi 3.1415926#define midx 320#define midy 240#define CLICK 100#define CLICKDELAY 30void main() /函数声明void draw(int

12、 hour,int min,int sec); void Click();void Highclick();void Naoling();int gdriver, gmode,h,m;start:gdriver=DETECT; gmode=0;initgraph(&gdriver, &gmode, ); /初始化图形模式setbkcolor(WHITE); /设置背景颜色 cleardevice();while(!kbhit()setfillcolor(LIGHTGRAY); /给表盘添颜色setcolor(BLACK);fillcircle(320,240,215); /画实心圆盘fillc

13、ircle(320,240,170);setfillcolor(YELLOW);fillcircle(320,240,4);setcolor(YELLOW); /给刻度添颜色line(120,240,150,240); /9line(320,40,320,70); /12line(520,240,490,240); /3line(320,440,320,410); /6line(410,395.7,400,378.4); /5line(475.7,330,458.4,320); /4 line(475.7,150,458.4,160); /2line(410,84.3,400,101.6);

14、/1line(230,84.3,240,101.6); /11 line(164.3,150,181.6,160); /10line(164.3,330,181.6,320); /8line(230,395.7,240,378.4); /7setcolor(RED);/给表盘添数字 outtextxy(319.9,36,12); outtextxy(118,238,9); outtextxy(519,238,3); outtextxy(320,435,6); outtextxy(418,411,5); outtextxy(490,337,4); outtextxy(493.2,139.9,2)

15、; outtextxy(419.9,66.8,1); outtextxy(215,63,11); outtextxy(143,136,10); outtextxy(146.8,340,8); outtextxy(220,413.2,7);/获取系统时间 time_t temp; struct tm *p;time(&temp);p=localtime(&temp);draw( p-tm_hour,p-tm_min,p-tm_sec); /调用画指针函数if(p-tm_min=0&p-tm_sec=0) /整点报时Highclick();elseClick();if(p-tm_hour=h&p-

16、tm_min=m) /闹钟Naoling();Sleep(830); if(p-tm_hour=h&p-tm_min=m)Naoling();cleardevice(); /清屏closegraph(); /关闭模拟时钟界面,进入设定闹钟功能选择界面char p;start1:system(cls);printf(是否设定闹钟:(y/n/s)?); p=getch(); /获得指令if(p=y) /执行指令system(cls); /清屏printf(请输入闹铃时间n);printf(小时:);scanf(%d,&h);system(cls);printf(%02d:,h);printf(n分

17、钟:);scanf(%d,&m);system(cls);printf(闹铃时间:n);printf(%02d:%02dn,h,m);getch(); goto start; /返回模拟时钟界面else if(p=n)goto start;else if(p=s) /闹钟的延时m=m+5; /延时五分钟goto start;elsesystem(cls);goto start1;void draw(int hour,int min,int sec)/定义画指针函数float endx,endy;float a_sec,a_min,a_hour;/根据获取时间计算对应指针角度a_sec=(sec

18、)*2*pi/60;a_min=(min)*2*pi/60+a_sec/60;a_hour=(hour)*2*pi/12+a_min/12;/计算末端坐标endx=midx+100*sin(a_hour);endy=midy-100*cos(a_hour);setcolor(BLUE); /给时针添颜色line(midx,midy,endx,endy);/利用line函数画指针endx=midx+170*sin(a_min);endy=midy-170*cos(a_min);setcolor(RED);line(midx,midy,endx,endy);endx=midx+180*sin(a_

19、sec);endy=midy-180*cos(a_sec);setcolor(WHITE);line(midx,midy,endx,endy);void Click() /定义控制指针转动的滴答声函数Beep (700,100); Sleep(CLICKDELAY);void Highclick() /定义整点报时的声音控制函数Beep(1000,200);Sleep(CLICKDELAY);void Naoling() /定义闹钟的声音控制函数Beep(2000,200);2运行结果:7.个人设计小结与心得体会:XXX:这次课设学到了很多东西,了解了graphics的初步使用,还有获取时间函

20、数的使用,以及start,goto来实现界面切换。一开始,没有头绪,但是经过几天的摸索和其他组之间的交流,逐渐有了眉目,在大框架建立好之后,逐步解决,不断优化,最终实现预期效果。XX: graphics对于我以及伙伴来说是完全陌生的东西,一切都得从头开始学起。刚开始的几天就是查资料,了解我们要用到的相关函数,慢慢的才有了思路。从“如何在vc中应用graphics到“解决获取时间的函数问题再到“界面之间的转换,每一次都是不断探索和锻炼的过程。这当中也请教了很多同学,感谢他们的帮助。有问题就想方法解决,这是我在课设当中学到的。整个课设过程让我受益匪浅,除了了解图形处理函数在vc里怎么应用之外,也从伙伴身上学习到了c语言编程时一定要沉着,不能因为有一个错误就放弃,要敢于尝试。我相信我们以后还可以做得更好。8.小组设计总结:在这次课设的过程中,作为团队里的成员,我们都深刻意识到合作的重要性。特别是在遇到瓶颈的时候不可急躁,更应该注重跟组员的交流,彼此学习,共同进步。结果已经远远超出我们的预期,除了到达根本要求:模拟时钟之外,我们还实现了一些其他的功能。所以说没有什么做不了的,我们坚信只要敢做就一定会有好的结果。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁