C语言模拟时钟转动课程设计报告

合集下载

C语言课程设计报告-模拟时钟转动程序

C语言课程设计报告-模拟时钟转动程序

课程设计报告课程名称结构化程序设计课程设计院部名称专业班级学生姓名王蕾学号课程设计地点课程设计学时指导教师金陵科技学院教务处制目录第一章课程设计的目的和要求.............................................1.1 C语言课程设计的目的............................................1.2 C语言课程设计实现的要求........................................ 第二章课程设计的任务内容............................................... 第三章详细设计说明.....................................................3.1 程序系统的结构..................................................3.1.1 实验设备及环境:(软、硬件环境)3.2 模块描述........................................................3.2.1 指针式时钟................................................3.2.2 数字式时钟................................................3.3 输出项..........................................................3.4 算法............................................................3.5 流程图..........................................................3.6 函数说明........................................................3.7 接口............................................................3.8 调试结果........................................................ 第四章软件使用说明.....................................................4.1 软件使用说明及出现的问题........................................4.2 运行结果........................................................ 第五章课程设计心得与体会............................................... 附录1:参考文献......................................................... 附录2:修改后的源代码……………………………………………………………………模拟时钟转动程序第一章课程设计的目的和要求1.1 C语言课程设计的目的加深对讲授内容的理解,尤其是一些语法规定。

c模拟时钟课程设计

c模拟时钟课程设计

c 模拟时钟课程设计一、教学目标本课程的学习目标主要包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握C语言的基本语法、数据类型、运算符、控制结构等,了解模拟时钟的基本原理和设计方法。

技能目标要求学生能够运用C语言编写简单的模拟时钟程序,培养学生的编程能力和问题解决能力。

情感态度价值观目标培养学生的团队合作意识、创新精神和对计算机科学的兴趣。

二、教学内容教学内容主要包括C语言基础知识、模拟时钟的设计与实现。

详细的教学大纲如下:1.C语言基础知识:介绍C语言的基本语法、数据类型、运算符、控制结构等,为学生编写模拟时钟程序打下基础。

2.模拟时钟的设计与实现:讲解模拟时钟的基本原理,引导学生运用C语言编写模拟时钟程序,培养学生的编程能力和问题解决能力。

三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:通过讲解C语言基础知识和模拟时钟的设计原理,使学生掌握相关知识。

2.讨论法:学生进行小组讨论,分享学习心得和编程经验,提高学生的团队合作能力。

3.案例分析法:分析典型的模拟时钟程序案例,引导学生学会分析问题、解决问题。

4.实验法:让学生动手编写模拟时钟程序,培养学生的实际编程能力和操作技能。

四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料和实验设备。

1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。

2.参考书:提供相关的C语言编程参考书籍,丰富学生的知识储备。

3.多媒体资料:制作精美的PPT、教学视频等,增强课堂教学的趣味性和生动性。

4.实验设备:为学生提供充足的计算机设备,确保每位学生都能动手实践。

五、教学评估为了全面、客观地评估学生的学习成果,本课程采用多元化的评估方式。

评估内容包括平时表现、作业、考试等。

1.平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,了解学生的学习态度和知识掌握程度。

模拟时钟转动程序课程设计报告

模拟时钟转动程序课程设计报告

《高级语言》课程设计课题名称模拟时钟转动程序学院信息工程专业网络工程地点 D507 学生姓名钟都华学号 13046130 开课时间 2013 至 2014 学年第 2 学期同组人李卓成绩一、课程设计的目的和要求1.课程设计的目的本程序旨在训练读者的基本编程能力,使读者熟悉C语言图形模式下的编程。

本程序中涉及时间结构体、数组、绘图等方面的知识。

通过本程序的训练,使读者能对C 语言有一个更深刻的了解,掌握利用C语言相关函数开发电子时钟的基本原理,为进一步开发出高质量的程序打下坚实的基础。

2.课程设计的要求能模拟机械钟表行走;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;要准确的利用数字显示日期和时间并且可以根据用户的需求更改当前时间(指针式时钟与数字式时钟实现同步更改);数字式时钟的时间显示与指针式时钟显示一致;可以通过上下键改变当前的时、分、秒;改的时间是小时、分钟、还是秒数;通过Tab键切换按Esc时程序退出。

二、设计如下图,此电子时钟主要由以下4个功能模块组成。

1.界面显示模块电子时钟界面显示在调用时钟运行处理之前完成,在这里主要调用了C语言图形系统函数和自负屏幕处理函数画出时钟程序的主界面。

