C++指针型闹钟课程设计_第1页
C++指针型闹钟课程设计_第2页
C++指针型闹钟课程设计_第3页
C++指针型闹钟课程设计_第4页
C++指针型闹钟课程设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计说明书题 目:指针型闹钟学院名称:专业班级:姓名学号:指导教师:2013 年 07 月课程设计任务书专业班级: 学生姓名: 指导教师:设计一个如图所示的指针式闹钟二、目的与要求:、目的:1)要求学生熟练掌握C+语言的基本知识和C+调试技能;2)掌握用C+开发应用程序的一般步骤和方法;3) 能够利用所学的基本知识和技能, 解决简单的面向对象的程序设计问题。4) 培养学生综合利用 C 语言进行程序设计的能力, 主要是培养学生利 用系统提供的标准图形函数进行创新设计。2、基本要求:1)要求利用面向对象的方法以及C+ 的编程思想来完成系统的设计;2)要求在设计的过程中,对Windows 环境下

2、的编程有一个基本的认识;3)学会Windows 环境下绘图的基本方法;4)能够完成基本的钟表的走时功能、对表功能、定时功能;5)界面美观大方。3、创新要求:在基本要求达到后,可进行创新设计,如定时提醒功能、声音提醒功能、定时运行别的程序的功能等。4、写出设计说明书按照设计过程写出设计说明书。三、设计方法和基本原理:1 、问题描述(功能要求):要求所编写的闹钟能够完成基本的走时、对时、定时功能。2、问题的解决方案(参考):根据题目的要求,可以将问题解决分为以下步骤:1)分析问题,画出要解决问题的流程图(类及其层次结构图);2)利用对话框编辑器完成界面的设计,要求界面要美观实用;3)添加成员变量和

3、成员函数(消息映射函数);4) 利用结构化程序的设计思路完成秒针、 分针、 时针的走动及闹铃指针的设置。5)程序功能调试;6)完成系统总结报告以及系统使用说明书。四、设计中涉及到的重要内容及关键技术:1 、对话框应用程序的编写方法及其相关函数;2、绘图工具的使用方法;3 、一些常用系统API 函数的使用方法。五、程序设计和调试:编写程序代码、完成程序调试。六、编写课程设计说明书:按照课程设计说明书的规范格式要求以及说明书中的内容要求编写课程设计说明书。七、答辩与评分标准:、完成基本功能: 40 分; TOC o 1-5 h z 、设计报告及使用说明书:30 分;3、设置错误或者按照要求改变结果

4、:15 分;、回答问题:15 分。摘要此课程设计的目的是为了达到熟练掌握C+语言的基本知识和C+调试技能; 基本掌握面向对象程序设计的基本思路和方法; 能够利用所学的基本知识和技能, 解决简单的面向对象程序设计问题; 培养综合利用 C 语言进行程序设计的能力。需要设计的模拟时钟程序是基于 MFC 的 WINDOWS 应用程序设计,程序运行成功后, 页面出现了一个指针式的时钟和数字式的时钟, 指针式的时钟表盘为圆形,并且圆周上有分布均匀的 12 个刻度,刻度要求显示清晰,圆形的钟面上有长度和颜色及粗细各不相同的指针,即时针、分针、秒针,以便各个指针重合时亦可以轻易辨认,指针的运动要求具有规律性,

5、且为顺时针, 指针式的时钟表盘下面则是一个以数字形式显示时间的数字钟,数字钟的钟面为一个规则的矩形,具显示时间的格式是时:分:秒,小时为 12进制,分钟和秒是60进 制,指针式的时钟和数字式的时钟显示的时间同步,且两个时钟所显示的时间与计算机的系统时间相一致,页面的菜单项设有时间设置的栏目,可以对所显示的时间进行仙整,能进行调整的具体内容是年、月、日、时、分、秒。此模拟时钟 外观简洁,功能和实际运用到的时钟基本一样,用起来非常方便。关键词:指针式;闹钟;系统时间AbstractThis course is designed for the purpose to achieve proficie

