C语言课程设计图形时钟.docx
- 文档编号:2174029
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:9
- 大小:148KB
C语言课程设计图形时钟.docx
《C语言课程设计图形时钟.docx》由会员分享,可在线阅读,更多相关《C语言课程设计图形时钟.docx(9页珍藏版)》请在冰豆网上搜索。
C语言课程设计图形时钟
C语言课程设计——图形时钟
《C语言程序设计》课程设计
实验报告
题目:
图形时钟
班级:
电气工程及其自动化1401
学号:
姓名:
指导教师:
——2015.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.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); ...................画秒针
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语言程序设计(第四版).清华大学出版社,2010
2李丽娟,马淑萍.C语言程序设计(第二版).中国铁道出版社,2009
3李丽娟,张奋.C语言程序设计实验教程(第二版).中国铁道出版社,2009
4张基温.C 语言程序设计案例教程.清华大学出版社,2005
5网络,XX知道,贴吧等,2014
7.附录:
源程序
#include
#include
#include
#definePI3.1415926
#definex0320
#definey0240
voidinit()
{
inti,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);
}
}
voidDrawHand(intx,inty,floatth,intl,intcolor)
{
intxp,yp;
xp=x+l*sin(th);
yp=y-l*cos(th);
setcolor(color);
line(x,y,xp,yp);
}
voidmain()
{
intgdriver=DETECT,gmode;
structtimecurtime;
floatth_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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 图形 时钟