当前位置:文档之家› c++课程设计(简易绘图程序)

c++课程设计(简易绘图程序)

c++课程设计(简易绘图程序)
c++课程设计(简易绘图程序)

目录

1、需求与功能分析 (1)

2、系统总体框架 (2)

3、模块设计与分析 (3)

3.1画图模块 (3)

3.2贴图模块 (3)

3.3窗口模块 (4)

3.4菜单模块 (4)

3.5工具栏与状态栏模块 (4)

4、类的设计与分析 (4)

4.1、CAboutDlg类 (4)

4.2、CChildFrame类 (4)

4.3、CDib类 (4)

4.4、CDrawingDoc类 (5)

4.5、CDrawingView类 (6)

4.6、CMainFrame类 (7)

4.7、CSettingDlg类 (7)

5、特色算法分析 (8)

5.1 CDib类中的显示bmp位图 (8)

5.2 CDrawingView类中的画图部分 (10)

6、功能测试 (13)

7、存在的不足与对策 (16)

8、程序源代码 (17)

9、使用手册 (17)

10、参考文献 (20)

1、需求与功能分析

为了检验一个学期以来自己学习c++这门课程能够学到多少知识,加上原来就对图像处理就比较感兴趣,曾经更有想过要做一个可以合成红蓝3D图片的一款软件,就是那种需要带上红蓝眼镜才可以看到3D效果的那种图片,自己也有用photoshop做过这样的图片,但是photoshop需要调很多东西才能合成这样的图片,而且还要用相机送两个不同的角度拍两张照片作为源图片去合成红蓝3D图片,虽然我知道原理并不难,但是当我选择了”简易绘图程序”这个课程设计的题目之后,才发现每实现一个功能都需要花很多的精力,而且实现那些功能之后还会发现各种各校的bug,需要细心去寻找解决的办法。如今课程设计也要上交,一样还有很多我想实现的功能都还没实现,最终也没有实现我想要实现的功能---合成红蓝3D图片。只做了一些简单的绘图功能。

功能分析,目前这个软件的主要功能有如下:

1、画直线:通过OnLine()函数实现。

2、画矩形:通过OnRectangle()函数实现。

3、画椭圆:通过OnEllipse()函数实现。

4、铅笔工具:可以画任意线条。通过OnPencil()函数实现。

5、橡皮擦:可以擦除所画的线条。该功能还没实现。

6、右键弹出菜单:可以在客户中点击鼠标右键,快速选择常用菜单。通过

OnContextMenu函数实现。

7、状态栏显示鼠标移动的坐标:在程序的右下角显示,通过OnUpdateX(CCmdUI

*pCmdUI)和OnUpdateY(CCmdUI *pCmdUI)这两个函数实现。

8、画图颜色选择:可以画任何颜色的线条,通过OnEditColor()函数实现。

9、读取bmp位图:可以在电脑中选择一个bmp位图,在程序中显示出来,通过

新建一个Cdib类来读取bmp文件信息再view类和Doc类调用来显示该位图。

10、保存为bmp位图:可以将在程序所画的图形保存为一幅bmp图片,通过view

中的SaveAsBmp(CString filename)实现。

11、线条类型及线宽的设置:可以将画出的线条设置成实线、虚线、点线,还可

以设置线条的粗细,通过示例这一功能可以立刻显示所选择线条的粗细及线型。通过新建CSettingDlg类,再在view类中调用OnSetting()函数实现画笔的对话框,CSettingDlg类中的OnPaint()函数是实现示例功能的。

12、窗口的重绘时不擦除原来的内容:可以在窗口发生变化时,窗口的内容不消

失,程序在窗口尺寸发生变化时,将会发送WM_PAINT消息,这时首先会擦除窗口背景,然后进行重绘操作,这样就把窗口中先前绘制的内容擦除了。

我是使用双缓冲来解决这个问题的,双缓冲设计思路:如果只是为了让窗口闪烁不那么厉害,避免背景色的填充是最直接的办法。但是那样的话,窗体上会变的一团糟。因为每次绘制图象的时候都没有将原来的图象清除,造成了图象的残留,于是窗体重绘时,画面往往会变的乱七八糟。所以单纯的禁止背景重绘是不够的。我们还要进行重新绘图,但要求速度很快,于是想到了使用 BitBlt函数。它可以支持图形块的复制,速度很快。我们可以先在内存中作图,然后用此函数将做好的图复制到前台,同时禁止背景刷新,这样就消除了闪烁。以上就是双缓冲绘图的基本的思路。一部分代码写在了OnLButtonUp(UINT nFlags, CPoint point)函数里面,也有一部分打码写在了OnDraw(CDC* pDC)函数里面。

2、系统总体框架

图1 总体框架

3、模块设计与分析

3.1画图模块:该模块的大部份功能都写在了view类里面,这样造成了后期的修改造成了一定的影响,对于排错,修复bug增加了难度,对于初次使用mfc 做一个相对大一点的程序,在函数分配,类的建立都有很多不足的地方。该模块也是此次程序的重点模块之一,主要负责画一些简单图形,例如:直线、矩形、椭圆、任意曲线(铅笔)等等;有线型、线宽的设置;还有画笔颜色的选择,可以画各种各样颜色的线条。该模块的设计思路是:简易画图工具——线型、线宽设置——颜色选择。

3.2贴图模块:该模块是为了读取bmp位图设计的,主要代码写在CDib类里面,再通过view类和Doc类去调用显示位图,这个模块同样是此次程序的重点模块之一,也是花费时间最多的一个模块,开始的时候,我使用了读取程序里面的位图资源,但是这样的办法虽然能够成功显示出位图,但是却十分麻烦,就是要先把想要显示的位图放到程序的位图资源里面,然后再通过LoadBitmap函数把位图资源加载到程序再显示出来。这样对使用都来说是非常不合理的,但是我却从这里懂得了一个显示位图的思路,要显示一幅位图需要有以下几点:

(1)读取bmp位图信息,bmp位图的信息包括:位图文件头BITMAPFILEHEADER 和位图信息头BITMAPINFOHEADER,还有就是颜色表RGBOUAD。最后一部分是实际的位图数据IMAGEDATA。

(2)创建兼容DC,这和相对比较容易,通过CreateCompatibleDC函数创建。(3)将位图选入兼容DC中,也就是先把位图存到内存之中,通过SelectObject 函数实现。

(4)将兼容DC中的位图贴到当前DC中,也就是显示在屏幕上,通过BitBlt 或者StretchBlt这两个函数都可以实现,区别在于,前者不可以自动压缩图片在一个窗口显示全部的图片内容,而后者可以。

后来我在另一本书上看到了其它的方法,也了解了DDB(设备相关图)和DIB(设备无关图),DDB位图的格式相当依赖于设备,所以它不适用于图像的交换,所以,大部分的BMP位图都会包含DIB。为了完成位图的显示,需要完成:装载位图、获取位图文件头信息、获取位图信息、获取颜色表信息、获取做准备数据信