6、ncy in C + + language basics and C + + debugging skills; basic grasp of object-oriented programming of the basic ideas and methods; able to use what they have learned the basic knowledge and skills to solve simple object-oriented program design issues ; develop comprehensive utilization C + + langua

7、ge programming capabilities. Need to design analog clock program is based on the MFC WINDOWS application design, the program runs successfully, the page there is a pointer clock and digital clock Analog clock dial is circular and is distributed uniformly on the circumference 12 scale, the scale requ

8、ired to display clear, round clock face has length and color and thickness of each are not the same pointer, instant needle, minute, second hand, in order to coincide each pointer can also be easily recognizable, the law requires the movement of the pointer resistance, and is clockwise, Analog clock

9、 dial the following is a digital form of display time digital clock, digital clock, clock face is a regular rectangular, its display time format is hours: minutes: seconds, hours of 12 hex, minutes, and seconds is 60 hex, Analog clock and digital clock displays the time synchronization, and the two

10、clocks show the time and the computers system time is consistent with the menu item page time setting columns, you can adjust the displayed time can be adjusted by the specific content is theyear, month, day, hour, minute, second. This analog clock looks simple, functional and practical application

11、to the clock basically the same, and it is very convenient.Keywords : Analog ; Alarm ; System Time目录第一章 引言 错误!未定义书签。 TOC o 1-5 h z HYPERLINK l bookmark15 o Current Document 课题背景及意义 4 HYPERLINK l bookmark17 o Current Document 课题的研究方法 4 HYPERLINK l bookmark19 o Current Document 第二章 课程设计目的与要求4 HYPERLIN

12、K l bookmark21 o Current Document 课程设计目的 4 HYPERLINK l bookmark23 o Current Document 课程设计的实验环境 5 HYPERLINK l bookmark25 o Current Document 课程设计的预备知识 5 HYPERLINK l bookmark27 o Current Document 课程设计要求 5 HYPERLINK l bookmark29 o Current Document 第三章 课程设计内容5 HYPERLINK l bookmark31 o Current Document .功

13、能分析 5 HYPERLINK l bookmark33 o Current Document 程序流程相应说明 6第四章软件设计 6 HYPERLINK l bookmark35 o Current Document 设计步骤 7 HYPERLINK l bookmark37 o Current Document 界面设计 7 HYPERLINK l bookmark39 o Current Document 时间显示 8 HYPERLINK l bookmark41 o Current Document 模拟时钟显示 8状态栏显示时间 8 错误!未定义书签。 HYPERLINK l boo

14、kmark43 o Current Document 测试结果 9 HYPERLINK l bookmark45 o Current Document 关键源代码 1014 HYPERLINK l bookmark47 o Current Document 第五章 课程设计总结13致谢参考文献 14第一章 引言课题背景及意义随着社会的发展,进入 21 世纪 ,个人电脑已经进入千家万户 ,人们已习惯于以互联网的方式交流,学习和娱乐。 网上跨国交流也越见频繁, 由于时差的关系 ,人们在浏览国外新闻时经常需要进行时间的换算。 不同地区作息时间的不同也影响到人们的交流。 一种指针式闹钟的时钟程序, 将

15、给人们的生活与交流带来极大地方 便。课题的研究方法通过对 VC+ 可视化编程的学习以及各地区时间差的查询,本文主要采用MFC 控件和多线程编程技术,以及三个与时间有关的函数SetTimer() 、OnTimer()和 KillTimer() ,设计实现一个包含计时器功能和闹钟功能的多时区时钟程序。第二章 课程设计目的与要求课程设计目的将理论教学中涉及到的知识点贯穿起来, 对不同的数据类型、 程序控制结构、数据结构作一比较和总结, 结合设计题目进行综合性应用, 对所学知识达到融会 贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程C+语言教程的基

16、本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。( 2 )全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。(3)利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。( 4 )对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。5)掌握面向对象程序设计的方法。(6)熟练掌握C+语言的基本语法,灵活运用各种数据类型。( 7 )进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。课程设计的实验环境硬件要求能运行Windows操作系

