电子地图管理系统Word格式.docx
- 文档编号:17199736
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:23
- 大小:112.96KB
电子地图管理系统Word格式.docx
《电子地图管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《电子地图管理系统Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
,localtime(&
a));
temp_head=head;
if(temp_head==NULL)
{
无数据源"
system("
pause"
exit(5);
while(temp_head!
=NULL){if(temp_head->
stRoadRec.linkid==Class){end=(Road*)malloc(sizeof(Road));
#linkid=%d"
temp_head->
stRoadRec.LinkID);
roadnameflag=%d"
stRoadRec.roadnameflag);
brunch=%d"
stRoadRec.brunch);
dispclass=%d"
stRoadRec.linkid);
roadname=%s#\n"
stRoadRec.roadname);
p->
stRoadRec.LinkID=temp_head->
stRoadRec.LinkID;
stRoadRec.roadnameflag=temp_head->
stRoadRec.roadnameflag;
stRoadRec.brunch=temp_head->
stRoadRec.brunch;
stRoadRec.linkid=temp_head->
stRoadRec.linkid;
stRoadRec.roadname=temp_head->
stRoadRec.roadname;
next=end;
p=p->
next;
i++;
}
temp_head=temp_head->
end->
next=NULL;
p->
next=NULL;
if(i>
=5)
save(prev);
查询结果数大于5,已保存至SearchResult.txt\n"
}
b=time(NULL);
strftime(Run_time,79,"
b));
本次查找用时%d秒.\n"
b-a);
voidSearchById(Road*head)
inti=0,LinkId;
请输入您所要查找的道路的ID:
\n"
LinkId);
exit(3);
stRoadRec.LinkID==LinkId){
end=(Road*)malloc(sizeof(Road));
#linkid=%d"
roadnameflag=%d"
brunch=%d"
dispclass=%d"
stRoadRec.LinkID=temp_head->
stRoadRec.roadnameflag=temp_head->
stRoadRec.brunch=temp_head->
stRoadRec.linkid=temp_head->
voidSearchByName(Road*head)
inti=0;
charName[30];
请输入您所要查找的道路的名称:
%s"
Name);
exit(6);
=NULL){
if(strcmp(temp_head->
stRoadRec.roadname,Name)==0){
(■nnNHHdd)七
-Jxloi匸m①u=)u①doTddZFPeox
-LFPeoM
XOQorEeu①=4」elp
ro「①LUQ
a)豆no*山J匚
a)匸£
*山J匚
CLdd*山J匚dd*山-nLL
(pe①一upeoMxepdnpo>
宀
_?
q-=5•魚p&
te旺窒题总#=)七£
」d
二qos^Emeoors&
W^H&
A'
CDEQIUnEeEQss
文件创建失败\n"
exit
(1);
}//判断文件是否创建成功//
p1=head;
if(p1==NULL)
空指针\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->
fclose(pp);
//将动态链表中的内容写入文件newfile中//
strcpy(filename,"
update.dat"
infile=fopen("
jilu.txt"
"
w"
fscanf(infile,"
%d%s"
a,&
filename);
//将时间和update.dat都写入文件中//
outfile=fopen("
r"
if(outfile==NULL)
fprintf(outfile,"
filename);
//将文件中的内容读出来作为文件名//fclose(outfile);
//将时间加入到文件名中,使更新后之前的文件内容不会被覆盖//ppp=fopen(filename,"
wb"
if(ppp==NULL)
更新文件创建失败\n"
p2=head;
while(p2!
fwrite(p2,sizeof(Road),1,ppp);
p2=p2->
文件更新中...\n"
文件更新成功\n"
fclose(ppp);
//文件更新完毕,将排序后的内容写入文本文件和二进制文件中//}
voidSearchByBruch(Road*head)
inti=0,Bruch;
请输入您所要查找的道路的岔路数:
Bruch);
p=(Road*)malloc(sizeof(Road));
prev=p;
exit(4);
if(temp_head->
stRoadRec.brunch==Bruch)
next=end;
temp_head=temp_head->
i的结果是%d\n"
i);
Road*readfile(void)
FILE*fp;
chartemp_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)
错误:
不能打开GTBL.dat\n"
looperror:
printf("
\n请输入你要打开的文件名\n"
temp_name);
fp=fopen(temp_name,"
if(fp==NULL)
不能打开%s"
gotolooperror;
else
读取成功\n"
while
(1)
pEnd=(Road*)malloc(sizeof(Road));
fread(temp_data_size,sizeof(unsignedshort),1,fp);
pCur->
stRoadRec.data_sizeM_CHG_INT16(temp_data_size[0]);
//printf("
pCur->
stRoadRec.data_size);
fread(temp_LinkID,sizeof(unsignedint),1,fp);
stRoadRec.LinkID=M_CHG_INT32(temp_LinkID[0]);
fread(temp_road_size,sizeof(short),1,fp);
stRoadRec.road_size=M_CHG_INT16(temp_road_size[0]);
fread(temp_info,sizeof(unsignedint),1,fp);
temp_info[0]=M_CHG_INT32(temp_info[0]);
stRoadRec.linkid=(0xf&
temp_info[0]);
//printf("
stRoadRec.brunch=((0x70&
temp_info[0])>
>
4);
stRoadRec.roadnameflag=((0x80&
7);
if(pCur->
stRoadRec.roadnameflag==1)
stRoadRec.roadname=(char*)malloc(pCur->
stRoadRec.data_size-12);
//printf("
p_name=(char*)malloc(pCur->
fread(pCur->
stRoadRec.roadname,(pCur->
stRoadRec.data_size-12),1,fp);
//pCur->
stRoadRec.roadname=p_name;
stRoadRec.roadname=NULL;
if(feof(fp))
break;
next=pEnd;
pCur=pCur->
returnhead;
voidQListSort(Road**head,Road*end)
Road*right;
Road**left_walk,**right_walk;
Road*pivot,*old;
intcount,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)->
old!
=end;
old=old->
next)
if(old->
stRoadRec.LinkID<
pivot->
stRoadRec.LinkID)//小于基准,加入到左面的子链表,继续比较
++left_count;
*left_walk=old;
//把该节点加入到左边的链表中,
left_walk=&
(old->
next);
续比较
++right_count;
*right_walk=old;
//对较小的子链表进行快排序,较大的子链表进行迭代排序。
if(left_walk>
right_walk)
QListSort(&
(pivot->
next),end);
end=pivot;
count=left_count;
QListSort(head,pivot);
head=&
count=right_count;
while(count>
1);
Road*BubbleSort(Road*head)
Road*endpt;
/*控制循环比较*/
Road*p;
/*临时指针变量*/
Road*p1;
Road*p2;
p1=(Road*)malloc(sizeof(Road));
p1->
next=head;
/*注意理解:
我们增加一个节点,放在第一个节点的前面,主要是为了便于比较。
因为第一个节点没有前驱,我们不能交换地址。
*/
head=p1;
/*让head指向p1节点,排序完成后,我们再把p1节点释放掉*/
for(endpt=NULL;
endpt!
=head;
endpt=p)/*结合第6点理解*/
for(p=p1=head;
p1->
next->
next!
=endpt;
p1=p1->
/*如果前面的节点键值比后面节点的键值大,则交换*/
next=p2;
/*
结合第4点理解*/
p1=head;
把p1的信息去掉*/
head=head->
/*让head指向排序后的第一个节点*/
free(p1);
/*释放p1*/
p1=NULL;
/*p1
置为NULL保证不产生“野指针”,即地址不确定的指针变量*/
Road*SelectSort(Road*head)
Road*first;
排列后有序链的表头指针*/
Road*tail;
排列后有序链的表尾指针*/
Road*p_min;
保留键值更小的节点的前驱节点的指针*/
Road*min;
存储最小节点*/
/*当前比较的节点*/
first=NULL;
while(head!
=NULL)/*在链表中找键值最小的节点。
/*注意:
这里for语句就是体现选择排序思想的地方*/
for(p=head,min=head;
p->
=NULL;
p=p->
next)/*循环遍历链表中的节点,
找出此时最小的节点。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子地图 管理 系统