主界面包括类似Windows自带的电子时钟的界面和帮助界面两部冯。

电子时钟界面包括一个模拟时钟运转的钟表和一个显示时间的数字钟表。

在帮助界面中,主要包括一些按键的操作说明。

2.按键控制模块按键控制模块主要完成两大部分功能。

第一,读取用户按键的键值。

第二,通过对键盘按键值得判断,执行相应的操作,如光标移动、修改时间。

3.时钟动画处理模块在时钟动画处理模块中,它通过对相关条件的判断和时钟坐标值的计算,完成时、分、秒指针的擦除和重绘,以达到模拟时钟运转的功能。

4.数字时钟处理模块在数字时钟处理模块中,它主要实现了数字时钟的显示和数字时钟的修改。

其中,用户可先按Tab键定位需要修改内容的位置,然后通过按光标上移()或下移(功能模块设计1.电子时钟执行主流程此电子时钟执行主流程如右图所示。

c语言课程设计钟表

c语言课程设计钟表

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.地点:选择安静、设施齐全的教室作为教学地点,创造良好的学习环境。

C语言课程设计图形模拟时钟

C语言课程设计图形模拟时钟

2013-2014学年第二学期《高级语言程序设计》课程设计报告题目:图形模拟时钟专业:计算机科学与技术班级:****姓名:****指导教师:****成绩:计算机与信息工程系二0一四年六月二十日目录1 设计内容及要求 (1)1.1设计要求 (1)1.2程序结构流程图 (1)2 概要设计 (3)2.1概要分析 (3)2.2数据结构设计 (5)2.3用法说明 (5)2.4实验结果要求 (6)3 设计结果与分析 (6)3.1实验结果 (6)3.2实验结果与分析 (6)4 小结 (7)致谢 (7)参考文献 (8)附录:源代码 (9)1 设计内容及要求1.1设计要求模拟机械钟表行走;要准确地利用数字显示日期和时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致;按任意键时程序退出。

在屏幕上显示一个图形时钟(用程序绘制一个班于时钟样式相似即可),时间与系统时间一致,且要随着时间的走到准确的走动。

1.2程序结构流程图图1:总程序流程图2:指针转动流程图2 概要设计2.1概要分析(1) void Drawclock函数void DrawClock(int x,int y,int color){ int r=150;float th;setcolor(color);circle(x,y,r);circle(x,y,2);}作用:画表盘(r为表盘的半径, x,y为圆心的坐标。

)(2) void DrawHand 函数void DrawHand(int x,int y,float th,int l,int color){int x1,y1;x1=x+l*sin(th);y1=y-l*cos(th);setcolor(color);line(x,y,x1,y1);}作用:画指针x:直线起点的横坐标 y:直线起点的纵坐标x1:直线终点的横坐标 y1:直线终点的纵坐标(3) void main() 函数Part ①: int gdriver=DETECT,gmode;struct time curtime; ..............类型和最高分辨率float th_hour,th_min,th_sec;initgraph(&gdriver,&gmode,"");Graphdriver - - -配适器graphmode - - - 显示模式Part ②:setbkcolor(0); ....................背景色Part ③: while(! kbhit()){DrawClock(x0,y0,14); ..................函数(1) gettime(&curtime); .........得到当前系统时间 gotoxy(35,20); ...............定位输出位置Part ④: if((float)curtime.ti_hour<=12) .............上午的时间处理 {printf("AM ");if((float)curtime.ti_hour<10) printf("0");.... 十点之前在小时数前加零printf("%.0f:",(float)curtime.ti_hour);...........输出小时 }else ............下午的时间处理 {printf("PM ");if((float)curtime.ti_hour-12<10) printf("0");.........如果时间减去12小时小于10printf("%.0f:",(float)curtime.ti_hour-12);.......... 输出小时 }Part ⑤:if((float)curtime.ti_min<10) printf("0");......... 相当于小时的计算方法printf("%.0f:",(float)curtime.ti_min); ....... 输出分钟(同part ④)if((float)curtime.ti_sec<10) printf("0");printf("%.0f",(float)curtime.ti_sec);Part ⑥:以下三行计算表针转动角度,以竖直向上为起点,顺时针为正th_sec=(float)curtime.ti_sec*0.1047197551;- - - - - - - - - - - - - *(2π/60=0.1047197551)th_min=(float)curtime.ti_min*0.1047197551+th_sec/60.0;th_hour=(float)curtime.ti_hour*0.523598775+th_min/12.0;- - - - *(2π/12=0.5235987755)Part ⑦: 画指针DrawHand(x0,y0,th_hour,70,2); ...................画时针 DrawHand(x0,y0,th_min,110,3); ...................画秒针 Part ⑧ : settextstyle(2,0,3); .................设置字体 2:文字的字体;0:文字的方向;3:文字的大小 outtextxy(270,160,"MADE BY:SDW"); .................输出字体(270,160)为字体的坐标Part ⑨ : sleep(1); ...........延时一秒后刷新 cleardevice(); ............. 清除图形屏幕 }closegraph() ... ....关闭图形系统,退出图形方式2.2数据结构设计1)是对时钟程序做全面的分析,即对程序要使用的编写方法功能,运行方式进行分析,并做出正确的解决方案。

