计算机程序设计(C语言)课程设计报告.doc

计算机程序设计C语言课程设计报告题目电子动画时钟 学院 机电工程学院专业 班级090109班学号 姓名 指导教师 设计日期 一、概述选题背景 随着社会的进步和科技的发展,电子钟表逐渐成为了人们生活中不可缺少的一部分。设计思路(一)功能模块设计,1.电子时钟执行主流程2.电子时钟界面显示3.电子时钟按键控制模块4.时钟动画处理模块(二)数据结构设计1.time结构体2.全局变量(三)函数功能描述1.keyhandle2.timeupchange3.timedownchange4.digitclock5.drawcursor6.clearcursor7.void clockhandle8.main(四)程序实现(五)运行结果。 二、概要设计2.1、数据结构 此程序中,使用了C语言的time结构体和几个全局变量,1.time结构体struct timeunsigned char ti_min; /*分钟*/unsigned char ti_hour; /*小时*/unsigned char ti_hund; /*百分之一秒*/unsigned char ti_sec; /*秒*/;time结构体定义在dos.h文件中,可用来保存系统的当前时间,其中各字段的值的含义如下。1.unsigned char ti_min保存分钟值。2.unsigned char ti_hour保存小时。3.unsigned char ti_hund保存百分之一秒,例如,ti_hund500,表示1/500秒。4.unsigned char ti_sec保存秒数。2.2、全局变量 下面对程序用到的全局变量及数组进行说明.1. double h,m,s 此3个全局变量分别用来保存小时,分钟,秒数。 2. double x,x1,x2,y,y1,y2保存数字时钟中小时,分,秒在屏幕中显示的坐标值。3.struct time t1定义一个time结构类型的数组,此数组只有t0一个元素。 2.3 模块列表 1.时钟动画处理模块时钟动画处理模块主要由clockhandle函数来实现,程序中旧时钟指针的擦除是借助setwritemodemode函数设置画线的方式来实现。如果mode1,则表示画线时用现在特性的线所画之处原有的线性异或(XOR操作,实际上画出的线是原有线与现在规定的线进行异或后的结果。因此,当线的特性不变时,进行两次画线操作相当于没有画线,即在当前位置处清除了原来的画线。2.时钟按键控制模块在电子时钟中,按键控制模块最主要的工作就是必须能读取用户按键,对按键值进行判断,并调用相应函数来执行相关操作。3.数字时钟处理模块(1)调用digitclockint x,int y,int clock函数。在数字时钟r指定位置显示时,分,秒,其中digithourdouble h,int digitourdouble h和digitsecdoubles用于完成数值的double型向int型转换。(2)调用drawcursorint count,clearcursorint count函数来完成旧光标的擦除和新光标的绘制。2.4、程序结构图(也就是模块之间的关系) 数字时钟模块按键控模块界面显示模块时钟动画处理模块电子时钟 三 、详细设计3.1程序预处理模块。包括加载头文件,定义常量,变量,结构体数组和函数原型声明。 3.2主控模块main.main函数主要实现了对电子时钟的初始化工作,及clockhandle函数的调用。3.3时钟动画处理模块。3.4时针按键控制模块。在电子时钟中,按键控制模块最主要的工作就是必须能读取用户按键,对按键值进行判断,并调用相应函数来执行相关操作。流程图如下。3.5数字时针处理模块。在数字时钟处理模块中,主要实现数字时钟的显示和数字的时钟修改。其中,在数字时钟的修改中,用户可以按Tab键定位需要修改的内容的位置,然后通过按光标上移或下移键来修改时间。四、调试程序错误1 错误现象Declaration syntan error错误原因声明错误,缺分号。修改方法在声明语句后添加分号。错误2 错误现象Two few parameters in call to setlinestyle in function main 错误原因语句缺少参数。 修改方法在main函数中找到缺少参数的语句添加相应的参数。错误3错误原因Function call missing)in function clockhandle错误原因在clockhandle函数调用的是后函数表达式缺少一个)。修改方法找到错误语句添加缺少的表达式符号。五、心得总结程序优点本程序旨在训练学生的基本编程能力,本程序中涉及时间结构体,数组,绘图等方面的知识,通过本程序的训练使学生能对C语言有一个更深刻的了解。掌握利用C语言相关函数开发电子时钟的基本原理,为进一步开发出高质量的程序打下坚实的基础。程序缺点程序各个模块之间的控制连接比较繁琐,容易出现错误。六附程序清单includegraphics.hincludestdio.hincludemath.hincludedos.hdefine PI 3.1415926define UP 0 x4800define DOWN 0 x5000define Esc 0 x11bdefine TAB 0 xf09int keyhandle int,int;int timeupchange int;int timedownchange int;int digithour double;int digitmin double;int digitsec double;void digitclock int,int,int;void drawcursor int ;void clearcursor int ;void clockhandle ;double h,m,s ;double x,x1,x2,y,y1,y2;struct time t1 ; mainint driver,mode0,i,j;driver DETECT;initgraph setlinestyle 0,0,3;setbkcolor0;line82,430,558,430;line70,62,70,418;line82,50,558,50;line570,62,570,418;line70,62,570,62;line76,56,297,56;line340,56,564,56;/*arcint x, int y, int. stangle, int endangle, int radius*/arc82,62,90,180,12;arc558,62,0,90,12;setlinestyle 0,0,3;arc82,418,180,279,12;setlinestyle 0,0,3;arc558,418,270,360,12;setcolor15;outtextxy300,53,CLOCK;setcolor7;rectangle342,72,560,360;setwritemode0;setcolor15;outtextxy433,75,CLOCK;setcolor7;line392,310,510,310;line392,330,510,330;arc392,320,90,270,10;arc510,320,270,90,10;setcolor5;fori431;i470;i39 forj317;j324;j7 setlinestyle0,0,3; circlei,j,1;setcolor15 ;line424,315,424,325;fori0,m0,h0;i11;i,h x100*sin h*60m/360*PI451 ; y200-100*cos h*60m/360*PI ; setlinestyle0,0,3 ; circlex,y,1 ; fori0,m0 ;i59;m,i x100*sin m/30*PI451; y200-100*cosm/30*PI ; setlinestyle0,0,1 ; circlex,y,1 ;setcolor4 ;outtextxy182,125, HELP ;setcolor5 ;outtextxy140,185, TAB Cursor move ;outtextxy140,225, UP Time ;outtextxy140,265, DOWN Time ;outtextxy140,305, Esc Quit system ;outtextxy140,345, Version 2.0 ;setcolor12;outtextxy150,400, Nothing is more important than time ;clockhandle ;closegraph ;return0;void clockhandle int k0,count ;setcolor15 ;gettimet ;ht0.ti_hour ;mt0.ti_min ;x50*sinh*60m/360*PI451 ;y200-50*cosh*60m /360*PI ;line451,200,x,y;x180*sinm/30*PI 451 ;y1200-80*cosm/30*PI ;line451,200,x1,y1 ; digitclock408,318,digithourh; digitclock446,318,digitminm;setwritemode1 ;forcount2;kEsc; setcolor12 ; sound500; delay700; sound200; delay300;nosound ;st0.ti_sec ;mt0.ti_min ;ht0.ti_hour ;x298*sins/30*PI451 ;y2200-98*coss/30*PI ;line451,200,x2,y2 ;whilet0.ti_secst0.ti_minmt0.ti_hourh gettimet; ifbioskey10 kbioskey0; countkeyhandlek,count ; ifcount5 count1 ; setcolor15 ;digitclock 485,318,digitsecs1 ;setcolor12 ;x298*sins/30*PI451 ;y2200-98*coss/30*PI ;line451,200,x2,y2 ;ift0.ti_minm setcolor15 ; x180*sinm/30*PI451 ; y1200-80*cosm/30*PI ; line451,200,x1,y1 ;mt0.ti_min ;digitclock446,318,digitminm ;x180*sinm/30*PI451 ;y1200-80*cosm/30*PI ;line451,200,x1,y1 ;ift0.ti_hour*60t0.ti_minh*60m setcolor15 ;x50*sinh*60m/360*PI451 ; y200-50*cosh*60m/360*PI;line450,200,x,y ; ht0.ti_hour ; digitclock408,318,digithour h ;x50*sinh*60m/360*PI ;line451,200,x,y ;int keyhandleint key ,int count switchkey case UP timeupchangecount-1; break ;case DOWN timedownchange count-1 ;break ;case TAB setcolor 15 ;clearcursorcount ;drawcursorcount ;count ;break;return count ;int timeupchangeint count ifcount1 t0.ti_hour; ift0.ti_hour24 t0.ti_hour0; settimet ; if count2 t0.ti_min; ift0.ti_min60 t0.ti_min0 ; settimet ;ifcount3 t0.ti_sec;ift0.ti_sec60 t0.ti_sec0 ;settimet ;int timedownchangeint count ifcount1 t0.ti_hour ; ift0.ti_hour0 t0.ti_hour23 ; settimet ; ifcount2 t0.ti_min; ift0.ti_min0 t0.ti_min59 ; settimet ;ifcount3 t0.ti_sec ; ift0.ti_sec0 t0.ti_sec59; settime t ; void digitclockint x, int y, int clockchar buffer110; setfillstyle0,2 ; bar x,y,x15,328 ; if clock60 clock0 ; sprintfbuffer1,d,clock ; outtextxyx,y,buffer1 ;int digithourdouble h int i; fori0;i23;i ifhi return i ; int digitmindouble m int i ; fori0;i59 ;i ifmi return i;int digitsecdouble s int i; fori0; i59;i ifsi return i ;void drawcursor int countswitchcount case 1line 424,315,424,325;break ; case 2line465,315,465,325 ; break; case 3line505,315,505,325 ; break ; void clearcursor int count switchcount case 2 line 424,315,424,325 ; break ; case 3line 465,315,465,325 ; break ; case 1 line 505,315,505,325 ; break ; 结束

