欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年2022年计算机程序设计课程设计报告 2.pdf

    • 资源ID:33378255       资源大小:175.57KB        全文页数:17页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年2022年计算机程序设计课程设计报告 2.pdf

    v1.0 可编辑可修改1 计算机程序设计 (C 语言) 课程设计报告题目:电子动画时钟学院:机电工程学院专业:班级: 090109 班学号:姓名:指导教师:设计日期:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改2 一、概述选题背景:随着社会的进步和科技的发展,电子钟表逐渐成为了人们生活中不可缺少的一部分。设计思路: (一)功能模块设计,1. 电子时钟执行主流程2. 电子时钟界面显示3. 电子时钟按键控制模块4. 时钟动画处理模块(二)数据结构设计结构体 2. 全局变量(三)函数功能描述 ()()()()()() clockhandle()()(四)程序实现(五)运行结果。二、概要设计、数据结构此程序中,使用了C语言的 time 结构体和几个全局变量,结构体struct timeunsigned char ti_min; /*分钟*/unsigned char ti_hour; /*小时*/unsigned char ti_hund; /*百分之一秒 */unsigned char ti_sec; /*秒*/;time 结构体定义在文件中, 可用来保存系统的当前时间, 其中各字段的值的含义如下。 char ti_min:保存分钟值。 char ti_hour:保存小时。 char ti_hund:保存百分之一秒,例如, ti_hund=500 ,表示 1/500 秒。 char ti_sec:保存秒数。、全局变量下面对程序用到的全局变量及数组进行说明.1. double h,m,s: 此 3 个全局变量分别用来保存小时,分钟,秒数。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改3 2. double x,x1,x2,y,y1,y2:保存数字时钟中小时,分,秒在屏幕中显示的坐标值。 time t1:定义一个 time 结构类型的数组,此数组只有t0 一个元素。模块列表 1. 时钟动画处理模块时钟动画处理模块主要由clockhandle()函数来实现,程序中旧时钟指针的擦除是借助 setwritemode(mode) 函数设置画线的方式来实现。如果mode=1 ,则表示画线时用现在特性的线所画之处原有的线性异或(XOR) 操作,实际上画出的线是原有线与现在规定的线进行异或后的结果。因此,当线的特性不变时, 进行两次画线操作相当于没有画线,即在当前位置处清除了原来的画线。2. 时钟按键控制模块在电子时钟中,按键控制模块最主要的工作就是必须能读取用户按键,对按键值进行判断,并调用相应函数来执行相关操作。3.数字时钟处理模块(1)调用 digitclock(int x,int y,int clock) 函数。在数字时钟r 指定位置显示时,分,秒,其中digithour(double h),int digitour(double h)和digitsec(doubles)用于完成数值的 double 型向 int型转换。(2)调用 drawcursor(int count),clearcursor(int count)函数来完成旧光标的擦除和新光标的绘制。、程序结构图(也就是模块之间的关系)电子时钟名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改4 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改5 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改6 三 、详细设计程序预处理模块。 包括加载头文件, 定义常量, 变量,结构体数组和函数原型声明。主 控 模 块main().main()函 数 主 要 实 现 了 对 电 子 时 钟 的 初 始 化 工 作 , 及clockhandle()函数的调用。时钟动画处理模块。时针按键控制模块。在电子时钟中,按键控制模块最主要的工作就是必须能读取用户按键,对按键值进行判断,并调用相应函数来执行相关操作。流程图如下。数字时针处理模块。在数字时钟处理模块中,主要实现数字时钟的显示和数字的时钟修改。其中,在数字时钟的修改中,用户可以按Tab键定位需要修改的内容的位置,然后通过按光标上移或下移键来修改时间。四、调试程序错误 1:错误现象: Declaration syntan error错误原因:声明错误,缺分号。修改方法:在声明语句后添加分号。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改7 错误 2:错误现象: Two few parameters in call to setlinestyle in function main错误原因:语句缺少参数。修改方法:在 main() 函数中找到缺少参数的语句添加相应的参数。错误 3:错误原因: Function call missing)in function clockhandle错误原因:在 clockhandle函数调用的是后函数表达式缺少一个) 。修改方法:找到错误语句添加缺少的表达式符号。五、心得总结程序优点: 本程序旨在训练学生的基本编程能力,本程序中涉及时间结构体, 数组,绘图等方面的知识,通过本程序的训练使学生能对C语言有一个更深刻的了解。掌握利用 C语言相关函数开发电子时钟的基本原理,为进一步开发出高质量的程序打下坚实的基础。程序缺点:程序各个模块之间的控制连接比较繁琐,容易出现错误。六附程序清单#include#include#include#include#define PI #define UP 0 x4800#define DOWN 0 x5000#define Esc 0 x11b名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改8 #define 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 ; main() int driver,mode=0,i,j;driver =DETECT;initgraph (&driver, &mode,c:tc);setlinestyle (0,0,3);setbkcolor(0);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);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改9 line(76,56,297,56);line(340,56,564,56);/*arc(int x, int y, int. stangle, int endangle, int radius)*/arc(82,62,90,180,12);arc(558,62,0,90,12);setlinestyle (0,0,3);arc(82,418,180,279,12);setlinestyle (0,0,3);arc(558,418,270,360,12);setcolor(15);outtextxy(300,53,CLOCK);setcolor(7);rectangle(342,72,560,360);setwritemode(0);setcolor(15);outtextxy(433,75,CLOCK);setcolor(7);line(392,310,510,310);line(392,330,510,330);arc(392,320,90,270,10);arc(510,320,270,90,10);setcolor(5);for(i=431;i=470;i+=39) for(j=317;j=324;j+=7) setlinestyle(0,0,3); circle(i,j,1);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改10 setcolor(15) ;line(424,315,424,325);for(i=0,m=0,h=0;i=11;i+,h+) x=100*sin( (h*60+m)/360*PI)+451 ; y=200-100*cos( (h*60+m)/360*PI) ; setlinestyle(0,0,3) ; circle(x,y,1) ; for(i=0,m=0 ;i=59;m+,i+) x=100*sin (m/30*PI)+451; y=200-100*cos(m/30*PI ) ; setlinestyle(0,0,1 ) ; circle(x,y,1) ;setcolor(4) ;outtextxy(182,125, HELP ) ;setcolor(5) ;outtextxy(140,185, TAB :Cursor move ) ;outtextxy(140,225, UP : Time +) ;outtextxy(140,265, DOWN : Time-) ;outtextxy(140,305, Esc : Quit system! ) ;outtextxy(140,345, Version : ) ;setcolor(12);outtextxy(150,400, Nothing is more important than time ! ) ;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改11 clockhandle() ;closegraph() ;return(0);void clockhandle() int k=0,count ;setcolor(15) ;gettime(t) ;h=t0.ti_hour ;m=t0.ti_min ;x=50*sin(h*60+m)/360*PI)+451 ;y=200-50*cos(h*60+m) /360*PI) ;line(451,200,x,y);x1=80*sin(m/30*PI) +451 ;y1=200-80*cos(m/30*PI) ;line(451,200,x1,y1) ; digitclock(408,318,digithour(h); digitclock(446,318,digitmin(m);setwritemode(1) ;for(count=2;k!=Esc;) setcolor(12) ; sound(500); delay(700); sound(200);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改12 delay(300);nosound() ;s=t0.ti_sec ;m=t0.ti_min ;h=t0.ti_hour ;x2=98*sin(s/30*PI)+451 ;y2=200-98*cos(s/30*PI) ;line(451,200,x2,y2 ) ;while(t0.ti_sec=s&t0.ti_min=m&t0.ti_hour=h) gettime(t); if(bioskey(1)!=0) k=bioskey(0); count=keyhandle(k,count) ; if(count=5) count=1 ; setcolor(15) ;digitclock (485,318,digitsec(s)+1) ;setcolor(12) ;x2=98*sin(s/30*PI)+451 ;y2=200-98*cos(s/30*PI ) ;line(451,200,x2,y2) ;if(t0.ti_min!=m ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改13 setcolor(15) ; x1=80*sin(m/30*PI)+451 ; y1=200-80*cos(m/30*PI ) ; line(451,200,x1,y1 ) ;m=t0.ti_min ;digitclock(446,318,digitmin(m) ) ;x1=80*sin(m/30*PI)+451 ;y1=200-80*cos(m/30*PI) ;line(451,200,x1,y1 ) ;if(t0.ti_hour*60+t0.ti_min)!=(h*60+m) setcolor(15) ;x=50*sin(h*60+m)/360*PI)+451 ; y=200-50*cos(h*60+m)/360*PI);line(450,200,x,y ); h=t0.ti_hour ; digitclock(408,318,digithour (h) ) ;x=50*sin(h*60+m)/360*PI) ;line(451,200,x,y ) ;int keyhandle(int key ,int count ) switch(key)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改14 case UP: timeupchange(count-1); break ;case DOWN :timedownchange (count-1) ;break ;case TAB :setcolor (15) ;clearcursor(count) ;drawcursor(count) ;count+ ;break;return count ;int timeupchange(int count ) if(count=1) t0.ti_hour+; if(t0.ti_hour=24) t0.ti_hour=0; settime(t) ; if (count=2) t0.ti_min+; if(t0.ti_min=60) t0.ti_min=0 ; settime(t) ;if(count=3) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改15 t0.ti_sec+;if(t0.ti_sec=60) t0.ti_sec=0 ;settime(t) ;int timedownchange(int count ) if(count=1) t0.ti_hour- ; if(t0.ti_hour=0) t0.ti_hour=23 ; settime(t) ; if(count=2) t0.ti_min-; if(t0.ti_min=0) t0.ti_min=59 ; settime(t) ;if(count=3) t0.ti_sec- ; if(t0.ti_sec=0) t0.ti_sec=59; settime (t) ; void digitclock(int x, int y, int clock)char buffer110;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改16 setfillstyle(0,2) ; bar (x,y,x+15,328) ; if (clock=60) clock=0 ; sprintf(buffer1,%d,clock) ; outtextxy(x,y,buffer1) ;int digithour(double h) int i; for(i=0;i=23;i+) if(h=i) return i ; int digitmin(double m) int i ; for(i=0;i=59 ;i+) if(m=i) return i;int digitsec(double s) int i; for(i=0; i=59;i+) if(s=i) return i ;void drawcursor (int count)switch(count) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 17 页 - - - - - - - - - v1.0 可编辑可修改17 case 1:line (424,315,424,325);break ; case 2:line(465,315,465,325) ; break; case 3:line(505,315,505,325) ; break ; void clearcursor (int count) switch(count) case 2: line (424,315,424,325) ; break ; case 3:line (465,315,465,325) ; break ; case 1: line (505,315,505,325) ; break ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 17 页 - - - - - - - - -

    注意事项

    本文(2022年2022年计算机程序设计课程设计报告 2.pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开