息、获取位图尺寸、获取颜色总数、获取颜色位数、创建位图调色板、绘制位图等等。但是windows并没有提供DIB操作的类,需要自己动手写一个CDib的类,虽然这个类网上有可以直接复制,但是我还是按照书本那里,自己跟着课本的思路,手动把代码写上去,所以花费的时间比较多,即使是这样,有一些还是没有完全理解。封装好CDib类之后,再在View类和Doc类中写上相应的调用函数。便可以在程序中通过“打开”从磁盘中读取bmp位图了。设计思路基本上和上面的步骤一样。此时还需要面临另外一个问题,就是窗口的重绘。此功能已在功能分析上有说明,就是利用双缓冲解决这个问题。

3.3窗口模块:这部分大多数都是编译器自动生成,只做了一些修改,例如:使程序一开始运行便最大话,还是自定义程序的标题。刚开始做的时候,创建成单文档的了,后来需要用到多文档的,然后又不想再重新做过,所以只能手动修改,把单文档改成了多文档的。新建一个多文档的程序,然后用旧的那个单文档对照着多文档的源代码,一个个类的修改。

3.4菜单模块:该部分同样大部分都是编译器自动生成的,自己增添了一部分菜单例如:绘图工具、颜色设置、线条设置等等。还有右键弹出菜单,有新建窗口、颜色及线条设置、退出程序等等,让使用者可以进行快速的操作。

3.5工具栏与状态栏模块:除了编译器自动生成的之外,还加入了画直线、矩形、椭圆、铅笔等工具的快速选择,状态栏可以显示鼠标移动的坐标。该部分让我觉得有点难度的就是那些工具栏那些图标,我画了很久才画出那个铅笔的图标,听说可以从磁盘里加载这些图标的,但是我不知道怎么要怎么做。

4、类的设计与分析

4.1、CAboutDlg类

由编译器生成,只做了两处的修改:

m_pMainWnd->SetWindowText(_T("简单绘图工具")); //设定主框架窗口标题pMainFrame->ShowWindow(SW_MAXIMIZE); //显示主框架窗口默认最大化

4.2、CChildFrame类

由编译器生成,只做了一处的修改:

cs.style |= WS_VISIBLE|WS_MAXIMIZE; //使子窗口一打开就是最大化

4.3、CDib类

按照书本上的代码进行封装,以下是各成员函数和数据成员

4.4、CDrawingDoc类

由编译器生成,添加不少内容:因为显示bmp位图时,有一部分操作需要在这里进行,首先在头文件中添加了以下:

public:

HGLOBAL GetHObject() const { return m_hDIB; } //获取DIB对象的句柄

CPalette *GetDocPal() const { return m_palDIB; } //获取调色板指针

CSize GetDocDimension() const { return m_sizeDoc; } //获取调色板大小

void UpdateObject(HGLOBAL hDIB); //更新DIB对象

void SetDib(); //初始化DIB对象

protected:

HGLOBAL m_hDIB; //定义指向DIB的句柄变量

CPalette *m_palDIB; //定义指向逻辑调色板的指针

CSize m_sizeDoc; //文档大小的变量

4.5、CDrawingView类

编译器自动生成的类,全部的画图操作都在此类中完成,包括bmp位图的显示也是在该类中通过调CDib类中的函数来完成的。

4.6、CMainFrame类

主要同编译器生成,修改小部分:

static UINT indicators[] =

{

ID_SEPARATOR, // status line indicator

ID_INDICATOR_CAPS,

ID_INDICATOR_NUM,

ID_INDICATOR_SCRL,

ID_X,

ID_Y

};

ID_X,ID_Y是状态栏中的x和y坐标.

cs.style&=~FWS_ADDTOTITLE; //使主窗口的标题不发生变化

4.7、CSettingDlg类

由自己创建,主要是响应菜单中的各个设置选项,该类实现的功能比较少。

5、特色算法分析

在函数或成员方法里找出你认为比较有特色的1~2个算法。

5.1 CDib类中的显示bmp位图

流程图:

流程图1:设备无关位图的读取流程图2:设备无关图的显示流程

功能:在磁盘中读取一幅bmp位图,然后显示到屏幕上。

算法思路:首先理解bmp位图里面所包含的信息然后再以下步骤实现:

<1>读取bmp位图信息,bmp位图的信息包括:位图文件头BITMAPFILEHEADER

和位图信息头BITMAPINFOHEADER,还有就是颜色表RGBOUAD。最后一部分是实际的位图数据IMAGEDATA。

<2>创建兼容DC,这和相对比较容易,通过CreateCompatibleDC函数创建。

<3>将位图选入兼容DC中,也就是先把位图存到内存之中,通过SelectObject

函数实现。

<4>将兼容DC中的位图贴到当前DC中,也就是显示在屏幕上,通过BitBlt或

者StretchBlt这两个函数都可以实现,区别在于,前者不可以自动压缩图片在一个窗口显示全部的图片内容,而后者可以自动压缩和拉伸图片让它布满整个客户区。

加载位图信息代码:

显示位图部分函数代码:

5.2 CDrawingView类中的画图部分

功能:在客户区中实现画直线、矩形、椭圆、任意曲线。画完之后可以保存为bmp格式的文件。

算法思路:在View类中创建画笔,然后通过调用各个函数去画不同的形状在画图方面,我写了4个函数, OnLine()、OnRectangle()、OnEllipse()、OnPencil()。

OnLine()函数:

SetClassLong(this->GetSafeHwnd(),GCL_HCURSOR,(LONG)LoadCursor(NULL,IDC_CROSS)); DC.LineTo(m_LineEnd);

DC.MoveTo(m_LineOrg);

m_LineEnd=point;

DC.LineTo(m_LineEnd);

OnRectangle()函数:

DC.SelectStockObject(HOLLOW_BRUSH);

DC.Rectangle(m_LineOrg.x,m_LineOrg.y,m_LineEnd.x,m_LineEnd.y);

DC.MoveTo(m_LineOrg);

m_LineEnd=point;

DC.Rectangle(m_LineOrg.x,m_LineOrg.y,m_LineEnd.x,m_LineEnd.y);

OnEllipse()函数:

DC.SelectStockObject(HOLLOW_BRUSH);

DC.Ellipse(m_LineOrg.x,m_LineOrg.y,m_LineEnd.x,m_LineEnd.y);

DC.MoveTo(m_LineOrg);

m_LineEnd=point;

DC.Ellipse(m_LineOrg.x,m_LineOrg.y,m_LineEnd.x,m_LineEnd.y);

OnPencil()函数:

DC.SetROP2(R2_COPYPEN); //保证重叠的线不会变化,使画出来的线条始终为黑色

DC.MoveTo(m_LineOrg);

DC.LineTo(point);

m_LineOrg=point;

(注:这些代码不是写在OnLine()、OnRectangle()、OnEllipse()、OnPencil()这4个函数中,而是写在OnLButtonUp()和OnMouseMove()中)

分别把以上的四个功能的代码同时写在OnLButtonUp()和OnMouseMove()中,因为如果只写在OnLButtonUp()里面的话,画线条时在鼠标移动中线条不会立刻显示,要等鼠标左键弹起之后才显示画出来,同时在OnMouseMove()便可以解决这个问题,但是如果只在OnMouseMove()写这些函数的话,当两次把线条画在同一个地方时,原来的线条会消失,所以必须把这四个功能同时写在这两个函数之中,才可以顺利实现我想要的效果。

