c++课程设计实验报告_第1页
c++课程设计实验报告_第2页
c++课程设计实验报告_第3页
c++课程设计实验报告_第4页
c++课程设计实验报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、C+课程设计实验报告中南大学本科生课程设计(实践)任务书、设计报告(C+程序设计)题目时钟控件学生姓名指导教师学院交通运输工程学院专业班级学生学号计算机基础教学实验中心2012年9月7日C+程序设计基础课程设计任务书对象:粉冶、信息、能源、交通工程实验2101学生时间:2012.62周(18-19周)指导教师:王小玲1 .课程设计的任务、性质与目的本课程设计是在学完C+程序设计基础课程后,进行的一项综合程序设计。在设计当中学生综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的应用程序系统。通过此设计进一步提高学生的动手能力。并能使学生清楚的知道开发一个管理应用程序的思想

2、、方法和流程。2 .课程设计的配套教材及参考书 C+程序设计,铁道出版社,主编杨长兴刘卫国。 C+程序设计实践教程,铁道出版社,主编刘卫国杨长兴。 VisualC+课程设计案例精编,中国水力电力出版社,严华峰等编著。3 .课程设计的内容及要求(1)自己任选一个题目进行开发(如画笔、游戏程序、练习打字软件等),要求利用MFC工具操作实现。(2)也可选一个应用程序管理系统课题(3)(如:通讯录管理系统;产品入库查询系统;学生成绩管理;图书管理等);设计所需数据库及数据库中的数据表,建立表之间的关系。设计所选课题的系统主封面(系统开发题目、作者、指导教师、日期)。设计进入系统的各级口令(如系统管理员

3、口令,用户级口令)。设计系统的主菜单。要求具备下列基本功能:数据的浏览和查询数据的统计数据的各种报表打印输出帮助系统多种形式的窗体设计(至少有查询窗体、输入窗体)注意:开发的应用程序工作量应保证在2周时间完成,工作量不能太少或太多。可以2人合作,但必须将各自的分工明确。2.写出设计论文论文基本内容及撰写顺序要求:内容摘要系统开发设计思想系统功能及系统设计介绍系统开发的体会论文基本格式要求:封面,见附件1正文,见附件2考核方式与评分办法出勤考核成绩占总成绩20%。设计成果评价总总成绩的60%。实践论文评价占总成绩的20%。2012年6月6日时钟控件摘要:使用vc+6.0编写一个模拟时钟程序,此程

4、序在屏幕左方有一个指针式钟面,右方有两个矩形框,上面以数字方式显示日期和时间,该时间应与指针显示的时间一致,下方的矩形框作为秒表。用菜单选项或按钮设置时间和秒表。时间不必与机器系统时间相同,可任意设置。关键词:c+程序设计、mfc.exe、面向对象、时钟、秒表1、 时钟程序开发设计思想该程序设计主要涉及到的知识点有:时钟指针运动算法、屏幕重绘方法、定时器消息、鼠标消息、菜单命令、对话框、画笔/画刷、显示文字、修改程序图标等。其中最关键的是指针运动算法和屏幕重绘方法的应用。其中,在设计表盘指针的时候,由于不论何种指针,每次转动均以兀/30弧度(一秒的角度)为基本单位,且都以表盘中心为转动圆心。计

5、算指针端点(x,y)的公式如下:x=圆心x坐标+指针长度*cos(指针方向角)y=圆心y坐标+指针长度*sin(指针方向角)而指针长度是指自圆心至指针一个端点的长度(是整个指针的一部分),由于指针可能跨越圆心,因此一个指针需要计算两个端点。另一方面,三个指针的运动是相关联的,秒针转一圈引起分针运动一格,分针转一圈引起时针运动一格,因此需要使用一个定时器消息来处理指针的运动。若用三个定时器消息分别处理时针、分针和秒针的运动,就会使问题复杂化且不易实现三个指针联动的正确规律。采用一个定时器消息可以很容易实现指针联动算法。代码的编写当中可以使用我们所学过的if语句来实现指针的联动。由于屏幕的重绘速度

6、很快(50ms一次),如果采用全屏删除式重绘则闪烁十分明显,显示效果不佳。本程序采用非删除式重绘,假定指针将要移动一格,则先采用背景色(这里是白色)重绘原来指针以删除原来位置的指针,再采用指针的颜色在当前位置绘制指针;如果指针没有动,则直接绘制指针。另外,秒表采用的是单独的定时器消息控制。2、 时钟功能及程序设计介绍1、系统功能介绍( 1)左边部分是一个圆形表盘,右边部分上面是一个数字式时钟,右边下面是一个秒表。( 2)圆形表盘时针、分针而后秒针运动规律正确且即使重合在一起也能清楚的进行辨认;数字式时钟可以显示年、月、日、时、分、秒等数据。时间显示与指针式时钟显示一致;秒表显示窗中显示从0开始

