c++课程设计实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 课程设计的配套教材及参考书 《C++程序设计》,铁道出版社,主编 杨长兴 刘卫国 。 《C++程序设计实践教程》,铁道出版社,主编 刘卫国 杨长兴。 《Visual C++ 课程设计案例精编》,中国水力电力出版社,严华峰等编著。 3. 课程设计的内容及要求
(1) 自己任选一个题目进行开发(如画笔、游戏程序、练习打字软件等),要求 利用 MFC 工具操作实现。
多种形式的窗体设计(至少有查询窗体、输入窗体)
注意:开发的应用程序工作量应保证在 2 周时间完成,工作量不能太少 或太多。可以 2 人合作,但必须将各自的分工明确。
4. 写出设计论文 论文基本内容及撰写顺序要求: 内容摘要 系统开发设计思想 系统功能及系统设计介绍 系统开发的体会 论文基本格式要求: 封面,见附件 1 正文,见附件 2
并弹出一个对话框询问是否要为该对话框模板建立类。按下“OK”按
钮,会弹 出 New Class 对话框, 在 Name 栏填写对 话框类的名称
CSetTimeDlg 后按“OK”按钮,即可为对话框创建一个对应的类。
(7) 利用 ClassWizard 为对话框类添加与各控件对应的数据成
员。选择 MemberVariables 选项卡,确保 Class Name 项为对话框
(2)错打符号。在 clockview.cpp 中添加代码的时候,有个 //{{AFX_DATA_INIT(CSetTimeDlg)……// }}AFX_DATA_INIT 当中的 {{和}}打成了||,结果导致后面设定初始时间的代码无法找到对应的 头文件。这是我通过对比其他没有修改过的原来就存在的函数的格式 发现并改正的。这件事也让我纠正了原来一直有的一个误区,//符号 后面的不一定只有对代码无任何影响的注释。
(2)编辑项目的菜单资源,在主框架窗口的主菜单 (IDR_MAINFRAME)中添加一个名为“时钟控制”的下拉菜单。在“时 钟控制”菜单中添加三个菜单选项“启动时钟”、“停止时钟”和“时 间设置”。并在菜单属性项中设定“启动时钟”菜单的 ID 标号为 ID_START,“停止时钟”菜单的 ID 标号为 ID_STOP,“时间设置”菜 单的 ID 标号为 ID_SETTIME。
(4)利用 ClassWizard 为视图类添加定时器和鼠标消息处理函 数。进入 ClassWizard 的 Message Maps 选项卡,选择 Class Name 项 为 CClockView 类 , 在 Messages 列 表 框 中 分 别 选 择 定 时 器 消 息 WM_TIMER 和鼠标消息 WM_LBUTIONDOWN,按下 Add Function 按钮添加
x =圆心 x 坐标 + 指针长度 * cos (指针方向角) y =圆心 y 坐标 + 指针长度 * sin (指针方向角) 而指针长度是指自圆心至指针一个端点的长度(是整个指针的一 部分),由于指针可能跨越圆心,因此一个指针需要计算两个端点。 另一方面,三个指针的运动是相关联的,秒针转一圈引起分针运动一 格,分针转一圈引起时针运动一格,因此需要使用一个定时器消息来 处理指针的运动。若用三个定时器消息分别处理时针、分针和秒针的
这是我第一次使用 mfc 开发小程序,由于只是对 vc++和 mfc 相
关的知识的掌握程度不是很高,所以我在图书馆和网络当中查找了很 多相关的资料,但是甚至照着书本制作的过程当中还是出现了很多问 题,使得我调试了很长时间,才发现这是一件很费精力的事情,这件 事使得我觉得程序开发是很不容易的,尤其是大型的程序。
(1)首先在 mfc AppWizard 中生成一个名为 Clock 的单文档程 序框架。然后在 classview 中修改 cclockapp 中 lnitlnstance[]中 的代码,去掉单文档窗口中上面和下面部分的工具栏,使得界面更加 美观。然后修改 resourceview 中 dialog 和 version 下面的信息,添 加、修改程序的图标与定制个性化的帮助信息。
另外,秒表采用的是单独的定时器消息控制。 二、 时钟功能及程序设计介绍
1、系统功能介绍 (1)左边部分是一个圆形表盘,右边部分上面是一个数字式时 钟,右边下面是一个秒表。 (2)圆形表盘时针、分针而后秒针运动规律正确且即使重合在 一起也能清楚的进行辨认;数字式时钟可以显示年、月、日、时、分、 秒等数据。时间显示与指针式时钟显示一致;秒表显示窗中显示从 0 开始的时间,单位为百分之一秒。再次按下秒表控制按钮后计时停止, 该窗口显示累计时间。 (3)按下设置时间菜单项可弹出一对话框,用于设置当前的时 间和日期。 (4)具有一个美观大方的图标和个性的帮助信息。 2、程序设计介绍
(3)利用 ClassWizard 为视图类添加菜单命令处理函数。进入 ClassWizard 的 Message Maps 选 项 卡 , 选 择 Class Name 项 为 CClockView 类,在 Object IDs 列表框中分别选择新添加的菜单选项 的 ID,在 Messages 列表框中选择 COMMAND,按下 Add Function 按钮 添加成员函数。ClassWizard 会为“启动时钟”、“停止时钟”和“时 间设置”菜单选项添加相应的消息响应函数 OnStart ( )、OnStop ( ) 和 OnSettime ( )。
该程序设计主要涉及到的知识点有:时钟指针运动算法、屏幕重 绘方法、定时器消息、鼠标消息、菜单命令、对话框、画笔/画刷、 显示文字、修改程序图标等。其中最关键的是指针运动算法和屏幕重 绘方法的应用。
其中,在设计表盘指针的时候,由于不论何种指针,每次转动均 以π/30 弧度(一秒的角度)为基本单位,且都以表盘中心为转动圆 心。计算指针端点(x, y)的公式如下:
中南大学
本科生课程设计(实践)任务书、设计报告 (C++程序设计)
题目 学生姓名 指导教师 学院 专业班级 学生学号
时钟控件 交通运输工程学院
计算机基础教学实验中心
2012 年 9 月 7 日
《C++程序设计基础》课程设计任务书
对象:粉冶、信息、能源、交通工程实验 2101 学生 时间:2012.6 2 周(18~19 周)
另外,这次计算机课程设计不仅让我巩固了以前所学的编程方面 的知识、学到了很多课堂上所学不到知识,而且让我明白了一个道理, “千里之堤毁于蚁穴”,无论是编程的时候,还是平时生活学习、进 行科学研究的时候,都要养成严谨、仔细的作风,否则就算再努力, 最后得到的可能还是零。
最后,我要对所有在我完成课程设计的过程当中提供过帮助的老 师和同学表示衷心的感谢,尤其要感谢裘老师、李老师,是你们对我 耐心的讲解和帮助,才让我顺利的完成了本次课程设计;是你们,给 我提供了这样一个补充自我、提升自我的机会和平台,谢谢你们!
(2) 也可选一个应用程序管理系统课题(如:通讯录管理系统;产品入库查询 系统;学生成绩管理;图书管理等);
设计所需数据库及数据库中的数据表,建立表之间的关系。
设计所选课题的系统主封面(系统开发题目、作者、指导教师、日期)。
设计进入系统的各级口令(如系统管理员口令,用户级口令)。
设计系统的主菜单。要求具备下列基本功能: 数据的浏览和查询 数据的统计 数据的各种报表 打印输出 帮助系统
考核方式与评分办法 出勤考核成绩占总成绩 20%。 设计成果评价总总成绩的 60%。 实践论文评价占总成绩的 20%。
2012 年 6 月 6 日
时钟控件
摘要:使用 vc++6.0 编写一个模拟时钟程序,此程序在屏幕左方有一 个指针式钟面,右方有两个矩形框,上面以数字方式显示日期和时间, 该时间应与指针显示的时间一致,下方的矩形框作为秒表。用菜单选 项或按钮设置时间和秒表。时间不必与机器系统时间相同,可任意设 置。 关键词:c++程序设计、mfc[.exe]、面向对象、时钟、秒表 一、 时钟程序开发设计思想
0~3000
IDC_MONTH
int
m_Mouth
1~12
IDC_DAY
imt
ຫໍສະໝຸດ Baidu
IDC_HOUR
imt
IDC_MINUTE
int
IDC_SECOND
int
m_Day m_Hour m_Minute m_Second
1~31 0~23 0~59 0~59
最后一列为变量取值范围。 (8)完成以上工作后,即可修改程序框架,在关键部分添加必 要的代码来实现表盘的绘制、计时器的设置、指针的计算和屏幕的重 绘等要求。 (9)组建、运行、调试。
(3)窗口大小设置的问题。我通过 movewindow 函数来设置窗口 大小,但是总是没有成功,后来考虑到窗口大小对程序的正常使用没 有多大影响,而且设置了窗口大小的话,就不好确定表盘右边秒表方 框的位置了,所以这件事就不了了之了,这也是本次程序设计过程当 中的一大遗憾。
(4)屏幕的重绘问题。存在两个问题,第一个是本程序由于完 全在 OnDraw 函数中实现,因此屏幕重绘较为麻烦。如果在 OnDarw 函 数中采用“异或”屏幕重绘方式,在程序窗口最大、最小化及移出屏 幕时,会显示异常。通过查阅资料得知,解决这一问题较理想的方式 是在定时器处理函数 OnTimer 中采用“异或”方式直接重绘屏幕,而 不采用调用 Invalidate ( )函数的方式;同时在 OnDraw 函数中显示 指针的最后状态,以便处理程序窗口最大、最小化及移出屏幕的情况。 第二个是采用全屏删除式重绘则屏幕闪烁明显,显示效果不佳。可以 通过采用非删除式重绘的方式来缓解这一现象。 三、 时钟开发的体会
最终效果图
3、程序设计过程中遇到的问题以及解决方法 (1)漏打字母。比如在前面 clockView 中添加的引用头文件的 语 句 中 csettimedlg 打 成 了 csetimedlg , 而 头 文 件 是 #include “SetTimeDlg. H”,导致在组建调试的时候总是提示引用不到头文件、 没有这个文件,后来是一行行仔细检查代码的时候发现的。
指导教师:王小玲
1. 课程设计的任务、性质与目的 本课程设计是在学完《C++程序设计基础》课程后,进行的一项综合程序设计。在设计 当中学生综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型
的应用程序系统。通过此设计进一步提高学生的动手能力。并能使学生清楚的知道开发一个
管理应用程序的思想、方法和流程。
运动,就会使问题复杂化且不易实现三个指针联动的正确规律。采用 一个定时器消息可以很容易实现指针联动算法。代码的编写当中可以 使用我们所学过的 if 语句来实现指针的联动。
由于屏幕的重绘速度很快(50 ms 一次),如果采用全屏删除式 重绘则闪烁十分明显,显示效果不佳。本程序采用非删除式重绘,假 定指针将要移动一格,则先采用背景色(这里是白色)重绘原来指针 以删除原来位置的指针,再采用指针的颜色在当前位置绘制指针;如 果指针没有动,则直接绘制指针。
CSetTimeDlg 类,然后在选项卡下方的窗口中选择各控件的 ID 并按
下“Add Variable…”按钮,为其添加对应成员变量,如下表所示。
编辑控件属性
Control Variable Type
Member
Variable
IDs
variable name Range
IDC_YEAR
int
m_Year
月、日、时、分、秒的编辑框控件。并通过控件属性,将年、月、日、
时、分、秒等编辑控件的 ID 改为 IDC_YEAR、IDC_MONTH、IDC_DAY、
IDC_HOUR、IDC_MINUTE 和 IDC_SECOND。
(6)设计好这个对话框模板后,利用 ClassWizard 自动建立对
话框类。进入 ClassWizard 后,它会发现已建立的对话框模板资源,
成员函数。ClassWizard 会添加相应的定时器和鼠标消息响应函数
OnTimer 和 OnLButtonDown。
(5)使用 Developer Studio 菜单的 Insert / Resource…选项
调出 Insert Source 对话框,为项目添加新的对话框资源。在对话框
属性中,修改对话框名为“时间设定”。在对话框中增加用来输入年、
相关文档
最新文档