C语言课程设计报告模拟时钟转动程序.doc
《C语言课程设计报告模拟时钟转动程序.doc》由会员分享,可在线阅读,更多相关《C语言课程设计报告模拟时钟转动程序.doc(27页珍藏版)》请在三一办公上搜索。
1、 课程设计报告 题 目 课 程 名 称 结构化程序设计课程设计 院 部 名 称 专 业 班 级 学 生 姓 名 王蕾 学 号 课程设计地点 课程设计学时 指 导 教 师 金陵科技学院教务处制 目 录第一章 课程设计的目的和要求1.1 C语言课程设计的目的1.2 C语言课程设计实现的要求第二章 课程设计的任务内容第三章 详细设计说明3.1 程序系统的结构 3.1.1 实验设备及环境:(软、硬件环境)3.2 模块描述3.2.1 指针式时钟3.2.2 数字式时钟3.3 输出项3.4 算法3.5 流程图3.6 函数说明3.7 接口3.8 调试结果第四章 软件使用说明4.1 软件使用说明及出现的问题4.
2、2 运行结果第五章 课程设计心得与体会附录1:参考文献附录2:修改后的源代码模拟时钟转动程序第一章 课程设计的目的和要求1.1 C语言课程设计的目的加深对讲授内容的理解,尤其是一些语法规定。通过课程设计,自然地、熟练地掌握。熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。学会上机调试程序。通过编程最终使程序运行结果为电脑屏幕显示模拟时钟,并正常运行显示表针时间。1.2 C语言课程设计实现的要求能模拟机械钟表行走;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;要准确地利用数字显示日期和时间并且可以根据用户的需求更改当前时间(指针式时钟与数字
3、式时钟实现同步更改);数字式时钟的时间显示与指针式时钟显示一致;可以通过上下键改变当前的时、分、秒;改的时间是小时、分钟、还是秒数;通过Tab键切换按Esc时程序退出。第二章 课程设计的任务内容要熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。用C语言实现一个模拟时钟转动程序;Graphics函数库。提出总体方案的设计思想和原理,绘制程序流程图和描述程序的功能,并说明程序的特点和难点。能模拟机械钟表行走;要准确地利用数字显
4、示日期和时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致;按任意键时程序退出。模拟时钟是一种集计时器和时钟显示于一体的程序。编写一个指针式时钟程序,此程序在屏幕正中有一个指针式钟面,窗口标题以数字方式显示日期和时间。指针式的时钟表盘为椭圆形或圆形,并且圆周上有分布均匀的12个刻度,刻度要求显示清楚,钟面上有长度不相同的指针,即时针、分针、秒针,指针的运动要求具有规律性,且为顺时针。数字钟显示时间的格式是年月日时分秒,小时为24进制,分钟和秒是60进制,指针式的时钟和数字式的时钟显示的时间同步,且两个时钟所显示
5、的时间与计算机的系统时间一致。第三章 详细设计说明3.1 程序系统的结构模拟时钟转动程序指针式时钟数字式时钟(用户可根据需要修改当前时间)图3.1 功能模块图3.1.1 实验设备及环境:(软、硬件环境)Windows XP操作系统Win TC IDE C语言开发环境Hp笔记本3.2 模块描述3.2.1 指针式时钟指针式的时钟表盘为圆形,并且圆周上有分布均匀的12个较大刻度和六十个较小的刻度,刻度显示清楚,分别表示小时、分钟和秒数钟面上有长度不相同的指针,即时针、分针、秒针,指针的运动具有规律性,为顺时针。3.2.2 数字式时钟数字钟显示时间的格式是时分秒,小时为24进制,分钟和秒是60进制,指
6、针式的时钟和数字式的时钟显示的时间同步,且两个时钟所显示的时间与计算机的系统时间一致。3.3 输出项数字式时钟输出“%d时%d分%d秒”。3.4 算法#define宏定义部分定义变量。利用函数circle(,)定义圆即表盘及轴心,其中(,)为圆心坐标,为半径。利用函数setbkcolor、setcolor设置颜色。gettime(t)获取电脑时间进行显示sound()、delay()函数设置表针走动声音对应走动刻度。应用c语言库函数进行表盘及颜色的的处理,编写表针运算函数,及表针影像颜色覆盖处理详见程序注释。不论何种指针,每次转动均以/30弧度(一秒的角度)为基本单位,且都以表盘中心为转动圆心
7、。计算指针端点(x, y)的公式如下:x =圆心x坐标 指针长度 * cos (指针方向角)y =圆心y坐标 指针长度 * sin (指针方向角)注重,指针长度是指自圆心至指针一个端点的长度(是整个指针的一部分),由于指针可以跨越圆心,因此一个指针需要计算两个端点。三个指针的运动是相关联的,秒针转一圈引起分针运动一格,分针转一圈引起时针运动一格,因此应该使用消息来处理指针的运动。3.5 流程图开始初始化图形系统设置窗体的背景色、前景色及画笔画出主体框架的边直线、边角弧线画出时钟的框架、标题及时分秒的刻度;绘制数字式时钟下的数字时钟的边框架窗口左边打印帮助提示信息调用时钟处理程序获取当前时间并显
8、示调用消息处理函数刷新窗口显示(1秒)创建数字钟字体对数字钟进行输出判断修改是增加还是减少退出(Esc)调出digitalClock结束图3.2 程序流程图3.6 函数说明 绘制小时的圆点:x=100*sin(h*60+m)/360*PI)+451;y=200-100*cos(h*60+m)/360*PI);绘制表示分钟或秒钟的圆点:x=100*sin(m/30*PI)+451;y=200-100*cos(m/30*PI);由于表是顺时针转动,我们的角度习惯上使用逆时针,所以我们使用自己校正后的角度值,从12点开始,按顺时针重新排列三角函数值,加入对角度正负的校正。1、程序与处理包括加载头文件
9、,定义常量、变量、结构体数组和函数原型声明。主函数main()main()函数主要实现了对电子时钟的初始化工作,及clockhandle()函数的调用。main() int driver, mode=0, i, j;driver=DETECT; /*自动检测显示设备*/initgraph(&driver, &mode, ) /*初始化图形系统*/setlinestyle(0,0,3); /*设置当前画线宽度和类型:设置三点宽实线*/setbbcolor(0); /*用调色板设置当前背景颜色*/setcolor(9); /*设置当前画线颜色*/2、在电子表的左边打印帮助提示信息,相当于软件的使用
10、说明。3、时钟按键控制模块在电子时钟中,按键控制模块最主要的工作就是必须能读取用户按键,对按键值进行判断,并调用相应函数来执行相关操作。int keyhandle (int key, int count) /*键盘控制*/4、数字时钟处理模块在数字时钟处理模块中,主要实现数字时钟的显示和数字时钟的修改。其中,在数字时钟的修改中,用户可先按Tab键定位需要修改内容的位置,然后通过按光标上移或下移键来修改当前时间。它的主要工作如下:(1)调用digitclock(int x,int y,int clock)函数,在数字时钟 r 指定位置显示时、分、秒,其中digithour(double h)、i
11、nt digithour(double h)和digitsec(double s) 用于完成数值的型向int型转换。(2)调用drawcursor(int count)、clearcursor(int count)函数来完成旧光标的擦除和新光标的绘制。首先定义一些时钟常用的宏和定义处理时钟的一些函数及保存数据的变量:int keyhandle(int,int); /*键盘按键判断,并调用相关函数处理*/int timeupchange(int); /*处理上移按键*/int timedownchange(int); /*处理下移按键*/int digithour(double); /*将dou
12、ble型的小时数转换成int型*/int digitmin(double); /*将double型的分钟数转换成int型*/int digitsec(double); /*将double型的秒钟数转换成int型*/void digitclock(int,int,int ); /*在指定位置显示时钟或分钟或秒钟数*/void drawcursor(int); /*绘制一个光标*/void clearcursor(int);/*消除前一个光标*/void clockhandle(); /*时钟处理*/double h,m,s; /*全局变量:小时,分,秒*/double x,x1,x2,y,y1,
13、y2; /*全局变量:坐标值*/struct time t1;/*定义一个time结构类型的数组*/3.7 接口 1.#includeTurbeC 中重要的函数库,Visual C+6.0和DevC+都不支持(VC和DEV都支持C项目)Graphics,可怜我上网找了半天终于找到了合适的IDEWin Tc本程序中的指针式时钟和数字式时钟的绘制都要靠它的 例如:int driver, mode=0,i,j; driver=DETECT; /*自动检测显示设备*/ initgraph(&driver, &mode, );/*初始化图形系统*/ setlinestyle(0,0,3); /*设置当前
14、画线宽度和类型:设置三点宽实线*/ setbkcolor(0);/*用调色板设置当前背景颜色*/ setcolor(9); /*设置当前画线颜色*/ line(82,430,558,430); line(70,62,70,418); line(82,50,558,50); line(570,62,570,418); line(70,62,570,62); line(76,56,297,56); line(340,56,564,56); /*画主体框架的边直线*/2.#include 标准的C的输入输出流函数 主要用它来控制字符串的某些操作3.#include数学函数库,一些数学计算的公式的具体
15、实现是放在math.h里。4.#include 就是最早黑白界面下的操作使用的一些方法和接口的函数库3.8 调试结果(在多次尝试截屏无果后,痛下决定用相机拍下来了)图3.3 运行结果第四章 软件使用说明4.1 软件使用说明及出现的问题在Win TC中新建一个cpp源文件,然后输入代码。运行后显示一个正在行走的机械时钟。机械时钟下方为数字式时钟,可根据需要修改当前时间,该程序全屏显示,在屏幕的左半边为操作提示(Tab:Cursor Move ;Up: Time+;Down: Time-;ESC:Quit the System;)和一句警示语:Nothing is more important t
16、han time,可根据提示进行你想要的操作。按ESC退出。4.2 运行结果图4.1 运行结果第五章 课程设计心得与体会经过一个半学期对课程设计的学习,我们学习了理论知识,了解了C语言程序设计的思想,这些知识都为我们的下一步学习打下了坚实的基础。通过课程设计,一方面是为了检查我们一个半学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。通过对模拟时钟的设计进一步的巩固了用C编写程序,并且有利于更好的掌握程序设计语言!同时也认识到了结构化语言的不足之处,为我们以后学习面向对象语埋下伏笔。在模拟时钟的编写过程中也体会到了做事情
17、一顶要细心、认真。更加知道了要掌握好基础知识。还有体会到了成功的感觉! 通过本项课程设计也培养了我独立思考、 综合运用所学有关相应知识的能力,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!由于C程序设计语言是近年在国内外得到迅速推广应用的一种语言。据51CTO 2010的语言排行榜,C语言是程序员使用率第二高的语言,仅次于面向对象的Java语言,是使用率最高的面向结构的编程语言。它功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。通过这次的程序设计更加了解了语言设计的好处和其可用性!在这次课
18、程设计中也知道了自己的动手能力不强有待进一部的提高!在设计过程中不能够把书本上的知识与实践相结合,这也就增加了设计不好该程序的想法!在设计过程中的一次次设计错误增加了我放弃的想法!不过经过自己的独立思考和同学的帮助终于完成了课程设计!完成该程序后想起自己以前的每一次对自己失去信心,就觉得并不是在知识掌握上打败了,而是自己对自己缺乏信心!只要自己对自己不失去信心相信就可以完成那些以前认为完成不了的事情!也让我懂得了要想成功首先就必须有很强的自信心!懂得了自己以后要在做任何事情时都要自信!当自己都不相信自己能够成功时还可能会获得成功吗?在课程设计的过程中也知道了自己在以前的学习中有很大的不足导致在
19、设计过程中出现了很多的问题,有些地方看不懂也不知道怎么去设计,但是在设计过程中也学习了很多,掌握了自己以前没有学好的知识,虽然一时可以掌握完以前没有学好的知识,不过也给自己敲响了警钟,在学习中不可以伏于表面,要想学好每一门课程都要踏踏实实,做什么都不是给别人看的!都是要更好的掌握该门知识,提高自己的自身的修养,提高自己的能力!为以后的工作打下良好的知识基础和技能基础!附录1:教材及参考书序 号书 名编 者出版社版 本1C语言课程设计案例精编姜灵芝、余健清华大学出版社2008.12C语言课程设计案例精编郭翠英中国水利水电出版社2004.33C语言程序设计田祥宏主编西安电子科技大学出版社2007.
20、12附录二:/*电子时钟源代码*/#include#include#include#include#include #include #define PI 3.1415926 /*定义常量*/#define UP 0x4800 /*上移键:修改时间*/#define DOWN 0x5000 /*下移键:修改时间*/#define ESC 0x11b /*ESC键 : 退出系统*/#define TAB 0xf09 /*TAB键 : 移动光标*/*函数声明*/int keyhandle(int,int); /*键盘按键判断,并调用相关函数处理*/int timeupchange(int); /*
21、处理上移按键*/int timedownchange(int); /*处理下移按键*/int digithour(double); /*将double型的小时数转换成int型*/int digitmin(double); /*将double型的分钟数转换成int型*/int digitsec(double); /*将double型的秒钟数转换成int型*/void digitclock(int,int,int ); /*在指定位置显示时钟或分钟或秒钟数*/void drawcursor(int); /*绘制一个光标*/void clearcursor(int);/*消除前一个光标*/void
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 模拟 时钟 转动 程序
链接地址:https://www.31ppt.com/p-2384933.html