计算机专业课程设计报告c语言,计算机程序设计(C语言)课程设计报告.doc相关推荐

  1. 微分方程对计算机专业用处,工科类,大学要学哪些数学课程?

    工科类,大学要学哪些数学课程?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 工科类,大学要学哪些数学课程? 我也是学计 ...

  2. 计算机专业中观分析是什么,计算机专业本科论文提纲模板样本 计算机专业本科论文大纲怎样写...

    为论文写作提供[100个]计算机专业本科论文提纲模板样本,海量计算机专业本科相关论文提纲,包括专科与本科以及硕士论文提纲,解决您的计算机专业本科论文大纲怎样写的相关难题! 五.计算机师范专业培养方案问 ...

  3. 选文可以学计算机专业,是不是文理科都可以报计算机专业?

    是不是文理科都可以报计算机专业?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 是不是文理科都可以报计算机专业? 是的. ...

  4. 对计算机专业英语的建议,中职计算机专业英语教学现况与建议论文

    中职计算机专业英语教学现况与建议论文 摘要:随着计算机的不断普及,中等职业学校专业人才培养方案对计算机专业学生专业英语教学的要求越来越高,但计算机专业英语课程在中职学校计算机专业教学中长期处于特殊而尴 ...

  5. 本科计算机专业写论文写什么,本科计算机专业论文大纲格式 本科计算机专业论文框架如何写...

    [100个]本科计算机专业论文大纲格式供您参考,希望能解决毕业生们的本科计算机专业论文框架如何写相关问题,写好提纲那就开始写本科计算机专业论文吧! 五.山西本科高校计算机专业实验教学问题研究论文提纲 ...

  6. 南职计算机专业是热门吗,2017学计算机电脑专业职业技术的人多嘛,前途怎么样?...

    2017学计算机电脑专业职业技术的人多嘛,前途怎么样?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 2017学计算机电 ...

  7. 计算机专业教学中的若干问题的思考——“计算机问题求解课”总结

    参加"CCF计算机课程改革导教班"的学习期间,由于在时间.地点.课程选择上的精心安排,度过了一段很安静,很专心的学习时间.资深教授利用有跨度的课程做出具体.深入引导,多次畅所欲言的 ...

  8. 新西兰计算机专业研究生一年,【新西兰计算机专业研究生】 - 教外新西兰留学网...

    新西兰计算机专业研究生是新西兰长期短缺专业之一,学生毕业后就业前景广,若是申请移民还可获得长期短缺10分加分.新西兰奥克兰大学.新西兰坎特伯雷大学等高校计算机专业课程都是不错的选择,学生可根据自身情况 ...

  9. 文华学院计算机专业考研,本科土木跨考计算机专业研究生可行吗?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本科土木跨考计算机专业研究生可行吗? 随着计算机行业的飞速发展,尤其是不断刷新三观的IT高薪,有越来越多的同学想要通过考研这个跳板迈入计算机领域,面对如此 ...

  10. 大专学计算机专业学得到不,大专学计算机真的没用吗

    大专学计算机真的没用吗以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 大专学计算机真的没用吗 很难有前途,计算机应用,是 ...