流程图:

6、功能测试

图6-1 多窗口测试图

图6-2 画直线测试图

图6-3 画矩形测试图

图6-4 画椭圆测试图

图6-5 铅笔工具测试图

图6-6 颜色设置测试图

图6-7 读取位图测试图

7、存在的不足与对策

本次课程设计,是第一次使用面向对象语言做的程序,以前一直都是在win32下的编程,在这种界面化的编程环境中,感觉到了面向对象语言的实用性,和win32下的那种感觉是完全不同的。由于是第一次使用mfc做相对大一点的程序,之前课本只有介绍过几个很简单的mfc程序,所以当时学得并不多,不过通过这次的课程设计,对mfc的使用熟悉了很多,同时也发现了自己c++语言基础很不牢固,在类与类之间的函数调用非常不熟悉,还有指针的使用也不熟悉,而且在做程序之前并没有好好的规划,造成很多的函数和成员变量都写在了View 类之中,对于排错和修得bug造成了极大的不便,有时候一个小错误都需要找很久才能找到,直到现在也依然有一些bug还没有修复的。不过程序整体上已经没有太大的问题了。

这次课程设计里面花时间最多的还是对CDib类的封装,虽然可以有书本对照着,但是依然有很多地方没理解的,为了让程序可以从磁盘中读取bmp文件和显示到屏幕上,我先后看了两篇CDib类的源代码,才开始动手封装的,在此之前还要去理解bmp文件所包含的信息,bmp位图的信息包括:位图文件头BITMAPFILEHEADER和位图信息头BITMAPINFOHEADER,还有就是颜色表RGBOUAD。最后一部分是实际的位图数据IMAGEDATA。中有理解了这些之后才有可能会理解CDib类的封装。封装完之后,还要将它导入到我的工程文件夹之中然后还要在View类和Doc类之中添加相应的代码,才能实现从有磁盘中读取bmp位图。到后来我才发现该CDib类中的,保存位图是不起作用的,每次保存都会出现错误,造成无法将所画的图,变成bmp格式的文件。我查找了一下源代码中出现的问题,虽然找到的问题所在,却不知道如何在原来的类上面更改,所以我只能在网上查其它解决方法。因为我不怎么懂得哪些函数应该写在哪里,所以我又把这些保存bmp位图的函数写到了View类里面,最后我新添了SaveAsBmp()和OnFileSaveAs()这两个函数实现保存bmp位图功能。

其中还遇到了一个比较有趣的问题,在我想要实现右键弹出菜单的时候,需要使用vc6.0添加Pop-up menu这个控件,它居然弹出左图这样一个窗口,后来

我查了一下,原来是因为我装了win7系统

的原因,可能是vc6.0并不兼容吧!我找

网上找了好一会都没找到好的解决办法,

但我又不想重装电脑的系统,更不想用回

那古老的xp系统。直到昨天下午,我才突

然想到了,我直接把整个工程拷到用xp系

统的机子上,加载了Pop-up menu这个控件之后,再把它拷回到我的电脑上继续编写不就行了吗?我拿到宿舍同学的电脑上试了一下,没想这种方法真的可行。

最后还有一个绘图工具,必须有的功能,但是没有实现,就是橡皮擦功能,因为之前写那个CDib的类花费了太多的时间,所以这个功能就不够时间写了。以后我会慢慢完善这个程序的。

以后再遇到要做这种软件时,一定要在前期规划再开始做,如果不这样的话会造成编程后期工作相当麻烦,各个模块写得乱七八糟,等到发现这样的问题时,就已经来不急去修改了,除非重新再写过。为了让自己在写程序的过程之中,保持着那种严紧的思维,所以前期的计划是非常重要的,先把每个模块都分开来,然后再一个个的去实现它。

8、程序源代码

由于源代码量过大,所以不粘贴,已经将源代码存在同一文件夹之中。

9、使用手册

由于本程序使用比较简单,现在只作一些的使用介绍.

下面是程序打开的初始界面:

菜单与工具栏,工具栏可以快捷选择要使用的画笔

此功能与工具栏的一样,只是工具栏那里会比较方便选择

图6-10 绘图工具栏

线条类型对话框,颜色设置请参考图6-6 颜色设置测试图

图6-12 线宽、线型设置

图6-13 打开位图选择

图6-14 右键弹出菜单

C++课设:简单画图程序

简单画图程序 1.基本功能描述 本次课程设计的任务是利用计算机和VC开发环境编写一个简单画图程序,该程序的设计指标(即主要功能)有:①用鼠标拖动绘制圆、椭圆、矩形,线等基本图形;②能控制画笔的线宽和颜色;③能对图形进行颜色填充;④在鼠标移动的过程中能实时显示当前绘制的图形。 除了以上几点功能,我有另外添加了工具栏、铅笔、橡皮等功能来使程序更方便地让用户使用,简化了人机交互的过程。 2.设计思路 首先是界面的问题,既然课设的题目是简单画图,那在建立工程的时候就要选择文档结构而不是以前做的基于对话框。可选择单文档结构或多文档结构,但想到画图界面一般只有一个,从简洁的角度考虑,选择单文档结构。而且用户界面在设计的时候要尽可能简单美观,一目了然,对相应功能有图标提示,使用户方便使用。 然后便是画图功能的具体实现。分析课设要求,可以发现功能一要求的的椭圆、矩形、直线可以分别通过Ellipse();、Rectangle();、MoveTo();、LineTo();这四个函数来实现。功能二控制画笔线宽和颜色可以给二者分别关联参数,通过改变线宽参数值来控制线宽,通过调用通用对话框改变颜色参数值来控制颜色。功能三对图形进行颜色填充虽以前未接触过,但查阅资料后发现可以调用ExtFloodFill();并合理设定参数值来实现。功能四的实时显示功能可以通过调用MouseMove();函数来实现。 这些功能需要建立菜单资源来表示各个功能选项,并建立相应的消息响应函数来进行实现。另外,画图程序主要是通过鼠标来进行操作,所以要对鼠标消息的响应及处理函数多下功夫来思考和编写。 至于额外添加的功能,工具栏通过添加工具栏资源和关联相应菜单中画图功能ID实现;铅笔、橡皮的功能则是利用MouseMove();函数,在其中做了一些改动来实现。

程序设计基础课程设计报告 内容样例

第一章目的与要求 书上有。 第二章需求分析 软件设计的一个重要的环节就是需求分析。本章在对ATM取款机管理系统的应用情况作了全面调查的基础上,确定系统目标,并对系统所需要的基础功能进行分析,从而确定用户的需求。以下是ATM取款机管理系统所需要的需求分析。 ATM管理系统包括六个模块:登录,挂失功能,修改密码,取款功能,转账功能,查询功能。 ①登录: 输入银行卡的账号,密码,验证银行卡的卡号,密码是否正确,之后进入主界面 ②挂失功能: 确认是否对银行卡进行挂失,挂失后账户无法操作 ③修改密码: 用户可自由对其银行卡密码进行修改,修改之后的新密码将会覆盖其原密码 ④取款功能: 用户可自由取得所持银行卡内的存款,所取款数必须在其原有账户余额之内 ⑤转账功能: 用户可将本账户中的存款转入其他账户,转账过程中,需要转入账户的账

