四種空間數(shù)據(jù)模型_第1頁
四種空間數(shù)據(jù)模型_第2頁
四種空間數(shù)據(jù)模型_第3頁
四種空間數(shù)據(jù)模型_第4頁
四種空間數(shù)據(jù)模型_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、四種數(shù)據(jù)庫結(jié)構(gòu)模型存儲空間數(shù)據(jù)實驗報告題目:四種數(shù)據(jù)庫結(jié)構(gòu)模型存儲空間數(shù)據(jù)報告人姓名:陳輝學(xué)號:3121809201時間2015年5月17日地點:02223軟件操作系統(tǒng):windows XP使用軟件:MAPGIS67 Visual C+6硬件CPU 主頻:3.00 MHz內(nèi)存:2048 MB顯存:512MB實驗?zāi)康?、分別用四種數(shù)據(jù)庫模型(層狀、網(wǎng)狀、關(guān)系、面向?qū)ο螅┊嫵鱿旅娼o定空間數(shù)據(jù) 的計算機組織結(jié)構(gòu)圖2、采用計算機編程或軟件工具實現(xiàn)下列空間數(shù)據(jù)的四種模型之一的存儲與操作。3、驗初數(shù)始 據(jù)實文件名簡單描述1、實驗二數(shù)據(jù)空間數(shù)據(jù)庫實驗課-實驗內(nèi)容與成果要求一、實驗原理層狀模型(層次模型):是

2、數(shù)據(jù)庫系統(tǒng)中最早出現(xiàn)的數(shù)據(jù)模型,層狀數(shù)據(jù)庫系統(tǒng)采用層次模型 作為數(shù)據(jù)的組織方式,用樹形結(jié)構(gòu)來表示各類實體以及實體間的聯(lián)系。它的特點是將數(shù)據(jù) 組織成一對多關(guān)系的結(jié)構(gòu)。層次結(jié)構(gòu)采用關(guān)鍵字來訪問其中每一層次 的每一部分。網(wǎng)狀模型:在現(xiàn)實世界中客體的聯(lián)系更多的是非層次關(guān)系的,用層次模型表示非樹形結(jié)構(gòu)是很 不直接的,網(wǎng)絡(luò)模型可以克服這一弊病。在數(shù)據(jù)庫中,把滿足以下兩個條件的基本層次聯(lián)系集 合稱為網(wǎng)狀模型:允許一個以上的結(jié)點無雙親:一個結(jié)點可以有多于一個的雙親。網(wǎng)狀模型可 以更直接地去描述現(xiàn)實世界,而層次模型實際上是網(wǎng)狀模型的一個特例。關(guān)系模型:是一種數(shù)學(xué)化的模型,它是將數(shù)據(jù)的邏輯結(jié)構(gòu)歸結(jié)為滿足一定條件的

3、二維表。實體 本身的信息以及實體之間的聯(lián)系均表現(xiàn)為一維表,在數(shù)學(xué)上把這種二維表叫做“關(guān)系”。這些關(guān) 系表的集合就構(gòu)成了關(guān)系模型。向?qū)ο蟮臄?shù)據(jù):為了有效地描述復(fù)雜的事物或現(xiàn)象,需要在更高層次上綜合利用和管理多種數(shù) 據(jù)結(jié)構(gòu)和數(shù)據(jù)模型,并用面向?qū)ο蟮姆椒ㄟM行統(tǒng)一的抽象。這就是面向?qū)ο髷?shù)據(jù)模型的含義, 其具體實現(xiàn)就是面向?qū)ο蟮臄?shù)據(jù)結(jié)構(gòu)。面向?qū)ο蟮牡乩頂?shù)據(jù)模型的核心是對復(fù)雜對象的模擬和 操縱。中間生成數(shù)據(jù)文件名1、2、3、分別用四種數(shù)據(jù)庫模型(層狀、網(wǎng)狀、關(guān)系、面向?qū)ο螅?畫出下面給定空間數(shù)據(jù)的計算機組織結(jié)構(gòu)圖;層次結(jié)構(gòu)關(guān)系模型地圖MapIIIi8多邊形IabcdIIcefgh線Ia17Ib12Ic26

4、Id14IIe56IIf54IIg43IIh32i910點:1X1Y12X2Y23X3Y34X4Y45X5Y56X6Y67X7Y78X8Y89X9Y910X10Y10二、采用計算機編程或軟件工具實現(xiàn)下列空間數(shù)據(jù)的四種模型之一的存儲與操作。(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實現(xiàn)文件:#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點未設(shè)置endl;break;case 3:coutj;if(ji)coutm_attri;point_ptrj-reset_attri(m_attri);elsecout點未設(shè)置endl;break;case 4:coutj;if(ji)delete point_ptrj;point_ptrj=NULL;cout點已刪除endl;elsecout點未設(shè)置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請輸入正確的數(shù)字: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線未設(shè)置endl;break;case 3:coutj;if(ji)coutm_attri;line_ptrj-reset_attri(m_attri);cout屬性已設(shè)置endl;elsecout線未設(shè)置endl; break;case 4:coutj;if(ji)cout”長度為length()endl;elsecout線為設(shè)置endl; break;case 5:coutj;if(ji)delete line_ptrj;line_ptrj=NULL;cout線已刪除

20、endl; elsecout線為設(shè)置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請輸入正確的數(shù)字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屬性已設(shè)置endl; elsecout多邊形未設(shè)置endl; break; case 3: coutj; if(ji) delete polyon_ptrj;polyon_ptrj=NULL;cout多邊形已刪除endl; else cout多邊形未設(shè)置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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論