四种空间数据模型_第1页
四种空间数据模型_第2页
四种空间数据模型_第3页
四种空间数据模型_第4页
四种空间数据模型_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、四种数据库结构模型存储空间数据实验报告题目:四种数据库结构模型存储空间数据报告人姓名:陈辉学号:3121809201时间2015年5月17日地点:02223软件操作系统:windows XP使用软件:MAPGIS67 Visual C+6硬件CPU 主频:3.00 MHz内存:2048 MB显存:512MB实验目的1、分别用四种数据库模型(层状、网状、关系、面向对象)画出下面给定空间数据 的计算机组织结构图2、采用计算机编程或软件工具实现下列空间数据的四种模型之一的存储与操作。3、验初数始 据实文件名简单描述1、实验二数据空间数据库实验课-实验内容与成果要求一、实验原理层状模型(层次模型):是

2、数据库系统中最早出现的数据模型,层状数据库系统采用层次模型 作为数据的组织方式,用树形结构来表示各类实体以及实体间的联系。它的特点是将数据 组织成一对多关系的结构。层次结构采用关键字来访问其中每一层次 的每一部分。网状模型:在现实世界中客体的联系更多的是非层次关系的,用层次模型表示非树形结构是很 不直接的,网络模型可以克服这一弊病。在数据库中,把满足以下两个条件的基本层次联系集 合称为网状模型:允许一个以上的结点无双亲:一个结点可以有多于一个的双亲。网状模型可 以更直接地去描述现实世界,而层次模型实际上是网状模型的一个特例。关系模型:是一种数学化的模型,它是将数据的逻辑结构归结为满足一定条件的

3、二维表。实体 本身的信息以及实体之间的联系均表现为一维表,在数学上把这种二维表叫做“关系”。这些关 系表的集合就构成了关系模型。向对象的数据:为了有效地描述复杂的事物或现象,需要在更高层次上综合利用和管理多种数 据结构和数据模型,并用面向对象的方法进行统一的抽象。这就是面向对象数据模型的含义, 其具体实现就是面向对象的数据结构。面向对象的地理数据模型的核心是对复杂对象的模拟和 操纵。中间生成数据文件名1、2、3、分别用四种数据库模型(层状、网状、关系、面向对象) 画出下面给定空间数据的计算机组织结构图;层次结构关系模型地图MapIIIi8多边形IabcdIIcefgh线Ia17Ib12Ic26

4、Id14IIe56IIf54IIg43IIh32i910点:1X1Y12X2Y23X3Y34X4Y45X5Y56X6Y67X7Y78X8Y89X9Y910X10Y10二、采用计算机编程或软件工具实现下列空间数据的四种模型之一的存储与操作。(2):编程代码头文件:#ifndef LIBAISHOU_H_#define LIBAISHOU_H_#include #include class pointfriend std:ostream& operator(std:ostream& os,const point& p_point);private:double x;double y;std:str

5、ing attri;public:point();point(double p_x,double p_y);point(double p_x,double p_y,std:string p_attri);void move(double p_x,double p_y);void reset attri(std:string p string);double dis_point(const point& p_point)const;const std:string& back_attri()const;;class linefriend std:ostream& operator(std:ost

6、ream& os,const line& p_line);private:point m_point2;std:string attri;public:line();line(point p_point2);void set_attri(std:string p_string);void move(point left,point right);void reset_attri(std:string p_string);double length()const;std:string get_attri()const;class polyonfriend std:ostream& operato

7、r(std:ostream& os,const polyon& p_polyon); private:point* point_polyon;std:string attri;int n;public:polyon();polyon(int p_n,std:string p_attri,point p_point);void reset_attri(std:string p_attri);std:string back_attri();polyon();#end if实现文件:#include homework-H.h#include point:point()x=0;y=0;point:po

8、int(double p_x,double p_y)x=p_x;y=p_y;point:point(double p_x,double p_y,std:string p_attri)x=p_x;y=p_y;attri=p_attri;void point:move(double p_x,double p_y)x=p_x;y=p_y;void point:reset_attri(std:string p_string)attri=p_string;double point:dis_point(const point& p_point)constdouble t_dis;t_dis=(x-p_po

9、int.x)*(x-p_point.x)+(y-p_point.y)*(y-p_point.y);return std:sqrt(t_dis);const std:string& point:back_attri()constreturn attri;std:ostream& operator(std:ostream& os,const point& p_point)os(p_point.x,p_point.y);return os;line:line(point p_point2)m_point0=p_point0;m point1=p point1;void line:set_attri(

10、std:string p_attri)attri=p_attri;void line:move(point p_left,point p_right)m_point0=p_left;m_point1=p_right;void line:reset_attri(std:string p_string)attri=p_string;double line:length()constreturn (m_point0.dis_point(m_point1);std:string line:get_attri()constreturn attri;std:ostream& operator(std:os

11、tream& os,const line& p_line)osp_line.m_point0” , p_line.m_point1;return os;polyon:polyon()point_polyon=NULL;attri=;n=0;polyon:polyon(int p_n,std:string p_attri,point p_point)n=p_n;point_polyon=new pointn;for(int i=0;in;i+)point_polyoni=p_pointi;attri=p_attri;void polyon:reset_attri(std:string p_att

12、ri)attri=p_attri;polyon:polyon()delete point_polyon;std:string polyon:back_attri()return attri;std:ostream& operator(std:ostream& os,const polyon& p_polyon)for(int i=0;ip_polyon.n;i+)os*(p_polyon.point_polyon+i)”,”;return os;主程序文件:#include homework-H.h#include #include #include using std:cout;using

13、std:endl;using std:cin;using std:string;using std:getline;using std:ofstream;void menu_point();void menu();void menu_line();void menu_polyon();int main()bool y=true;char ch;ofstream fileout;menu();cout请输入想做的:ch)cin.clear();while(cin.get()!=n)continue;点的操作if(ch=a)点的变量point* point_ptr10=NULL;int i=0;i

