电子地图管理系统Word格式.docx

上传人:b****6 文档编号:19400089 上传时间:2023-01-06 格式:DOCX 页数:22 大小:19.22KB
下载 相关 举报
电子地图管理系统Word格式.docx_第1页
第1页 / 共22页
电子地图管理系统Word格式.docx_第2页
第2页 / 共22页
电子地图管理系统Word格式.docx_第3页
第3页 / 共22页
电子地图管理系统Word格式.docx_第4页
第4页 / 共22页
电子地图管理系统Word格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

电子地图管理系统Word格式.docx

《电子地图管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《电子地图管理系统Word格式.docx(22页珍藏版)》请在冰豆网上搜索。

电子地图管理系统Word格式.docx

//创建一个结点

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));

#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->

if(i>

=5)

save(prev);

查询结果数大于5,已保存至SearchResult.txt\n"

b=time(NULL);

b));

本次查找用时%d秒.\n"

b-a);

voidSearchById(Road*head)

inti=0,LinkId;

请输入您所要查找的道路的ID:

LinkId);

exit(3);

stRoadRec.LinkID==LinkId){

temp_head=temp_head->

voidSearchByName(Road*head)

inti=0;

charName[30];

请输入您所要查找的道路的名称:

%s"

Name);

exit(6);

if(strcmp(temp_head->

stRoadRec.roadname,Name)==0){

voidupdata(Road*head)

FILE*pp;

FILE*ppp;

FILE*infile;

FILE*outfile;

time_ta;

charfilename[20];

Road*p1;

Road*p2;

pp=fopen("

newfile.txt"

"

w"

if(pp==NULL)

文件创建失败\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->

p1=p1->

fclose(pp);

//将动态链表中的内容写入文件newfile中//

strcpy(filename,"

update.dat"

infile=fopen("

jilu.txt"

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);

stRoadRec.brunch==Bruch)

{

}

i的结果是%d\n"

i);

Road*readfile(void)

FILE*fp;

unsignedshorttemp_data_size[1];

//数据大小2bytebuff

unsignedinttemp_LinkID[1];

//道路编号4bytebuff

unsignedshorttemp_road_size[1];

//道路名称的尺寸2bytebuff

unsignedinttemp_info[1];

//道路信息4bytebuff

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:

\n请输入你要打开的文件名\n"

scanf("

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_size=M_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]);

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);

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);

else//大于基准,加入到右边的子链表,继续比较

++right_count;

*right_walk=old;

//合并链表

*right_walk=end;

//结束右链表

*left_walk=pivot;

//把基准置于正确的位置上

next=right;

//把链表合并

//对较小的子链表进行快排序,较大的子链表进行迭代排序。

if(left_walk>

right_walk)

QListSort(&

(pivot->

next),end);

end=pivot;

count=left_count;

else

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;

next->

next!

=endpt;

p1=p1->

if(p1->

stRoadRec.LinkID>

stRoadRec.LinkID)/*如果前面的节点键值比后面节点的键值大,则交换*/

p2=p1->

/*结合第1点理解*/

nex

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1