C语言图形时钟课程设计实验报告.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1.系统功能要求。
2. 数据结构设计及说明。
3.程序结构(画流程图)。
4.各模块的功能。
5.试验结果(包括输入数据和输出结果)。
6.体会。
7.参考文献。
8.附录:程序清单及源程序。
●系统功能要求:
在屏幕上显示一个图形时钟(用程序绘制一个与时钟样式相似即可),时间与系统时间一致,且要随着时间的走动准确的走动。
●数据结构设计及说明
(1)图形时钟要用TC来编译,学C语言时主要用VC,用TC对我有一定的挑战性,不熟悉编译,对
图形函数也没有太多接触,做这个有一定难度。
(2)先画出时钟基本组成,(时针分针秒针,中心点,表盘及其分隔点)。
(3)时钟表设计思想:
第一步,确定秒钟的走时。将圆等分成60份每过一
秒,秒钟要转1/60个圆,亦即一等份。
第二步,确定分钟的走时。将圆等分成60份每过一
分,分钟要转1/60个圆,亦即一等份。
分钟自己走的再加秒钟的,才是分钟此时
的位置。
第三步,确定时钟的走时。将圆等分成12等分。每
过一时,时钟走一等份。和分钟一样,
得加上分钟,秒钟的走时,才是此刻时钟
的位置。
(4)时钟走动与系统时间联系:每过一秒画出秒针,并除去前一秒的秒针,分针秒针同样可用。
画线函数与时间联系使用变量。
(5) 设置横纵坐标
x=a*cos(b*c*pi/180-pi/2)+300;
y=a*sin(b*c*pi/180-pi/2)+240;
设置表针的动态坐标点
x1=200*sin(i*6*pi/180)+300;
y1=200*cos(i*6*pi/180)+240;
x2=(200-l)*sin(i*6*pi/180)+300;
y2=(200-l)*cos(i*6*pi/180)+240;
程序结构(画流程图)
总流程图:
指针转动流程图:
●各模块的功能
●试验结果(包括输入数据和输出结果)
体会:
刚开始做时基本上什么都不懂,用TC做,我更不会。不过参考了很多资料,到网上查,泡了几天图书馆,差不多能写出基本程序,虽然很多是借鉴别人的,不过能写成这样,我心里还是挺高兴的。
有了一点成功我就很兴奋,这是动力。程序很奇特,很多问题都可以用程序编写,看到那些大型程序我就感觉我也能写出这样的程序。
程序设计主要靠理解与运用,有些没有学过的知识不一定要懂得彻底,只要会运用就行。
不足之处也很多,程序思路不太清晰可能有些混乱。有很多程序设计使用并不熟练,甚至有些方法掌握不了,更容易忘记。算法结构了解并不深入,独立自主的想法占据总体达不到要求。需要加强练习和对知识的理解与掌握。
●参考文献:
《C程序设计思想与方法》
《C语言完全手册》
《C语言课程设计指导》
《百度知道图形时针》
●附录:程序清单及源程序(使用TC)
# include
# include
# include
# define pi 3.1415926
void draw(int a, int b, int c)
{
float x, y;
x=a*cos(b*c*pi/180-pi/2)+300; /*确定横坐标*/ y=a*sin(b*c*pi/180-pi/2)+240; /*确定纵坐标*/ line(300, 240, x, y);/*绘制时针或分针或秒针*/ }
void init() /*划时钟边框函数*/
{
int i,l,x1,x2,y1,y2;
circle(300,240,200);/*以(300,240)为圆心,200为半径画圆*/
circle(300,240,5);/*以(300,240)为圆心,5为半径画圆*/
for(i=0;i<60;i++) /*划钟点上的短线*/
{
if(i%5==0)
l=15;
else
l=5;
x1=200*sin(i*6*pi/180)+300; /*画线函数*/
y1=200*cos(i*6*pi/180)+240;
x2=(200-l)*sin(i*6*pi/180)+300;
y2=(200-l)*cos(i*6*pi/180)+240;
line(x1,y1,x2,y2);
}
}
main()
{
int x, y,i;
int gdriver, gmode;
unsigned char h, m, s;
struct time t[1];
gdriver = DETECT;
initgraph(&gdriver, &gmode, ""); /*初始化*/
for(i=0;i<=6;i++)
{
outtextxy(300,80,"12") ;
outtextxy(300,390,"6");
outtextxy(140,230,"9");
outtextxy(460,230,"3");
}
init(); /*调用init()函数*/
setwritemode(1);/*将当前线与原有的线进行异或操作*/
gettime(t); /*将计算机时间写入结构体t中*/ h = t[0].ti_hour; /*h赋初值当前时数*/ m = t[0].ti_min; /*m赋初值当前分数*/ s = t[0].ti_sec; /*s赋初值当前秒数*/ setcolor(7);