号 ⑥查询功能: 用户可查询用户信息,其中包括用户姓名、用户身份证号码、银行卡号以及存款余额 模拟ATM取款机的操作: 首先录入账户信息,格式如下 ㈠、登录功能:输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。 ㈡、查询功能:查询账户余额。 ㈢、取款功能:取款,更新余额。 ㈣、挂失功能:挂失后,该账户不能进行任何操作。 ㈤、修改密码:输入原密码和新设置密码。 ㈥、转账功能:输入转账的转出账户以及转账金额,进行转账。

第三章设计分析 3.1、ATM系统管理 3.1.1系统基本功能 首先,确定系统中存在两种用户,一种是ATM,可以进行信息录入和后台管理。另外一种是取款人,取款人主要是进行信息的查询,不能进行信息录入。所以在创建类的时候,先创建一个ATM类,然后创建取款人类,并与ATM 类形成有元,进而继承ATM的所有功能,并添加录入信息的功能。 基本功能: 登录功能---------输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。 查询功能---------查询账户余额。 取款功能---------取款,更新余额。 挂失功能---------挂失后,该账户不能进行任何操作。 修改密码---------输入原密码和新设置密码。 转账功能---------输入转账的转出账户以及转账金额,进行转账。、

程序设计课程设计实验报告

《程序设计》课程设计姓名: 学号: 班级:软件工程14班 指导教师: 成绩:

1.消除类游戏 【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n,m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m 个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 测试数据二 输出说明: 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 【功能实现】 #include #include<> usingnamespacestd;

{ intm,n,i,j; inttemp; cin>>n>>m; temp=m; m=n; n=temp; int*map=newint[m*n]; int*mark=newint[m*n]; int*tmap=map; int*tmark=mark; intdif=0; ount=0; } p rintf("请输入要输入数的个数\n"); s canf("%d",&n);/*输入要输入数的个数*/ f or(i=0;idata1[j+1].number)

mfc简单绘图程序

M F C 简 单 的 绘 图 程 序 ——王帅

目录 摘要 (2) 关键字 (2) 1 引言 (2) 设计目的 ............................................................................................................ 错误!未定义书签。 2 功能说明 (2) 2.1菜单栏....................................................................................................... 错误!未定义书签。 2.1.1图形 (3) 2.1.2画笔 (4) 2.1.3画硬币 (4) 2.2工具栏 (5) 2.3状态栏 (5) 3 功能的实现 (5) 3.1 视图设计 (5) 3.2 编辑资源 (6) 3.3 编程思路及各个函数的实现 (7) (1)思路 (7) (2)代码的实现 (7)

1.为基本形状创建一个基类 (8) 2.基本形状类的创建 (8) 2.1矩形类的创建及定义 (8) 2.2圆形类的创建及定义 (10) 2.3正五边形类的创建及定义 (11) 2.4正三角形类的创建及定义 (14) 2.5椭圆类的创建及定义 (16) 2.6正四边形类的创建及的定义 (17) 2.7正六边形类的创建及定义 (18) 2.8直线类的创建及定义 (19) 3.各基本形状类在CMyDraw2_0类中的调用和绘图的实现 (20) 3.1矩形类的调用与与绘图的实现 (20) 3.2圆形类的调用 (24) 3.3正三角形类的调用 (25) 3.4基本类型调用的剩余代码 (26) 4.画笔的使用、颜色及大小的调整 (29) 5.画硬币 (35) 6.工具栏中的自定义控件 (38) 7.状态栏中的显示 (39) 4程序功能的测试 (41) 5最后总结 (42)

c语言程序设计》课程设计报告

《C语言程序设计》课程设计报告 (2013—2014学年第3学期) 题目:C语言课程设计 专业:软件工程 班级:软件工程技术2班 姓名学号:1 林燕萍 指导教师:吴芸 成绩: 计算机科学与技术系 2014年6月23日

目录 一、课程设计的目的与要求 (1) 二、方案实现与调试 (3) 掷骰子游戏 (5) 射击游戏 (7) 计算存款本息之和 (8) 肇事逃逸 (10) 礼炮 (12) 汽车加油 (14) 大优惠 (16) 金币 (19) 三、课程设计分析与总结 (23) 附录程序清单 (25) 一、课程设计的目的与要求(含设计指标) C语言是一种编程灵活,特色鲜明的程序设计语言。C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的动手和编程能力,从应试课程转变为实践工具。这是学习语言的最终目的。结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序设计任务书》,以在实训过程中给学生提供帮助。达到如下目的: 1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能;

2.让学生扎实掌握C程序设计语言的相关知识; 3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。 编写程序要求遵循如下基本要求: ①模块化程序设计 ②锯齿型书写格式 ③必须上机调试通过 二、方案实现与调试 掷骰子游戏 2.1.1题目内容的描述 1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。 2) 将每人每次的分值累加计分 3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。 4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。最后显示双方分数并判定优胜者。 2.1.2输入数据类型、格式和内容限制和输出数据的说明 数据类型:整型;内容限制:随机数的产生;输入数据结果:胜利的一方 2.1.3主要模块的算法描述 本算法的思路过程:首先要随机产生随机数,然后进行算法输出数值,执行条件判断输入结果,最后比较结果,判断胜利的一方。

Web程序设计课程设计报告模板

Web程序设计课程设计报告课程设计题目:某电子杂志网站 姓名:肖琴霞 专业:软件工程(国际教育) 班级:10211133 学号:1021113321 指导教师:吴光明 2013 年 3 月 10 日

一、设计目的 《Web应用开发课程设计》是实践性教学环节之一,是《Web程序设计》课程的辅助教学课程。通过课程设计,使学生掌握Web网站的基本概念,结合实际的操作和设计,巩固课堂教学内容,使学生掌握软件开发的基本概念、原理和技术,将理论与实际相结合,应用现有的开发工具,规范、科学地完成一个完整地应用软件的设计与实现,把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力。 当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正使得计算机被广泛的应用于信息管理系统。计算机的最大好处在于利用它能够进行信息管理和查询。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。制作电子杂志网站可以方便读者阅读,且可以扩大读者的视野以及提高阅历。 二、设计解决方案 问题解决方案: 经过分析,我们决定利用ASP编程,使用Dreamweaver MX作前端开发工具,利用SQLServer2000作后台数据库管理,数据库驱动使用ADO。 前台功能模块:系统主界面与登录程序设计,杂志查询及订阅,读者服务模块,杂志分类设计等。 后台功能模块:管理主界面与登录程序设计,最新杂志信息管理模块,杂志订阅管理模块,在留言管理模块设计等。后台管理的建立,使管理员可以通过后台很容易的对杂志城进行管理,比如:对最畅销杂志,公告和杂志城注册用户进行添加,删除等管理工作,还可以对读者在线留言的处理。 三、电子杂志网需求分析 3.1 需求分析 需求分析是整个设计过程的基础,最困难、最消耗时间的一步。它的最终结果是提供