17、统的微机系统。C+语言应用程序开发软 件使用:VC+系统,或其他C+语言应用程序开发软件。课程设计的预备知识熟悉C+语言程序设计的基本知识及VC+编辑器的使用方法。课程设计要求利用所学的面向对象及C+编程知识和技巧,通过布置具有一定难度的程序设计题目,并且要求学生独立完成所布置题目,在分析设计过程中, 要求学生养成良好的编程习惯, 学会分析简单的实际问题, 并能利用所学的知识建立系统的逻辑结构,学会简单的调试技巧和方法。 根据系统的功能要求, 要求学生逐步完成应用程序的设计,具体要求为:、按规定的时间及要求上机。2、设计方案正确,正确划分所选课题的系统功能模块。3、系统设计要尽量实用,数据与功

18、能分析详细。4、要求C+编码简洁、稳定、高效。5、独立查阅资料,认真书写课程设计说明书。第三章 课程设计内容.功能分析1)正确显示系统时钟;2)能准确定位时钟刻度和时分秒针的位置;3)能够完成基本的钟表的走时功能、对表功能、定时功能;程序流程相应说明程序运行后,出现了以时针、分针和秒针的指针式的时钟和以数字方式显示时间的数字时钟,所显示的时间与电脑同步,程序运行正确。绘制指针式的时钟和插入背景时钟图片时, 可以运用 CView 类, CView类提供了视图类所需要的最基本的功能实现, 其提供的虚拟方法使应用程序可以重写它们提供 CView 派生类中的方法, 其中 OnDraw() 函数是重绘视

19、图窗口时被调用 , 调用 MoveTo 和 LineTo 绘制表盘指针。模拟时钟处理消息的过程:首先调用 SetTimer 函数定义时钟消息,包括参数指定计时器的ID,消息产生的时间间隔等;然后在相应的WM_TIMER消息处理里添加时钟消息响应代码。 在该模拟时钟设计的程序中, 调用消息处理函数 OnTimer() 刷新窗口显示。要实现时钟的动态效果,即时间窗显示的时间每隔一秒钟更新一次,需要在时间窗格的正文调用 CStatusBar:SetPaneText() 函数。要定时更新,则应利用 WM_TIMER 消息。在 Window 中, 用户可以安装一个或多个计时器,计时器每隔一定的时间间隔就

20、会发出一个WM_TIMER 消息, 而这个时间间隔可由用户指定。 MFC 的 Windows 类提供了 WM_TIMER 消息处理函数OnTimer() ,应在该函数内进行更新时间窗格的工作。先利用 ClassWazard 给 CMainFrame 类加入 WM_TIMER 消息处理函数OnTimer() , CMainFrame: OnTimer() 函数是在系统发给框架窗口消息 WM_TIMER 时调用的,在CMainFrame:OnCreate() 函数内调用 CWnd:SetTimer() 以安装一个计时器, 使 OnTimer() 在设定的时间间隔被调用。通过调用 GetCurren

21、tTime() 函数来实现时钟时间与计算机系统时间保持一致 ,使时间与计算机同步后。在程序设计过程之中添加菜单,用菜单项控制弹出对话框设置显示的时间,这样可以使时钟达到可调的效果。程序运行正常,界面设置合理,指针式的时钟和数字式的时钟的运动达到任务书的要求, 并且能用菜单项控制对话框以实现对当前时间的调整, 程序达到各项功能之后,退出界面,程序结束。第四章软件设计4.1设计步骤使用AppWizard创建一个基于对话框的 MFC工程,将之命名为abao。所 有步骤均使用AppWizard给出的默认设置,完成对话框的创建。在CmainFrame类中加入消息处理函数 OnTimer(),在OnCre

22、ate()中添加 代码,在CmainFrame:OnDraw(CDC* pDC)中显示背景图片以及调整,添加指 针代码,在 CMainFrame:OnTimer(UINT nIDEvent)中添加输出数字时钟的代 码。(3)在Resource View 选项卡中打开 Menu资源组,双击IDR_MAINFRAME , 在菜单项中添加一个 设置”的控件,再在 设置”的目录下添加一个 时间”的控件, 设ID为IDC_EDIT_SET ,通过ClassWizard为菜单连接对话框类 CInputDlg , 使菜单便能在程序运行后显示在应用程序主对话框上,菜单效果图如图2所示。图2菜单效果图(4)在

