C语言图形时钟课程设计实验报告.
- 格式:doc
- 大小:45.00 KB
- 文档页数:9
c语言课程设计钟表一、教学目标本节课的学习目标为:知识目标:使学生掌握C语言中指针、函数、结构体等基本概念;理解并掌握钟表的运行原理及其在C语言中的实现方式。
技能目标:培养学生具备运用C语言进行钟表程序设计的能力;提高学生的编程思维和问题解决能力。
情感态度价值观目标:激发学生对计算机科学的兴趣,培养学生的创新精神和团队合作意识。
二、教学内容本节课的教学内容主要包括:1.C语言基础知识:指针、函数、结构体等基本概念。
2.钟表运行原理:时钟、分针、秒针的运动规律及其表示方法。
3.钟表程序设计:利用C语言实现钟表的运行,包括时钟、分针、秒针的动态显示。
三、教学方法本节课采用以下教学方法:1.讲授法:讲解C语言基础知识,引导学生理解并掌握基本概念。
2.案例分析法:分析钟表运行原理,让学生通过实际案例理解并掌握钟表的实现方法。
3.实验法:学生动手编写钟表程序,培养学生的实际编程能力和问题解决能力。
四、教学资源本节课所需教学资源包括:1.教材:《C语言程序设计》等相关教材,用于引导学生学习基础知识。
2.多媒体资料:钟表运行原理PPT、编程实例等,用于辅助讲解和展示。
3.实验设备:计算机、编程环境等,用于学生动手实践。
4.在线资源:相关编程教程、讨论区等,用于学生课后自学和交流。
五、教学评估本节课的评估方式包括:1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,占总评的30%。
2.作业:评估学生完成的编程练习质量和进度,占总评的40%。
3.考试:进行一次钟表程序设计考试,评估学生的综合编程能力,占总评的30%。
评估方式应客观、公正,全面反映学生的学习成果。
教师应及时给予反馈,指导学生改进学习方法和策略。
六、教学安排本节课的教学安排如下:1.进度:按照教材和教学大纲,合理安排每个阶段的教学内容,确保在有限的时间内完成教学任务。
2.时间:根据学生的作息时间,选择合适的时间段进行授课,保证学生的学习效果。
3.地点:选择安静、设施齐全的教室作为教学地点,创造良好的学习环境。
XXXXX大学学生实习(实训)总结报告学院:_电气与信息工程学院_ 专业班级:_XXXXXXXX_学生姓名:____XXXX _学号:_XXXXXXXX_实习(实训)地点:______XXXXXXXXX_ _报告题目:_ 单片机万年历系统设报告__ _报告日期: 201X年 X月 XX日指导教师评语:_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ _____成绩(五级记分制):___________________指导教师(签字):_____________________目录一、实训目的意义及任务要求 (1)1.1目的意义 (1)2.2任务要求 (1)二.实习任务的方案 (2)2.1 任务进度 (2)2.2 系统分析 (2)2.3 器件选择 (2)三、系统硬件设计 (4)3.1 单片机的最小系统 (4)3.2 数码管、独立按键及DS1302时钟芯片电路的设计 (4)3.3 其他附属电路设计 (5)四、软件设计 (7)4.1 主程序设计 (7)4.2 系统操作功能设计 (7)4.3主程序void main () (9)4.4主程序设计 (9)4.5 DS1302子程序设计 (10)4.6时间调整子程序 (12)4.7 按键切换子程序 (14)五、调试及性能分析 (15)5.1软件测试 (15)5.2测试结果分析与结论 (15)5.3 测试结论 (16)六、心得体会 (17)参考文献 (18)附录一 (19)附录二 (20)多功能电脑时钟设计报告一、实训目的意义及任务要求1.1目的意义在如今,单片机的使用领域已十分广泛,它在智能仪器仪表、实时工控、通讯设备、导航系统、家用电器等均有很广泛的应用。
2014-2015学年第二学期《高级语言程序设计》课程设计报告题目:图形模拟时钟专业:计算机科学与技术班级:13计科2班姓名:指导教师:陈广宏成绩:计算机学院2015 年4月30 日目录1 设计内容及要求 (1)1.1 设计内容 (1)1.2 设计目的及意义 (1)2 概要设计 (1)2.1功能简介 (1)2.2功能说明: (1)2.3 总体程序框图 (2)3 设计过程 (3)3.1各个模块程序流程图 (3)3.2运行界面及关键代码 (4)4设计结果与分析 (6)4.1设计结果 (6)4.2分析 (6)5 总结 (7)6 参考文献 (7)附程序清单及源程序 (8)1 设计内容及要求1.1 设计内容通过编程最终使电脑屏幕显示模拟时钟,并正常运行显示表针时间,电脑上呈现一个图种的模型表示电脑上的时间,并可以模拟时钟走动。
1.2 设计目的及意义设计目的及意义:熟悉Visual c++ 6.0软件的应用,C语言相关函数,语句的学习,查找资料代码等,编程、调试、运行、效果显示调整,完成上传,熟悉编程语言,了解程序运行以及图像显示等C语言的应用,通过编程实现既定功能。
培养自学能力,独立思考能力,将理论形成实际运用,同时可以掌握下列运算符的使用:1 .数据类型(整形、实型、字符型、指针、数组、结构等)。
2 .运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等)。
3 .程序结构(顺序结构、判断选择结构、循环结构)5 .复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。
6 .学会编制结构清晰、风格良好、数据结构适当的C语言程序。
2 概要设计2.1功能简介实现功能如下:(1)在屏幕上最终显示一个图形时钟(用程序绘制一个与时钟样式相似即可),能模拟机械钟表行走。
(2)数字式显示时间与指针式显示时间一致,且各指针运动规律正确。
(3)能准确的利用数字显示时间和日期。
(4)按ESC可以退出程序。
2.2功能说明:内容:指针式时钟模块完成在屏幕上显示一个活动时钟,模拟机械钟表行走,时针,分针,秒针不同颜色且顺时针旋转,获取系统时间;数字式时钟模块完成显示时间格式年月日时分秒,小时为24小时制,分和秒为60进制与指针式的时钟显示时间同步并获取系统时间。
目录1.系统功能要求。
2. 数据结构设计及说明。
3.程序结构(画流程图)。
4.各模块的功能。
5.试验结果(包括输入数据和输出结果)。
6.体会。
7.参考文献。
8.附录:程序清单及源程序。
●系统功能要求:在屏幕上显示一个图形时钟(用程序绘制一个与时钟样式相似即可),时间与系统时间一致,且要随着时间的走动准确的走动。
●数据结构设计及说明(1)图形时钟要用TC来编译,学C语言时主要用VC,用TC对我有一定的挑战性,不熟悉编译,对图形函数也没有太多接触,做这个有一定难度。
(2)先画出时钟基本组成,(时针分针秒针,中心点,表盘及其分隔点)。
(3)时钟表设计思想:第一步,确定秒钟的走时。
将圆等分成60份每过一秒,秒钟要转1/60个圆,亦即一等份。
第二步,确定分钟的走时。
将圆等分成60份每过一分,分钟要转1/60个圆,亦即一等份。
分钟自己走的再加秒钟的,才是分钟此时的位置。
第三步,确定时钟的走时。
将圆等分成12等分。
每过一时,时钟走一等份。
和分钟一样,得加上分钟,秒钟的走时,才是此刻时钟的位置。
(4)时钟走动与系统时间联系:每过一秒画出秒针,并除去前一秒的秒针,分针秒针同样可用。
画线函数与时间联系使用变量。
(5) 设置横纵坐标x=a*cos(b*c*pi/180-pi/2)+300;y=a*sin(b*c*pi/180-pi/2)+240;设置表针的动态坐标点x1=200*sin(i*6*pi/180)+300;y1=200*cos(i*6*pi/180)+240;x2=(200-l)*sin(i*6*pi/180)+300;y2=(200-l)*cos(i*6*pi/180)+240;程序结构(画流程图)总流程图:指针转动流程图:●各模块的功能●试验结果(包括输入数据和输出结果)体会:刚开始做时基本上什么都不懂,用TC做,我更不会。
不过参考了很多资料,到网上查,泡了几天图书馆,差不多能写出基本程序,虽然很多是借鉴别人的,不过能写成这样,我心里还是挺高兴的。
c 时钟课程设计一、教学目标本课程旨在让学生掌握C时钟的基本知识和技能,包括时钟的构造、工作原理以及如何正确使用和维护时钟。
同时,通过实践操作和问题解决,培养学生的动手能力和团队协作精神,提升他们对时间的认识和珍惜时间的意识。
具体来说,知识目标包括:1.了解时钟的历史发展和主要类型。
2.掌握时钟的构造要素,如机芯、表盘、指针等。
3.理解时钟的工作原理,包括机械钟表和电子钟表的运作方式。
4.学会正确设置和校准各种类型的时钟。
技能目标涉及:1.能够识别不同的时钟类型和品牌,并了解其特点。
2.掌握基本的时钟维修和保养技巧。
3.学会使用相关的工具和仪器进行时钟的安装和调试。
4.具备分析时钟故障的能力,并能提出解决方案。
情感态度价值观目标则包括:1.培养学生对时钟艺术的欣赏能力和对时间文化的尊重。
2.增强学生对时间的敏感性和管理能力,形成良好的时间观念。
3.培养学生细致观察、耐心等待和负责守时的品质。
4.通过团队合作,培养学生的沟通协作和互助精神。
二、教学内容本课程的教学内容将依据课程目标进行,主要包括以下几个方面:1.时钟的起源与发展:介绍时钟的历史背景,重点讲解古代、现代以及电子时钟的发展历程。
2.时钟的构造与工作原理:详细解析时钟的各个组成部分,如齿轮系统、发条、摆轮等,并通过图示和实物展示来讲解其工作原理。
3.时钟的类型与特点:对比讲解机械钟表、石英钟表和数字电子钟表的构造、功能和适用场合。
4.时钟的使用与维护:教授如何正确使用各种类型的时钟,并传授日常维护和保养的知识与技巧。
5.时钟故障分析与维修:通过案例分析,讲解常见的时钟故障及其原因,介绍故障排除的方法和步骤。
三、教学方法为了提高教学效果,我们将采用多样化的教学方法,包括:1.讲授法:用于讲解时钟的发展史、工作原理等理论性内容。
2.案例分析法:通过分析具体的时钟故障案例,让学生学会诊断和解决问题。
3.实验操作法:学生亲自动手,进行时钟的组装、调试和维护,增强实践能力。
c语言绘制钟表课程设计一、课程目标知识目标:1. 让学生掌握C语言中结构体和指针的使用方法,并能运用其定义钟表的各个参数。
2. 让学生理解C语言中定时器功能,学会使用定时器进行动画效果的实现。
3. 让学生掌握C语言图形库的基本使用方法,能够绘制基本的钟表图形。
技能目标:1. 培养学生运用C语言解决实际问题的能力,能够独立完成钟表绘制程序的设计与实现。
2. 提高学生编程实践能力,熟练使用C语言编写具有动画效果的程序。
3. 培养学生调试程序、解决问题的能力,能够在遇到问题时进行有效分析和调整。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养学生主动学习和探究的精神。
2. 培养学生团队协作意识,能够在小组合作中发挥个人优势,共同完成项目任务。
3. 引导学生关注科技发展,认识到计算机编程在现实生活中的应用价值。
本课程针对高年级学生,课程性质为实践性较强的学科拓展课程。
结合学生特点和教学要求,课程目标旨在使学生在掌握C语言基础知识的基础上,进一步提高编程实践能力,培养解决实际问题的综合素质。
通过本课程的学习,学生将能够独立完成钟表绘制程序的设计与实现,提升自身编程技能,并培养良好的团队协作意识和价值观。
二、教学内容1. C语言基础知识回顾:结构体和指针的使用,重点复习结构体在表示复杂数据结构中的应用,指针在动态数据管理中的应用。
教材章节:第二章 数据类型与表达式,第三章 控制结构,第四章 函数与指针。
2. 定时器功能介绍:定时器的工作原理,如何在C语言中使用定时器实现动画效果。
教材章节:第十五章 实时时钟与定时器。
3. 图形库的使用:C语言图形库的基本函数介绍,如何绘制基本图形和时钟表盘。
教材章节:第十七章 图形编程基础。
4. 钟表程序设计:结合结构体、指针和图形库,设计并实现一个简单的钟表程序。
教学安排:分阶段进行,包括需求分析、设计、编码、调试和优化。
5. 课程实践:学生分组进行项目实践,每组完成一个具有动画效果的钟表程序。
c课程设计实时钟表一、课程目标知识目标:1. 学生能够理解实时钟表的基本概念,掌握时、分、秒的相互关系及其在钟表上的表示方法。
2. 学生能够运用所学知识,识别并准确读取各种类型的实时钟表时间。
3. 学生了解钟表的历史发展及其在日常生活和科技领域中的应用。
技能目标:1. 学生能够通过观察、分析,正确设置和调整钟表时间,培养实际操作能力。
2. 学生能够运用所学知识解决与实时钟表相关的问题,提高问题解决能力。
3. 学生能够运用信息技术手段,设计并制作简单的实时钟表模型。
情感态度价值观目标:1. 学生培养对时间观念的尊重,养成守时、珍惜时间的良好习惯。
2. 学生在小组合作中,培养团队协作精神,学会分享和交流。
3. 学生通过学习实时钟表,认识到科技与生活的紧密联系,增强对科学技术的兴趣和探索精神。
课程性质:本课程为小学四年级信息技术课程,旨在通过实时钟表的学习,让学生掌握时间的基本概念,提高观察、操作和问题解决能力。
学生特点:四年级学生对新鲜事物充满好奇,动手操作能力强,但注意力容易分散,需要结合实际操作和趣味性教学。
教学要求:教师应注重理论与实践相结合,运用生动、形象的教学方法,激发学生兴趣,引导学生在实践中掌握知识,培养技能和情感态度价值观。
通过分解课程目标为具体学习成果,为后续教学设计和评估提供依据。
二、教学内容1. 实时钟表的基本概念:时、分、秒的定义及其关系,钟表的构造及其工作原理。
2. 钟表时间的读取与设置:各类钟表(电子钟、指针钟、数字钟)的读取方法,如何调整和设置时间。
3. 钟表的应用与制作:- 钟表在日常生活和时间管理中的应用;- 设计并制作简易实时钟表模型,运用信息技术手段实现基本功能。
4. 钟表与科技发展:介绍钟表的历史演变,探讨钟表在科技领域的应用。
教学大纲安排:第一课时:实时钟表的基本概念及构造,了解时、分、秒的关系。
第二课时:学习读取和设置各类钟表时间,培养实际操作能力。
第三课时:探索钟表在日常生活和时间管理中的应用,培养时间管理意识。
C语言_时钟代码+报告C语言程序设计课程设计报告选题名称:钟系(院):专业:班级:姓名学号::指导教师::2007~20081学年学期学年第学期2008年1月12日摘要:我们日常生活中有各种各样的时钟。
随着计算机的普及和计算机科学的飞速发展,人们开始越来越多的利用计算机解决实际问题。
开发一个易于查看的时钟有较大的现实意义。
同时,该时钟会听到时钟的喀哒声,程序与生活紧密结合,具体直观,开发应用简单。
利用C 语言编辑源程序,再进行编译链接生成可执行文件,运行时可以查看时间,听到喀哒声,具体直观,方便了生活。
:Turbo C关键词计算机;时钟;;函数目录4 6 程序调试……………………………………………………………………………总结 (8)致谢 (9)参考文献 (10)1程序概述程序设计是一种技术,也是一项工程。
程序设计语言是程序设计的工具。
一种程序设计语言凝聚了具有时代特征的程序设计理念和方法。
本程序利用C语言中的图形处理函数完成时间的模拟显示。
1.1课题来源这个C语言时钟的课程设计,可以初步理解C语言编程的方法,对C语言小程序有较深刻的理解。
利用C语言中的图形处理函数完成时间的模拟显示。
了解图形处理函数的基本功能,掌握C语言中的时间函数等。
1.2课题意义基于算法思维方法的训练是现代信息素养的重要内容。
程序设计是引导学习者利用计算机进行解题的能力培养过程。
为了有效地进行程序设计,正确地应用程序设计语言表达算法,必须准确地运用程序设计语言,掌握其语法设计。
用C语言编程,设计一个时钟,掌握声音函数sound()、系统时间函数gettime()、绘制多边形函数DrawPoly()的用法。
1.3预期目标本程序利用C语言中的图形处理函数完成时间的模拟显示。
在C 环境中编辑源程序,设置表盘刻度,模拟时针、分针、秒针的运动,声音,生成可执行文件之后并运行在屏幕上会显示一个时钟,便于查看系统的时间,并且会听到秒针运动时的喀哒声。
计算机图形学期末课程设计报告课程名称:计算机图形学设计题目:编程实现时钟运动院系:计算机与信息工程学院专业:网络工程*名:**起止日期:2011年11月27日~ 2012年1月5日指导教师:杨斌目录⒈引言 (1)⒉需求分析 (1)⒊概要设计 (1)3.1概要设计实现的内容 (1)3.2函数的功能描述 (1)⒋详细设计 (2)⒌调试与操作说明 (3)⒍课程设计总结与体会 (4)⒎致谢 (4)⒏参考文献 (5)⒐附录 (5)课程设计的主要内容⒈引言本学期系统的学习了计算机图形学,在学期末按课程要求对其进行设计,本课程主要内容包括以图形学算法为目标,深入研究。
续而策划设计实现一个能够表现计算机图形学算法原理的或完整过程的演示系统,并能从某些方面做出评价和改进意见。
通过完成一个完整程序,经历策划、设计、开发、总结。
达到通过本课程设计,使自己巩固和实践计算机图形学课程中的理论和算法;掌握基本图形显示程序设计方法,及二维和三维图形变换等程序设计方法,学习表现计算机图形学算法的技巧。
同时以达到培养认真学习积极探索的精神。
⒉需求分析图形学设计报告题目:编程实现时钟运动图形学设计报告任务及要求:显示时钟三个指针,实现三根时针间的相互关系;通过右键切换实现时钟背景和指针颜色。
课程设计思想:编程实现时钟运动,通过使用OpenGL提供的标准库函数,综合图形学Bresenham画线和画圆的算法,OpenGL颜色模型中的RGBA模式,颜色表示模式等实现指针式时钟运动,并通过点击右键菜单实习时钟背景与时针颜色的转换。
根据Bresenham画线和画圆的算法,画出时钟的指针和表盘。
再根据OpenGL 颜色模型用glColor()定义当前颜色。
设置当时钟运行时交换的菜单,运行程序时可变换时钟背景与时针的颜色。
在此中综合实现本学期中学习到OpenGL编程中部分的方法与操作。
软硬件运行环境:Microsoft Windows XP。
工发工具:VC++ 6.0。
《C语言程序设计》课程设计报告题目:模拟时钟转动程序班级:组别:页脚内容- 0 -组员:指导教师:目录第一章课程设计的题目 (2)1.1C语言课程设计的题目 (2)第二章课程设计的要求 (2)2.1C语言课程设计的要求 (2)第三章课程设计的目的 (2)3.1C语言课程设计的目的 (2)第四章课程设计的内容 (3)4.1C语言课程设计的程序清单和注释 (3)第五章课程设计的运行结果 (7)5.1C语言课程设计的运行结果 (7)第六章课程设计的结果分析 (8)页脚内容- 1 -6.1C语言课程设计的结果分析 (8)第七章课程设计的心得体会 (9)7.1C语言课程设计的心得体会 (9)模拟时钟转动程序第一章课程设计的题目1.1 C语言课程设计的题目本次为期两周的课程设计的题目为设计一个模拟时钟转动的程序。
第二章课程设计的要求2.1 C语言课程设计的要求页脚内容- 2 -能模拟机械钟表行走;要准确地利用数字显示日期和时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致;按任意键时程序退出。
第三章课程设计的目的3.1 C语言课程设计的目的加深对讲授内容的理解,尤其是一些语法规定。
通过课程设计,自然地、熟练地掌握。
熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。
学会上机调试程序。
第四章课程设计的内容4.1 C语言课程设计的程序清单和注释模拟时钟转动程序清单+注释#include<windows.h> //包含窗口头文件#include<math.h> //头文件,包含了一些数学计算的函数#define TWOPI (2*3.14159)#define IDTIMER 1 //计时器ID#define ANGLE TWOPI/360 //2PI页脚内容- 3 -LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,LPARAM lParam ); //回调函数Int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow ) // 应用启动函数mian{TCHAR szClassName[] = TEXT("analogCloc");MSG msg; //定义消息HWND hwnd; //窗口句柄WNDCLASS wndclass; //系统支持结构,定义并初始化窗口结构wndclass.cbClsExtra = 0; //窗口类无扩展wndclass.cbWndExtra = 0; //窗口势力无扩展wndclass.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);//窗口背景为白色wndclass.hCursor = NULL;wndclass.hIcon = NULL;wndclass.hInstance = hInstance; //当前实例句柄wndclass.lpfnWndProc = WindowProc; //关联到消息回调函数wndclass.lpszClassName = szClassName;页脚内容- 4 -wndclass.lpszMenuName = NULL; //窗口中无菜单wndclass.style = CS_HREDRAW | CS_VREDRAW ; //窗口重绘风格RegisterClass(&wndclass);hwnd CreateWindow(szClassName,TEXT("Clock"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL, NULL, hInstance, NULL); //创建窗口ShowWindow(hwnd,nCmdShow); //显示窗口UpdateWindow(hwnd); //更新窗口,强制显示while(GetMessage(&msg,NULL,0,0)) //函数GetMessage 是从调用线程的消息队列里取得一个消息并将其放于指定的结构{TranslateMessage(&msg); //消息处理DispatchMessage(&msg); //消息派遣}return msg.wParam; //windows应用程序的消息循环形式}页脚内容- 5 -void setISOTROPIC(HDC hdc,int cxClient,int cyClient)//设置映射模式,使之成为笛卡尔坐标系的映射模式{SetMapMode(hdc,MM_ISOTROPIC);SetWindowExtEx(hdc,1000,1000,NULL); // 逻辑单位与设备单位比1/2 SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL);SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL); //竖坐标向上为正,下为负}void drawClock(HDC hdc) // 画时钟圆盘{int x, y, radius; //以逻辑单位表示的窗口原点坐标SelectObject(hdc,CreateSolidBrush(RGB(1,148,138)));//设置整个窗口线条颜色for(int i=0;i<360;i+=6){x = (int)(cos(TWOPI/360*i)*900); //cos函数,包含在math.h头文件利的函数y = (int)(sin(TWOPI/360*i)*900);radius = !(i%5)?40:10;页脚内容- 6 -Ellipse(hdc,x-radius,y-radius,x+radius,y+radius);// 把弧度制转换成坐标形式,Ellipse函数用来画圆}}void drawHands(HDC hdc,SYSTEMTIME *pst,BOOL hChange)// draw hands函数负责绘制时钟的时针、分针和秒针的轮廓{int radius[3] = {500,700,850};int angle[3];angle[0] = pst->wHour*30+pst->wMinute/12*6;angle[1] = pst->wMinute*6;angle[2] = pst->wSecond*6;for(int i=hChange?0:2;i<3;i++){MoveToEx(hdc,0,0,NULL);LineTo(hdc,(int)(radius[i]*cos(ANGLE*(90-angle[i]))),(int)(radius[i]*sin(ANGLE*(90-angle[i]))));页脚内容- 7 -}}LRESULT CALLBACK WindowProc(HWND hwnd,UINT message, // 消息标识符,标识某个特定的消息WPARAM wParam,LPARAM lParam) //消息处理函数{TCHAR time[40];PAINTSTRUCT ps;HDC hdc;static int cxClient, cyClient;SYSTEMTIME st; //定义结构体变量static SYSTEMTIME preSt;BOOL hChange;switch(message) //switch 语句一个case代表一种情况页脚内容- 8 -{case WM_CREATE: // 窗口创建事件SetTimer(hwnd,IDTIMER,1000,NULL); //创建一个1000ms定时器GetLocalTime(&st); //得到当前系统时间wsprintf(time,TEXT("%d年%d月%d日%d时%d分%d秒"),//记录系统时间,包括年、月、日、时、分、秒st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);SetWindowText(hwnd,time); // 设置当前时间为窗口titlepreSt = st;return 0;case WM_SIZE:页脚内容- 9 -cxClient = LOWORD(lParam);cyClient = HIWORD(lParam);return 0;case WM_TIMER: //定时器到时,即是每隔一秒要重画下界面GetLocalTime(&st); //每次都要获取当前时间hChange = st.wHour!=preSt.wHour||st.wMinute!=preSt.wMinute;hdc = GetDC(hwnd);setISOTROPIC(hdc,cxClient,cyClient);SelectObject(hdc,GetStockObject(WHITE_PEN));drawHands(hdc,&preSt,hChange);SelectObject(hdc,GetStockObject(BLACK_PEN));drawHands(hdc,&st,TRUE);ReleaseDC(hwnd,hdc);wsprintf(time,TEXT("%d年%d月%d日%d时%d分%d秒"),//记录系统时间,包括年、月、日、时、分、秒st.wYear,st.wMonth,页脚内容- 10 -st.wDay,st.wHour,st.wMinute,st.wSecond);SetWindowText(hwnd,time); //setwindowText函数:系统里的函数preSt = st; // 更新完毕后记录前一次的状态return 0;case WM_KEYDOWN:case WM_CHAR:DestroyWindow(hwnd); // 关闭窗口return 0;case WM_PAINT: //窗口绘制消息hdc = BeginPaint(hwnd,&ps); //开始绘制setISOTROPIC(hdc,cxClient,cyClient);drawClock(hdc);drawHands(hdc,&preSt,TRUE);页脚内容- 11 -EndPaint(hwnd,&ps); //结束绘制return 0;case WM_DESTROY: //程序退出消息PostQuitMessage(0);return 0;}returnDefWindowProc(hwnd,message,wParam,lParam);//其他消息有系统默认处理}第五章课程设计的运行结果5.1 C语言课程设计的运行结果页脚内容- 12 -第六章课程设计的结果分析6.1 C语言课程设计的结果分析页脚内容- 13 -运行结果分析问题一:程序清单中某个符号添加错误,导致编译时出现错误,执行不出结果。
目录
1.系统功能要求。
2. 数据结构设计及说明。
3.程序结构(画流程图)。
4.各模块的功能。
5.试验结果(包括输入数据和输出结果)。
6.体会。
7.参考文献。
8.附录:程序清单及源程序。
●系统功能要求:
在屏幕上显示一个图形时钟(用程序绘制一个与时钟样式相似即可),时间与系统时间一致,且要随着时间的走动准确的走动。
●数据结构设计及说明
(1)图形时钟要用TC来编译,学C语言时主要用VC,用TC对我有一定的挑战性,不熟悉编译,对
图形函数也没有太多接触,做这个有一定难度。
(2)先画出时钟基本组成,(时针分针秒针,中心点,表盘及其分隔点)。
(3)时钟表设计思想:
第一步,确定秒钟的走时。
将圆等分成60份每过一
秒,秒钟要转1/60个圆,亦即一等份。
第二步,确定分钟的走时。
将圆等分成60份每过一
分,分钟要转1/60个圆,亦即一等份。
分钟自己走的再加秒钟的,才是分钟此时
的位置。
第三步,确定时钟的走时。
将圆等分成12等分。
每
过一时,时钟走一等份。
和分钟一样,
得加上分钟,秒钟的走时,才是此刻时钟
的位置。
(4)时钟走动与系统时间联系:每过一秒画出秒针,并除去前一秒的秒针,分针秒针同样可用。
画线函数与时间联系使用变量。
(5) 设置横纵坐标
x=a*cos(b*c*pi/180-pi/2)+300;
y=a*sin(b*c*pi/180-pi/2)+240;
设置表针的动态坐标点
x1=200*sin(i*6*pi/180)+300;
y1=200*cos(i*6*pi/180)+240;
x2=(200-l)*sin(i*6*pi/180)+300;
y2=(200-l)*cos(i*6*pi/180)+240;
程序结构(画流程图)
总流程图:
指针转动流程图:
各模块的功能
试验结果(包括输入数据和输出结果)
●体会:
刚开始做时基本上什么都不懂,用TC做,我更不会。
不过参考了很多资料,到网上查,泡了几天图书馆,差不多能写出基本程序,虽然很多是借鉴别人的,不过能写成这样,我心里还是挺高兴的。
有了一点成功我就很兴奋,这是动力。
程序很奇特,很多问题都可以用程序编写,看到那些大型程序我就感觉我也能写出这样的程序。
程序设计主要靠理解与运用,有些没有学过的知识不一定要懂得彻底,只要会运用就行。
不足之处也很多,程序思路不太清晰可能有些混乱。
有很多程序设计使用并不熟练,甚至有些方法掌握不了,更容易忘记。
算法结构了解并不深入,独立自主的想法占据总体达不到要求。
需要加强练习和对知识的理解与掌握。
●参考文献:
《C程序设计思想与方法》
《C语言完全手册》
《C语言课程设计指导》
《百度知道图形时针》
附录:程序清单及源程序(使用TC)
# include <graphics.h>
# include <math.h>
# include <dos.h>
# define pi 3.1415926
void draw(int a, int b, int c)
{
float x, y;
x=a*cos(b*c*pi/180-pi/2)+300; /*确定横坐标*/ y=a*sin(b*c*pi/180-pi/2)+240; /*确定纵坐标*/ line(300, 240, x, y);/*绘制时针或分针或秒针*/ }
void init() /*划时钟边框函数*/
{
int i,l,x1,x2,y1,y2;
circle(300,240,200);/*以(300,240)为圆心,200为半径画圆*/
circle(300,240,5);/*以(300,240)为圆心,5为半径画圆*/
for(i=0;i<60;i++) /*划钟点上的短线*/
{
if(i%5==0)
l=15;
else
l=5;
x1=200*sin(i*6*pi/180)+300; /*画线函数*/
y1=200*cos(i*6*pi/180)+240;
x2=(200-l)*sin(i*6*pi/180)+300;
y2=(200-l)*cos(i*6*pi/180)+240;
line(x1,y1,x2,y2);
}
}
main()
{
int x, y,i;
int gdriver, gmode;
unsigned char h, m, s;
struct time t[1];
gdriver = DETECT;
initgraph(&gdriver, &gmode, ""); /*初始化*/
for(i=0;i<=6;i++)
{
outtextxy(300,80,"12") ;
outtextxy(300,390,"6");
outtextxy(140,230,"9");
outtextxy(460,230,"3");
}
init(); /*调用init()函数*/
setwritemode(1);/*将当前线与原有的线进行异或操作*/
gettime(t); /*将计算机时间写入结构体t中*/ h = t[0].ti_hour; /*h赋初值当前时数*/ m = t[0].ti_min; /*m赋初值当前分数*/ s = t[0].ti_sec; /*s赋初值当前秒数*/ setcolor(7);
draw(150, h, 30); /*画时针*/
setcolor(14);
draw(170, m, 6); /*画分针*/
setcolor(4);
draw(190, s, 6); /*画秒针*/
while (!kbhit())
{
while (t[0].ti_sec == s)
gettime(t);
setcolor(4);
draw(190, s, 6); /*清除前面画的秒针*/ s = t[0].ti_sec;
draw(190, s, 6); /*画秒针*/
if (t[0].ti_min != m)
{
setcolor(14);
draw(170, m, 6); /*清除前面画的分针*/ m = t[0].ti_min;
draw(170, m, 6); /*画分针*/
}
if (t[0].ti_hour != h)
{
setcolor(7);
draw(150, h, 30); /*清除前面画的时针*/ h = t[0].ti_hour;
draw(150, h, 30); /*画时针*/
}
}
getch();
closegraph(); /*退出图形界面*/
}。