欢迎来到天天文库
浏览记录
ID:59421459
大小:3.83 MB
页数:30页
时间:2020-09-19
《C语言程序设计第12章ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言程序设计实例教程12.2实例2—电子时钟C语言程序设计实例教程第12章综合实训本实例中涉及时间结构体、数组、绘图等方面的知识。通过本实例,训练学生的基本编程能力,使学生熟悉C语言图形模式下的编程,掌握利用C语言相关函数开发电子时钟的基本原理,为进一步开发出高质量的程序打下坚实的基础。实训目的12.2.1项目实训目的本实例中涉及时间结构体、数组、绘图等方面的知识。通过本实例,训练学生的基本编程能力,使学生熟悉C语言图形模式下的编程,掌握利用C语言相关函数开发电子时钟的基本原理,为进一步开发出高质量的程序打下坚实的基础。12.2.2系统功能描述电子时钟主要有4个功能模块组成。1.
2、电子时钟界面显示模块该模块主要调用了C语言图形系统函数和字符屏幕处理函数画出时钟程序的主界面。主界面包括电子时钟的界面和帮助界面两个部分。电子时钟界面包括一个模拟时钟运转的钟表和一个显示时间的数字钟表。在帮助界面主要包括一些按键的操作说明。2.电子时钟按键控制模块该模块主要完成两大功能,第一,读取用户按键的键值。第二,通过对键盘按键值的判断,执行相应的操作,如光标移动、修改时间等。3.时钟动画处理模块该模块通过对相关条件的判断和时钟指针坐标点的计算,完成时、分、秒指针的擦除和重绘,以达到模拟时钟运转的功能。4.数字时钟处理模块该模块主要实现数字时钟的显示和数字时钟的修改。数字时钟的
3、修改,用户可以先按Tab键定位需要修改内容的位置,然后通过按光标上移(↑)或下移(↓)键来修改当前时间。12.2.3系统总体设计12.2.3.1功能模块设计1.电子时钟执行主流程电子时钟执行主流程如图12-12所示。首先,程序调用initgraph()函数,使系统进入图形模式,然后通过使用line()、arc()、outtextxy()和circle()等函数来绘制主窗体及电子时钟界面,最后调用clockhandle()函数来处理时钟的运转及数字时钟的显示。在clockhandle()函数中,使用了bioskey()函数来获得用户的按键值,当用户按【Esc】键时,程序从clockh
4、andle()函数中返回,从而退出程序。2.电子时钟界面显示电子时钟界面中模拟时钟运转的动画时钟的时间刻度是用大小不同的圆来表示的,3根长度不同但有一端在相同坐标位置的直线分别表示时、分、秒。12.2.3系统总体设计12.2.3.1功能模块设计3.电子时钟按键控制模块该模块使用bioskey()函数来读取用户按键的键值,然后调用keyhandle()函数对键盘按键值进行判断,执行相应的操作。具体按键判断如下:⑴若用户按下Tab键,程序会调用clearcursor()函数来清除上一个位置的光标,然后调用drawcursor()函数在新位置处绘制一个光标。⑵若用户按下光标上移键,程序会
5、调用timeupchange()函数增加相应的时、分、秒值。⑶若用户按下光标下移键,程序会调用timedownchange()函数减少相应的时、分、秒值。⑷若用户按下Esc键,程序会结束时钟运行,退出系统。12.2.3系统总体设计12.2.3.1功能模块设计4.时钟动画处理模块该模块是本程序核心部分,它实现了时钟运转的模拟。这部分的重点和难点在于时、分、秒在相应时间处的擦除和随后重绘工作。擦除和重绘工作的难点在于每次绘制时针指针终点坐标值的计算。下面分别介绍指针运转时坐标点的计算和时钟动画的处理流程。⑴坐标点的计算在电子时钟中,时、分、秒3根指针有一个共同的端点,即圆形时钟的圆心。
6、另外,这3根指针的长短不同且分布在不同的圆弧上,但每根指针每次转动的圆弧是相同的。时钟运转时,若秒针转动60次(即1圈),分针转动1次(即1/60圈);若分针转动60次(即1圈),时针转动5次(即1/12圈);若分针转动1次(即1/60圈),时针转动1/(60*12)圈。这样,秒针每转动一次所经过的弧度为2∏/60,并且指针转动时指针另一端的坐标值可以以圆心为参考点计算出来。如图12-13所示,设圆心O的坐标为(x,y),圆的半径为r,秒针从12点整的位置移动到了K点位置,其中α为2∏/60弧度,那么,借助三角函数,可求得K点的坐标值为(x+rsinα,y-rcosα)。可用相似的
7、办法求得时、分、秒指针在圆弧上任意位置的坐标值。12.2.3系统总体设计12.2.3.1功能模块设计4.时钟动画处理模块假设时、分、秒的长度分别为a、b、c,那么时、分、秒指针另一端的任意的坐标值分别为(x+asinα,y-acosα)、(x+bsinα,y-bcosα)、(x+csinα,y-ccosα),α的变化值范围为0~2∏。在本程序中,a、b、c的取值分别为50,80,98,单位为像素。对于时、分、秒针,若小时、分钟、秒数分别为h、m、s,则α的取值分别为(
此文档下载收益归作者所有