1、 《C语言程序设计》课程设计 试验汇报 题目: 图形时钟 班级:电气工程及其自动化1401 学号: 姓名: 指导老师: —— .1 . 8 目 录 §1. 系统功效要求 ﹣﹣﹣﹣P3 §2. 程序结构(画步骤图) ﹣﹣﹣ P3-4 §3. 概要设计 ﹣﹣﹣ P4 §4.
2、 试验结果 ﹣﹣﹣P6 §5.体会 ﹣﹣﹣ P6 §6.参考文件 ﹣﹣﹣P6 §7.附录:源程序 ﹣﹣﹣ P7-8 §1. 系统功效要求 在屏幕上显示一个图形时钟(用程序绘制一个和时钟样式相同即可),时间和系统时间一致,且要伴随时间走动正确走动。 §2.程序设计 §3. 概要设计 (1)void init() /*划时钟边框函数*/ int i,l,x1,x2,y1,y2; circle(320,240,200);/*以(320,240)为圆心,200为半径画圆*
3、/ circle(320,240,199);/*以(320,240)为圆心,199为半径画圆*/ 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++) /*划钟点上短线*/ {
4、 if(i%5==0) l=15; else l=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); } (2) void Dra
5、wHand 函数 /*画指针*/ 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 m
6、ain() 函数 Part ①: int gdriver=DETECT,gmode; struct time curtime; ..............类型和最高分辨率 float th_hour,th_min,th_sec; initgraph(&gdriver,&gmode,""); Graphdriver - - -配适器 graphmode - - - 显示模式 Part ②: setbkcolor(0);
7、 ....................背景色 Part ③: while(! kbhit()) { Init() ..................函数(1) setwritemode(1); gettime(&curtime); .........得到目前系统时间 gotoxy(35,20); ...............定位输出位置 Part ④:
8、 if((float)curtime.ti_hour<=12) .............早晨时间处理 {printf("AM "); if((float)curtime.ti_hour<10) printf("0");.... 十点之前在小时数前加零 printf("%.0f:",(float)curtime.ti_hour);...........输出小时 } else ............下午时
9、间处理 {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:"
10、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.; -- - - - - - -(2π/60=0.) th_min=(float)cu
11、rtime.ti_min*0.+th_sec/60.0; th_hour=(float)curtime.ti_hour*0.+th_min/12.0; - - - - *(2π/12=0.) Part ⑦: 画指针 DrawHand(x0,y0,th_hour,70,2); .......画时针 DrawHand(x0,y0,th_min,110,3); ...................画秒针 Part ⑧ : settextstyle(2,0,3);
12、设置字体 2:文字字体;0:文字方向;3:文字大小 outtextxy(300,80,"12"); outtextxy(460,220,"3"); outtextxy(315,370,"6"); outtextxy(160,220,"9"); Part ⑨ : sleep(1); ...........延时一秒后刷新 cleardevice(); ...........
13、 清除图形屏幕 } closegraph() ... ....关闭图形系统,退出图形方法 4.试验结果 5.体会 刚开始做时基础上什么全部不懂,参考了很多资料,到网上查,差不多能写出基础程序,即使很多是借鉴她人,不过能写成这么,我心里还是挺快乐。程序设计关键靠了解和利用,有些没有学过知识不一定要知道根本,只要会利用就行。 尤其是设计显示上、下午数字时间和让时针正常运转而不是从3不动,然后直接跳到4上,我下了很大功夫,找了好多资料,最终一知半解,好在成功运行了。。。。。。 不足之处也
14、很多,程序思绪不太清楚可能有些混乱。有很多程序设计使用并不熟练,甚至有些方法掌握不了,更轻易忘记。算法结构了解并不深入,独立自主想法占据总体达不到要求。需要加强练习和对知识了解和掌握。经过这次设计,让我学习程序热情大涨,相信以后会做愈加好!
6. 参考文件
1谭浩强.C语言程序设计(第四版).清华大学出版社,
2李丽娟,马淑萍.C语言程序设计(第二版).中国铁道出版社,
3李丽娟,张奋.C语言程序设计试验教程(第二版).中国铁道出版社,
4张基温.C 语言程序设计案例教程.清华大学出版社,
5网络,baidu知道,贴吧等,
7.附录:源程序
#include 15、h>
#include 16、
l=15;
else
l=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;
xp=x+l*sin(th);
yp=y-l*cos(th);
setcolor 17、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_ho 18、ur<=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");
p 19、rintf("%.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.;
th_min=(float)curtime.ti_min*0.+th_sec/60.0;
th_hour=(float)curtime.ti_hour*0.+th_min/12.0;
DrawHand(x0,y0,th_hour,70,2);
DrawHand(x0,y0,th_min,110,3);
DrawHand(x0,y0,th_sec,140,12);
setcolor(13);
settextstyle(2,0,12);
outtextxy(300,80,"12");
outtextxy(460,220,"3");
outtextxy(315,370,"6");
outtextxy(160,220,"9");
sleep(1);
cleardevice();
}
closegraph();
}






