优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

VC386 基本GIS系统开发+论文

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:

摘  要

近年来,地理信息系统(GIS)是储存和处理与地理空间分布有关信息的集合。在各行各业得到越来越广泛的应用,GIS以其混合数据结构和独特的地理空间分析功能独树一帜 在税务系统中也开始广泛的应用,不仅仅表现为提高管理的效率,而且增加了管理的功能。通过对组件式GIS技术的分析,还比较了WebGIS和VC++等技术,我们决定选用VC++基于进行GIS的开发企业分布地理信息系统。 本系统借助计算机完成企业的分布的电子地图,首先注册才能获取应用的权限,实现了鹰眼功能,一个地区地图的放大 缩小 漫游,箭头 编号标柱 点选  框选 圆选 选择符号 图层控制 按企业编号,企业名字查找 及企业的添加,删除等功能,当然后几项功能只有管理员才可以有使用权限。当选择选择方式进行选择之后,可以显示出被选中企业的名字,然后你可以点击企业的名字在地图上就会把这个企业的位置显放大显示在中心位置,况且不断的闪烁,还可以显示企业的详细信息 [资料来源:http://think58.com]

关键词: VC++; 地理信息系统; 电子地图

[来源:http://www.think58.com]

2 鼠标交互绘图
2.1 用鼠标绘图要解决的主要问题
2.1.1 捕获鼠标操作消息
VC++提供了足够的窗口消息和已经保护的消息处理函数解决这个问题.在应用程序Draw 中实现鼠标交互绘制图形元素时,将主要用到以下三个鼠标操作:
鼠标移动: OnMouseMove(UINT nFlags ,CPoint point)   WM_MOUSEMOVE
按下左键: OnLButtonDown(UINT nFlags.CPoint point)   WM_LBUTTOND
按下右键: OnRButtonDown(UINT nFlags.CPoint point)   WM_RBUTTONDOWN
2.1.2 捕捉所有的鼠标输入
在用鼠标交互绘制一个图形元素时,在已经开始绘图的情况下,不希望还能进行别的操作,以避免造成系统流程和变量初始化等方面的错误.VC++提供了两个成员函数来满足以上的功能需求:
CWnd::SetCapture();
CWnd::ReleaseCapture();
2.1.3 在屏幕上拖动图形
在用鼠标交互绘制图形元素时,为了直观的看到所绘制的图形,一般采用拖动图形的方法.
2.1.4 保存图形数据到文档
用鼠标在屏幕上交互绘制的图形元素,要创建一个图形元素对象并将指向这个图形元素对象的指针保存起来.
2.1.5 将图形以实际的形态重画
用鼠标交互绘制一个图形元素后,要在屏幕上马上显示出这个图形元素的实际形态,必须将图形元素以实际的形态重画.因为在VC++的R2_NOT绘制模式下,线条不是彩色的,拖动的图形都不是用图形元素的实际颜色.必须对图形元素以实际形态进行重画.在矢量图形系统设计中,一般采用CClientDC 对象,在交互绘制图形元素操作完成后,即时在视图中重画这个新增的图形元素.

think58

[资料来源:http://think58.com]


2.2 交互绘制各类图形元素
本设计主要实现交互绘制直线、圆、填充圆、圆弧、标注文本、连续直线、多边形区域、网络点的实现过程.
2.2.1 加入绘图菜单
⑴ 增加菜单资源.
在应用程序Draw 的菜单资源中,增加一个菜单”鼠标绘图”.在这个菜单中包含直线圆填充圆圆弧标注文本连续直线多边形区域网络点网络连接等九个菜单项.

①增加菜单的消息处理函数
afx_msg void OnSize(UINT nType, int cx,int cy);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
afx_msg void OnDrawArc();
afx_msg void OnDrawCircle();
afx_msg void OnDrawCircle1();
afx_msg void OnDrawLine();
afx_msg void OnDrawPline();
afx_msg void OnDrawPlineRgn();
afx_msg void OnDrawText();
afx_msg void OnDrawNet();
afx_msg void OnDrawNetLink();
②在实现文件drawview.cpp中,增加了函数的消息映射机制:
ON_COMMAND(ID_DRAW_ARC,OnDrawArc)
ON_COMMAND(ID_DRAW_CIRCLE,OnDrawCircle)
ON_COMMAND(ID_DRAW_CIRCLE1,OnDrawCircle1)

think58好,好think58 [版权所有:http://think58.com]


ON_COMMAND(ID_DRAW_LINE,OnDrawLine)
ON_COMMAND(ID_DRAW_PLINE,OnDrawPline)
ON_COMMAND(ID_DRAW_RGN,OnDrawPlineRgn)
ON_COMMAND(ID_DRAW_TEXT,OnDrawText)
ON_COMMAND(ID_DRAW_NET,OnDrawNet)
ON_COMMAND(ID_DRAW_NET_LINK,OnDrawNetLink)
③在实现文件drawview.cpp中,增加了消息处理函数的实现代码.
2.2.2 获得图形元素的唯一识别号
我们设计的矢量图形系统,对于任何一个图形元素,必须有一个能够与其他图形元素区分开来的属性,为每类图形元素创建惟一识别号的方法如下所述.
⑴唯一识别号的范围
在应用程序Draw中,将采用同类图形元素具有惟一识别号的方法,即每一类别的图形元素具有不同的成员变量m_id_only.
⑵得到图形元素的惟一识别号
   为了得到每类图形元素的惟一识别号,在文档类CDrawDoc 中定义一个成员函数:
public:
int GetGraphID(short Lb);
函数GetGraphID用来得到要增加的各类图形元素的惟一识别号,参数Lb 用来表示图形类别.在实现文件drawdoc.cpp中,假如函数的实现代码.
2.2.3 依次完成对直线、圆、填充圆、圆弧、标注文本、连续直线、多边形区域、网络点、网络连接的绘制. 本文来自think58

[来源:http://think58.com]

3 矢量图形系统的操作功能
1. 1 增加图形操作菜单 [资料来源:THINK58.com]

目    录

[来源:http://think58.com]

1 实现图形系统的文档和视图……………………………………1
1.1 组织矢量图形系统的图形元素类………………………………1
1.2 组织矢量图形系的文档…………………………………………3
1.2.1 组织面向对象的文档管理机制………………………………3
1.2.2 利用MFC摸板创建管理图形元素对象指针的对象…………3
1.2.3 实现矢量图形系统的文档……………………………………3
1.2.4 实现文档的管理功能…………………………………………3
1.3 实现矢量图形系统的视图………………………………………5
1.3.1 建立坐标系……………………………………………………5
1.3.2 实现各类图形元素的绘制功能………………………………6
1.3.3 实现视图………………………………………………………6
1.4 各类图形元素几何属性的计算…………………………………7
2 鼠标交互绘图……………………………………………………7
2.1 用鼠标绘图要解决的主要问题…………………………………7
2.1.1 捕获鼠标操作消息……………………………………………7
2.1.2 捕捉所有的鼠标输入…………………………………………7
2.1.3 在屏幕上拖动图形……………………………………………7

[资料来源:www.THINK58.com]


2.1.4 保存图形数据到文档…………………………………………7
2.1.5 将图形以实际的形态重画……………………………………7
2.2 交互绘制各类图形元素…………………………………………8
3 矢量图形系统的操作功能……………………………………9
3.1 增加图形操作菜单………………………………………………9
3.2 图形重画…………………………………………………………9
3.3 图形放大和摆动…………………………………………………11
3.4 重画上屏和重画首屏……………………………………………11
3.5 显示全图…………………………………………………………13
3.5.1 各类图形元素的边界矩形计算………………………………13
3.5.2 实现显示全图功能……………………………………………13
3.6 提高矢量图形系统重画速度的基本方法………………………14
3.6.1 提高图形重画速度的方法……………………………………14
3.6.2 提高图形元素的绘制速度……………………………………16
4 图形的选中、移动、旋转、删除……………………………16
4.1 鼠标点选图形元素………………………………………………16
4.2 图形移动…………………………………………………………20 think58

[资料来源:http://THINK58.com]


4.3 图形旋转…………………………………………………………21
4.3.1 点与点的旋转操作……………………………………………21
4.3.2 各类图形元素的旋转操作……………………………………22
4.3.3 实现旋转操作功能……………………………………………22
4.4 图形元素的删除…………………………………………………22
5 数据库应用程序开发技术……………………………………24
5.1 创建基于ODBC的数据库应用程序……………………………24
5.2 CRecordSet类功能分析………………………………………24
5.3 CRecordView视图类分析………………………………………26
6 实现数据库浏览功能…………………………………………27
6.1 创建一个数据库浏览视图………………………………………27
6.2 创建一个CRecordSet派生类对象……………………………28
6.3 实现数据库浏览试图……………………………………………28
7 实现数据库编辑功能…………………………………………28
7.1 建立并初始化存储记录指针的变量……………………………28
7.2 建立数据库编辑功能操作菜单…………………………………29
7.3 建立编辑数据记录的对话框类…………………………………29

think58

[来源:http://www.think58.com]


7.4 增加和修改数据记录……………………………………………29
7.5 删除记录…………………………………………………………29
8 通用数据库过滤功能…………………………………………30
8.1 过滤操作的实现方式……………………………………………30
8.2 创建组织过滤条件的对话框类…………………………………30
8.3 组织过滤条件编辑器的各种功能………………………………30
8.4 在数据库浏览视图中实现过滤功能……………………………31
8.5 增加过滤条件编辑器的功能……………………………………31
参考文献………………………………………………………………33
copyright think58

[资料来源:www.THINK58.com]