简单的绘图程序实验报告

面向对象程序设计实训(基于MFC程序设计) 题目: 简单的绘图程序 院系专业: 姓名: 学号: 同组其他学生(学号):

简单绘图程序说明 1、功能分析 目前这个软件的主要功能有如下: 1、画直线:通过OnLine()函数实现。 2、画矩形:通过OnRectangle()函数实现。 3、画圆角矩形:通过OnRoundrect()函数实现。 4、画椭圆:通过OnEllipse()函数实现。 5、铅笔工具:可以画任意线条。通过直接在OnMouseMove(UINT nFlags, CPoint point)函数里面添加代码实现。 6、右键弹出菜单:可以在客户中点击鼠标右键,快速选择常用菜单。通过 OnContextMenu函数实现。 7、状态栏显示鼠标移动的坐标:在程序的右下角显示,通过调用setWidnowText 和GetParent()实现。 8、画图颜色选择:可以画任何颜色的线条,通过OnColor()函数实现。 9、线条类型及线宽的设置:可以将画出的线条设置成实线、虚线、点线、点划 线,双点划线,还可以设置线条的粗细,,通过实例这一功能立刻显示所选择线条的粗细及线型。通过新建CLineSettingDlg类,其中OnSelchangeLineStyle()函数实现线型的改变,OnChangeEditLineWidth()函数实现线宽的改变。再在CDrawView类中调用OnLineSetting()函数实现画笔的对话框, CLineSettingDlg类中的OnPaint()函数是实现示例功能的。 10、窗口的重绘时不擦除原来的内容:新建CShape类用来保存线条的颜色,线 宽,填充色等属性,在窗口大小发生变化时有OnDraw(CDC* pDC)函数进行重绘工作,重绘中调用了各个绘图函数的Draw(CDC *pDC)函数。 11、所绘图形的保存于读取,通过Serialize(CArchive &ar)函数进行序列化操作, 将所绘图形的信息通过文件的形式保存起来。

面向对象程序设计课程设计

《面向对象程序设计》课程设计 课程代码:*****(采用现行5位数字的课程代码) 课程名称:面向对象程序设计课程设计 设计周数:1周 学分:0.5学分 课程类别:必修课 一、课程设计的目的与任务 面向对象程序设计课程设计是计算机科学与技术、网络工程、信息管理与信息系统等专业集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。通过课程设计,学生可以将本课程所学知识点融会贯通,举一反三,加深实践与理解,提高学生综合运用所学知识的能力;另一方面,在参与一系列子项目的实践过程中,能使学生获得相关项目管理和团队合作等众多方面的实践经验。其目的在于加深对面向对象程序设计理论和基本知识的理解,通过对所选项目的分析、程序算法的设计、运行与调试过程的分析,使学生掌握基本的信息系统分析方法、设计方法和上机操作的各种技巧,对培养学生的逻辑思维能力、团队合作精神、创新能力、动手操作能力各方面素质有提供了良好的实践平台,为后续课程的学习打下一定的基础。 二、本课程设计的基本理论 本课程设计使用面向对象程序设计的方法解决实际问题,涵概了课程的所有重要知识点,如类与对象、继承与组合、虚函数与多态性等。 三、课程设计的形式与基本要求 形式:召开课程设计动员会,根据学生的学习水平和特长进行分组,每组选择指定课程设计的题目和内容。学生在规定的时间内,经过小组的协同工作和指导教师的辅导,完成所选课题的设计,最后由指导教师进行验收及评定。 基本要求:要求学生做好预习,认真分析设计过程中涉及到的算法,并确定所选课题的功能模块,详细描述各模块的具体内容;用流程图描述实现算法,根据算法进行代码的编写,最后进行反复上机调试修改,直到输出正确结果为止。 认真写好课程设计报告,根据每组学生的分工,各自写出对解决问题的详细分析、模块功能、调试结果,最后将课程设计报告上交给指导教师。 四、课程设计的内容 选题一:员工管理信息系统 (1)建立职工信息数据,包括职工编号、姓名、性别、工资、出生时间、部门、参加工作时间和年龄(必须计算得到)。

EXCEL中的绘图工具使用技巧

E X C E L中的绘图工具 使用技巧 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

EXCEL中的绘图工具使用技巧 2009-04-17 11:59:37 阅读5396 评论1 字号:大中小订阅 基础班选修课讲义 1、从绘图工具栏直接绘制直线、单边带箭头直线、椭圆、矩形; 2、从绘图工具栏“自选图形”中选择:线条、基本形状、箭头汇总、流程图、星与旗帜、标注、其它自选图形…… 3、添加和编辑绘制图形中的文字内容(右键-添加文字); 4、工具栏中直接选择“文本框”、“竖排文本框”; 5、图形右键菜单的其它功能(超链接、宏等)。 二、绘制单位正方形、单位圆、单位正xx…… 1、从绘图工具栏及其“自选图形”中选择矩形、椭圆、菱形、平行四边形等图标……到单元格内点击一下,就可生成单位正方形、单位圆、单位正xx……(对线条不起作用); 2、在绘图工具栏的“自选图形”中双击选择的图形,可直接生成单位圆、单位正方形、单位正菱形、单位正平行四边形等图案(单位边长)。 三、连续绘图 1、双击绘图工具栏中需要绘制的图形,比如椭圆、长方形、直线,以后可以连续绘制出椭圆/圆、长方形/正方形以及直线;按ESC键取消连续画图; 2、对绘图工具栏“自选图形”中的图形使用双击,只能产生“单位正xx”图形,不能连续绘图(其作用见“二、2”条)。 3、右键绘图工具栏-自定义-命令-自选图形-选择命令-拖到工具栏中,今后就可以双击这些图形连续绘图。 四、改变图形 1、改变绘制图形的线条、箭头、边框、色彩设置(右键或者双击图形,设置自选图形格式;工具栏中选择); 2、点击和转动相关图形中的绿色圆点转动图形; 3、使用绘图工具栏“翻转”按钮; 4、点击和拖动相关图形中的黄色圆点改变图形; 5、右键已经画好的图形,点击绘图工具栏的“绘图”,选择“改变自选图形”,再选择你想得到的图形; 6、绘图默认效果的设置; 7、(重要应用之一)改变单元格批注图形:单元格批注显示后,右键“批示”框,点击绘图工具栏的“绘图”,选择“改变自选图形”,再选择你要得到的图形;

mfc简单绘图程序报告

