c语言电子地图程序,C语言 电子地图信息

界面

#include

#include

#include

#include

#include"Analysis.h"

#include"Search.h"

#include"Sort.h"

#include"Update.h"

Road *road=(Road*)malloc(MAX*sizeof(Road));

int main()

{

system("color 30");

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("\n");

while(1)

{

char a[2];

static int cout=1;

printf("\n请选择服务的种类:\n");

printf(" 1.文件读取.\n");

printf(" 2.文件排序.\n");

printf(" 3.文件检索.\n");

printf(" 4.文件更新.\n");

printf(" 0.退出.\n");

printf("请选择:");

scanf("%1s",a);

if(cout>1)

{

goto loop;

}

else

{

if(a[0]=='0')

{

return 0;

}

if(a[0]=='1')

{

cout+=1;

loop: switch(a[0])

{

case '1':

{

printf("文件读取中.....\n");

Analysis(road); //文件读取

printf("文件已转存到analysis.txt中!\n");

}break;

case '2':

{

Sort(road);//文件排序

}break;

case '3':

{

Search(road);//文件检索

}break;

case '4':

{

printf("文件更新中.....\n");

Update(road);//文件更新

printf("更新完成!\n");

}break;

case '0':

{

return 0;

}break;

default:

{

printf("您输入的为非法选项!请重新选择:\n");

}break;

}

}

else

{

printf("文件没有加载!请重新选择:\n");

}

}

fflush(stdin);

}

}

排序

void BubbleSort(Road *a, int n)

{

int i,j;

Road x;

for(i=1;iBigtoLittle32(a[j+1].LinkID))

{

x=a[j];

a[j]=a[j+1];

a[j+1]=x;

}

}

}

}

void InsertSort(Road *a,int n)

{

int i,j;

Road temp;

for(i=1;i=0&&temp.LinkIDBigtoLittle32(temp.LinkID))

{

j--;

}

if(i1)

{

printf("排序已完成!时间为:%.5f秒!\n",(T2-T1)/1000);

}

else

{

T1=clock();

int s=0;

int t=MAX-1;

QuickSort(a,0,MAX-1);

T2=clock();

printf("排序完成.时间为:%.5f秒!\n",(T2-T1)/1000);

count++;

}

}break;

default:

{

printf("您输入的为非法选项!请重新选择:\n");

}break;

}

FILE *fp;

fp=fopen("sort.txt","w");

for(i=0;i>7),(BigtoLittle16(a[i].info)>>4)&7,BigtoLittle16(a[i].info)>>15,a[i].RoadName);

}

fflush(stdin);

fclose(fp);

fp=NULL;

}

return 0;

}

插入

int Search( Road *proad)

{

int n,i,flag=0,count=0;

int ret,m=0;

char filename[20];

FILE *fp;

Road *roadagain;

roadagain=(Road*)malloc(sizeof(Road)*MAX);

while(1)

{

printf("请选择检索方式:\n");

printf(" 1:指定LinkID检索\n");

printf(" 2:指定岔路数检索\n");

printf(" 3:指定道路名称检索\n");

printf(" 4:指定交叉Link列表示Class番号检索\n");

printf(" 0:返回\n");

printf("请选择:");

scanf("%d",&n);

if((n!=1)&&(n!=2)&&(n!=3)&&(n!=4)&&(n!=0))

{

printf("输入有误! 请重新选择\n");

printf("\n");

}

if(n==1)

{

unsigned int LinkID;

printf("请输入要查找的LinkID:");

scanf("%d",&LinkID);

for(i=0;i>7,(BigtoLittle32(proad[i].info)>>4)&7,BigtoLittle32(proad[i].info)&15,proad[i].RoadName);

break;

}

if(BigtoLittle32(proad[i].LinkID)!=LinkID)

{

flag=0;

}

}

if(flag==0)

{

printf("没有找到你所要检索的信息!\n");

}

}

if(n==2)

{

flag=0;

unsigned int RoadNode;

printf("请输入要查找的岔路数:");

scanf("%d",&RoadNode);

for(i=0;i>4)&7)==RoadNode)