最新文章

  1. SpringBoot24 SpringDataJPA环境搭建、实体类注解、关联查询
  2. 【Servlet】ServletContext、ServletConfig对象学习、用户登录系统完善
  3. python编程序列类型_python序列类型种类详解
  4. Hive的几种常见的数据导入方式
  5. C++:27---new delete malloc free
  6. 火热抢购(双11)双12通用海报设计素材,PSD分层!
  7. 078 numpy模块
  8. 多种嵌入式文件系统移植集合
  9. 交叉编译JRTPLib库
  10. leetcode 1175. Prime Arrangements 解法 python
  11. 深恶痛绝的No mapping found for HTTP request with URI
  12. Rounded Numbers
  13. visual studio设置字体及护眼背景色
  14. 16 hue框架使用
  15. csv逗号分隔符转换_pythonpandas读写csv数据
  16. 【科普】72名图灵奖获得者的成就
  17. 分配工作时需要考虑的问题
  18. 韩国留学跨计算机,韩国留学跨专业申请行么?弃工从文真实案例借你参考!
  19. 约瑟夫环问题(用数学方法推出计算公式)
  20. 焊锡膏可靠性测试方案

热门文章

  1. 在Linux中制作实用程序(MakeFile)
  2. python学习中文第五版_前5个学习Python的网站
  3. treemap比较器_Java TreeMap比较器()方法与示例
  4. php如何编造简历,在简历里编造内容需要注意哪些问题?
  5. python点击按钮改变图片_单击tkinter按钮时更改图片
  6. php处理ajax post请求超时,php – 如何处理AJAX请求中的会话超时
  7. lcfirst_PHP lcfirst()函数与示例
  8. SpringCloud Nacos + Ribbon 调用服务的 2 种方法!
  9. 局部变量竟然比全局变量快 5 倍?
  10. 问题“The connection to the server....:6443 was refused - did you specify the right host or port?”的处理!