绘图程序 课程设计报告Word格式文档下载.docx

上传人:b****3 文档编号:16860323 上传时间:2022-11-26 格式:DOCX 页数:15 大小:177.33KB
下载 相关 举报
绘图程序 课程设计报告Word格式文档下载.docx_第1页
第1页 / 共15页
绘图程序 课程设计报告Word格式文档下载.docx_第2页
第2页 / 共15页
绘图程序 课程设计报告Word格式文档下载.docx_第3页
第3页 / 共15页
绘图程序 课程设计报告Word格式文档下载.docx_第4页
第4页 / 共15页
绘图程序 课程设计报告Word格式文档下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

绘图程序 课程设计报告Word格式文档下载.docx

《绘图程序 课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《绘图程序 课程设计报告Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。

绘图程序 课程设计报告Word格式文档下载.docx

1.2工作任务分工

阶段名称

任务名称

任务描述

负责人

协助人

查找课题

通过上网,查询资料,参考课本等形式确定自己编写程序的难易程度以及可编写程度。

刘建

通过和其他同学交流,并参考可利用资料查询程序的部分功能,在自己读懂的基础上,进行改动与整合,变成自己的程序。

编写代码

通过代码编辑器编写代码,参考自己查找到的资料,并加入自己的想法,写出自己的一套程序。

程序的测试

把编写好的程序在编译器中编译并测试程序的各个功能,找出其中的BUG,并进行修改

程序的优化及程序设计报告的编写

在自己能力范围之内查看程序可优化项目,使之更加完美,并开始写课设报告

2需求分析

2.1概述

本软件主要用于计算机windows2000/XP以上版本的用户的使用,这次课程设计一般是实现绘图的功能。

程序除了能实现:

绘制直线、圆形、矩形等图形外,还能实现对圆形、矩形等图形的填充等功能;

程序还能实现清除界面所有图形、清除最近画的图等功能。

2.2用户分析

普通用户看待一个软件的好坏主要是程序的实用性,界面的简洁美观性,程序所占资源的大小,以及程序运行期间的人性化的设置,所以要想让用户满意就要做到以上几点。

其中,这几点最重要的就是程序的实用性。

绘图工具,对于生活中的普通人来说,只要能实现简单的绘图,填充功能就行了。

对于有特殊爱好的人,还要能实现自定义画笔宽度与颜色以及填充色。

本程序不是针对所有人开发的。

但能满足一般人的需求。

2.3约束条件

作为开发人员,我觉得最大的约束就是时间和能力问题。

在写程序时很可能会遇到其他事,就不得不中断,这样就要合理安排好自己的时间。

另外,在写程序时,可能有些功能依靠自己的能力不能完全实现,这样就必须自己查找问题,去解决这些问题。

关于客户对我的约束,就是他们的需求,以及他们对软件功能、界面等等的要求,这样就要求程序员去与客户交流,聆听他们的想法,去尽自己最大的努力尽可能的做出让客户满意的软件。

2.4功能需求

1、绘制直线、折线、圆形、矩形等功能。

2、绘制填充圆形、矩形等图形。

3、插入文本框。

4、自定义画笔宽度、颜色;

自定义填充色:

自定义字体大小,颜色;

自定义填充色。

5、撤销最后一步操作、撤销所有操作。

6、保存所绘制图形。

2.5用户界面需求

用户会从实用性出发,要求界面干净,简洁,使用,能一目了然。

不能太繁琐,太花哨。

用户能通过界面快速了解软件的功能。

3设计与实现

3.1概述

本课程设计将实现一个简单绘图工具。

这个绘图工具不仅实现了绘制简单图形的功能,还能实现绘制一些填充图形的功能,还实现了一些自定义的功能,如自定义画笔宽度、颜色、填充色等。

而且具有简洁大方的图文外观。

它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息,使用人员能快捷简单地进行操作。

对人们的生活有一定的帮助。

在课程设计中,系统开发平台为Windows2000XP,程序设计设计语言采用VisualC++,在程序设计中,采用了结构化与面向对象两种解决问题的方法。

3.2详细设计

