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

253b171540df25e1b84436cbe50dfc72.gif计算机程序设计(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 ; 结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言用栈编写数制转换程序,数制转换-栈的应用(C++实现)

本程序实现的是十进制与不同进制之间的的数据转换,利用的数据结构是栈,基本数学方法辗转相除法。conversion.h#includeusing namespace std;//将十进制的数据n转换成m进制的数据stack conversion(unsigned int n,unsigned int m){stack s;while(n){s.pus…

两个变量实现查找坏环c语言,C/C++编程笔记:C语言编程知识要点总结!大一C语言知识点(全)...

程序员无言 2020-07-07一、C语言程序的构成与C、Java相比,C语言其实很简单,但却非常重要。因为它是C、Java的基础。不把C语言基础打扎实,很难成为程序员高手。1、C语言的结构先通过一个简单的例子,把C语言的基础打牢。C语言的结构…

累加器A用c语言,累加器A的主要作用是什么_一文解析累加器a和acc的区别

描述累加器简介在中央处理器中,累加器(accumulator) 是一种寄存器,用来储存计算产生的中间结果。如果没有像累加器这样的寄存器,那么在每次计算 (加法,乘法,移位等等) 后就必须要把结果写回到内存,也许马上…

Java中的<<、>>、>>>运算符

二进制中的原码、反码、补码 有符号数: 对于有符号数而言,符号的正、负机器是无法识别的,但由于“正、负”恰好是两种截然不同的状态,如果用“0”表示“正”,用“1”表示“负”,这样符号也被数字化了&…

actionscript 3.0 怎么写android 程序,(ActionScript3.0笔记)第一个程序HelloWorld!

(ActionScript3.0笔记)第一个程序HelloWorld!创建我的第一个ActionScript3.0程序--HelloWord!首先下载ActionScript3.0的集成开发环境,FLASH CS4 Professional。从网站下载FLASH CS4 Professional软件的安装包程序,下载好后进行安装。安装后在…

android.app.activityview,ViewModel 概览

ViewModel 概览ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。注意:如需将 ViewModel导入 Android 项目,请参阅 Lifecycle 版本说明中关于声明依赖项的说明。Android 框架可…

使用Navicat将数据从Excel导入到MySQL数据库

数据库中的表已经建好了,现在要将数据从Excel导入 要求:Excel中要有一行为字段名(可以与数据表中的字段名顺序不一样) 具体步骤 1、右键单击表,选择 导入向导 2、选择数据导入格式,然后点击下一步 3…

html5 a-z字母排序,Mint UI实现A-Z字母排序的城市选择列表

本文实例为大家分享了Mint Ul实现A-Z字母排序的城市选择列表的具体代码,供大家参考,具体内容如下效果图如下:项目文件存放路径图:所有代码如下:import city from "../assets/json/city"//导入所有城市的JSON…

Geometry几何结构与WKT空间坐标计算缓冲距离模型构建

geometry,英语单词,名词,意思是“几何学几何结构”。 http://www.baike.com/wiki/WKTWKT,是一种文本标记语言,用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换。它的二进制表示方式,亦即WKB(…

html5开发之ios屏幕适配,iOS开发屏幕尺寸以及屏幕适配等问题(转载内容)

原帖地址:http://blog.csdn.net/phunxm/article/details/42174937/仅供我个人收藏学习,原博主如不同意请联系qq651263878进行删除,在此表示感谢以及歉意。1.iPhone尺寸规格后续上市的iPhone7以及iPhone7plus 与六代相同1 inch 2.54cm 25.4…

flink checkpoint 恢复_Flink解析 | Apache Flink结合Kafka构建端到端的ExactlyOnce处理

周凯波(宝牛)阿里巴巴技术专家,四川大学硕士,2010年毕业后加入阿里搜索事业部,从事搜索离线平台的研发工作,参与将搜索后台数据处理架构从MapReduce到Flink的重构。目前在阿里计算平台事业部,专注于基于Flink的一站式计…

Java通过ftl模板导出word最详细教程

首先用office建一个word文档 参数写自己查询出来的字段,我在这里房里图片是方便找到位置替换为64位编码 模板创建好之后,另存为Word 2003 XML文档(*.xml) 存储为别的可能会报错,我只用这一种 存储为xml之后千万不要用word打开,最…

封装html ui 控件,聊聊前端 UI 组件:组件设计

本文首发于欧雷流。由于我会时不时对文章进行补充、修正和润色,为了保证所看到的是最新版本,请阅读原文。在本系列文章《聊聊前端 UI 组件:组件体系》中初步说明了 UI 组件的架构设计,本文将在此基础上进一步展开说说那篇文章中一…

live555推流rtsp_Hi3518 RTSP推流

1、openssl编译下载地址:http://distfiles.macports.org/openssl/解压后进入源码根路径执行./config no-asm no-async --prefix/home/chenyc/project/hi3518e/Hi3518E_SDK_V1.0.3.0/armlib/openssl --cross-compile-prefixarm-hisiv300-linux-#打开生成的makefile 删除-m64 在…

怎么两边同时取ln_男生“两边铲光”发型out了?试试这4款吧,剪完清爽又帅气...

发型对于男生来说是特别重要的!女生可以通过化妆来让自己变得更完美,而男生想要改变自己的形象,是不敢轻易化妆的,只有通过改变自己的发型,才能更好地展现自己的魅力。现下男生最流行的发型,莫过于“两边铲…

ionic 修改组件默认样式_开源Magpie:组件库详解

开源项目专题系列(八)1.开源项目名称:magpie_fly2.github地址:https://github.com/wuba/magpie_fly3.简介:magpie_fly 是58集体出品组件库,统一管理日常开发中的基础组件及高阶组件,并提供了相对友好的方式介绍组件的具…

口袋之旅html5超强账号,口袋之旅特攻排行榜 强大的绝对能力

历史上是在金银版分了精灵的特攻物攻,在宝石版分了技能的特攻物攻,让很多精灵和技能得以重生。口袋之旅采用的是第二世代的精灵加第三世代的技能分类,于是特攻手也成为了一个需要挑选的部分,本文继续为你缩小挑选范围。特攻种族值…

使用ftl生成word

背景:根据word模板下载word。word里面需要填充数据,格式是固定的。首先在word中给数据起个变量名称 需要更换的数据改成${变量名!},必须是英文的,加感叹号是为了防止null,如果数据是null,文档下载下来后会直…

什么叫做项目孵化_蓝莓孵化营12进5争夺战,项目人绽放自我不留遗憾

国内首档互联网职业竞技励志节目《蓝莓孵化营》,今晚22点在浙江卫视播出第十一期。本期节目中,第三事业群的12组项目人将为最终的5张终极考核入场券展开争夺。这一次,他们比拼的是以“2020”为主题的短视频,每一组项目人都拼尽了自…

一开机就提示脱机工作_「华为手机维修自学教程」华为手机的开机触发电路 华为维修技巧...

谈谈华为的开机触发电路华为这段时间的新闻不少,大家应该都有说了解。华为的强大意味着华为手机的维修市场越来越大。从事维修的朋友们你们准备好了吗?今天给大家说一说,华为手机的开机触发电路。修苹果手机的朋友大家都知道,电源…