电子地图管理系统

合集下载

基于二维三维电子地图的标准地址查询、管理系统

基于二维三维电子地图的标准地址查询、管理系统

基于二维/三维电子地图的标准地址查询、管理系统
基于二维/三维电子地图的标准地址数据库建设是北京数字空间科技有限公司通过多年为通信运营商服务总结的一套实用、高效的标准地址空间化方法,整合运营商各种资源管理数据、标准地址库数据信息,进行迁移、提取、整合、空间化、建立与电子地图完全匹配生成九级标准地址信息库。

二维标准地址查询系统三维标准地址查询系统
产品特点、功能
1、精准定位
使用人员能高效地应用电子地图的地物信息、位置信息和地名信息,进行精准定位操作;
2、地址标准化
严格按照九级标准地址方案建立标准地址库,并实现空间化,受理的业务信息具有直观的空间地理位置信息,大大降低因地址不正确返工率;
3、网络资源空间化
网络资源实现高效空间化,与二维/三维电子地图高度匹配,使用人员在电子地图上可对网络资源情况全面掌控;
4、信息共享
与电信运营商其他业务系统实现无缝衔接、数据共享,减少重复工作。

查询系统主要功能模块
地址模糊查询
前端业务受理员根据客户报建的地址(大概地址)进行相应的模糊查询操作,选取小区楼号,确认详细单元房间位置,从而生成订单的详细标准地址信息,确保网络资源安装位置准确性。

∙已办理业务查询
点击建筑物,就能显示客户已经办理的相关业务,从而方便与客户沟通,同时可以生成详细标准地址,用以生成订单。

∙资源配置查询
搜索相应位置区,查询该位置区的资源配置,通过该查询可以准确快速为订单生成提供依据。

同时,也可以为后续施工提供最有利的现场依据,从而使业务办理快速高效,节省项目施工成本。

电子地图管理系统

电子地图管理系统

#include <cstdio>#include <cstdlib>#include <>#include <cstring>#include <ctime>#include <string>#include <algorithm>#include <iostream>using namespace std;void start();void display();void displaypaixu();void displayjiansuo();Road *head = NULL;void SearchByClass(Road *head){time_t a,b;Road *prev,*p,*end,*temp_head;char Run_time[80];int i=0,Class;printf("请输入您所要查找的道路的番号:\n");scanf("%d",&Class);prev=p=(Road *)malloc(sizeof(Road));n",b-a);}void SearchById(Road *head){time_t a,b;Road *prev,*p,*end,*temp_head;char Run_time[80];int i=0,LinkId;printf("请输入您所要查找的道路的ID:\n");scanf("%d",&LinkId);prev=p=(Road *)malloc(sizeof(Road));n",b-a);}void SearchByName(Road *head){time_t a,b;Road *prev,*p,*end,*temp_head;char Run_time[80];int i=0;char Name[30];printf("请输入您所要查找的道路的名称:\n");scanf("%s",Name);prev=p=(Road *)malloc(sizeof(Road));n",b-a);}void updata(Road*head){FILE*pp;FILE*ppp;FILE*infile;FILE*outfile;time_t a;char filename[20];Road*p1;Road*p2;pp=fopen("","w");if(pp==NULL){printf("文件创建失败\n");exit(1);}.\n");printf("文件更新成功\n");fclose(ppp);n",b-a);}Road* readfile(void){FILE *fp;unsigned short temp_data_size[1]; ...."); time(&begin);head = BubbleSort( head );time(&end);i=end-begin;....");time(&begin);head=SelectSort( head );time(&end);i=end-begin;....");time(&begin);QListSort( &head ,NULL);time(&end);i=end-begin;. |\n");printf(" | |\n");printf(" | ");for(i=0; i<63; i++){printf(">");//此处用time函数来暂停秒以描述程序的加载过程start=clock();finish=clock();while((finish-start)<30)finish=clock();}printf(" ");printf("|\n");printf(" | Load successfully! |\n");printf(" | |\n");printf(" | |\n");printf("--------------------------------------------------------------------------\n");printf("\n 按任意键将进入系统 (Press any key to enter thesystem) \n ");printf("\n ");SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);system("pause");}void display(){printf("----------------------请按照菜单提示输入您的选择-------------\n");printf(" \n");printf(" <1>【读取文件】\n");printf(" <2> 【排序】 \n");printf(" <3> 【检索】 \n");printf(" <4> 【更新】 \n");printf(" <0> 【退出】 \n");}void displayjiansuo(){printf(" ----------------------请按照菜单提示输入您的选择-------------\n");printf(" \n"); printf(" <1>【指定LinkID检索】\n");printf(" <2>【指定交叉link列表示class番号检索】\n");printf(" <3>【指定查找岔路数检索】 \n");printf(" <4>【指定道路名称检索】 \n");printf(" <0>【返回】 \n");}void displaypaixu(){printf("----------------------请按照菜单提示输入您的选择-------------\n"); printf(" \n"); printf(" <1>【冒泡排序】 \n");printf(" <2>【选择排序】 \n");printf(" <3>【快速排序】 \n");printf(" <0>【返回菜单】 \n");}。

