您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > VC程序设计 课程设计报告书
VC程序设计课程设计报告书设计题目:简单绘图软件院系:信息工程学院班级:组别:学号:姓名:起止日期:2012年12月10日~2012年12月20日指导教师:目录绪论..............................................................................................3一概要设计.............................................................................41.主要功能...............................................................................42.概要设计功能框架图...........................................................5二设计的详细设计...................................................................61工具栏的编辑........................................................................62状态栏的编辑.......................................................................6三编码和测试.........................................................................91测试方法及其简介...............................................................92测试用例...............................................................................93测试总结.............................................................................13四设计总结...........................................................................131.过程分析.............................................................................132经验教训及分析.................................................................143程序维护.............................................................................14五参考文献...........................................................................14绪论随着时代的发展,计算机逐渐普及。飞速发展的计算机技术,使人类社会走进了信息化和自动化时代,并且计算机的各种智能识别功能也随着计算机的发展得到了迅速的发展。计算机以硬件和软件两条主线,相互促进,不断发展。如果说硬件是计算机的躯体,那么软件就是计算机的灵魂,软件的地位举足轻重。特别是图形图像的计算机处理技术更是有了前所未有的进步和应用。计算机识别也逐渐的从图形图像处理的大环境下分离出来作为一门新的高科技研究领域出现。画图涉及到的学科很多,包括数字信号处理、工程数学、信息论、运筹学等,它与计算机、自动化、生物学、视觉心理和生理学、人工智能、智能信息处理等众多领域交叉、综合集成,有广泛的应用。日常生活、学习中我们经常需要画图,简单的画图我们可以手工画图,但往往还是不能满足需求。因此,借助计算机准确而快速的画图就十分有必要了。好的画图工具能够很好的完成日常生活中的各种画图工作。学习了VisualC++编程后设计开发一个简单的画图软件是对VisualC++编程学习的巩固,知识的掌握以及提高。能够在实践中更深的理解面向对象语言,同时提高了解决问题的能力。该软件功能与Windows下附件中的画图软件有相似功能。本程序是在VisualC++6.0平台上用MFC所编。VC++6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(MicrosoftFoundationClass)类库。MFC中封装了大部分WindowsAPI函数和Windows控件,它包含的功能涉及到整个Windows操作系统。MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。因此,使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。MFC(MicrosoftFoundationClasses),是一个微软公司提供的类库(classlibraries)以C++类的形式封装了Windows的API,,它包含了窗口等许多类的定义。各种类的集合构成了一个应运程序的框架结构,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。MFC6.0版本封装了大约200个类,其中的一些可以被用户直接使用。例如CWnd类封装了窗口的功能,包括打印文本、绘制图形及跟踪鼠标指针的移动等;CsplitterWnd类是从CWnd类派生出来的,继承了基类或称父类CWnd类的所有特性,但增加了自己的功能,实现拆分窗口,使窗口至少可被拆分成两个窗口,用户可以移动两个窗口之间的边框来改变窗口的大小;CtoolBar类可以定义工具栏等。MFC命名的惯例是类的名字通常是由“C”打头;成员变量使用前缀“m_”,接着使用一个字母来指明数据类型,然后是变量的名称;所有的单词用大写字母开头。绘制方面的功能主要包括绘制各种图形,包括直线、矩形、椭圆、扇形、连续线,用笔或画刷自由绘图。绘图时可以选择各种颜色,各种线宽。软件支持保存图形。该软件设计的设计思想是面向对象程序设计的思想。面向对象技术是一个非常实用而强有力的软件开发方法。它具有许多特色。一是方法的唯一性,即方法是对软件开发过程所有阶段进行综合考虑而得到的。二是从生存期的一个阶段到下一个阶段的高度连续性,即在一个阶段所用到的部分与在下一个阶段所使用的部分是衔接的,所使用的技术经过生存期每一阶段后不改变。三是把面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)集成到生存期的相应阶段。该软件是Windows下附件中的画图软件的辅助工具。它可以帮我们完成绘制一些简单的图形,由于笔者所学知识有限,在绘图功能上有许多方面不能满足用户需求。希望读者提出宝贵的意见和建议。一概要设计1.主要功能:(1)刷新:通过Invalidate()函数实现。(2)时钟:通过OnTimer()函数实现。(3)显示鼠标当前位置,通过OnDraw()函数实现。(4)可以打开文件。(5)可以保存图形。2.概要设计功能框架图图1功能框架结构图上图用层次图描述了我们这个软件中我完成的功能,主要包括两个大的方面,即工具栏和状态栏。又将其分为五个小部分:保存,打开,刷新,显示时间,显示当前光标所在位置。状态栏工具栏打开保存刷新显示时间显示坐标简单画图工具二设计的详细设计1工具栏的编辑(1)首先利用MFCAppWizard[exe]向导创建SDI应用程序test。然后在工作区的ResourceView页面选择ToolBar并展开,双击下面的IDR_MAINFRAME项弹出工具栏资源编辑器显示应用程序向导所创建的菜单资源。(2)为工具栏添加工具按钮。在工具栏编辑器中编辑工具栏按钮图形(3)给工具栏中添加“保存”,“打开”,“刷新”。其ID分别是ID_FILE_OPEN,ID_FILE_SAVE,ID_DRAW_CLEAR;(4)结束后,运行程序,如图所示。工具栏添加3个按钮。并且三个按钮均为灰色,处于不可用状态。想要使得工具栏中的新按钮处于可使用状态,就必须为这些按钮添加消息处理函数。(5)为保存按钮添加函数响应消息。(6)为打开按纽添加消息映射函数。(7)为刷新按钮添加消息映射函数。2状态栏的编辑(1)在项目工作去窗口中打开FileView选项卡并展开其选项,在展开的选项中双击SourceFiles,再展开的目录中双击MainFrm.cpp选项,光标移动到编辑区,找到indicators数组,输入代码:IDS_TIMER,IDS_POINTX,IDS_POINTY,(2)在项目工作去窗口中选择ResourceView选项,在展开的选项中双击StringTable选项。(3)双击字符串表,单击编辑区下端空白虚框区,按NewString键,打开其属性框。(4)在ID下来列表框中分别选择IDS_TIMER,IDS_POINTX,IDS_POINTY,(5)运行程序后,状态栏添加了时钟,及表示位置的坐标x,y.,如图2所示:图2添加位置坐标(5)坐标在视图不停地移动,要在状态栏中显示光标位置就必须先获取光标的当前位置,故需要在视图类中添加获取当前位置的消息函数OnMouseMove()。其具体代码如下:voidCTestView::OnMouseMove(UINTnFlags,CPointpoint){//TODO:Addyourmessagehandlercodehereand/orcalldefaultif(nFlags==MK_LBUTTON){CClientDCdc(this);oldpen=dc.SelectObject(previewpen);dc.SetROP2(R2_XORPEN);dc.MoveTo(p0);dc.LineTo(p1);p1=point;dc.MoveTo(p0);dc.LineTo(p1);dc.SelectObject(oldpen);}CView::OnMouseMove(nFlags,point);}(6)状态栏中的时钟格需要显示当前时间,但由于时间在每时每刻不断地变化,所以我们需要添加消息函数来帮助我们获得当前系统时间以便状态栏能准确的更新时间。故而我们在框架窗口类中的OnTimer()函数中填写如下代码来实现获取时间这一功能,具体代码如下:voidCMainFrame::OnTimer(UINTnIDEvent){//TODO:Addyourmessagehandlercodehereand/orcalldefaultCTimetime=CTime::GetCurrentTime();CStringstr=time.Format(%H:%M:%S);CClientDCdc(this);CSizesz=dc.GetTextExtent(str);m_wndStatusBar.SetPaneInfo(3,IDS_TIMER,SBPS_NORMAL,sz.cx);m_wndStatusBar.SetPaneText(3,str);//m_progress.StepIt();CFrameWnd::OnTimer(nIDEvent);}(7)状态栏中要显示时间格就需要一个定时器来显示时间,所以我们需要在框架窗口类中的OnCreate()函数添加一个设置定时器的代码,以助于我们在状态栏显示时间,添加如下代码:S
本文标题:VC程序设计 课程设计报告书
链接地址:https://www.777doc.com/doc-3986198 .html