C语言图形时钟课程设计实验报告.

C语言图形时钟课程设计实验报告.

目录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 时钟课程设计一、教学目标本课程旨在让学生掌握C时钟的基本知识和技能,包括时钟的构造、工作原理以及如何正确使用和维护时钟。

同时,通过实践操作和问题解决,培养学生的动手能力和团队协作精神,提升他们对时间的认识和珍惜时间的意识。

具体来说,知识目标包括:1.了解时钟的历史发展和主要类型。

2.掌握时钟的构造要素,如机芯、表盘、指针等。

3.理解时钟的工作原理,包括机械钟表和电子钟表的运作方式。

4.学会正确设置和校准各种类型的时钟。

技能目标涉及:1.能够识别不同的时钟类型和品牌,并了解其特点。

2.掌握基本的时钟维修和保养技巧。

3.学会使用相关的工具和仪器进行时钟的安装和调试。

4.具备分析时钟故障的能力,并能提出解决方案。

情感态度价值观目标则包括:1.培养学生对时钟艺术的欣赏能力和对时间文化的尊重。

2.增强学生对时间的敏感性和管理能力,形成良好的时间观念。

3.培养学生细致观察、耐心等待和负责守时的品质。

4.通过团队合作,培养学生的沟通协作和互助精神。

二、教学内容本课程的教学内容将依据课程目标进行,主要包括以下几个方面:1.时钟的起源与发展:介绍时钟的历史背景,重点讲解古代、现代以及电子时钟的发展历程。

2.时钟的构造与工作原理:详细解析时钟的各个组成部分,如齿轮系统、发条、摆轮等,并通过图示和实物展示来讲解其工作原理。

3.时钟的类型与特点:对比讲解机械钟表、石英钟表和数字电子钟表的构造、功能和适用场合。

4.时钟的使用与维护:教授如何正确使用各种类型的时钟,并传授日常维护和保养的知识与技巧。

5.时钟故障分析与维修:通过案例分析,讲解常见的时钟故障及其原因,介绍故障排除的方法和步骤。

三、教学方法为了提高教学效果,我们将采用多样化的教学方法,包括:1.讲授法:用于讲解时钟的发展史、工作原理等理论性内容。

2.案例分析法:通过分析具体的时钟故障案例,让学生学会诊断和解决问题。

3.实验操作法:学生亲自动手,进行时钟的组装、调试和维护,增强实践能力。

模拟时钟转动程序

模拟时钟转动程序

C语言集中上机实验报告题目五: 模拟时钟转动程序院系:班级:姓名:学号:指导教师:2011 年12 月08日目录一课程设计的地位、作用与目的 (2)二课程的基本要求 (2)三课程设计的主要设计思路与流程图 (2)1.设计思路2.流程图3.使用的主要函数4.程序各功能模块四程序的运行结果 (7)1.调试过程出现的问题2.运行结果五心得体会 (7)一课程设计的地位、作用与目的为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。

希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。

二课程的基本要求能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。

三课程设计的主要设计思路与流程图设计思路:在绘图窗口中先画出表盘后获取系统的时间,利用得到的系统时间计算表针的位置,并将时间在屏幕上输出。

每隔一秒读取一次时间,直到键盘有输入为止。