CBTC系统电子地图升级管控方案研究

CBTC系统电子地图升级管控方案研究

CBTC系统电子地图升级管控方案研究陈 超(常州地铁集团有限公司,江苏常州 213000)摘要:列车集成控制技术发展以及轨道交通线网规模的逐渐扩大,线路基础设施改造、线路分段开通和线网之间互联互通需求越来越多,对电子地图的升级管控模式提出更高的要求。

分析现行CBTC 系统电子地图在数据准备、更新方式存在的不足,提出新的CBTC 系统电子地图升级的管控方案,以提高电子地图数据的可维护性、可靠性以及安全性。

关键词:电子地图;基于通信列车控制系统;移动授权;可维护性;可靠性;安全性中图分类号:U284.48 文献标志码:A 文章编号:1673-4440(2022)12-0089-04Research on Control and Management Scheme ofUpgrading CBTC System Electronic MapChen Chao(Changzhou Metro Group Co., Ltd., Changzhou 213000, China)Abstract: With the development of train integrated control technology and the gradual expansion of rail transit network, more and more demands have been put forward for the refurbishment of line infrastructure, the sectional commissioning of lines and the interconnection between line networks, which puts forward higher requirements for the control and management mode of upgrading electronic map. This paper analyzes the shortages in the way of data preparation and updating of the current Communication Based Train Control (CBTC) system electronic map and puts forward a new control and management scheme of upgrading electronic map to achieve higher maintainability, reliability and safety of electronic map data.Keywords: electronic map; CBTC; MA; maintainability; reliability; safetyDOI: 10.3969/j.issn.1673-4440.2022.12.018收稿日期:2022-09-13;修回日期:2022-12-05作者简介:陈超(1987—),男,工程师,本科,主要研究方向:城市轨道交通信号系统,邮箱:****************。

第6章电子地图的软件系统ppt课件

第6章电子地图的软件系统ppt课件
5
6.2 电子地图的软件系统设计
❖ 地图符号库管理系统设计 地图符号库管理系统提供普通与专题两类
地图符号的建立、组织、管理功能与应用接口。 包括点、线、面符号的创建、存取、修改、删除 等处理功能,以及面向各类地图目标的符号化调 用接口。
6
6.2 电子地图的软件系统设计
❖ 电子地图设计系统设计 包括地图的数据采集、数据集成以及数据
在此阶段主要完成如下 任务:
在系统的总体设计基础 上,根据图集内容要求,进 行相关资料的收集。这些资 料包括:地图资料(包括地 形图、专题图等),专题信 息的统计数据、文字资料和 视频资料等。在一些特殊的 情况下,一些数据要进行实 地采集。
34
6.5 电子地图的设计与制作
ห้องสมุดไป่ตู้
一、需求分析 二、系统设计 三、资料收集 四、资料编辑 五、系统集成 六、检查调试 七、出版发行
览、目标查询、路径分析、实时动态定位和移 动导航等功能。
8
6.2 电子地图的软件系统设计
❖ 系统用户界面设计 设计要点:以用户为中心,充分了解系统
的流程,保证系统应用的灵活性、稳定性和集成 性,避免过于花哨的界面、模棱两可的提示、迟 缓的信息反馈和与界面信息不相符的操作。
9
6.3 电子地图软件的开发
Map
Point
Table
Layer
Line
Row
Polygon
Field
13
Map Layer
ArcObjects简述
Point Polygon
14
ArcObjects简述
• 类库
– 组件之间可以相互调用 – 可以自己设计基于组件类库 – 组件的设计与调用和语言无关