23、Resource View 选项卡中打开 Dialog资源组,新建并双击 IDD_DIALOG1 ,在出现的对话框中添加所需的控件,根据需要对其属性进行修改,并建立类向导,编辑框效果图如图3所示。图3编辑框效果图(5)在头文件中添加对各种函数及变量的声明,同时在类的原文件中添加实 现功能所需要的各种函数,并添加相应的代码。(6)对完成后的程序不断进行调试,分析并修改其中的错误,直到程序运行 不再报错,并能够实现所要求的各项功能。界面设计模拟时钟的界面设计比较简单,如图 3所示,只需6个编辑框和相应的6 个静态文本框,由于显示的时间都是整数,所以控件的类型都选为 int型,因而 所需要设计的控件

24、也比较简单,界面设计的控件表如表 1所示。表1界面控件表控件序号控件名称控件类型控件ID相应及量1时编辑框(CString)IDC_hourm_a2分编辑框(CString)IDC_minutem_b3秒编辑框(CString)IDC_secondm_c时间显示模拟时钟显示模拟时钟的显示主要在于插入和绘图这两方面,也是本次模拟时钟课程设计的重中之重。这一部分所要添加的代码在 File View选项卡中的Source File资源 组里 CCK52View.cpp 中:(1)首先要调用SetTimer()函数设置时间问隔,语句是 SetTimer(1,1000,NULL) , SetTimer(

25、)的第一个参数指定计时器ID为1,第二个 参数规定了计时器的时间间隔为 1000ms,即1s,这样,每隔1s就调用一次 OnTimer()函数。(2)定义画笔 hourPen、minutePen1、secondPen2 分别为时针、分针、 秒针的画笔。通过插入图片的位置以及图片长宽确定时针、分针和秒针的位置, 并根据所取系统时间 GetHour()、GetMinute()、GetSecond()来决定时针、分针 和秒针的转向。先在在 String Table 中添力口 New String , 在此定义为 ID_INDICATOR_CLOCK ,将其 Caption 设为 00: 00: 00

26、,对应的 Value 值加 1 (可在 resource.h 中修改)。在 MainFrm.cpp 中indicators 声明处添加 ID_INDICATOR_CLOCK,代码如下:static UINT indicators口 =ID_SEPARATOR,ID_INDICATOR_CLOCK, /这里排列影响显示顺序ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,;然后在 CMainFrame:OnTimer(UINT nIDEvent) 中添加如下代码使得状态栏时间随系统时间变化而变化:CTime time;time=CTime:

