《时钟转动程序设计报告.docx》由会员分享,可在线阅读,更多相关《时钟转动程序设计报告.docx(22页珍藏版)》请在第一文库网上搜索。
1、TAIYUANUNIVERSITYOFSCIENCEANDTECHNO1OGY华科学院计算机科学与技术专业程序设计综合课程设计汇报(2023/2023学年第一学期)学生姓名:学生班级:学生学号:指导教师:2011年1月7日第一章课程设计的目的和规定错误!未定义书签。1.1 C语言课程设计日勺目日勺错误!未定义书签。1.2 C语言课程设计实现的规定错误!未定义书签。第二章课程设计的任务内容错误!未定义书签。第三章详细设计阐明错误!未定义书签。3.1 程序系统日勺构造错误!未定义书签。3.2 模块描述错误!未定义书签。3. 2.1指针式时钟错误!未定义书签。4. 2.2数字式时钟错误!未定义书签。
2、3.3 输出项错误!未定义书签。3.4 算法错误!未定义书签。3.5 流程图错误!未定义书签。3.6 函数阐明错误!未定义书签。3.7 接口错误!未定义书签。3.8 调试成果错误!未定义书签。第四章软件使用阐明错误!未定义书签。4.1 软件使用阐明及出现日勺问题错误!未定义书签。4.2 运行成果错误!未定义书签。第五章课程设计心得与体会错误!未定义书签。附录1:参照文献附录2:程序清单.错误!未定义书签。.错误!未定义书签。模拟时钟转动程序第一章课程设计的目的和规定1.1 C语言课程设计的目日勺加深对讲授内容日勺理解,尤其是某些语法规定。通过课程设计,自然地、纯熟地掌握。熟悉所用的计算机系统的
3、操作措施,也就是熟悉语言程序开发的J环境。学会上机调试程序。1.2 C语言课程设计实现的)规定能模拟机械钟表行走;要精确地运用数字显示日期和时间;在屏幕上显示一种活动时钟;程序界面设计合理,色彩得体大方,显示对的;各指针运动规律对的;数字式时钟日勺时间显示与指针式时钟显示一致;按任意键时程序退出。第二章课程设计日勺任务内容要纯熟掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、构造等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序构造(次序构造、判断选择构造、循环构造);大程序的功能分解措施(即函数的使用)等。用C语言实现一种模拟时钟转动程序。提出总体方案日勺设
4、计思想和原理,绘制程序流程图和描述程序H功能,并阐明程序B特点和难点。能模拟机械钟表行走;要精确地运用数字显示日期和时间;在屏幕上显示一种活动时钟;程序界面设计合理,色彩得体大方,显示对B;各指针运动规律对0;数字式时钟日勺时间显示与指针式时钟显示一致;按任意键时程序退出。模拟时钟是一种集计时器和时钟显示于一体的程序。编写一种指针式时钟程序,此程序在屏幕正中有一种指针式钟面,窗口标题以数字方式显示日期和时间。指针式的时钟表盘为椭圆形或圆形,并且圆周上有分布均匀日勺12个刻度,刻度规定显示清晰,钟面上有长度不相似的指针,即时针、分针、秒针,指针的运动规定具有规律性,且为顺时针。数字钟显示时间日勺
5、格式是年月日时分秒,小时为24进制,分钟和秒是60进制,指针式的时钟和数字式的时钟显示的时间同步,且两个时钟所显示的时间与计算机的系统时间一致。第三章详细设计阐明3.1 程序系统的)构造图3.1功能模块图3.2 模块描述指针式时钟指针式B时钟表盘为椭圆形,并且圆周上有分布均匀B12个刻度,刻度显示清晰,钟面上有长度不相似的指针,即时针、分针、秒针,指针B运动具有规律性,为顺时针。数字式时钟数字钟显示时间的格式是年月日时分秒,小时为24进制,分钟和秒是60进制,指针式日勺时钟和数字式日勺时钟显示日勺时间同步,且两个时钟所显示的时间与计算机的系统时间一致。窗口标题为数字钟。3.3 输出项数字式时钟
6、输出“d年d月d日d时%d分d秒”。3.4 算法不管何种指针,每次转动均以冗/30弧度(一秒0角度)为基本单位,且都以表盘中心为转动圆心。计算指针端点(,y)的公式如下:X二圆心X坐标指针长度*cos(指针方向角)y二圆心y坐标指针长度*sin(指针方向角)重视,指针长度是指自圆心至指针一种端点的长度(是整个指针0一部分),由于指针可以跨越圆心,因此一种指针需要计算两个端点。三个指针日勺运动是有关联日勺,秒针转一圈引起分针运动一格,分针转一圈引起时针运动一格,因此应当使用一种定期器消息来处理指针日勺运动。图3.2程序流程图3.6函数阐明1.0nDraw()函数实现对系统时间内获取和绘制椭圆表面
7、和时钟指针。2.设置计时器,创立窗口时启动一种计时器不停发出WM_TIMER消息,调用SetTimer()函数。3用TeXte)UtO函数显示数字钟。画模拟时钟最重要0大概就是三角函数了。和电脑B默认坐标系都是原点在左上角。这样,我们确定了圆心位置后,就确定了表的位置,表针,表盘的位置坐标都在以圆心为中心的圆环上。其坐标可以通过三解函数推导出来。设圆心为(X,Y),半径为R,表上其他点B坐标为(XI,YD,该点与圆心X轴夹角为A,大体可以推出该点坐标公式:位于圆心右上角点的公式为:X1=X+RcosA;Y1=Y-RsinA;位于圆心左上角点B公式为:X1=X-RcosA;Y1=Y-RsinA;
8、位于圆心左下角日勺公式为:X1=X-RcosA;Y1=Y+RsinA;位于圆心右下角的)公式为:X1=X+RcosA;Y1=Y+RsinA;假如+-使用角度来校正,公式就可以统一为X1=X+RcosA;Y1=Y+RsinA;由于表是顺时针转动,我们的角度习惯上使用逆时针,因此我们使用自己校正后的J角度值,从12点开始,按顺时针重新排列三角函数值,加入对角度正负的J校正。首先定义某些时钟常用日勺宏:#defineANA1OG_CENTER_X(227)时钟显示的中心位置的横坐标227#defineANA1OG_CENTER_Y(178)时钟显示H中心位置的纵坐标178#defineANA1OG_
9、R(150)时钟显示图的半径150#defineANA1OG_CENTER_R(10)时钟显示中心图形的半径10时针长短(半径)70分针长短(半径)100秒针长短(半径)120#defineANA1OG_HOUR_1EN(ANA1OG_R-80)#defineANA1OG_MINUTE_1EN(ANA1OG_R-50)#defineANA1OG_SECOND_1EN(ANA1OG-R-30)3.7接口1.是重要B头文献,它包括了其他WindOWS头文献。2.数学函数库,某些数学计算的公式的详细实现是放在math.h里。3.8调试成果图3.3运行成果第四章软件使用阐明4.1 软件使用阐明及出现日
10、勺问题在vc+6.0中新建一种Win32app1ication项目,然后新建一种C+文献输入代码。运行后显示一种正在行走的机械时钟。将数字日期显示为窗口标题。按任意键退出。4.2 运行成果图4.1运行成果第五章课程设计心得与体会通过一种学期对C+课程设计的学习,我们学习了理论知识,理解了C+语言程序设计的思想,这些知识都为我们的下一步学习打下了坚实的基础。通过课程设计,首先是为了检查我们一种学期来我们学习的成果,另首先也是为了让我们深入的掌握和运用它,同步也让我们认清自己B局限性之处和微弱环节,加以弥补和加强。通过对模拟时钟0设计深入B巩固了用C+编写程序,并且有助于更好的掌握程序设计语言!在
11、模拟时钟aJ编写过程中也体会到了做事情一顶要细心、认真。愈加懂得了要掌握好基础知识。尚有体会到了成功B感觉!通过本项课程设计也培养了我独立思索、综合运用所学有关对应知识的能力,掌握工程软件设计的基本措施,强化上机动手编程能力,闯过理论与实践相结合的难关!由于程序设计语言是近年在国内外得到迅速推广应用的一种语言。它功能丰富,体现能力强,使用灵活以便,应用面广,目的程序效率高,可移植性好,既具有高级语言日勺长处,又具有低级语言的许多特点。通过这次B程序设计愈加理解了语言设计的好处和其可用性!在这次课程设计中也懂得了自己的动手能力不强有待进一部的提高!在设计过程中不可以把书本上B知识与实践相结合,这
12、也就增长了设计不好该程序B想法!在设计过程中的一次次设计错误增长了我放弃的想法!不过通过自己的独立思索和同学的协助终于完毕了课程设计!完毕该程序后想起自己此前的每一次对自己失去信心,就觉得并不是在知识掌握上打败了,而是自己对自己缺乏信心!只要自己对自己不失去信心相信就可以完毕那些此前认为完毕不了的事情!也让我懂得了要想成功首先就必须有很强的J自信心!懂得了自己后来要在做任何事情时都要自信!当自己都不相信自己可以成功时还也许会获得成功吗?在课程设计的J过程中也懂得了自己在此前的学习中有很大的局限性导致在设计过程中出现了诸多日勺问题,有些地方看不懂也不懂得怎么去设计,不过在设计过程中也学习了诸多,
13、掌握了自己此前没有学好的知识,虽然一时可以掌握完此前没有学好B知识,不过也给自己敲响了警钟,在学习中不可以伏于表面,要想学好每一门课程都要踏踏实实,做什么都不是给他人看0!都是要更好日勺掌握该门知识,提高自己B自身的修养,提高自己的能力!为后来的工作打下良好的知识基础和技能基础!附录1:参照文献1、田淑清,C语言程序设计,北京:高等教育出版社,2023年1月2DavidJ.Krug1inski,ScotWingo,GeorgeShepherd,Visua1C+6.0技术内幕(第五版),但愿图书室译,北京:北京但愿电子出版社,2023年1月附录2:程序清单#inc1ude#inc1ude#def
14、ineTWOPI(2*3.14159)#defineIDTIMER1#defineANG1ETWOPI/3601RESU1TCA11BACKWindowProc(HWNDhwnd,UINTuMsg,WPARAMwParam,1PARAMIParam);intWINAPIWinMain(Hinstancehistance,HINSTANCEhPrevInstance,1PSTRIpCmd1ine,intnCmdShow)(TCHARszC1assName=TEXT(,ana1ogC1ocu);MSGmsg;HWNDhwnd;Wndc1assWndC1ass;Wndc1assxbC1sExtra=0;Wndc1assxbWndExtra=0;wndc1ass.hbrBackground=(HBRUSH):GetStOCkObjeCt(WHrTE_BRUSH);wndc1ass.hCursor=NU11;wndc1ass.h1con=NU11;wndc1ass.h1nstance=h1nstance;Wndc1assJpfnWndProc=WindowProc;Wndc1assjpszC1assName=SzC1assName;Wndc1assJpszMenuName=NU11;wndc1ass.st