《C语言课程设计说明书电子时钟》由会员分享,可在线阅读,更多相关《C语言课程设计说明书电子时钟(23页珍藏版)》请在金锄头文库上搜索。
1、3 课程设计说明书课程设计名称 C语言课程设计 课程设计题目 电子时钟 学院名称 信息工程学院 专业名称 计算机科学与技术 班级 090451 学号09045131 姓名 评分_指导教师 目录1.设计课题32.设计目的.33.设计内容34.总体设计.3(1)系统结构图.4(2)数据结构.5.5.详细设计.5(1)电子时钟执行主流程.5(2)欢迎界面.6(3)电子时钟显示.7(4)时钟按键控制模块.8(5)时钟动画处理模块.8(6)数字时钟处理模块.9(7)汉字处理模块96.调试分析.97.课程设计总结和心得体会.108.参考文献.12附录:(源代码)12一 .设计课题:电子时钟课程设计二.设计
2、目的:本程序中涉及时间结构体,数组、绘图等方面的知识,通过本程序的训练,使我们有一个更深刻的了解,掌握利用c语言相关函数开发电子时钟的基本原理,为进一步开发高质量的程序打下坚实的基础。提高运用c语言解决实际问题的能力。三.设计内容 (1) 欢迎界面,以一个笑脸开始 (2)主界面,包括数字时钟和电子时钟和按键提示。(3)设计者介绍和功能提示。四.总体设计 电子时钟是针对人们判断时间的落后和不准确性,通过利用计算机来实行对时间的系统计算,增加了准确性。在软件的总体设计中采用自上而下,逐步细化,模块化设计,结构化编码方式进行。(1) 系统结构图 (2) 数据结构a. time结构图struct ti
3、me unsigned char ti-min;unsigned char ti-hour;unsigned char ti-sec;数据成员 时 分 秒成员类型字符型字符型 字符型b全局变量下面对程序用到的全局变量及数组进行说明。l double h,m,s;此三个全局变量分别用来保存小时、分钟、秒数。l double x,x1,x2,y,y1,y2;保存数字时钟中小时、分、秒在屏幕中显示的坐标值。l struct time t:定义一个time结构类型的结构体变量。五.详细设计(1)电子时钟执行主流程首先,程序调用initgraph()函数,使系统进入图像模式,然后通过使用line(),a
4、rc(),outtextxy(),和circle()等函数来绘制主窗口及电子时钟界面,然后调用clockhandle()函数来处理时钟的运转及数字时钟的显示。在clcockhandle()函数中,使用bioskeu()函数来获取用户的按键值,当用户按键为Esc时,程序会从clockhandle()函数中返回,从而退出程序。如左图。(2)欢迎界面利用画图函数circle(),arc()及outtextxy()来画欢迎界面和欢迎辞。(3) 电子时钟显示电子时钟界面的难度主要在于模拟时钟运转的动画时钟的时间刻度是用大小不同的圆来表示的,3根长度不同的但有一端在相同坐标位置的直线分别表示时、分、秒针。
5、(4) 时钟按键控制模块在按键控制模块中,使用bioskey()函数来读取按键的键值,然后调用keyhandle()函数对键盘按键值进行判断,执行相应的操作,具体操作如下:a. Tab键是用来清除上一个光标,然后再新位置处绘制一个光标。b. 光标上移键是用来增加相应的时、分、秒值。c. 光标下移键是用来减少相应的时、分、秒值。d. Esc键是用来结束程序的。(5) 时钟动画处理模块 先通过坐标点的计算再做好时钟动画处理流程,最后退出程序。(6) 数字时钟处理模块在数字时钟处理模块中,会每隔一秒调用gettime()函数,获取系统时间,再调用digitclock()函数再相应的位置显示时、分、秒
6、值。数字的修改有当前光标的位置和上、下移键共同决定的。(7)汉字处理模块运用点阵法,调用drawmat()函数实现。六.调试分析在此次课程设计中,遇到了一些问题,通过老师的指导和组员之间的协作,最后都解决了问题。a. 要减少调试时间首先要害死程序写出来的语法错误少,那就哟啊养成良好的习惯,比如写主函数main()后写了左花括号“”马上补右括号“”等等。b. 另一个重要的方面就是数据的类型一定要对应,还有格式也非常重要,在写程序时一定要注意。c. 函数功能描述七课程设计总结和心得体会1. 通过这次课程设计,加强了我们动手、思考和解决问题的能力。而且在设计过程中,经常会遇到这样那样的情况,就是心里
7、想老着这样的接法可以行得通,经过老师一点拨就放弃了这种想法。2. 我沉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个函数的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多函数的功能,并且对于其在程序中的使用有了更多的认识。3.平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。比如一些程序功能的实现,平时看课本,这次看了,下次就忘了,通过动手实践让我们对各个函数印象深刻。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这两个星期的课程设计对我们的作用是
8、非常大的。经过两个星期的学习,过程曲折可谓一语难尽。在此期间我们也失落过,也曾一度热情高涨。从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。、在此,感谢于老师的细心指导,也同样谢谢其他各组同学的无私帮助!八参考文献a. 姜灵芝等.c语言课程设计案例精编.北京:清华大学出版社.2008b. 胡景春等。大学生计算机课程实践优秀作品选编.南京:东南大学出版社.2010附录(源代码):/*头文件,结构体和汗水
9、声明*/#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); /*处理上移按键*/int timedownchange(int); /*处理下移按键*
10、/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 clockhandle();/*时钟处理*/double h,m,s; /*全局变
11、量:小时、分、秒*/double x,x1,x2,y,y1,y2; /*全局变量:坐标值*/struct time t; /*定义一个结构体变量*/void drawmat(char *mat,int matsize,int x,int y,int color); /*函数声明*/ char shi16S=/* 以下是 时 的 16点阵宋体 字模,32 byte */ 0x00,0x10,0x00,0x10,0x7C,0x10,0x44,0x10, 0x47,0xFE,0x44,0x10,0x7C,0x10,0x45,0x10, 0x44,0x90,0x44,0x90,0x7C,0x10,0x
12、00,0x10, 0x00,0x10,0x00,0x10,0x00,0x50,0x00,0x20,;char jian16S=/* 以下是 间 的 16点阵宋体 字模,32 byte */ 0x20,0x00,0x13,0xFC,0x10,0x04,0x40,0x04, 0x47,0xE4,0x44,0x24,0x44,0x24,0x47,0xE4, 0x44,0x24,0x44,0x24,0x47,0xE4,0x40,0x04, 0x40,0x04,0x40,0x04,0x40,0x14,0x40,0x08,;char jiu16S=/* 以下是 就 的 16点阵宋体 字模,32 byte
13、*/ 0x10,0x20,0x08,0x28,0xFF,0x24,0x00,0x24, 0x00,0x20,0x7F,0xFE,0x42,0x50,0x42,0x50, 0x7E,0x50,0x08,0x50,0x2C,0x50,0x2A,0x90, 0x4A,0x92,0x89,0x12,0x2A,0x0E,0x10,0x00,;char shiA16S=/* 以下是 是 的 16点阵宋体 字模,32 byte */ 0x00,0x00,0x0F,0xF0,0x08,0x10,0x0F,0xF0, 0x08,0x10,0x0F,0xF0,0x00,0x00,0xFF,0xFE, 0x01,0x00,0x09,0x00,0x09,0xF8,0x09,0x00, 0x15,0x00,0x23,0x00,0x40,0xFE,0x00,0x00,;char sheng16S=/* 以下是 生 的 16点阵宋体 字模,32 byte */ 0x00,0x80,0x10,0xC0,0x10,0x80,0x10,0x88, 0x1F,0xFC,0x20,0x80,0x20,0x80,0x40,0x88, 0x9F,0xFC,0x00,0x80,0x00,0x80,0x00,0x80,