c++课程设计实验报告_第1页
c++课程设计实验报告_第2页
c++课程设计实验报告_第3页
c++课程设计实验报告_第4页
c++课程设计实验报告_第5页
免费预览已结束,剩余4页可下载查看

下载本文档

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

文档简介

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

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

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

4、:使用vc+6.0编写一个模拟时钟程序, 此程序在屏幕左方有一 个指针式钟面,右方有两个矩形框,上面以数字方式显示日期和时间, 该时间应与指针显示的时间一致, 下方的矩形框作为秒表。 用菜单项 选择项或按钮设置时间和秒表。 时间不必与机器系统时间相同, 可任 意设置。关键词:C+程序设计、mfc.exe、面向对象、时钟、秒表仅供参考一、时钟程序开发设计思想该程序设计主要涉及到的知识点有: 时钟指针运动算法、 屏幕重 绘方法、定时器消息、鼠标消息、菜单命令、对话框、画笔/画刷、 显示文字、 修改程序图标等。 其中最关键的是指针运动算法和屏幕重 绘方法的应用。其中,在设计表盘指针的时候,由于不管何

5、种指针,每次转动均以n/30弧度一秒的角度为基本单位,且都以表盘中心为转动圆 心。计算指针端点x, y的公式如下:x =圆心x坐标+指针长度* cos (指针方向角)y =圆心y坐标+指针长度* sin (指针方向角)而指针长度是指自圆心至指针一个端点的长度 是整个指针的一 部分,由于指针可能跨越圆心,因此一个指针需要计算两个端点。 另一方面, 三个指针的运动是相关联的, 秒针转一圈引起分针运动一 格,分针转一圈引起时针运动一格, 因此需要使用一个定时器消息来 处理指针的运动。 假设用三个定时器消息分别处理时针、 分针和秒针 的运动,就会使问题复杂化且不易实现三个指针联动的正确规律。 采 用一

6、个定时器消息可以很容易实现指针联动算法。 代码的编写当中可 以使用我们所学过的if语句来实现指针的联动。由于屏幕的重绘速度很快50 ms一次,如果采用全屏删除式 重绘则闪烁十分明显,显示效果不佳。本程序采用非删除式重绘,假 定指针将要移动一格,则先采用背景色这里是白色重绘原来指针 以删除原来位置的指针, 再采用指针的颜色在当前位置绘制指针; 如 果指针没有动,则直接绘制指针。另外,秒表采用的是单独的定时器消息控制。二、时钟功能及程序设计介绍1、系统功能介绍1左边部分是一个圆形表盘,右边部分上面是一个数字式时 钟,右边下面是一个秒表。2圆形表盘时针、分针而后秒针运动规律正确且即使重合在 一起也能

7、清楚的进行识别; 数字式时钟可以显示年、 月、日、时、分、 秒等数据。时间显示与指针式时钟显示一致; 秒表显示窗中显示从0开始的时间, 单位为百分之一秒。再次按下秒表控制按钮后计时停止, 该窗口显示累计时间。3按下设置时间菜单项可弹出一对话框,用于设置当前的时 间和日期。4具有一个美观大方的图标和个性的帮助信息。2、程序设计介绍1首先在mfc AppWizard中生成一个名为Clock的单文档程 序框架。然后在classview中修改cclockapp中lnitlnstance中 的代码, 去掉单文档窗口中上面和下面部分的工具栏, 使得界面更加 美观。然后修改resourceview中dial

8、og和version下面的信息, 添 加、修改程序的图标与定制个性化的帮助信息。2编辑项目的菜单资源,在主框架窗口的主菜单 IDR_MAINFRAM冲添加一个名为“时钟控制”的下拉菜单。在“时 钟控制”菜单中添加三个菜单项选择项“启动时钟” 、 “停止时钟”和 “时间设置”。 并在菜单属性项中设定“启动时钟”菜单的ID标号为ID_START“停止时钟”菜单的ID标号为ID_STOP“时间设置”菜 单的ID标号为ID_SETTIME。3利用ClassWizard为视图类添加菜单命令处理函数。进入仅供参考ClassWizard的Message Maps选项卡,选择Class Name项为CCIoc

9、kView类, 在Object IDs列表框中分别选择新添加的菜单项选 择项的ID, 在Messages列表框中选择COMMAND按下Add Function按钮添加成员函数。ClassWizard会为“启动时钟”、“停止时钟”和 “时间设置”菜单项选择项添加相应的消息响应函数OnStart ( )、OnStop ( )和OnSettime ( )。4利用ClassWizard为视图类添加定时器和鼠标消息处理函 数。进入ClassWizard的MessageMaps选项卡,选择Class Name项 为CClockView类,在Messages列表框中分别选择定时器消息WM_TIME和鼠标消息