简单绘图程序 1 需求说明 1.1 问题描述 设计一个简单的绘图应用程序,可以绘制图形或自由绘制线段,可以更改颜色、画笔粗细、保存文件。 1.2功能说明 1.图形绘制功能:直线、椭圆、矩形。 在菜单栏中选择需要的图形(也可以通过工具栏中选择)用鼠标便能在视图中绘出相应的图形。 2.可以绘制自由线段 3.对图形的操作:能通过菜单栏弹出对话框选择线宽、自定义颜色,也可以擦除绘制的线段。 4.可以保存绘图文件,保存后打开可以继续绘制。 2.1.3 数据说明 在程序运行以后,当用户单击某个菜单项时,应该把用户的选择保存起来,以便随后的绘图操作使用。在CDzyView类中添加一个私有变量xz;用来保存用户的选择(直线、矩形、椭圆、自由绘图)在绘制时都可有两点来确定其图形。当鼠标左击时得到一个点,当鼠标停止移动时得到另外一个点。为视图类CDzyView分别捕获鼠标左键按下和弹起这两个消息。当鼠标左键按下时,需要将鼠标当前按下点保存至sx、sy,在鼠标移动停止后,将当前坐标保存至ex,ey.

其他主要数据说明: int fd 判断是否为自由绘图模式int w 线宽 int R RGB中的R int G RGB中的G int B RGB中的B CGraph类中 int m_nType:保存后重绘时用户的选择int qdx; 重绘起点x int qdy; 重绘起点y int zdx; 重绘终点x int zdy; 重绘终点y CLine类中 int cx; 重绘线宽 int sx; 重绘起点x int sy; 重绘起点y int zx; 重绘终点x int zy; 重绘终点y int w; 重绘线宽 自定义颜色对话框关联变量: IDC_EDIT_RED int m_Red IDC_EDIT_GREEN int m_Green IDC_EDIT_BLUE int m_Blue IDC_SCROLL_RED CScrollBar m_Sred IDC_SLIDER_GREEN CSliderCtrl m_Sgreen IDC_SPIN_BLUE CSpinButtonCtrl m_Sblue 2 分析、设计与实现 2.1 主要功能设计与实现

程序设计基础课程设计报告

课程设计(大作业)报告 课程名称:程序设计基础 设计题目:学生成绩记录薄设计 院系:信息技术学院 班级: 设计者: 学号: 指导教师: 设计时间:2013.7 8.-2013.7.13 信息技术学院

昆明学院课程设计(大作业)任务书

学生成绩记录薄设计 一、课程设计目的与要求 1.课程设计目的 (1)综合运用之前所学知识(选择控制,循环控制,数组,函数,指针,结构体和文件等)来完成一个简单的信息管理程序的设计。 (2)充分体现和体会函数在程序设计中的必要性和实用性,并反映主函数main()在程序设计中的实现思路和方法。 2. 课程设计要求 设计一个简易学生成绩记录簿设计,其中包括:姓名,学号,C语言成绩; 具体功能: 1.系统以菜单方式工作 2. 创建学生成绩信息并以磁盘文件保存; 3. 读取磁盘文件并显示输出所有学生的成绩; 4. 查询学生成绩 (1)按学号查询成绩 (2)学号姓名查询成绩 5.添加成绩记录; 6.修改指定姓名或学号的学生的成绩并可存盘; 7.显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。 二、总体设计 图1 系统总体结构

三、详细设计 1、数据结构设计 #include #include #include #include int n=4; struct student { int num; /*学号*/ char name[10]; /*姓名*/ float score[3]; /*成绩*/ } 2.函数说明 1.主函数 main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。 2.其他部分功能函数包括 (1) 将学生成绩信息保存为文件void save(); 算法思想: ①定义指向文件的指针变量; ②输入保存路径及文件名,打开文件,若不能打开文件给出提示信息; ③将存有学生成绩信息的结构体数组信息依次保存到文件中。 (2)学生成绩信息录入函数void input() 算法思想: ①依次录入结构体数组中所包含的各个成员; ②直到输入的结构体成员中信息为4,数据输入结束; ③返回实际录入的学生成绩信息数。 (3)从文件中读出学生成绩信息void output(); 算法思想: ①定义指向结构体变量的指针和指向文件的指针; ②输入文件的路径,打开文件,若不能打开文件给出提示信息; ③将文件中的信息依次读出,最后结构体的指针为NULL。

常用绘图工具及其使用方法

第二节 常用绘图工具及其使用方法 [Common drawing tools and their usage] 正确使用手工绘图工具和仪器是保证手工绘图质量和加快绘图速度的一个重要方面。常用的手工绘图工具和仪器有:图板、丁字尺、三角板、圆规、分规、比例尺、曲线板、铅笔等。现将常用的手工绘图工具和仪器的使用方法简介如下。 一、图板、丁字尺和三角板[Drawing board, T-square and triangles] 图板是画图时铺放图纸的垫板。图板的左边是导向边。 丁字尺是画水平线的长尺。画图时,应使尺头紧靠图板左侧的导向边。水平线必须自左向右画,如图1-11a所示。 三角板除直接用来画直线外,也可配合丁字尺画铅垂线,三角板的直角边紧靠着丁字尺,自下而上画线,如图1-11b所示。三角板还可配合丁字尺画与水平线成15°倍角的斜线。如图1-11c所示。 (a) 自左向右画水平线 (b) 自下而上画铅垂线 (c) 画15°倍角的倾斜线 图1-11 用图板、丁字尺和三角板画线 二、圆规和分规[Commpass and divider] 圆规是画圆及圆弧的工具,也可当作分规来量取长度和等分线段。使用前应先调整针脚,使针脚带阶梯的一端向下,并使针尖略长于铅芯,如图1-12a所示。画大圆时要接上加长杆,使圆规的两脚均垂直于纸面,如图1-12b所示。 分规是用来正确量取线段和分割线段的工具。为了度量尺寸准确,分规的两个针尖应调 (a) 铅芯脚和针脚高低的调整 (b) 针脚和铅芯脚都应垂直纸面 图1-12 圆规的用法

整得一样长,并使两针尖合拢时能成为一点。用分规分割线段时,将分规的两针尖调整到所需距离,然后,使分规两针尖沿线段交替做圆心顺序摆动行进,如图1-13所示。 三、比例尺[Scale ruler] 比例尺仅用于量取不同比例的尺寸。绘图时,不必计算,按所需要的比例,在比例尺上直接量取长度来画图。其使用方法如图1-14所示。 图1-13用分规等分线段 图1-14比例尺及其用法 四、曲线板[Irregular curve ruler] 曲线板用来描绘各种非圆曲线。用曲线板描绘曲线时,首先要把求出的各点徒手轻轻地勾描出来,然后根据曲线的曲率变化,选择曲线板上合适部分,至少吻合3~4点,如图1-15所示,前一段重复前次所描,中间一段是本次描,后一段留待下次描。依次类推。 五、铅笔[Pencil] 铅笔用于绘图线及写字。铅笔铅芯有软硬之分,“B”表示软铅,“H”表示硬铅,“HB”表示中软铅。画细线用H或2H铅笔,画粗:线用HB或B铅笔;圆规所用铅芯一般要比画相应图线的铅笔软一些;写字用HB或H的铅笔。画粗线的铅笔芯一般磨成铲形,其余磨成锥形,如图1-16所示。圆规所用铅芯一般磨成锥形。 图1-16 铅笔的削法 图1-15 用曲线板描绘曲线

简单画图程序-课程设计

