收藏 分销(赏)

c专业课程设计实验报告.doc

上传人:快乐****生活 文档编号:2864524 上传时间:2024-06-07 格式:DOC 页数:10 大小:105.54KB
下载 相关 举报
c专业课程设计实验报告.doc_第1页
第1页 / 共10页
c专业课程设计实验报告.doc_第2页
第2页 / 共10页
c专业课程设计实验报告.doc_第3页
第3页 / 共10页
c专业课程设计实验报告.doc_第4页
第4页 / 共10页
c专业课程设计实验报告.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

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

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

3、要求含有下列基础功效:l 数据浏览和查询l 数据统计l 数据多种报表l 打印输出l 帮助系统多个形式窗体设计(最少有查询窗体、输入窗体)注意:开发应用程序工作量应确保在2周时间完成,工作量不能太少或太多。能够2人合作,但必需将各自分工明确。4. 写出设计论文论文基础内容及撰写次序要求:l 内容摘要l 系统开发设计思想l 系统功效及系统设计介绍l 系统开发体会论文基础格式要求:l 封面,见附件1l 正文,见附件2 考评方法和评分措施l 出勤考评成绩占总成绩20%。l 设计结果评价总总成绩60%。l 实践论文评价占总成绩20%。6月6日时钟控件摘要:使用vc+6.0编写一个模拟时钟程序,此程序在屏

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

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

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

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

8、。在“时钟控制”菜单中添加三个菜单选项“开启时钟”、“停止时钟”和“时间设置”。并在菜单属性项中设定“开启时钟”菜单ID标号为ID_START,“停止时钟”菜单ID标号为ID_STOP,“时间设置”菜单ID标号为ID_SETTIME。(3)利用ClassWizard为视图类添加菜单命令处理函数。进入ClassWizardMessage Maps选项卡,选择Class Name项为CClockView类,在Object IDs列表框中分别选择新添加菜单选项ID,在Messages列表框中选择COMMAND,按下Add Function按钮添加组员函数。ClassWizard会为“开启时钟”、“停

9、止时钟”和“时间设置”菜单选项添加对应消息响应函数OnStart ( )、OnStop ( )和OnSettime ( )。(4)利用ClassWizard为视图类添加定时器和鼠标消息处理函数。进入ClassWizardMessage Maps选项卡,选择Class Name项为 CClockView类,在Messages列表框中分别选择定时器消息WM_TIMER和鼠标消息WM_LBUTIONDOWN,按下Add Function按钮添加组员函数。ClassWizard会添加对应定时器和鼠标消息响应函数OnTimer和OnLButtonDown。(5)使用Developer Studio菜单I

10、nsert / Resource选项调出Insert Source对话框,为项目添加新对话框资源。在对话框属性中,修改对话框名为“时间设定”。在对话框中增加用来输入年、月、日、时、分、秒编辑框控件。并经过控件属性,将年、月、日、时、分、秒等编辑控件ID改为IDC_YEAR、IDC_MONTH、IDC_DAY、IDC_HOUR、IDC_MINUTE和IDC_SECOND。(6)设计好这个对话框模板后,利用ClassWizard自动建立对话框类。进入ClassWizard后,它会发觉已建立对话框模板资源,并弹出一个对话框问询是否要为该对话框模板建立类。按下“OK”按钮,会弹出New Class对话

11、框,在Name栏填写对话框类名称CSetTimeDlg后按“OK”按钮,即可为对话框创建一个对应类。(7) 利用ClassWizard为对话框类添加和各控件对应数据组员。选择MemberVariables选项卡,确保Class Name项为对话框CSetTimeDlg类,然后在选项卡下方窗口中选择各控件ID并按下“Add Variable”按钮,为其添加对应组员变量,以下表所表示。编辑控件属性Control IDsVariable TypeMember variable nameVariable RangeIDC_YEARintm_Year03000IDC_MONTHintm_Mouth112

12、IDC_DAYimtm_Day131IDC_HOURimtm_Hour023IDC_MINUTEintm_Minute059IDC_SECONDintm_Second059最终一列为变量取值范围。(8)完成以上工作后,即可修改程序框架,在关键部分添加必需代码来实现表盘绘制、计时器设置、指针计算和屏幕重绘等要求。(9)组建、运行、调试。最终效果图3、程序设计过程中碰到问题和处理方法(1)漏打字母。比如在前面clockView中添加引用头文件语句中csettimedlg打成了csetimedlg,而头文件是#include “SetTimeDlg. H”,造成在组建调试时候总是提醒引用不到头文件、

13、没有这个文件,以后是一行行仔细检验代码时候发觉。(2)错打符号。在clockview.cpp中添加代码时候,有个/AFX_DATA_INIT(CSetTimeDlg)/ AFX_DATA_INIT当中和打成了|,结果造成后面设定初始时间代码无法找到对应头文件。这是我经过对比其它没有修改过原来就存在函数格式发觉并更正。这件事也让我纠正了原来一直有一个误区,/符号后面不一定只有对代码无任何影响注释。(3)窗口大小设置问题。我经过movewindow函数来设置窗口大小,不过总是没有成功,以后考虑到窗口大小对程序正常使用没有多大影响,而且设置了窗口大小话,就不好确定表盘右边秒表方框位置了,所以这件事就

14、不了了之了,这也是此次程序设计过程当中一大遗憾。(4)屏幕重绘问题。存在两个问题,第一个是本程序因为完全在OnDraw函数中实现,所以屏幕重绘较为麻烦。假如在OnDarw函数中采取“异或”屏幕重绘方法,在程序窗口最大、最小化及移出屏幕时,会显示异常。经过查阅资料得悉,处理这一问题较理想方法是在定时器处理函数OnTimer中采取“异或”方法直接重绘屏幕,而不采取调用Invalidate ( )函数方法;同时在OnDraw函数中显示指针最终状态,方便处理程序窗口最大、最小化及移出屏幕情况。第二个是采取全屏删除式重绘则屏幕闪烁显著,显示效果不佳。能够经过采取非删除式重绘方法来缓解这一现象。 三、 时

15、钟开发体会这是我第一次使用mfc开发小程序,因为只是对vc+和mfc相关知识掌握程度不是很高,所以我在图书馆和网络当中查找了很多相关资料,不过甚至照着书本制作过程当中还是出现了很多问题,使得我调试了很长时间,才发觉这是一件很费精力事情,这件事使得我认为程序开发是很不轻易,尤其是大型程序。另外,这次计算机课程设计不仅让我巩固了以前所学编程方面知识、学到了很多课堂上所学不到知识,而且让我明白了一个道理,“千里之堤毁于蚁穴”,不管是编程时候,还是平时生活学习、进行科学研究时候,全部要养成严谨、仔细作风,不然就算再努力,最终得到可能还是零。最终,我要对全部在我完成课程设计过程当中提供过帮助老师和同学表示衷心感谢,尤其要感谢裘老师、李老师,是你们对我耐心讲解和帮助,才让我顺利完成了此次课程设计;是你们,给我提供了这么一个补充自我、提升自我机会和平台,谢谢你们!

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服