电子地图管理系统_RTM

电子地图管理系统_RTM

需求跟踪矩阵(RTM)
担当:张效群、侯冲冲、张晓文、盖玉杰
详细功能点说明 本次変 对应种类 担当者 更后
对应种类说明: ●新增/Δ 修改/×删除/◎保留/-无
读取文件并开始播放音乐/停止播放音乐并退出

陈畏龙
可在任意位置暂停播放音乐并且再次开始播放

陈畏龙
日方叫法
新规 流用 削除 再利用
增/Δ 修改/×删除/◎保留/-无 责任者
需求跟踪矩阵(RTM)
项目名称: 电子地图管理系统
No. 大分類 (模块) 中分類 (子模块)
PM:赵志愚
小分類 (功能点)
播放/停止
开始播放/停止播放
1
播放功能
暂停/开始
暂停播放音乐/重新开始播放
对应种类说明: 对应种类 新增 修改 删除 保留
说明 新增的模块或机能 部分重用,有变更 删除的模块或机能 完全重用,无变更
陈畏龙陈畏龙Fra bibliotek

城市电子地图数据库管理系统的构建与实现

城市电子地图数据库管理系统的构建与实现

业提供权威 、 标准和及时的空间信息框 架基础 , 而 且系统还可 以广泛服务于大众 , 满足不 同用户 埘数字地 图的个性需求 。
关键 词 数 据 库 管 理 ;电 子地 图 ;GI S技 术 ;多 元 数 据 ; 数据处理 TP 3 1 9 D OI : 1 0 . 3 9 6 9 / j . i s s n 1 6 7 2 9 7 2 2 . 2 0 1 3 . 0 8 . 0 2 3 中 图分 类 号
城市勘测部 门在将数 字地 图信 息 与多媒体 信息 结合 、 利用
现代大众媒介为公众服务方面取得 了明显进 展 。以数据 为 核心 的多元数字地 图产 品的需求是建立城市 电子地 图数据
Vo 1 . 4 1 No . 8
1 2 80
计 算 机 与 数 字 程
Co mp u t e r& Di g i t a l En g i n e e r i n g
总第 2 8 6 期 2 0 1 3 年 第 8期
城 市 电子 地 图数 据 库 管 理 系统 的构 建 与 实现
J I A NG Ya n W ANG Xi a o ( I nf o r ma t i o n Ma n a g e me n t a n d I n f or ma t i o n S y s t e m De p a r t me n t o f Hu be i Un i v e r s i t y o f Me d i c i ne ,S h i y a n 4 4 2 0 0 @ )
Ab s t r a c t Th e d a t a b a s e ma n a g e me n t s y s t e m o f e l e c t r o n i c c i t y ma p s o f NS DI d a t a d r i v e n i s b a s e d o n mu l t i p l e d a t a,i n v o l v i n g wi t h GI S

电子地图

电子地图

电子地图电子地图系统是指在计算机软硬件的支持下,以地图数据库为基础,能够进行空间信息的采集、存储、管理、分析和显示的计算机系统。

电子地图系统由硬件、软件、数据和人员等部分组成。

这里着重介绍电子地图的软件组成与主要功能。