10、WM_LBUTIONDOWN下Add Function按钮添加 成员函数。ClassWizard会添加相应的定时器和鼠标消息响应函数On Timer和On LButto nDown5使用Developer Studio菜单的Insert / Resource选项调出Insert Source对话框,为项目添加新的对话框资源。在对话框 属性中,修改对话框名为“时间设定”。在对话框中增加用来输入年、 月、日、时、分、秒的编辑框控件。并通过控件属性,将年、月、日、 时、分、秒等编辑控件的ID改为IDC_YEAR IDC_MONTHIDC_DAY IDC_HOURIDC_MINUT和IDC_SECON

11、D6设计好这个对话框模板后,利用ClassWizard自动建立对 话框类。进入ClassWizard后,它会发现已建立的对话框模板资源, 并弹出一个对话框询问是否要为该对话框模板建立类。按下“OK按钮,会弹出New Class对话框,在Name栏填写对话框类的名称CSetTimeDIg后按“OK按钮,即可为对话框创建一个对应的类。7利用ClassWizard为对话框类添加与各控件对应的数据成员。选择Membervariables选项卡,确保Class Name项为对话框CSetTimeDlg类,然后在选项卡下方的窗口中选择各控件的ID并按下“Add Variable”按钮,为其添加对应成员变量

12、,如下表所示。编辑控件属性Co ntrolIDsVariable TypeMember variablen ameVariableRangeIDC_YEARintm_Year03000IDC_MONT卜1intm_Mouth112仅供参考IDC_DAYimtm_Day131IDC_HOURimtm_Hour023IDC_MINUTEintm_Mi nute059IDC_SECONDintm_Sec ond059最后一列为变量取值范围。8完成以上工作后,即可修改程序框架,在关键部分添加必要的代码来实现表盘的绘制、计时器的设置、指针的计算和屏幕的重 绘等要求。9组建、运行、调试。最终效果图3、程序

13、设计过程中遇到的问题以及解决方法1漏打字母。比方在前面clockView中添加的引用头文件的语句中csettimedlg打成了csetimedlg,而头文件是#in elude“SetTimeDIg. H,导致在组建调试的时候总是提示引用不到头文件、 没有这个文件,后来是一行行仔细检查代码的时候发现的。2错打符号。在clockview.cpp中添加代码的时候,有个AFX_DATA_INIT(CSetTimeDlg)/ AFX_DATA_INIT当中的和打if汕0; 11-口*1口 * * o *flit成了|,结果导致后面设定初始时间的代码无法找到对应的 头文件。这是我通过比照其他没有修改过的

14、原来就存在的函数的格式 发现并改正的。 这件事也让我纠正了原来一直有的一个误区,/符号 后面的不一定只有对代码无任何影响的注释。3窗口大小设置的问题。我通过movewindow函数来设置窗口 大小,但是总是没有成功, 后来考虑到窗口大小对程序的正常使用没 有多大影响, 而且设置了窗口大小的话, 就不好确定表盘右边秒表方 框的位置了, 所以这件事就不了了之了, 这也是本次程序设计过程当 中的一大遗憾。4屏幕的重绘问题。存在两个问题,第一个是本程序由于完 全在OnDraw函数中实现, 因此屏幕重绘较为麻烦。 如果在On Darw函 数中采用“异或”屏幕重绘方式,在程序窗口最大、最小化及移出屏 幕时

15、,会显示异常。通过查阅资料得知, 解决这一问题较理想的方式 是在定时器处理函数On Timer中采用“异或”方式直接重绘屏幕,而 不采用调用Inv alidate ()函数的方式;同时在OnDraw函数中显示指针的最后状态, 以便处理程序窗口最大、 最小化及移出屏幕的情况。 第二个是采用全屏删除式重绘则屏幕闪烁明显, 显示效果不佳。 可以 通过采用非删除式重绘的方式来缓解这一现象。三、时钟开发的体会这是我第一次使用mfc开发小程序,由于只是对vc+和mfc相 关的知识的掌握程度不是很咼,所以我在图书馆和网络当中查找了很 多相关的资料,但是甚至照着书本制作的过程当中还是出现了很多问 题,使得我调试了很长时间,才发现这是一件很费精力的事情,这件 事使得我觉得程序开发是很不容易的,尤其是大型的程序。仅供参考另外,这次电脑课程设计不

温馨提示

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

评论

0/150

提交评论