流程图开始使用的主要函数:setlinestyle 设置画线setcolor 设置颜色line(int x1,int y1,int x2,int y2)画直线circle(int x,int y,int r)画圆outtextxy(int x,int y,char *textstring)在指定位置输出字符initgraph(int x, int y); 初始化绘图窗口setwritemode( ); 设置绘图模式kbhit() 检查是否有键盘输入GetLocalTime(&ti); 获取当前时间sleep() 程序暂停若干时间程序各功能模块:1.计算表针的位置并画出表针void Drawzhizhen(int hour, int minute, int second){double a_hour, a_min, a_sec; // 时、分、秒针的弧度值int x_hour, y_hour, x_min, y_min, x_sec, y_sec; // 时、分、秒针的位置a_sec = second * 2 * PI / 60; // 计算时、分、秒针的弧度值a_min = minute * 2 * PI / 60 + a_sec / 60;a_hour= hour * 2 * PI / 12 + a_min / 12;x_sec = int(120 * sin(a_sec)); y_sec = int(120 * cos(a_sec)); ///计算时、分、秒针的位置x_min = int(100 * sin(a_min)); y_min = int(100 * cos(a_min));x_hour= int(70 * sin(a_hour)); y_hour= int(70 * cos(a_hour));setlinestyle(PS_SOLID, NULL, 10); // 画时针setcolor(WHITE);line(300 + x_hour, 240 - y_hour, 300 - x_hour / 7, 240 + y_hour / 7);setlinestyle(PS_SOLID, NULL, 5);// 画分针setcolor(YELLOW);line(300 + x_min, 240 - y_min, 300 - x_min / 5, 240 + y_min / 5);setlinestyle(PS_SOLID, NULL, 2); // 画秒针setcolor(RED);line(300 + x_sec, 240 - y_sec, 300 - x_sec / 3, 240 + y_sec / 3);}2.画表盘void Drawbiaopan(){int i,l,x1,x2,y1,y2;setbkcolor(1);circle(300,240,180);circle(300,240,185);circle(300,240,20);for(i=0;i<60;i++) /*划钟点上的短线*/ {if(i%5==0)l=15;elsel=5;x1=180*sin(i*6*PI/180)+300;y1=180*cos(i*6*PI/180)+240;x2=(180-l)*sin(i*6*PI/180)+300;y2=(180-l)*cos(i*6*PI/180)+240;line(x1,y1,x2,y2);}outtextxy(300,80,"12") ;outtextxy(300,390,"6");outtextxy(140,230,"9");outtextxy(460,230,"3");outtextxy(380,100,"1");outtextxy(220,100,"11");outtextxy(430,160,"2");outtextxy(430,310,"4");outtextxy(380,370,"5");outtextxy(220,370,"7");outtextxy(160,160,"10");outtextxy(160,310,"8");}3.将获取的整数型时间变量转换成字符型void ch1(int a,int x) //将年转换成字符型并输出{char b,c,d,e;b=(char)(a/1000+48);c=(char)((a%1000)/100+48);d=(char)((a%100)/10+48);e=(char)(a%10+48);outtextxy(x,10,b);outtextxy(x+10,10,c);outtextxy(x+20,10,d);outtextxy(x+30,10,e);}void ch2(int a,int x) //其他时间转换成字符型并输出{char b,c;b=(char)(a/10+48);c=(char)(a%10+48);outtextxy(x,10,b);outtextxy(x+10,10,c);}主函数:void main(){initgraph(640, 480); // 初始化绘图窗口Drawbiaopan(); // 绘制表盘setwritemode(R2_XORPEN); // 设置绘图模式SYSTEMTIME ti; // 定义ti保存当前时间while(!kbhit()) // 按任意键退出钟表程序{GetLocalTime(&ti); // 获取当前时间ch1(ti.wYear,10);outtextxy(50,10,"年"); //输出时间ch2(ti.wMonth,65);outtextxy(85,10,"月");ch2(ti.wDay,100);outtextxy(120,10,"日");ch2(ti.wHour,135);outtextxy(155,10,":");ch2(ti.wMinute,165);outtextxy(185,10,":");ch2(ti.wSecond,195);Drawzhizhen(ti.wHour, ti.wMinute, ti.wSecond); // 画表针Sleep(1000); // 延时1 秒Drawzhizhen(ti.wHour, ti.wMinute, ti.wSecond); // 画表针}closegraph(); // 关闭绘图窗口}四程序的调试与运行结果调试过程出现的问题:1.Vc++6.0中没有“graphics.h”解决办法:安装turboc.2.0中的函数库EasyX2.无法获取系统时间解决办法:使用函数GetLocalTime( );并使用#include <time.h>声明3.Outtextxy()函数无法显示整数型时间解决办法:将整数型时间变量转换为字符型再输出运行结果:五心得体会由于C语言没有学过图形方面的知识,很多东西都要去查资料。

模拟时钟转动程序(精)

模拟时钟转动程序(精)


for(i=0;i<=6;i++)
• • • • • • • • • • • • • • • • • • •
{ 小*/ settextstyle(TRIPLEX_FONT,HORIZ_DIR,i); /*控制输出字符的字体,方向,大 cleardevice(); settextjustify(1,1); /*在指定坐标上输出字符串*/ outtextxy(300,80,"12") ; outtextxy(300,390,"6"); outtextxy(140,230,"9"); outtextxy(460,230,"3"); outtextxy(380,100,"1"); outtextxy(220,100,"11"); outtextxy(430,160,"2"); outtextxy(430,310,"4"); outtextxy(380,370,"5"); outtextxy(220,370,"7"); outtextxy(160,160,"10"); outtextxy(160,310,"8");
绘制表盘部分
• void init() /*画时钟边框函数*/ • { • int i,l,x1,x2,y1,y2; • setbkcolor(1); /*设置背景颜色白色 */ • circle(300,240,200); /*画圆心为(300,240)半径200圆*/ • circle(300,240,205); • circle(230,180,25); • rectangle(220,280,400,300); /*画矩形(左上角和右下 角坐标)*/ • circle(380,180,25); • circle(300,240,5);

C语言课程设计报告-模拟时钟转动程序

C语言课程设计报告-模拟时钟转动程序

课程设计报告课程名称结构化程序设计课程设计院部名称专业班级学生姓名王蕾学号课程设计地点课程设计学时指导教师金陵科技学院教务处制目录第一章课程设计的目的和要求.............................................1.1 C语言课程设计的目的............................................1.2 C语言课程设计实现的要求........................................ 第二章课程设计的任务内容............................................... 第三章详细设计说明.....................................................3.1 程序系统的结构..................................................3.1.1 实验设备及环境:(软、硬件环境)3.2 模块描述........................................................3.2.1 指针式时钟................................................3.2.2 数字式时钟................................................3.3 输出项..........................................................3.4 算法............................................................3.5 流程图..........................................................3.6 函数说明........................................................3.7 接口............................................................3.8 调试结果........................................................ 第四章软件使用说明.....................................................4.1 软件使用说明及出现的问题........................................4.2 运行结果........................................................ 第五章课程设计心得与体会............................................... 附录1:参考文献......................................................... 附录2:修改后的源代码……………………………………………………………………模拟时钟转动程序第一章课程设计的目的和要求1.1 C语言课程设计的目的加深对讲授内容的理解,尤其是一些语法规定。

C语言模拟时钟转动课程设计报告

C语言模拟时钟转动课程设计报告

《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 -运行结果分析问题一:程序清单中某个符号添加错误,导致编译时出现错误,执行不出结果。

C课程设计模拟时钟转动程序

C课程设计模拟时钟转动程序

高级语言程序设计设计题目:模拟时钟转动程序目录源程序 (3)题目与要求 (9)功能设计说明 (10)详细设计分析 (11)主函数分析 (12)时间输出 (13)小结 (14)源程序:#include"graphics.h"#include"math.h"#include"dos.h"#define pi 3.1415926#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300 #define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240 #define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y) void init(){int i,l,x1,x2,y1,y2;setbkcolor(3);circle(300,240,200);circle(300,240,205);circle(300,240,100);circle(300,240,2);for(i=0;i<60;i++){if(i%5==0)l=15;elsel=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,k=1;int gdriver=9,gmode=2;unsigned char h,m,s;float n;struct time t[1];struct date d[1];initgraph(&gdriver,&gmode,"c:\\win-tc");initgraph(&gdriver,&gmode,"c:\\win-tc");for(i=0;i<=6;i++){settextstyle(TRIPLEX_FONT,HORIZ_DIR,i);cleardevice();settextjustify(1,1);outtextxy(300,80,"12") ;outtextxy(300,390,"6");outtextxy(140,230,"9");outtextxy(460,230,"3");outtextxy(380,100,"1"); outtextxy(220,100,"11"); outtextxy(430,160,"2"); outtextxy(430,310,"4"); outtextxy(380,370,"5"); outtextxy(220,370,"7"); outtextxy(160,160,"10"); outtextxy(160,310,"8");}init();setwritemode(1);if(k!=0){gettime(t);h=t[0].ti_hour;m=t[0].ti_min;s=t[0].ti_sec;}setcolor(9);n=(float)h+(float)m/60;d(140,n,30);setcolor(14);d(160,m,6);setcolor(4);d(180,s,6);while(!kbhit()){while(t[0].ti_sec==s)gettime(t);gotoxy(44,18);printf("\b\b\b\b\b\b\b\b\b"); delay(70);delay(30);setcolor(4);d(180,s,6);s=t[0].ti_sec;d(180,s,6);if(t[0].ti_min!=m){setcolor(14);d(160,m,6);m=t[0].ti_min;d(160,m,6);}if(t[0].ti_hour!=h){setcolor(7);d(140,h,30);h=t[0].ti_hour;d(140,h,30);delay(240);delay(140);delay(240);}if(s<10){ if(m<10)printf("%u:0%u:0%u",h,m,s);elseprintf("%u:%u:0%u",h,m,s);}else{ if(m<10)printf("%u:0%u:%u",h,m,s);elseprintf("%u:%u:%u",h,m,s);}printf("\b\b\b\b\b\b\b\b\b");}getch();closegraph();}1、题目与要求1、1设计任务:能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。

c语言数字时钟课程设计

c语言数字时钟课程设计

c语言数字时钟课程设计一、课程目标知识目标:1. 学生能够理解并掌握C语言中时间处理的基础知识,包括时间的表示、时间的获取和时间的显示。

2. 学生能够运用C语言标准库函数实现时间的获取与转换。

3. 学生理解数字时钟的原理,掌握使用C语言设计简单数字时钟程序的方法。

技能目标:1. 学生能够独立编写代码,实现一个基于控制台的数字时钟,展示当前时间,并具备基本的时间更新功能。

2. 学生通过课程实践,提高问题分析能力,学会调试程序,解决编程过程中遇到的问题。

3. 学生能够运用结构化编程思想,使代码具有良好的可读性和可维护性。

情感态度价值观目标:1. 学生通过课程学习,培养对编程的兴趣和热情,形成积极探究的学习态度。

2. 学生在小组合作中,培养团队协作精神,学会交流与分享编程知识和经验。

3. 学生通过实际问题的解决,体验编程带来的成就感,增强自信心,培养解决实际问题的能力。

二、教学内容本课程以C语言编程为基础,结合以下教学内容实现数字时钟的设计与开发:1. 时间处理基础知识:包括时间的表示方法,如结构体time_t和struct tm的使用,以及时间转换函数localtime和strftime的应用。

2. 标准输入输出函数:使用printf和scanf等函数在控制台中输出和输入数据。

3. 定时器函数:介绍setitimer和signal函数的使用,实现定时更新时钟功能。

4. 循环和条件语句:运用for循环和if条件语句控制数字时钟的刷新和显示逻辑。

5. 小时、分钟、秒的格式化输出:利用字符串处理和格式化输出,确保时间显示的准确性。

教学内容安排和进度如下:1. 第一课时:介绍时间处理基础知识,使学生理解时间的表示和转换方法。

2. 第二课时:讲解标准输入输出函数,为后续编写时钟显示代码打下基础。

3. 第三课时:引导学生学习定时器函数,实现时钟的自动更新功能。

4. 第四课时:讲解循环和条件语句的使用,设计数字时钟的刷新逻辑。

c语言实现电子时钟_课程设计

c语言实现电子时钟_课程设计

c语言实现电子时钟_课程设计题目: c语言实现电子时钟1课程设计的任务和具体要求1( 掌握利用c语言相关函数开发电子时钟的基本原理,为进一步开发高质量的程序打下坚实的基础。

提高运用c语言解决实际问题的能力。

2( 了解计算机图形学的相关算法。

3( 了解计算机图形学的相关函数的使用。

指导教师签字: 日期: 指导教师评语成绩: 指导教师签字: 日期:2课程设计所需软件、硬件等Windows xp win-TC课程设计进度计划起至日期工作内容备注 2010年12月1日-2010收集资料年12月20日2010年12月20日-2010编写程序年12月26日参考文献、资料索引序号文献、资料名称编著者出版单位a. 姜灵芝等.c语言课程设计案例精编.北京:清华大学出版社.2008b. 胡景春等。

大学生计算机课程实践优秀作品选编.南京:东南大学出版社.20103摘要:我们日常生活中有各种各样的时钟,随着计算机的普及和计算机科学的飞速发展,人们开始越来越多的利用计算机解决实际问题。

开发一个易于查看的时钟有较大的现实意义。

该时钟只实现简单的界面,程序与生活紧密结合,体直观开发简单。

利用c语言编辑源程序,再进行编译连接生成可执行文件,运行时可看见漂亮的外观。

一 .设计课题:电子时钟课程设计二.设计目的:本程序中涉及时间结构体,数组、绘图等方面的知识,通过本程序的训练,使我们有一个更深刻的了解,掌握利用c语言相关函数开发电子时钟的基本原理,为进一步开发高质量的程序打下坚实的基础。

提高运用c语言解决实际问题的能力。

三.设计内容:(1) 欢迎界面,以一个笑脸开始(2)主界面,包括数字时钟和电子时钟和按键提示。

(3)设计者介绍和功能提示。

四.总体设计:电子时钟是针对人们判断时间的落后和不准确性,通过利用计算机来实行对时间的系统计算,增加了准确性。

在软件的总体设计中采用自上而下,逐步细化,模块化设计,结构化编码方式进行。

系统结构图电子时钟时界按钟数面键动字显控画时示制处钟模模理模块块模块块1五.详细设计:(1)电子时钟执行主流程首先,程序调用initgraph()函数,使系统进入图像模式,然后通过使用line(),arc(),outtextxy(),和circle()等函数来绘制主窗口及电子时钟界面,然后调用clockhandle()函数来处理时钟的运转及数字时钟的显示。

c语言电子时钟课程设计

c语言电子时钟课程设计

c语言电子时钟课程设计一、课程目标知识目标:1. 理解C语言中结构体、函数和循环控制的使用,掌握电子时钟的基本原理。

2. 学习并掌握使用C语言编写程序,实现电子时钟的功能,包括时、分、秒的显示与更新。

3. 了解C语言中定时器功能的使用,实现电子时钟的自动更新。

技能目标:1. 能够运用所学知识,独立设计并编写一个简单的C语言电子时钟程序。

2. 培养学生的编程实践能力,提高问题分析和解决能力。

3. 学会使用调试工具,对程序进行调试和优化,提高程序运行的稳定性。

情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,激发学生的学习主动性。

2. 培养学生的团队合作意识,学会与他人共同解决问题,相互学习和进步。

3. 培养学生的创新精神,敢于尝试新方法,勇于克服困难,不断优化程序。

课程性质:本课程为实践性较强的课程,结合理论知识与实际操作,使学生能够学以致用。

学生特点:学生已具备一定的C语言基础,了解基本语法和编程思路,但对实际应用还不够熟练。

教学要求:结合学生特点,注重理论与实践相结合,提高学生的编程实践能力,培养学生的问题分析和解决能力。

在教学过程中,关注学生的个体差异,给予个性化指导。

通过课程学习,使学生能够独立完成一个具有实际意义的编程项目。

二、教学内容1. 复习C语言基础:变量、数据类型、运算符、控制结构(章节1-4)。

2. 结构体与指针:介绍结构体的定义和使用,指针的概念和操作(章节5)。

3. 函数:回顾函数的定义、调用和参数传递,强调模块化编程的重要性(章节6)。

4. 循环控制:深入学习for循环和while循环,理解其在电子时钟中的应用(章节7)。

5. 定时器与时间处理:介绍定时器原理,时间处理函数的使用(章节8)。

6. 电子时钟编程实践:结合所学知识,设计并实现电子时钟程序。

- 显示部分:编写代码实现时、分、秒的显示(课时1)。

- 更新部分:实现时间递增,每秒更新显示(课时2)。

- 定时器应用:使用定时器自动更新时间,减少资源消耗(课时3)。

用vc时钟课课程设计

用vc时钟课课程设计

用vc时钟课课程设计一、教学目标本节课的教学目标是让 students to understand the basic concept ofvc时钟, learn how to read and writevc时钟 code, and master the use of basic data types, control structures, and input/output functions. In addition, the students should be able to usevc时钟 to create a simple clock program that can display the current time.二、教学内容本节课的教学内容主要包括以下几个部分:1.vc时钟的基本概念和环境搭建2.基本数据类型的使用和运算符3.控制结构:条件语句和循环语句4.输入/输出函数的使用5.创建一个简单的时钟程序三、教学方法为了达到本节课的教学目标,我将采用以下几种教学方法:1.讲授法:通过讲解vc时钟的基本概念和使用方法,让学生了解和掌握vc时钟的基本知识。

2.案例分析法:通过分析一个简单的时钟程序案例,让学生了解如何使用vc时钟创建一个时钟程序。

3.实验法:让学生动手实践,通过编写代码和调试程序来巩固所学的知识。

四、教学资源为了支持本节课的教学内容和教学方法的实施,我将准备以下教学资源:1.教材:vc时钟编程入门2.参考书:vc时钟编程进阶3.多媒体资料:讲解vc时钟的视频教程4.实验设备:计算机和vc时钟编程环境五、教学评估本节课的评估方式将包括以下几个方面:1.平时表现:通过学生在课堂上的参与程度、提问回答、团队合作等表现来评估学生的学习情况。

2.作业:布置相关的编程练习题,要求学生在规定时间内完成,通过作业的完成情况来评估学生的掌握程度。

3.考试:在课程结束后,安排一次考试来评估学生对vc时钟知识的掌握情况。

模拟时钟转动程序

模拟时钟转动程序

东南大学C语言课程设计报告课程名称:计算机综合课程设计学院:土木工程学院设计题目:模拟时钟转动程序级别: B级学生姓名:***学号: ******** 同组学生:学号:指导教师:***2015年 9 月 1 日C语言课程设计任务书模拟时钟转动程序一、课程设计的内容1、能模拟机械钟表行走2、还要准确利用数字显示日期和时间3、在屏幕上显示一个活动时钟4、按任意键时程序退出。

二、课程设计应完成的工作1、编写完成相应题目的程序2、编写课程设计报告,课程设计报告应该包含以下6部分1)需求分析:包括设计题目、设计要求以及系统功能需求分析2)总体设计:包括系统总体设计框架和系统功能模块图3)详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图4)调试分析过程描述:包括测试数据、测试输出结果以及对程序测试过程中存在问题进行思考(主要问题的出错现象、出错原因、解决方法及其效果等,相应效果截图)5)总结:课程设计完成了哪些主要功能,是否有扩展功能?还有哪些地方需要改进?课程设计的学习与体会?有哪些合理化建议?6)附录:主要原程序代码含必要的注释3、答辩:在实验室建立程序运行环境,并在指导教师的监督下,独立解决问题,运行程序和回答教师的提问。