软件系统包括操作系统、地图数据库管理软件、专业软件以及其他应用软件。

在电子网络地图系统中地图数据库管理软件是它的核心,它具有构建,管理,检索查询,数据更新等功能:地图构建功能:允许用户根据设计方案选择内容、比例尺、地图投影、地图符号、颜色等,生产预想的地图,以满足需要。

从发展的角度来看,电子地图将成为新的地图制图平台,“地图制图平民化”的趋势也将越来越明显。

地图管理功能:除包含空间数据、属性数据和时间数据外,电子地图还包含多种数据源的数据,因此需要使用地图数据库管理这些复杂、大量的数据。

检索查询功能:可以根据用户需求来检索信息,并以多媒体的形式显示查询结果,包括图形到属性的查询,属性到图形的查询,图形、属性综合查询以及拓扑查询。

数据更新功能:能提供强有力的数据输入、编辑能力,以确保即时地更新数据,保证电子地图的现势性,并为再版地图创造优越的制图环境。

电子地图的图种较多,应用也非常广泛.现在我们来了解一下电子地图家族里的导航图,多媒体地图,网络地图的特点及行业应用.1.导航图现代交通发展以后,出现了复杂的公路体系。

这种公路错综复杂、四通八达,而周围景象往往千篇一律,不容易辨识。

地图是开车行路的必备工具,因此电子导航地图应运而生。

一张CD一ROM能装下全国的所有大大小小的道路数据,开车时携带便携式计算机,就能随时查阅地图。

不过这种电子地图并不像用一张光盘替代一本地图集这么简单,它还有更多的功能,如路径选择:出发前想去哪里,先告诉电子地图,它会帮助选择出一条最快捷的路线。

不一定必须知道目的地在地图上何处,只要有个地址电子地图用地理编码技术就能够自动找目标到并精确定位。

还有详细的资料库能辅助决定旅行计划,如它会告知旅途中会路过哪些名胜景点。

监控系统的电子地图

监控系统的电子地图

监控系统的电子地图一、介绍随着科技的飞速发展,监控系统在各个领域得到了广泛应用。

其中,电子地图作为监控系统的重要组成部分,在实现实时监控、定位和预警方面发挥着关键的作用。

本文将介绍监控系统中电子地图的定义、功能和应用。

二、电子地图的定义电子地图是基于地理信息系统(GIS)技术和网络通信技术开发而成的一种数字化地图,能够在计算机上实时显示出地理位置信息,并支持对监控设备的远程控制和管理。

其主要特点包括地理数据可视化、位置信息追踪和实时数据更新。

三、电子地图的功能1. 地理数据可视化:电子地图通过将地理数据转化为可视化的图形,能够直观地显示出监控系统所涉及的地理位置信息。

用户可以通过电子地图快速查看特定区域的监控设备分布情况。

2. 位置信息追踪:监控系统通过与设备终端进行连接,能够实时获取设备的位置信息,并在电子地图上进行追踪显示。

用户可以准确了解设备的当前位置,及时做出响应。

3. 实时数据更新:电子地图与监控系统实时相连,能够接收到监控设备的实时数据,并在地图上进行动态更新。

用户可以通过电子地图获知设备的状态和运行情况。

四、电子地图的应用1. 公共安全监控:电子地图结合监控系统,可广泛应用于公共安全领域。

例如,在城市监控中心,通过电子地图可以实时监视交通情况、公共场所的安全状况,并迅速响应突发事件。

2. 物流管理:电子地图可以为物流企业提供实时的车辆追踪和配送路线规划。

通过监控系统的电子地图,企业可以准确掌握货物的当前位置和运输进度,优化调度和配送效率。

3. 建筑物管理:电子地图可以用于大型建筑物或物业管理。

通过监控摄像头与电子地图的结合,可以实现对建筑物各个区域的实时监控、访客管理和安全预警。

4.环境监测:电子地图可以与环境监测设备结合,用于对环境污染、气象变化等进行实时监测。