简单画图程序-课程设计 目录 1. 基本功能描 述 ............................................................. 1 2. 设计思路 ................................................................. 1 3. 软件设 计 (3) 3.1 设计步 骤 (3) 3.2 界面设 计 (6) 3.3 关键功能的实 现 ...................................................... 7 4. 结论与心 得体会 ........................................................... 8 5. 参考文 献 ................................................................. 9 6. 思考 题 (9) 7. 附 录 ..................................................................... 9 7.1 调试报 告 (9)

7.2 测试结 果 (10) 7.3 关键源代 码 (1) 武汉理工大学《专业课程设计2(面向对象程序设计)》课程设计说明书 简单画图程序 1. 基本功能描述 1) 在菜单处的有相应的菜单项,可以选择绘制的图形形状,如直线、矩形及椭圆,可 -5可供选择,还可以选择线色以及填充色,通过弹出的颜色对话框选择以选择线宽,有1 需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔以及画刷来绘制选择的图形。 2) 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,鼠标弹起,此图形则绘制完毕。 3) 增添了工具栏,有相应的选择项,可以更方便地实现相应的功能。 2. 设计思路 1) 对需要用到的变量进行初始化。 2) 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同的线宽,线色与填充色,则改变画笔和画刷的属性。 3) 鼠标的按下响应LButtonDown(),定义起点的坐标,鼠标的拖动响应MouseMove()改变终点的坐标,鼠标的弹起响应LButtonUp(),刷新,得到绘制图形。

VB程序设计课程设计报告完整版

V B程序设计课程设计 报告 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

《VB程序设计》 课程设计报告(2016 — 2017 学年第 1 学期) 题目:排序演示 学院:经济与管理学院 班级:物流管理1502 学号: 姓名: 指导教师:阮冰 时间:起 2017年1月3日止 1月6日

一、课程设计基本信息 课程代码:05190124 课程名称:计算机基础课程设计 课程英文名称: Computer-based Course Design 课程所属单位(院(系)、教研室):数学与计算机学院计算机基础课程群 课程面向专业:生物科学类、制药工程、制药工程(生物制药)、药物制 剂、物流管理 课程类型:必修课 先修课程:大学计算机基础通识选修课程、Visual Basic程序设计课程学分:1 总学时:16 二、课程设计目标 掌握所学语言程序设计的方法,熟悉所学语言的开发环境及调试过程,熟悉所学语言中的数据类型,数据结构、语句结构、运算方法,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。通过综合设计要求达到下列基本技能: 1.培养查阅参考资料、手册的自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。 2.通过对所选题目方案分析比较,确立方案,编制与调试程序,初步掌握程序设计的方法,能熟练调试程序。 3.系统设计编程简练,可用,功能全面,并有一定的容错能力。用户界面良好,有较好的输出功能。在完成课题基本要求后,具有创新型设计,具有一定的实用价值。 4.根据个人的设计调试过程,撰写设计报告。 三、课程设计内容 利用已掌握的VB程序设计语言基础,以及面向对象的程序设计方法、事件驱动的编程方式,进行应用程序和系统的开发设计。在强化巩固已有编程知识基础之上,训练新的设计与编程思路,通过综合应用所学知识设计、编制、调试实用的Visual Basic程序。 四、课程设计要求 1.要求每个同学都要认真对待,积极参与。 2.课程设计结束时,提交完成的所有源程序、相关文件和可执行文件。同 时填写并完成《课程设计报告册》。 3.不符合要求的程序、设计报告、抄袭的设计报告或源程序代码、在设计 中完全未参与的将作不及格处理。 五、考核方式

几何画板教程第二节:用绘图工具绘制简单的组合图形

第二节用绘图工具绘制简单的组合图形 下面我们用绘图工具来画一些组合图形,希望通过一下范例的学习,你能够熟悉绘图工具的使用,和一些相关技巧。 例1、三角形(一) 一、制作结果如图所示,拖动三角形的顶点,可改变三角形的形状、大小 这个三角形是动态的三角形,它可以被拖成下列三角形之一,如图9所示。 图9 二、要点思路熟悉“直尺工具”的使用,拖动图中的点改变其形状。 三、操作步骤观察图10,你能明白三角形就是用【直尺工具】画三条首尾相接的线段所组成的图形。 图10 1、打开几何画板,建立新绘图 2、单击【直尺工具】,将光标移到在绘图区,单击并按住鼠标拖动,画一条线段,松 开鼠标。 3、在原处单击鼠标并按住拖动,画出另一条线段,松开鼠标。(注意光标移动的方向) 4、在原处单击鼠标并按住拖动,画出第三条线段,光标移到起点处松开鼠标。(注意起点 会变色) 5、将该文件保存为“三角形.gsp” 拓展:你也可以将光标移到在绘图区,单击并松开鼠标拖动,画一条线段,单击鼠标。在原处再单击鼠标并松开拖动,画出另一条线段,单击鼠标。在原处单击鼠标并松开拖动,画出第三条线段,光标移到起点处单击鼠标。 例2三角形(二) 一、制作结果三角形三边所在的线分别是直线、射线和线段,拖动三角形的顶点可以改变三角形的大小和形状,如图11所示。在讲解三角形的外角时,就可构造此图形。 图11

二、知识要点学会使用【线段工具】、【直线工具】、【射线工具】以及它们相互之间的切换。 三、操作步骤 1、打开几何画板,建立新绘图。 2、选择画直线工具将光标移动到【直尺工具】上按住鼠标键不放,移动光标到【直线工 具】上,松开鼠标,如图12所示。 图12 3、画直线将鼠标移动到画板中,按下鼠标键,向右拖曳鼠标后松鼠标键。 4、选择画射线工具用鼠标对准【直线工具】,按下鼠标键并拖曳到【射线工具】处松鼠 标,如图13所示。 图13 5、画射线将鼠标对准定义直线的左边一点(在按下鼠标左键之前请注意窗口左下角的提 示),按下鼠标键,向右上拖曳鼠标后松鼠标键。 6、选择画线段工具用鼠标对准画线工具,按下鼠标键并拖曳到线段工具处松鼠标。如图 14所示。 图14 7、画线段将鼠标对准定义射线的右上一点C(注意窗口左下角的提示信息),按下鼠标 键,向定义直线的右边一点B拖动(注意提示),匹配上这一点后松鼠标。8、将该文件保存为“三线三角形.gsp” 例3、圆内接三角形 一、制作结果如图15所示所示,拖动三角形的任一个顶点,三角形的形状会发生改变,但始终与圆内接。 图15 二、要点思路学会使用画线工具在几何对象上画线段 三、操作步骤如图16所示 图16 1、打开几何画板,建立新绘图。

简单的画图软件画流程图

流程图是一种表示算法的图示,通常用图形将操作步骤,用带箭头的线连接起来的一系列操作,用以表示执行任务的前后步骤。通过流程图直观的展示,更易于工作参与人员的理解。根据美国标准化协会确定的流程图符号,也常被世界工作者所采用,常用的流程图符号有处理框、判断框、输入输出框、起止框、连接点、流程线和注释框。 传统的流程图用连接线指出各项工作顺序,对于新手来说,并不能掌握其中的规律,画出来的流程图,让阅读者花费很大的精力去了解整个流程和算法。如果我们可以借助模板,这样就可以规律性的修改各节点的顺序组成,让阅读者更容易从头到尾的看下去。亿图图示正好满足以上优点,还有额外三大特点:操作简单、模板丰富并且兼容多种文件。 流程图模板 亿图图示可以创建多种类型的流程图:事件流成图、工作流程图和程序流程图等等。

