预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数据结构设计实习报告专业:地理信息系统班级:0503702学号:这个我不知道也姓名:倪倪指导老师:王强是他吗??好像是我哟!!2007-7-11数据结构设计实习报告--测量数据读取及分类程序7月2号--6号,数据结构老师安排我们进行了数据结构设计的实习。本次实习旨在让我们能熟练运用C语言编程实现对数据的操作,能熟练使用链表和栈两种结构。同时拥有对数据的基本分析和基本处理能力。掌握用C语言编程的基本方法和程序架构的基本设计,为我们培养良好的编程习惯和编程风格,同时为以后的GIS软件开发打好基础。实习程序设计要求本次实习老师首先给定一个武汉测量实习的数据文件,文件名为"武汉实习数据.usr"。里面包括了武汉市的道路,房屋等设施的点的数据。老师要求我们编写一个程序,要实现读取此文件中的数据,并且按点、线、面分类,然后在点、线、面每一项下在再分不同类型的点,最后按选择不同类的点输出此类型下所有点的坐标。程序需求分析根据老师的要求,我分析本程序首先涉及两大功能模块,第一个功能模块就是这个数据读取和存储,第二个功能模块就是数据的分类操作和输出,具体模块分析后我采用了三个函数来实现这两个模块的功能,具体如下:1.数据文件的读取和存储//第一个模块Id*creat()2.数据操作即数据分类//第二个模块voidoperation()3.对分类数据的输出//第二个模块voidprint(参数)对程序总体架构进行设计。具体设计如下:structcoordinate{};//坐标structcode{};//代码structId{};//IDId*creat(){}//文件读取创建结构Voidprint(参数){}//输出指定的分类数据Voidoperation(Id*head)//分类操作{print(参数);//调用分类输出函数print(参数);...........}Main(){Id*head;head=creat();//获取结构的入口operation();//分类操作}首先对第一个功能模块分析,数据文件的读取,先查看了数据文件,大体了解数据。文件中大体分四个部分,第一部分目标ID,也就是文件中多少个点,共655个。第二部分是目标分类代码。第三部分是各类型下的坐标。第四部分为结束标志。如下所示:目标ID,0关键字,0目标分类代码,0分类码,0x1,y1x,y坐标串x2,y2......xn,yn-666666.0,-666666.0目标结束......下一个目标-999999,-999999整个文件结束分析得出,要用链表来存储数据。具体的分为两个链表,一个用来存目标的ID;另一个用来存分类码和坐标数据。首先定义一个双指针域的链表,一个指针域用来连接它本身,另一个用来存目标分类码的地址,也就是第二个链表的头指针,从而使两个链表连起来。此结构的结构图和代码如下:IDIDID..............类型类型类型..............X,YX,YX,Y代码:structcoordinate{doublex;doubley;coordinate*next;};structcode{intcode1;intcode2;coordinate*next;};structId{intId1;intId2;Id*next;code*next1;};下来对程序的第二部分,数据的分类。文件中规定了分类格式如下所示:分类代码:代码名称30000控制点10000图廓点10001铁路10003汽渡虚线10004主要道路20001码头20002铁路中转站20003河流、湖泊20004居民地3、代码说明:分类代码第一个字符为1,表示线目标为2,表示面目标我采用对上面的代码同时求余和求整,这样就达到分双层的目的,用了IF语句。如下示:if(q->dm1/10000==1&&q->dm1%10000==0)//就输出代码为10000的数据第三部分,数据的输出。采用链表的一般顺序输出即可。至此,程序的主体结构已设计完成。下面进行详细设计和代码的编写。程序详细设计首先编写代码定义如上两个链表。其中存放ID的链表有两个指针域,一个*next用来指向下一个ID节点,一个*next1用来指向另一个链表第一个节点,即连接两个链表。图参照上图,代码如下:structcoordinate{doublex;doubley;coordinate*next;};structcode{intcode1;intcode2;co