资源描述
《C语言程序设计》课程设计
试验汇报
题目: 图形时钟
班级:电气工程及其自动化1401
学号:
姓名:
指导老师:
—— .1 . 8
目 录
§1. 系统功效要求 ﹣﹣﹣﹣P3
§2. 程序结构(画步骤图)
﹣﹣﹣ P3-4
§3. 概要设计 ﹣﹣﹣ P4
§4. 试验结果 ﹣﹣﹣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为半径画圆*/
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++) /*划钟点上短线*/
{
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 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())
{
Init() ..................函数(1)
setwritemode(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.; -- - - - - - -(2π/60=0.)
th_min=(float)curtime.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); ............设置字体 2:文字字体;0:文字方向;3:文字大小
outtextxy(300,80,"12");
outtextxy(460,220,"3");
outtextxy(315,370,"6");
outtextxy(160,220,"9");
Part ⑨ : sleep(1); ...........延时一秒后刷新
cleardevice(); ............. 清除图形屏幕 }
closegraph() ... ....关闭图形系统,退出图形方法
4.试验结果
5.体会
刚开始做时基础上什么全部不懂,参考了很多资料,到网上查,差不多能写出基础程序,即使很多是借鉴她人,不过能写成这么,我心里还是挺快乐。程序设计关键靠了解和利用,有些没有学过知识不一定要知道根本,只要会利用就行。 尤其是设计显示上、下午数字时间和让时针正常运转而不是从3不动,然后直接跳到4上,我下了很大功夫,找了好多资料,最终一知半解,好在成功运行了。。。。。。
不足之处也很多,程序思绪不太清楚可能有些混乱。有很多程序设计使用并不熟练,甚至有些方法掌握不了,更轻易忘记。算法结构了解并不深入,独立自主想法占据总体达不到要求。需要加强练习和对知识了解和掌握。经过这次设计,让我学习程序热情大涨,相信以后会做愈加好!
6. 参考文件
1谭浩强.C语言程序设计(第四版).清华大学出版社,
2李丽娟,马淑萍.C语言程序设计(第二版).中国铁道出版社,
3李丽娟,张奋.C语言程序设计试验教程(第二版).中国铁道出版社,
4张基温.C 语言程序设计案例教程.清华大学出版社,
5网络,baidu知道,贴吧等,
7.附录:源程序
#include<graphics.h>
#include<math.h>
#include<dos.h>
#define PI 3.1415926
#define x0 320
#define y0 240
void init()
{
int i,l,x1,x2,y1,y2;
circle(320,240,200);
circle(320,240,201);
circle(320,240,199);
circle(320,240,1);
circle(320,240,2);
circle(320,240,3);
for(i=0;i<60;i++)
{
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);
}
}
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(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)
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.;
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();
}
展开阅读全文