流程图例子 丰富的例子可帮助我们快速绘制想要的流程图框架,方便二次编辑。 选择好专业的流程图工具,接下来我们详细的了解一下绘制步骤。 首先下载并安装亿图图示软件,选择新建流程图,创建空白文档进入画布,当然也可以选择自己喜欢的流程图模板点击进入。 其次,在左侧的符号栏里有各种符号,用来搭建整个框架,选择需要的符号,直接拖拽到画板位置,利用软件的网格和标尺定位好图形符号的位置 最后,记得双击图形,输入补充文本关键词。如果想要流程图显得不那么单调,可以通过上方的样式栏更换主题颜色,使得流程图更专业。

亿图图示,即亿图图示专家(EDraw Max),是一款基于矢量的绘图工具,包含大量的事例库和模板库。可以很方便的绘制各种专业的业务流程图、组织结构图、商业图表、程序流程图、数据流程图、工程管理图、软件设计图、网络拓扑图等等。它帮助您更方便,更快捷的阐述设计思想,创作灵感。

《.NET程序设计》课程设计报告.doc

《.NET程序设计》课程设计报告 班级:计算机1403 学号:1411640305 姓名:黄世增

一、实验名称 作者信息管理系统 二、实验目的 1.进一步掌握并加深“.NET程序设计”课程的基本知识,理解“.NET程序设计”课程中重点讲解的https://www.doczj.com/doc/421522834.html,技术在项目开发中的应用。 2.培养正确的程序设计思想,提高分析问题、解决问题的能力。 3.提高学生进行技术总结和撰写说明书的能力。 三、系统设计描述 实验设计内容: 本次实验设计的内容是使用https://www.doczj.com/doc/421522834.html,技术为某出版社设计并实现一个小型作者信息管理系统。出版社的工作人员登录该系统后,可以查看该社出版的各类书籍的作者的信息,并可以对作者信息进行各类查询,便于工作人员对作者信息进行管理。 系统数据库设计: 在SQL Server Express中为作者信息管理系统建立一个名为作者信息管理系统的数据库,并设计以下2张数据表: 1.系统管理员表 该表用来记录使用本系统的管理员的基本信息,包括管理员账户及密码。 【思考题】 (1)数据库中的一条记录中有若干个属性,若其中某一个属性(注

意是组)能唯一标识一条记录,该属性组就可以成为一个主键。 统管理员表中用户名应设为主键。 (2)用户名和密码都设为varchar字符型。 2.作者个人信息表 该表用来记录作者个人的基本信息,包括作者编号、姓名、联系地址、电话、email。 【思考题】 (1)表中作者编号应设为主键。 (2)表中作者ID、电话号码和Email为nchar字符串型,姓名和联系人地址为nvarchar字符串型。 设计好数据库的两个表后,分别在两个表中输入数据,如下图所示:

程序设计课程设计要求

《程序设计基础》课程设计安排及要求附件一: 《程序设计基础》课程设计登记表 班级姓名学号电话题目 题目 描述 及要 求

1.题目可从参考中选择,也可以自选,但要得到指导教师认可; 附件二: 游戏类题目: 1.扑克游戏 (1)21点游戏 (要求:1.源文件采用多文件的工程结构2.标准的C输入输出3.功能完善,适当的注释) 2.五子棋游戏 要求:模块化程序设计,能实现人人对弈,能悔棋一步,并判断玩家输赢。 3.中国象棋游戏 要求:模块化程序设计,能实现人人对弈,能判断走棋是否合法,允许悔棋一步,并能对玩家记时。 4.俄罗斯方块 要求:模块化程序设计,能显示方块的堆放及消除效果,可以选难度,记分规则等。 5.汉诺塔的动态演示 要求:模块化程序设计,能自动移动hanoi的盘子,要求能输入塔盘的数量。 6.重排九宫游戏 要求:“重排九宫”,8个数字放在3*3九个格子中,余下一个格子为空。要求可以用鼠标拖动数字,并记录玩家花费的时间。 7.贪食蛇游戏 要求:模块化程序设计,可以选择难度,实现记分功能。 8.打地鼠游戏 要求:实现打地鼠的动画效果。

应用程序类题目: 1. 工具软件 (1)简易计算器(自学数据结构“栈”部分内容) 小型整数、实数、复数计算器,设计并实现一个小型计算器,包括如下功能:实现加减乘除等功能,并显示运算结果 2. 工具软件 (2)回文判断程序(自学数据结构“栈”、“队列”相关内容) 写一个栈及一个队列,实现判断一个字符串是否为回文。 (要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学) 3. 实用工具的设计与使用 (1)编写一个DateTime函数:用并实现如下功能:设置日期、时间,用日/月/年,时:分:秒格式输出日期和时间,可实现日期增加、减少一天、增加一小时、减少一小时的操作,以及某一天是星期几、判断闰年,十二小时与二十四小时制转换、等操作。 (要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学) 4. 实用工具的设计与使用 (2)CString函数 定义一个CString函数,实现字符串的全部操作(例如strcpy、strcmp、strlen、strcat等,具体可以查Turboc2的帮助说明)。 (要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学) 5. 实用工具的设计与使用 (3)多项式矩阵操作函数 定义一个多项式矩阵操作函数,实现多项式矩阵的操作(赋值、+、-、*、/、转置等)。(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学) 6. 单词类软件 (1)单词学习软件 单词(中英文)录入、修改、删除管理、提供多种(至少三种,例如,给出英文选中文,给出中文写英文等)单词学习方法,对出错单词能够进行查询、统计、排序。 (要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)

基于MFC的简单画图程序实验

简单画图程序 【实验目的】 本实验目的是通过构建基于MFC的windows画图程序,使学生: (1) 理解MFC应用程序的运行机制 (2) 掌握使用MFC构建Windows应用程序的基本结构及编程的基本方法 (3) 理解和掌握MFC应用程序消息处理机制及应用 (4) 掌握类向导(ClassWizard)的使用 【实验要求】 (1) 必须做好实验原理的预习。 (2) 需要对提供的程序代码进行分析,并明确实验时还应在何处添加哪些语句。 【实验环境】 Microsoft Windows XP Microsoft Visual C++ 6.0 1 基本功能描述 1) 在单文档菜单中,在菜单行中可插入一个菜单项,命名为绘图,在下拉菜单中可分别设置绘制的图形形状,如直线、矩形及椭圆,线宽选项,有1-5可供选择,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。 2) 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,当鼠标弹起,此图形则绘制完毕。 3) 增添工具栏,设置绘制的图形形状,线色以及填充色,可更方便地选择相应的功能。 2 设计思路 1) 对需要用到的变量进行初始化。 2) 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同

3) 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。 4) 选择图形或其它属性,可进行下一次绘制。

相关主题
文本预览
相关文档 最新文档