C语言课程设计——图形时钟_第1页
C语言课程设计——图形时钟_第2页
C语言课程设计——图形时钟_第3页
C语言课程设计——图形时钟_第4页
C语言课程设计——图形时钟_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 C语言程序设计课程设计 实验报告题目: 图形时钟 班级:电气工程及其自动化1401学号: 姓名: 指导教师: 2015 .1 . 8 目 录 §1. 系统功能要求 P3§2. 程序结构(画流程图)  P3-4§3. 概要设计  P4§4. 试验结果 P6§5.体会    P6§6.参考文献  P6§7.附录:源程序  P7-8§1. 系统功能要求 在屏幕上显示一个图形时钟(用

2、程序绘制一个与时钟样式相似即可),时间与系统时间一致,且要随着时间的走动准确的走动。§2.程序设计§3. 概要设计(1)void init() /*划时钟边框函数*/    int i,l,x1,x2,y1,y2;   circle(320,240,200);/*以(320,240)为圆心,200为半径画圆*/    circle(320,240,199);/*以(320,240)为圆心,199为半径画圆*/   

3、circle(320,240,201);/*以(320,240)为圆心,201为半径画圆*/  circle(320,240,1,);/*以(320,240)为圆心,1为半径画圆*/  circle(320,240,2,)/*以(320,240)为圆心,2为半径画圆*/  circle(320,2403,);/*以(320,240)为圆心,3为半径画圆*/ for(i=0;i<60;i+) /*划钟点上的短线*/        if(i%5=0)  

4、       l=15;         else         l=5;   x1=200*sin(i*6*pi/180)+320/*画线函数*/        y1=200*cos(i*6*pi/180)+240;      

5、;    x2=(200-l)*sin(i*6*pi/180)+320;         y2=(200-l)*cos(i*6*pi/180)+240;         line(x1,y1,x2,y2);      (2) void DrawHand 函数 /*画指针*/ void DrawHand(int x,in

6、t 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:直线起点的纵坐标 &#

7、160;x1:直线终点的横坐标   y1:直线终点的纵坐标 (3) void main() 函数 Part : int gdriver=DETECT,gmode;              struct time curtime;         &

8、#160;  .类型和最高分辨率            float th_hour,th_min,th_sec;          initgraph(&gdriver,&gmode,"");       Graphdriver - - -配适

9、器       graphmode - - - 显示模式  Part : setbkcolor(0);                 .背景色 Part  :  while(! kbhit()    

10、;                           Init() .函数(1)                setwritemode(1);   gett

11、ime(&curtime);        .得到当前系统时间                gotoxy(35,20);            .定位输出位置 Part :  if(float)curtime.

12、ti_hour<=12) .上午的时间处理             printf("AM ");              if(float)curtime.ti_hour<10) printf("0");. 十点之前在小时数前加零 &#

13、160;          printf("%.0f:",(float)curtime.ti_hour);.输出小时                else                &

14、#160;                 .下午的时间处理       printf("PM ");         if(float)curtime.ti_hour-12<10) printf("0");.如果

15、时间减去12小时小于10         printf("%.0f:",(float)curtime.ti_hour-12);. 输出小时         Part :   if(float)curtime.ti_min<10) printf("0");. 相当于小时的计算方法    

16、0;    printf("%.0f:",(float)curtime.ti_min); . 输出分钟(同part )         if(float)curtime.ti_sec<10) printf("0");          printf("%.0f",(float)curtime.

17、ti_sec);  Part :  以下三行计算表针转动角度,以竖直向上为起点,顺时针为正   th_sec=(float)curtime.ti_sec*0.1047197551;                 - - - - -  - -(2/60=0.1047197551) th_min=(float)

18、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);    .画时针     

19、               DrawHand(x0,y0,th_min,110,3);            .画秒针    Part  :   settextstyle(2,0,3);    .设置字体&#

20、160; 2:文字的字体;0:文字的方向;3:文字的大小      outtextxy(300,80,"12"); outtextxy(460,220,"3"); outtextxy(315,370,"6"); outtextxy(160,220,"9");Part  :   sleep(1);          &#

21、160;       .延时一秒后刷新                   cleardevice();           . 清除图形屏幕       &#

22、160;                 closegraph()         . .关闭图形系统,退出图形方式 4.试验结果5.体会 刚开始做时基本上什么都不懂,参考了很多资料,到网上查,差不多能写出基本程序,虽然很多是借鉴别人的,不过能写成这样,我心里还是挺高兴的。程序设计主要靠理解与运用,有些没有学过的知识不一定要懂得

23、彻底,只要会运用就行。 尤其是设计显示上、下午的数字时间和让时针正常运转而不是从3不动,然后直接跳到4上,我下了很大功夫,找了好多资料,最终一知半解,好在成功运行了。 不足之处也很多,程序思路不太清晰可能有些混乱。有很多程序设计使用并不熟练,甚至有些方法掌握不了,更容易忘记。算法结构了解并不深入,独立自主的想法占据总体达不到要求。需要加强练习和对知识的理解与掌握。通过这次设计,让我学习程序的热情大涨,相信以后会做的更好!6. 参考文献1谭浩强.C语言程序设计(第四版).清华大学出版社,20102李丽娟,马淑萍.C语言程序设计(第二版).中国铁道出版社,20093李丽娟,张奋.C语言程

24、序设计实验教程(第二版).中国铁道出版社,20094张基温.C 语言程序设计案例教程.清华大学出版社,20055网络,百度知道,贴吧等,20147.附录:源程序#include<graphics.h>#include<math.h>#include<dos.h>#define PI 3.1415926#define x0 320#define y0 240void init() int i,l,x1,x2,y1,y2; circle(320,240,200); circle(320,240,201); circle(320,240,199); ci

25、rcle(320,240,1); circle(320,240,2); circle(320,240,3); for(i=0;i<60;i+) if(i%5=0)l=15; elsel=5; x1=200*sin(i*6*PI/180)+320; y1=200*cos(i*6*PI/180)+240; x2=(200-l)*sin(i*6*PI/180)+320; y2=(200-l)*cos(i*6*PI/180)+240; line(x1,y1,x2,y2); void DrawHand(int x,int y,float th,int l,int color) int xp,yp;

26、 xp=x+l*sin(th); yp=y-l*cos(th); setcolor(color); line(x,y,xp,yp);void main() int gdriver=DETECT,gmode; struct time curtime; float th_hour,th_min,th_sec; initgraph(&gdriver,&gmode,""); setbkcolor(0); while(! kbhit() init(); setwritemode(1); gettime(&curtime); gotoxy(35,20); if(float)curtime.ti_hour<=12) printf("AM "); if(float)curtime.ti_hour<10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论