相关部门可以通过电子地图及时掌握各个监测点的数据,并采取相应措施。

五、总结随着监控技术的不断发展,电子地图在监控系统中的应用越来越广泛。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子地图管理系统-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII#include <cstdio>#include <cstdlib>#include <malloc.h>#include <cstring>#include <ctime>#include <string>#include <algorithm>#include <iostream>using namespace std;void start();void display();void displaypaixu();void displayjiansuo();Road *head = NULL;void SearchByClass(Road *head){time_t a,b;Road *prev,*p,*end,*temp_head;char Run_time[80];int i=0,Class;printf("请输入您所要查找的道路的番号:\n");scanf("%d",&Class);prev=p=(Road *)malloc(sizeof(Road));//创建一个结点a=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&a));temp_head = head;if(temp_head == NULL){printf("无数据源");system("pause");exit(5);}while(temp_head!=NULL){if(temp_head->stRoadRec.linkid==Class){end=(Road *)malloc(sizeof(Road));printf("#linkid=%d ",temp_head->stRoadRec.LinkID);printf("roadnameflag=%d ",temp_head->stRoadRec.roadnameflag);printf("brunch=%d ",temp_head->stRoadRec.brunch);printf("dispclass=%d ",temp_head->stRoadRec.linkid);printf("roadname=%s#\n",temp_head->stRoadRec.roadname);p->stRoadRec.LinkID = temp_head->stRoadRec.LinkID;p->stRoadRec.roadnameflag = temp_head->stRoadRec.roadnameflag;p->stRoadRec.brunch = temp_head->stRoadRec.brunch;p->stRoadRec.linkid = temp_head->stRoadRec.linkid;p->stRoadRec.roadname = temp_head->stRoadRec.roadname;p->next=end;p = p->next;i++;}temp_head=temp_head->next;}end->next=NULL;p ->next = NULL;if(i>=5){save(prev);printf("查询结果数大于5,已保存至SearchResult.txt\n");}b=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&b));printf("本次查找用时%d 秒.\n",b-a);}void SearchById(Road *head){time_t a,b;Road *prev,*p,*end,*temp_head;char Run_time[80];int i=0,LinkId;printf("请输入您所要查找的道路的ID:\n");scanf("%d",&LinkId);prev=p=(Road *)malloc(sizeof(Road));//创建一个结点a=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&a));temp_head = head;if(temp_head == NULL){printf("无数据源");system("pause");exit(3);}while(temp_head!=NULL){if(temp_head->stRoadRec.LinkID==LinkId){end=(Road *)malloc(sizeof(Road));printf("#linkid=%d",temp_head->stRoadRec.LinkID);printf("roadnameflag=%d",temp_head->stRoadRec.roadnameflag);printf("brunch=%d",temp_head->stRoadRec.brunch);printf("dispclass=%d",temp_head->stRoadRec.linkid);printf("roadname=%s#\n",temp_head->stRoadRec.roadname);p->stRoadRec.LinkID=temp_head->stRoadRec.LinkID;p->stRoadRec.roadnameflag=temp_head->stRoadRec.roadnameflag;p->stRoadRec.brunch=temp_head->stRoadRec.brunch;p->stRoadRec.linkid=temp_head->stRoadRec.linkid;p->stRoadRec.roadname = temp_head->stRoadRec.roadname;p->next=end;p = p->next;i++;}temp_head=temp_head->next;}p ->next = NULL;if(i>=5){save(prev);printf("查询结果数大于5,已保存至SearchResult.txt\n");}b=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&b));printf("本次查找用时%d 秒.\n",b-a);}void SearchByName(Road *head){time_t a,b;Road *prev,*p,*end,*temp_head;char Run_time[80];int i=0;char Name[30];printf("请输入您所要查找的道路的名称:\n");scanf("%s",Name);prev=p=(Road *)malloc(sizeof(Road));//创建一个结点a=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&a));temp_head = head;if(temp_head == NULL){printf("无数据源");system("pause");exit(6);}while(temp_head!=NULL){if(strcmp(temp_head->stRoadRec.roadname,Name)==0){end=(Road *)malloc(sizeof(Road));printf("#linkid=%d",temp_head->stRoadRec.LinkID);printf("roadnameflag=%d",temp_head->stRoadRec.roadnameflag);printf("brunch=%d",temp_head->stRoadRec.brunch);printf("dispclass=%d",temp_head->stRoadRec.linkid);printf("roadname=%s#\n",temp_head->stRoadRec.roadname);p->stRoadRec.LinkID = temp_head->stRoadRec.LinkID;p->stRoadRec.roadnameflag = temp_head->stRoadRec.roadnameflag;p->stRoadRec.brunch = temp_head->stRoadRec.brunch;p->stRoadRec.linkid = temp_head->stRoadRec.linkid;p->stRoadRec.roadname = temp_head->stRoadRec.roadname;p->next=end;p = p->next;i++;}temp_head=temp_head->next;}p ->next = NULL;if(i>=5){save(prev);printf("查询结果数大于5,已保存至SearchResult.txt\n");}b=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&b));printf("本次查找用时%d 秒.\n",b-a);}void updata(Road*head){FILE*pp;FILE*ppp;FILE*infile;FILE*outfile;time_t a;char filename[20];Road*p1;Road*p2;pp=fopen("newfile.txt","w");if(pp==NULL){printf("文件创建失败\n");exit(1);}//判断文件是否创建成功//p1=head;if(p1==NULL){printf("空指针\n");}//判断头指针是否为空//while(p1!=NULL){fprintf(pp,"%d%d%d%s%d%d",p1->stRoadRec.data_size,p1->stRoadRec.LinkID,p1->stRoadRec.road_size,p1->stRoadRec.roadname,p1->stRoadRec.brunch,p1->stRoadRec.linkid);p1=p1->next;}fclose(pp);//将动态链表中的内容写入文件newfile中//a=time(NULL);strcpy(filename,"update.dat");infile=fopen("jilu.txt","w");fscanf(infile,"%d%s",&a,&filename);//将时间和update.dat都写入文件中// outfile=fopen("jilu.txt","r");if(outfile==NULL)exit(1);fprintf(outfile,"%s",filename);//将文件中的内容读出来作为文件名//fclose(outfile);//将时间加入到文件名中,使更新后之前的文件内容不会被覆盖//ppp=fopen(filename,"wb");if(ppp==NULL)printf("更新文件创建失败\n");p2=head;while(p2!=NULL){fwrite(p2,sizeof(Road),1,ppp);p2=p2->next;}printf("文件更新中...\n");printf("文件更新成功\n");fclose(ppp);//文件更新完毕,将排序后的内容写入文本文件和二进制文件中//}void SearchByBruch(Road *head){time_t a,b;Road *prev,*p,*end,*temp_head;char Run_time[80];int i=0,Bruch;printf("请输入您所要查找的道路的岔路数:\n");scanf("%d",&Bruch);p=(Road *)malloc(sizeof(Road));//创建一个结点prev=p;a=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&a));temp_head = head;if(temp_head == NULL){printf("无数据源");system("pause");exit(4);}while(temp_head!=NULL){if(temp_head->stRoadRec.brunch==Bruch){end=(Road *)malloc(sizeof(Road));printf("#linkid=%d",temp_head->stRoadRec.LinkID);printf("roadnameflag=%d",temp_head->stRoadRec.roadnameflag);printf("brunch=%d",temp_head->stRoadRec.brunch);printf("dispclass=%d",temp_head->stRoadRec.linkid);printf("roadname=%s#\n",temp_head->stRoadRec.roadname);p->stRoadRec.LinkID=temp_head->stRoadRec.LinkID;p->stRoadRec.roadnameflag=temp_head->stRoadRec.roadnameflag;p->stRoadRec.brunch=temp_head->stRoadRec.brunch;p->stRoadRec.linkid=temp_head->stRoadRec.linkid;p->stRoadRec.roadname = temp_head->stRoadRec.roadname;p->next = end;p = p->next;i++;}temp_head = temp_head->next;}p->next = NULL;if(i>=5){printf("i的结果是%d\n",i);save(prev);printf("查询结果数大于5,已保存至SearchResult.txt\n");}b=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&b));printf("本次查找用时%d 秒.\n",b-a);}Road* readfile(void){FILE *fp;unsigned short temp_data_size[1]; //数据大小 2byte buff unsigned int temp_LinkID[1]; //道路编号 4byte buffunsigned short temp_road_size[1]; //道路名称的尺寸 2byte buff unsigned int temp_info[1]; //道路信息 4byte buffchar temp_name[5000]; //GTBL.dat 不存在就输入char *p_name; //道路名称指针Road *head,*pCur,*pEnd;pCur = (Road *)malloc(sizeof(Road));head=pCur;fp = fopen("GTBL.dat","rb+");if(fp == NULL){printf("错误:不能打开 GTBL.dat\n");system("pause");looperror:printf("\n请输入你要打开的文件名\n");scanf("%s",temp_name);fp = fopen( temp_name,"rb+");if( fp == NULL){printf("错误:不能打开%s",temp_name);goto looperror;}}else{printf("读取成功\n");}while(1){pEnd = (Road *)malloc(sizeof(Road));fread( temp_data_size,sizeof(unsigned short),1,fp );pCur->stRoadRec.data_size =M_CHG_INT16(temp_data_size[0]);//printf("%d",pCur->stRoadRec.data_size);fread( temp_LinkID,sizeof(unsigned int),1,fp );pCur->stRoadRec.LinkID = M_CHG_INT32(temp_LinkID[0]);fread( temp_road_size,sizeof(short),1,fp );pCur->stRoadRec.road_size = M_CHG_INT16(temp_road_size[0]);fread( temp_info,sizeof(unsigned int),1,fp );temp_info[0] = M_CHG_INT32( temp_info[0] );pCur->stRoadRec.linkid = ( 0xf & temp_info[0] ); //printf("%d",pCur->stRoadRec.linkid);pCur->stRoadRec.brunch = ( (0x70 & temp_info[0])>>4 );pCur->stRoadRec.roadnameflag = ( (0x80 & temp_info[0])>>7 );if(pCur->stRoadRec.roadnameflag == 1){pCur->stRoadRec.roadname=(char*)malloc(pCur->stRoadRec.data_size-12);//printf("%d",pCur->stRoadRec.data_size-12);p_name = (char*)malloc(pCur->stRoadRec.data_size-12);fread(pCur->stRoadRec.roadname,(pCur->stRoadRec.data_size-12),1,fp);//pCur->stRoadRec.roadname = p_name;}else{pCur->stRoadRec.roadname = NULL;}if(feof(fp)){break;}pCur->next = pEnd;pCur=pCur->next;}pCur->next=NULL;return head;}void QListSort(Road **head, Road *end){Road *right;Road **left_walk, **right_walk;Road *pivot, *old;int count, left_count, right_count;if (*head == end)return;do{pivot = *head;left_walk = head;right_walk = &right;left_count = right_count = 0;//取第一个节点作为比较的基准,小于基准的在左面的子链表中,//大于基准的在右边的子链表中for (old = (*head)->next; old != end; old = old->next){if (old->stRoadRec.LinkID < pivot->stRoadRec.LinkID) //小于基准,加入到左面的子链表,继续比较{++left_count;*left_walk = old; //把该节点加入到左边的链表中,left_walk = &(old->next);}else //大于基准,加入到右边的子链表,继续比较{++right_count;*right_walk = old;right_walk = &(old->next);}}//合并链表*right_walk = end; //结束右链表*left_walk = pivot; //把基准置于正确的位置上pivot->next = right; //把链表合并//对较小的子链表进行快排序,较大的子链表进行迭代排序。

相关文档
最新文档