3.1.1类的抽象及设计

1.CAboutDlg类:

派生于Cdialog的对话框类,由MFC单文档自动生成,连接菜单中的“帮助”选项,弹出简介。

2.CCircle类:

定义圆形(椭圆形)类。

定义了函数CCircle和两个虚拟函数Draw(CDC*pDC),Serialize(CArchive&

ar);

3.CCircleFill类:

定义填充圆形(椭圆形)类。

包括函数CCircleFill(intX1,intY1,intX2,intY2,COLORREFColor);

和一个虚拟函数Draw(CDC*pDC);

4.CText类:

定义文本类。

包括函数CText(intX1,intY1,intX2,intY2,COLORREFColor,LOGFONTlf,CStringstr);

和两个虚拟函数Draw(CDC*pDC);

Serialize(CArchive&

来实现。

5.CCurve类:

定义曲类.包括函数CCurve(intX1,intY1,intX2,intY2,COLORREFColor,intThickness);

和虚拟函数Draw(CDC*pDC);

6.CDrawApp类:

对画笔的实现颜色宽度样式的实现。

7.CDrawBase类:

定义图形基类。

包括两个虚拟函数Serialize(CArchive&

Draw(CDC*pDC){NULL;

}

8.CDrawDoc类:

定义CDrawDoc类

9.CDrawView类:

定义CDrawView类实现鼠标的图标及显示。

10.CIsoscelestriangle类:

定义等腰三角形类包括CIsoscelestriangle(intX1,intY1,intX2,intY2,intX3,intY3,COLORREFColor,intThickness);

11.CLine类:

定义直线类包括函数CLine(intX1,intY1,intX2,intY2,COLORREFColor,intThickness);

和两个虚拟函数Draw(CDC*pDC);

12.CMainFrame类:

实现地画框的构建。

13.CPaintToolbar类:

实现工具条的作用。

14.CPenWidth类:

实现划线的宽度。

15.CPolyline类:

定义折线类。

包括函数CPolyline(intX1,intY1,intX2,intY2,COLORREFColor,intThickness);

16.CRectangle类:

定义矩形类。

包括函数CRectangle(intX1,intY1,intX2,intY2,COLORREFColor,intThickness);

和两个虚拟函数Draw(CDC*pDC)Serialize(CArchive&

17.CRectFill类:

定义填充矩形类。

包括函数CRectFill(intX1,intY1,intX2,intY2,COLORREFColor);

和虚拟函数Draw(CDC*pDC)

18.CRectRound类:

定义圆角矩形类.包括函数CRectRound(intX1,intY1,intX2,intY2,COLORREFColor,intThickness);

19.CRectRoundFill类:

定义填充圆角矩形类包括函数CRectRoundFill(intX1,intY1,intX2,intY2,COLORREFColor);

虚拟函数Draw(CDC*pDC);

20.CSquare类:

定义正方形类。

包括函数CSquare(intX1,intY1,intX2,intY2,COLORREFColor,intThickness);

21.CText类:

22.CTriangle类:

定义三角形类。

包括CTriangle(intX1,intY1,intX2,intY2,intX3,intY3,COLORREFColor,intThickness);

虚拟函数Draw(CDC*pDC);

和Serialize(CArchive&

23.CTsFont类和CWord类自动实现。

3.1.2表结构设计(涉及到数据库的题目需要完成该部分内容)

3.3主要程序文件

主要类:

1.CDrawApp类:

对画笔的实现、颜色、宽度样式的实现。

2.CDrawView类:

3.CMainFrame类:

实现画框的构建。

4.CPaintToolbar类:

5.CPenWidth类:

类及其文件的对应关系

类名称基类类声明文件类实现文件

CPenWidthCDialogPenWidth.hPenWidth.cpp

CPaintToolbarCToolBarPaintToolbar.hPaintToolbar.cpp

CMainFrameCFrameWndMainFrm.hMainFrm.cpp

CDrawViewCScrollViewDrawView.hDrawView.cpp

CDrawAppCWinAppDraw.hDraw.cpp

3.4开发环境以部署环境要求

3.5主要源码

1

CTsFont:

:

CTsFont(CWnd*pParent/*=NULL*/)

:

CDialog(CTsFont:

IDD,pParent)

{

//{{AFX_DATA_INIT(CTsFont)

m_lfHeight=0;

m_lfWidth=0;

m_lfEscapement=0;

m_lfOrientation=0;

m_lfWeight=0;

m_crColor=0;

//}}AFX_DATA_INIT

voidCTsFont:

DoDataExchange(CDataExchange*pDX)

CDialog:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CTsFont)

DDX_Text(pDX,IDC_EDIT1,m_lfHeight);

DDX_Text(pDX,IDC_EDIT2,m_lfWidth);

DDX_Text(pDX,IDC_EDIT3,m_lfEscapement);

DDX_Text(pDX,IDC_EDIT4,m_lfOrientation);

DDX_Text(pDX,IDC_EDIT5,m_lfWeight);

DDX_Text(pDX,IDC_EDIT6,m_crColor);

//}}AFX_DATA_MAP

BEGIN_MESSAGE_MAP(CTsFont,CDialog)

//{{AFX_MSG_MAP(CTsFont)

//NOTE:

theClassWizardwilladdmessagemapmacroshere

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CTsFontmessagehandlers

2//定义正方形类

classCSquare:

publicCDrawBase

protected:

DWORDm_Thickness;

//正方形的线宽

CSquare(){}//类的默认构造函数

DECLARE_SERIAL(CSquare)//序列化声明

public:

CSquare(intX1,intY1,intX2,intY2,COLORREFColor,intThickness);

virtualvoidDraw(CDC*pDC);

virtualvoidSerialize(CArchive&

};

2//定义填充矩形类(和矩形类的区别:

填充矩形类不具有线宽)

classCRectFill:

CRectFill(){}//类的默认构造函数

DECLARE_SERIAL(CRectFill)//序列化声明

CRectFill(intX1,intY1,intX2,intY2,COLORREFColor);

//定义圆角矩形类

classCRectRound:

publicCDracwBase

//圆角矩形的线宽

CRectRound(){}//类的默认构造函数

DECLARE_SERIAL(CRectRound)//序列化声明

CRectRound(intX1,intY1,intX2,intY2,COLORREFColor,intThickness);

//定义填充圆角矩形类

classCRectRoundFill:

CRectRoundFill(){}//类的默认构造函数

DECLARE_SERIAL(CRectRoundFill)//序列化声明

CRectRoundFill(intX1,intY1,intX2,intY2,COLORREFColor);

//定义圆形(椭圆形)类

classCCircle:

//圆的线宽

CCircle(){}//类的默认构造函数

DECLARE_SERIAL(CCircle)//序列化声明

CCircle(intX1,intY1,intX2,intY2,COLORREFColor,intThickness);

//定义填充圆形(椭圆形)类

classCCircleFill:

CCircleFill(){}//类的默认构造函数

DECLARE_SERIAL(CCircleFill)//序列化声明

CCircleFill(intX1,intY1,intX2,intY2,COLORREFColor);

//定义文本类

classCText:

LOGFONTm_Lf;

//绘制的文本的子体结构

CStringm_Str;

//存放绘制的文本

CText(){}//类的默认构造函数

DECLARE_SERIAL(CText)//序列化声明

CText(intX1,intY1,intX2,intY2,COLORREFColor,LOGFONTlf,CStringstr);

#endif//!

defined(AFX_DRAWGRAPHIC_H__A6887B21_FA3D_404C_B802_D09AB24282BB__INCLUDED_)

classCDrawApp:

publicCWinApp

COLORREFm_FillColor;

//填充色

COLORREFm_PenColor;

//画笔颜色

intm_CurrentPenThickness;

//画笔宽度

intm_CurrentLineStyle;

//画笔样式

UINTm_CurrentTool;

//当前绘图样式

CDrawApp();

4.1概述

主要测试绘制图形以及绘制填充图形。

4.2测试环境

测试环境如下:

测试系统:

WindowsXP。

测试工具:

VisualStudioC++6.0。

硬件:

普通个人PC机。

4.3测试计划

第一,在上面的测试环境下打开软件。

第二,显示主界面并逐一测试主界面上的功能。

第三,保存自己的设置和自己在测试时所绘制的图形。

第四,退出程序。

4.4测试项目及结果

1、首先运行程序,界面如下:

2、选择一个绘图功能如绘制矩形进行绘制、并插入文本:

3、重新设置画笔宽度、颜色进行绘制矩形:

(设置画笔颜色)

(设置画笔宽度)

(设置字体)

4、绘制填充图形,如矩形:

重新设置填充色绘制填充图形:

5、退出程序。

5、工作总结

5.1工作成果

在此课设中我最主要的工作是查阅资料,读懂读会别人的代码,然后再依据别人的代码,做成自己的程序,并使之完成一些基本的功能,听起来虽然简单,但做起来很难。

在这次课程设计的实习中,我感觉到有点吃力,因为平时对编程序这方面没有过多的关注,平时所学到的一点理论知识在实际应用中也很有限,实习过程中明显的准备不充分,使自己遇到了很多的难题。

一些基本功能自己还能实现,但是稍微复杂点自己就做不了,这时就要去看别人怎么做的,有时候甚至别人写好的代码都看不懂,还要去查很多相关的资料。

自己根据别人绘制矩形、填充矩形的代码写出了绘制填充圆形、绘制正方形、填充正方形等几项功能代码。

还有一些代码,实在别的程序里看到的,如撤销最后一步操作、撤销所有操作,经过修改我用到了画图程序中来。

还有字体、颜色的设置等也是参考别人自己修改写出来的。

最终写出了这个功能还算完善的程序。

5.2过程分析

通过这次课程设计实践我真的是学到了不少东西!

这次课设使我了解我编程思想和编程技巧,也认识了软件生命周期的各个环境,包括构思、设计、编写、调试、发布、文档化、维护和修订。

编程的风格也很重要。

MFC程序设计是一门重要的专业基础课程,是数据结构,操作系统,数据库原理和软件工程等后继课程的基础。

适用于大型系统软件和应用软件的开发。

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.经过这两个星期的上机实践学习,使我对MFC有了更进一步的认识和了解。

在不长的时间里我明白了,不仅仅是要重视,而且要通过不断的上机操作才能更好地学习这门语言。

在课程设计这两个星期里,我认识到我有很多不足得地方。

首先是自己在指法上还不行,经常按错字母,但通过学习和练习,已经有了很大的提高;

再有对MFC的一些标准库函数不太了解,对函数调用的正确使用不够熟悉,还有对MFC中经常出现的错误也不了解。

通过设计实践,使我在这几个方面的认识有所提高。

经过设计的各个环节,从中学到了很多,锻炼了自己系统的设计的能力,从系统的需求到系统的功能,到系统的测试,到系统的发布,可以掌握到一个完全的过程,这样对我们以后在工作中或学习中得到很好的锻炼,为用VC++编辑软件奠定基础。

当然,本报告所采取的解决问题的方法并不是非常完善的,在今后的学习、工作中,将继续研究并改进。

5.3经验教训及其分析

1、对于MFC程序模块的不熟悉是课程设计中所遇到的大的问题。

MFC中有基于基本对话框,单文档,多重文档等模块,对一些模块的偏向导致对于所有的模块都是似懂非懂,并且在编写程序的时候相互混淆导致编写错误。

2、程序基础的不扎实是课程设计不能完美,高效的完成的最大影响。

以前对程序只是看在眼里,动手的时间并不多,这次程序设计对自己的程序设计实践能力发出了巨大的挑战,通过对程序的设计发现在自己以前的基础功不扎实,程序只是看在眼里,并未真正实践,导致许多代码都打错,大小写不分。

3、自己对MFC程序中的各种函数以及各个函数之间的相互调用还不能很好的掌握。

在MFC中提供许多编程接口,而各个接口之间又是通过函数相互连接,对各个编程接口的陌生是我此次编程的第一大障碍,不知道程序接口的函数以及参数值,只能查询资料慢慢理解。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1