27、GetCurrentTime();/ 得到当前时间CString s=time.Format(%H:%M:%S);/ 转换时间格式m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),s); / 显示时钟要实现定时功能,需要在CMainFrame:OnTimer(UINTnIDEvent) 中添加如下代码:/获取当前系统时间显示到静态文本框time 上CString str;CTime t = CTime:GetCurrentTime();str.Format(%d 时 分 秒,t.GetHou

28、r(),t.GetMinute(),t.GetSecond();/ 判断当前时间与设定时间是否一致if (s=str)PlaySound(1.wav,NULL,SND_FILENAME|SND_ASYNC);MessageBox(str,TIMEs UP!,MB_OK);测试结果经分析程序错误原因并加以改正之后进行调试、程序编译、连接无错误后,程序能正确运行,图 4 显示了程序运行后模拟时钟以及打开菜单项的界面。图 4 程序运行图经测试, 程序运行成功后,出现了指针式的时钟和数字式的时钟,二者时间与计算机同步,时针、分针和秒针形象美观,即使各指针重合也可辨认,各项功能正常。关键源代码模拟时钟的

29、源代码关键在对于时钟的绘制和设置计时器上,添加的代码在File View 选项卡中的 Source File 资源组里面的 CCK52View.cpp 中,以下代码是关于模拟时钟的绘制:void CCk52View:OnDraw(CDC* pDC)CBitmap bmp;/bmp 位图对象bmp.LoadBitmap(IDB_BITMAP1); /IDB_BITMAP3 为图像对象的 IDBITMAP bmpInfo;/位图信息对象bmp.GetBitmap(&bmpInfo); /获取位图信息CDC dcMemory,*dc;/在内存中创建一个位图兼容设备dc=GetDC();/获取设备上下

30、文对象的类dcdcMemory.CreateCompatibleDC(dc);/创建内存位图兼容设备CBitmap *pOldBmp=dcMemory.SelectObject(&bmp); /将图片选入兼容设备/将兼容设备的内容copy 到屏幕设备中,实现真正的 Paintdc-BitBlt(300, 0, bmpInfo.bmWidth, bmpInfo.bmHeight,&dcMemory, 0, 0, SRCCOPY);/ 将设备还原dcMemory.SelectObject(pOldBmp);CPen pen(PS_SOLID,2,RGB(255,255,0);CPen *pOldP

31、en=(CPen*)pDC - SelectObject(&pen);double rate = (double)(2.0 * pi / 60.0);double halfPi=pi/2;int zoomR=160;CTime time = CTime:GetCurrentTime();int hour = time.GetHour();int minute = time.GetMinute();int second = time.GetSecond();int x0=bmpInfo.bmWidth/2+300;int y0=bmpInfo.bmHeight/2;/绘制秒数指针CPen sec

32、ondPen(PS_SOLID,3,RGB(200,0,0);pDC - SelectObject(secondPen);pDC - MoveTo(CPoint(x0,y0);int secondX = (int)(zoomR-22) * sin(rate * second)+ x0);int secondY = (int)(-(zoomR-22) * sin(rate * second +halfPi)+ y0);pDC - LineTo(CPoint(secondX,secondY);/绘制分钟数指针CPen minutePen(PS_SOLID,8,RGB(0,255,0);pDC -

33、SelectObject(minutePen);pDC - MoveTo(CPoint(x0,y0);int minuteX = (int)(zoomR-60) * sin(rate * minute)+ x0);int minuteY = (int)(-(zoomR-60) * sin(rate * minute +halfPi)+ y0);pDC - LineTo(CPoint(minuteX,minuteY);/绘制小时数指针*/double hourRate=(double)(2.0*pi/12.0);if(hour 12)hour -= 12;CPen hourPen(PS_SOLI

34、D,12,RGB(0,0,255);pDC - SelectObject(hourPen);pDC - MoveTo(CPoint(x0,y0);int hourX = (int)(zoomR-100) * sin(hourRate * hour )+ x0);int hourY = (int)(-(zoomR-100) * sin(hourRate * hour +halfPi)+ y0);pDC - LineTo(CPoint(hourX,hourY);CCk52Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw co

35、de for native data here设定闹钟时间代码如下:void Cabao:OnOK()/ TODO: Add extra validation hereUpdateData(TRUE);s=m_a+时”+m_b+分+m_c+秒;MessageBox(s, 设定成功 ,MB_OK);SetTimer(2,1000,NULL);CDialog:OnOK();定时器状态栏显示系统时间以及判断闹钟是否时间到代码如下:void CMainFrame:OnTimer(UINT nIDEvent)/ TODO: Add your message handler code here and/o

36、r call default/获取当前系统时间显示到静态文本框time 上CString str;CTime t = CTime:GetCurrentTime();str.Format(%d 时 分 秒,t.GetHour(),t.GetMinute(),t.GetSecond();/ 判断当前时间与设定时间是否一致if (s=str)PlaySound(1.wav,NULL,SND_FILENAME|SND_ASYNC);MessageBox(str,TIMEs UP!,MB_OK);Invalidate();CTime time;time=CTime:GetCurrentTime();/ 得到当前时间CString s=time.Format(%H:%M:%S);/ 转换时间格式m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),s); / 显示时钟CFrameWnd:OnTimer(nIDEvent);第五章 课程设计总结经过以上步骤, 课程设计所要求设计的模拟时钟便成功完成了, 它能显示指针式和数字式的时钟, 并且与计算机系统时间保持一致, 也可以打开菜单项进行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论