四、应收集的资料及其主要参考文献[1]谭浩强.C程序设计(第四版),北京:清华大学出版社,2010年6月[2]陈清华朱红 . C语言课程设计案例精选与编程指导(第一版),南京:东南大学出版社,2003年6月[3]顾小晶 . 实用C语言简明教程(第一版),北京:中国电力出版社,2003年9月目录1.设计目的与要求 (4)2.总体设计 (5)3.详细设计 (6)3.1画出钟表的轮廓3.2获取系统时间4.调试分析 (7)5.总结 (10)6.附录(程序) (11)7.答辩记录(正文处留出适当空白) (15)8.指导教师意见(正文处留出适当空白) (16)1.目的与要求要求:1、能模拟机械钟表行走2、还要准确利用数字显示日期和时间3、在屏幕上显示一个活动时钟4、按任意键时程序退出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《C语言程序设计》课程设计报告题目:模拟时钟转动程序班级:组别:组员:指导教师:目录第一章课程设计的题目 (2)1.1 C语言课程设计的题目 (2)第二章课程设计的要求 (2)2.1 C语言课程设计的要求 (2)第三章课程设计的目的 (2)3.1 C语言课程设计的目的 (2)第四章课程设计的内容 (3)4.1 C语言课程设计的程序清单和注释 (3)第五章课程设计的运行结果 (7)5.1 C语言课程设计的运行结果 (7)第六章课程设计的结果分析 (8)6.1 C语言课程设计的结果分析 (8)第七章课程设计的心得体会 (9)7.1 C语言课程设计的心得体会 (9)模拟时钟转动程序第一章课程设计的题目1.1 C语言课程设计的题目本次为期两周的课程设计的题目为设计一个模拟时钟转动的程序。