14、nt j;double m_x;double m_y;string m_attri;int select;bool point_=true;点的变量system(cls);menu_point();while(point_)coutselect;while(cin.get()!=n)continue;switch(select)case 1:coutm_x;cin.get();coutm_y;cin.get();coutm_attri;cin.get();point_ptri=new point(m_x,m_y,m_attri);i+;break;case 2:coutj;cin.get();

15、if(ji)coutm_x;cin.get();coutm_y;cin.get();point_ptrj-move(m_x,m_y);elsecout点未设置endl;break;case 3:coutj;if(ji)coutm_attri;point_ptrj-reset_attri(m_attri);elsecout点未设置endl;break;case 4:coutj;if(ji)delete point_ptrj;point_ptrj=NULL;cout点已删除endl;elsecout点未设置endl;break;case 5:for(int l=0;l10;l+)/ 容易错的地方i

16、f(point ptrl!=NULL)coutl+1.*(point_ptrl), 属性:back_attri()endl;break;case 6:fileout.clear();fileout.open(D: 点.txt);for(int m=0;m10;m+)if(point_ptrm!=NULL)fileoutm”.”*(point_ptrm)”,”属性:back_attri()endl;cout点已写入文件,路径D: 点.txtendl;fileout.close();break;case 7:system(cls);menu();point_=false;break;default

17、:cout请输入正确的数字:endl;点的操作线的操作if(ch=b)int i=0;int j;int select;double left_x;double left_y;double right_x;double right_y;string m_attri;point line_point2;system(cls);menu_line();bool line_=true;line* line_ptr10=NULL;while(line_)coutselect;while(cin.get()!=n)continue;switch(select)case 1:coutleft_x;cout

18、left_y;line_point0=point(left_x,left_y);coutright_x;coutright_y;coutm_attri;line_point1=point(right_x,right_y);line_ptri=new line(line_point);line_ptri-set_attri(m_attri);i+;break;case 2:coutj;if(ji)coutleft_x;coutleft_y;line_point0=point(left_x,left_y);coutright_x;coutright_y;line point1=point(righ

19、t x,right y);line_ptrj-move(line_point0,line_point1); elsecout线未设置endl;break;case 3:coutj;if(ji)coutm_attri;line_ptrj-reset_attri(m_attri);cout属性已设置endl;elsecout线未设置endl; break;case 4:coutj;if(ji)cout”长度为length()endl;elsecout线为设置endl; break;case 5:coutj;if(ji)delete line_ptrj;line_ptrj=NULL;cout线已删除

20、endl; elsecout线为设置endl;break;case 6:for(int l=0;l10;l+) if(line_ptrl!=NULL) coutl+1.*(line_ptrl),属性:get_attri()endl; break; case 7:fileout.clear();fileout.open(D: 线.txt);for(int m=0;m10;m+) if(line_ptrm!=NULL)fileoutm”.”*(line_ptrm)”,”属性:get_attri()endl; cout线已写入文件,路径D: 线.txtendl; fileout.close(); b

21、reak; case 8: system(cls); menu(); line_=false; break; default:cout请输入正确的数字endl;线的操作多边形的操作if(ch=c)system(cls);menu_polyon(); bool polyon=true;int select;int vertex;point* point_number=NULL;int vertex_x;int vertex_y;int i=0;int j;polyon* polyon_ptr10=NULL;string attri;while(polyon_)coutselect;while(c

22、in.get()!=n)continue;switch(select)case 1:coutvertex;if(point_number!=NULL)delete point_number;point_number=new pointvertex;cout输入各个顶点的坐标:endl;coutendl;for(int l=0;lvertex;l+)cout请输入第l+1vertex_x;cout请输入第”l+1vertex_y;coutendl;point_numberl=point(vertex_x,vertex_y);coutattri;polyon_ptri=new polyon(ver

23、tex,attri,point_number);i+;break;case 2:coutj;if(ji)coutattri;polyon ptrj-reset attri(attri);cout属性已设置endl; elsecout多边形未设置endl; break; case 3: coutj; if(ji) delete polyon_ptrj;polyon_ptrj=NULL;cout多边形已删除endl; else cout多边形未设置endl; break; case 4: for(int l=0;l10;l+) if(polyon_ptrl!=NULL) coutl+1.*(polyon_ptrl)属性:back_attri()endl; break; case 5: fileout.clear(); fileout.open(D: 面.txt); for(int m=0;m10;m+) if(polyon_ptrm!=NULL) fileoutm”.”*(polyon_ptrm)”属性:back_attri()endl;cout面已写入文件,路径D: 面.txtendl; fileout.close(); break;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论