7、的时间,单位为百分之一秒。再次按下秒表控制按钮后计时停止,该窗口显示累计时间。( 3)按下设置时间菜单项可弹出一对话框,用于设置当前的时间和日期。( 4)具有一个美观大方的图标和个性的帮助信息。2、程序设计介绍( 1)首先在mfcAppWizard中生成一个名为Clock的单文档程序框架。然后在classview中修改cclockapp中lnitlnstance中的代码,去掉单文档窗口中上面和下面部分的工具栏,使得界面更加美观。然后修改resourceview中dialog和version下面的信息,添加、修改程序的图标与定制个性化的帮助信息。( 2)编辑项目的菜单资源,在主框架窗口的主菜单(

8、IDR_MAINFRAM曲添加一个名为“时钟控制”的下拉菜单。在“时钟控制”菜单中添加三个菜单选项“启动时钟”、“停止时钟”和“时间设置”。并在菜单属性项中设定“启动时钟”菜单的ID标号为ID_START,“停止时钟”菜单的ID标号为ID_STOP,“时间设置”菜单的ID标号为ID_SETTIME。( 3)利用ClassWizard为视图类添加菜单命令处理函数。进入ClassWizard的MessageMaps选项卡,选择ClassName项为CClockView类,在ObjectIDs列表框中分别选择新添加的菜单选项的ID,在Messages列表框中选择COMMAN胺下AddFunction

9、按钮添加成员函数。ClassWizard会为“启动时钟”、“停止时钟”和“时间设置”菜单选项添加相应的消息响应函数OnStart()、OnStop()和OnSettime()。( 4)利用ClassWizard为视图类添加定时器和鼠标消息处理函数。进入ClassWizard的MessageMaps选项卡,选择ClassName项为CClockView类,在Messages列表框中分别选择定时器消息WM_TIMER鼠标消息WM_LBUTIONDOWNFAddFunction按钮添加成员函数。ClassWizard会添加相应的定时器和鼠标消息响应函数OnTimer和OnLButtonDown( 5

10、)使用DeveloperStudio菜单的Insert/Resource选项调出InsertSource对话框,为项目添加新的对话框资源。在对话框属性中,修改对话框名为“时间设定”。在对话框中增加用来输入年、月、日、时、分、秒的编辑框控件。并通过控件属性,将年、月、日、时、分、秒等编辑控件的ID改为IDC_YEAR、IDC_MONT、HIDC_DAY、IDC_HOURIDC_MINUT序口IDC_SECOND(6)设计好这个对话框模板后,利用ClassWizard自动建立对话框类。进入ClassWizard后,它会发现已建立的对话框模板资源,并弹出一个对话框询问是否要为该对话框模板建立类。按下

11、“OK”按钮,会弹出NewClass对话框,在Name栏填写对话框类的名称CSetTimeDlg后按“OK按钮,即可为对话框创建一个对应的类(7)利用ClassWizard为对话框类添加与各控件对应的数据成员。选择MemberVariables选项卡,确保ClassName项为对话框CSetTimeDlg类,然后在选项卡下方的窗口中选择各控件的ID并按下“AddVariable”按钮,为其添加对应成员变量,如下表所示编辑控件属性ControlIDsVariableTypeMembervariablenameVariableRangeIDC_YEARintm_Year03000IDC_MONTH

12、1intm_Mouth112IDC_DAYimtm_Day131IDC_HOURimtm_Hour023IDC_MINUTEintm_Minute059IDC_SECONDintm_Second059最后一列为变量取值范围。(8)完成以上工作后,即可修改程序框架,在关键部分添加必要的代码来实现表盘的绘制、计时器的设置、指针的计算和屏幕的重绘等要求。(9)组建、运行、调试。最终效果图王 UEitkri - dock刘胆KEJ米配嚼EH flftE*当if时网整点口弁“杪启动0L 29停止3、程序设计过程中遇到的问题以及解决方法(1)漏打字母。比如在前面clockView中添加的引用头文件的语句中

13、csettimedlg打成了csetimedlg,而头文件是#include“SetTimeDlg.H,'导致在组建调试的时候总是提示引用不到头文件、没有这个文件,后来是一行行仔细检查代码的时候发现的。(2)错打符号。在clockview.cpp中添加代码的时候,有个AFX_DATA_INIT(CSetTimeDlg)/AFX_DATA_INIT当中的和打成了|,结果导致后面设定初始时间的代码无法找到对应的头文件。这是我通过对比其他没有修改过的原来就存在的函数的格式发现并改正的。这件事也让我纠正了原来一直有的一个误区,符号后面的不一定只有对代码无任何影响的注释。(3)窗口大小设置的问题

14、。我通过movewindow函数来设置窗口大小,但是总是没有成功,后来考虑到窗口大小对程序的正常使用没有多大影响,而且设置了窗口大小的话,就不好确定表盘右边秒表方框的位置了,所以这件事就不了了之了,这也是本次程序设计过程当中的一大遗憾。4)屏幕的重绘问题。存在两个问题,第一个是本程序由于完全在OnDraw函数中实现,因此屏幕重绘较为麻烦。如果在OnDarw函数中采用“异或”屏幕重绘方式,在程序窗口最大、最小化及移出屏幕时,会显示异常。通过查阅资料得知,解决这一问题较理想的方式是在定时器处理函数OnTimer中采用“异或”方式直接重绘屏幕,而不采用调用Invalidate()函数的方式;同时在OnDraw函数中显示指针的最后状态,以便处理程序窗口最大、最小化及移出屏幕的情况。第二个是采用全屏删除式重绘则屏幕闪烁明显,显示效果不佳。可以通过采用非删除式重绘的方式来缓解这一现象。三、时钟开发的体会这是我第一次使用mfc开发小程序,由于只是对vc+和mfc相关的知识的掌握程度不是很高,所以我在图书馆和网络当中查找了很多相关的资料,但是甚至照着书本制作的过程当中还是出现了很多问题,使得我调试了很长时间,才发现这是一件很费精力的事情,这件事使得我觉得程序开发是很不容易的,尤其是大型的程序。另外,这次计算机课程设计不

温馨提示

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

评论

0/150

提交评论