第二章课程设计的要求2.1 C语言课程设计的要求能模拟机械钟表行走;要准确地利用数字显示日期和时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致;按任意键时程序退出。

第三章课程设计的目的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 //2PILRESULT 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;wndclass.lpszMenuName = NULL; //窗口中无菜单wndclass.style = CS_HREDRAW | CS_VREDRAW ; //窗口重绘风格RegisterClass(&wndclass);hwndCreateWindow(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应用程序的消息循环形式}void setISOTROPIC(HDC hdc,int cxClient,int cyClient)//设置映射模式,使之成为笛卡尔坐标系的映射模式{SetMapMode(hdc,MM_ISOTROPIC);SetWindowExtEx(hdc,1000,1000,NULL); // 逻辑单位与设备单位比1/2SetViewportExtEx(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;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]))));}}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代表一种情况 {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: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,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);EndPaint(hwnd,&ps); //结束绘制 return 0;case WM_DESTROY: //程序退出消息PostQuitMessage(0);return 0;}returnDefWindowProc(hwnd,message,wParam,lParam);//其他消息有系统默认处理}第五章课程设计的运行结果5.1 C语言课程设计的运行结果第六章课程设计的结果分析6.1 C语言课程设计的结果分析运行结果分析问题一:程序清单中某个符号添加错误,导致编译时出现错误,执行不出结果。

相关文档
最新文档