{

flag=1;

count++;

roadagain[count-1].RecordSize=BigtoLittle16(proad[i].RecordSize);

roadagain[count-1].LinkID=BigtoLittle32(proad[i].LinkID);

roadagain[count-1].RoadFlag=BigtoLittle32(proad[i].info)>>7;

roadagain[count-1].RoadNode=(BigtoLittle32(proad[i].info)>>4)&7;

roadagain[count-1].LinkClass=BigtoLittle32(proad[i].info)&15;

strcpy(roadagain[count-1].RoadName,proad[i].RoadName);

}

}

if(flag==1)

{

printf("检索成功!\n");

if(count<=5)

{

for(i=0;i5)

{

printf("检中数目大于5(共%d条),将其转存到一个文本文件。\n",count);

printf("请输入该文本文件的名称:");

scanf("%s",filename);

printf("检索的信息已经成功输出到文本文件中,敬请查看。\n");

fp=fopen(filename,"w");

for(i=0;i>7;

roadagain[count-1].RoadNode=(BigtoLittle32(proad[i].info)>>4)&7;

roadagain[count-1].LinkClass=BigtoLittle32(proad[i].info)&15;

strcpy(roadagain[count-1].RoadName,proad[i].RoadName);

}

}

if(m==1)

{

printf("检索成功! \n");

if(count<=5)

{

for(i=0;i5)

{

printf("检中数目大于5(共%d条),将其转存到一个文本文件.\n",count);

printf("请输入该文本文件的名称:");

scanf("%s",filename);

printf("检索的信息已经成功输出到文本文件中,敬请查看!\n");

fp=fopen(filename,"w");

for(i=0;i>7;

roadagain[count-1].RoadNode=(BigtoLittle32(proad[i].info)>>4)&7;

roadagain[count-1].LinkClass=BigtoLittle32(proad[i].info)&15;

strcpy(roadagain[count-1].RoadName,proad[i].RoadName);

}

}

if(flag==1)

{

printf("检索成功!\n");

if(count<=5)

{

for(i=0;i5)

{

printf("检中数目大于5(共%d条),将其转存到一个文本文件。\n",count);

printf("请输入该文本文件的名称:");

scanf("%s",filename);

printf("检索的信息已经成功输出到文本文件中,敬请查看。\n");

fp=fopen(filename,"w");

for(i=0;i> 8) | (((uint16)(A) &

0x00ff) << 8))

#define BigtoLittle32(A) ((((uint32)(A) &

0xff000000) >>24) | (((uint32)(A)

& 0x00ff0000) >> 8) |

(((uint32)(A) & 0x0000ff00)

<< 8) | (((uint32)(A)

& 0x000000ff) <<

24))

typedef struct {

uint16 RecordSize; //道路信息大小

uint32 LinkID; //道路标号

uint16 RoadSize; //道路名称大小

uint16 RoadFlag; //道路标志位

uint32 RoadNode; //道路岔路数

uint16 LinkClass; //道路番号

uint32 info; //道路信息起始点情报

char RoadName[30]; //道路名称

}Road;

void Analysis(Road *road)

{

int i=0,zero=0;

uint32 temp=0;

memset(road,0,MAX*sizeof(Road));

FILE *fp,*fp1;

fp1=fopen("analysis.txt","w");

if((fp=fopen("GTBL.DAT","rb"))==NULL)

printf("源文件不存在!\n");

while(i>7);//道路标志位

fprintf(fp1," 道路岔路数:

]",(BigtoLittle16(road[i].info)>>4)&7);//道路岔路数

if((road[i].RecordSize-12)==0)

{

fprintf(fp1," 道路名称大小: ]",zero);

fprintf(fp1," 道路名称: 该道路无名称! \n");

}

else

{

fprintf(fp1," 道路名称大小:

]",BigtoLittle16(road[i].RoadSize));

fprintf(fp1," 道路名称:

%5s\n",&road[i].RoadName);

}

i++;

}

fclose(fp);

fclose(fp1);

fp=NULL;

fp1=NULL;

}

更新

void Update(Road *b)

{

FILE *fp2;

fp2=fopen("update.dat","w");

int i=0;

while(i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值