




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#inelude #include #inelude #inelude #define MCGETCHAR(date)(*(char *)(date)ffdefineMCGETSHORT(date)(unsignedshort)(unsignedshort)(* (char*)(date)8) | (unsigned short)(*(char*)(date)+l)&OxOOff)define MCGETLONG(date)(unsigned long)MCGETSHORT(date)16) | (unsigned long)MCGETSHORT(char*)(date)+2)&OxOOOOf
2、fff)#define MCGET3BN(date)(unsigned long )MCGETCHAR(date)16) |(unsigned long)MCGETSHORT (char*)(date+l)&OxOOOOffff)define Length 65535 int Sizecount=2;int Mark_l=0/Mark_2=0;int ReadFile();/读取文件void Qsortfint IJnt r);排序int Binsearch(int s,int tjnt key);/.分査找 int Search。;/检索void U pdate();/更新 struct R
3、oadRecordshort ussize;long ulUnkID;short usRoadnamesize;int usDispcIass;int usBrunch;int usRoadnameflag; char Roadname20;struct RoadRecord roadLength;struct Datestore/定义结构体存储数据 int n;char Totalsize4;char LinklD_l;char Roadnamesize2;char Road_flag;char Roadname20;static struct Datestore DsLength;stru
4、ct dateoutlong LinkID;int Dispclass;int Brunch;int Road nameflag;char Roadname20;struct dateout dateLength;int ReadFile()模块一读取文件int m;char filename50;unsigned short ustotalsize;unsigned long ulLinkID;unsigned short usRoadnamesize;FILE *fp_l=fopen(,D:GTBL.dat,7,rb+n);FILE *fp_2=fopen(,D:Newout.txt,/,
5、w+H);if(fp_l=NULL) 文件不存在手动输入文件路径printf(nt无法打开文件“GTBL.dat”或文件不再D盘根目录下nn请手动输入 文件路径(路径中请勿有中文):“);scanfr%s 舄 filename);if (fp-l=fopen(filename/,rb+,)=NULL)printf(Hnt无法打开文件“GTBL.dat”或文件不存在lnnH);return 0;elseprintf(Hnt 文件打开成功!nn);if(fp_2=NULL)printf(unt无法打开文件“newout.txt”或文件不存在!nnM);return 0;printf(Hnt文件读取
6、中nH);while(fread(DsSizecount.Totalsize 2 1/ fp.l) = 1)fread( Ds Sizecount. Lin kl D_1,4,1, fp_l);读取 LinkID 字符fread( Ds Sizecount. Roa dna mes iz e ,2,1, fp_l); 读取 Roadnamesize 字符串 fread( DszecountRoad_flag, 4, 1, fp_l);ustotalsize = MCGETSHORT(DsSizecount.Totalsize); 调用宏函数将字符串信息转化 为数值类型ulLinkID = MC
7、GETLONG(Ds(Sizecount.LinklDJL);usRoadnamesize = MCGETSHORT(DsSizecount. Roadnamesize);/ 赋值将数值信息传 到结构体中DsSizeco unt.n=ustotalsize 12;roadSizeco un tj.ussize 二 ustotalsize;roadSizecount.ulLinklD=ulLinklD; roadSizecount.usRoadnamesize=usRoad namesize;m=(int)DsSizecount.Road_flag3&255;roadfSizeco un t.u
8、sDispclass=m&15;roadSizecount.usBrunch=(m&112)/16;road zecount.usRoadnameflag=(m & 128)/128;dateSizecount.Dispclass=road Sizecount.usDispc lass;dateSizeco un t.Brunch=roadSizecou nt.usBr un ch;dateSizecount.Road nameflag 二 roadSizecount.usRoad nameflag; date zecount.LinklD=ulLinklD;fread( DsSizecoun
9、t.Roadname , sizeof(char), ustotalsize-12 , fp_l );从文件屮读取道路名称a vJ vx V/1 I I yy Vy I | |strcpy(date(Sizecount.Road nam 巳 DsSizecou ntRoad name+4);fprintf(fp_2,LinkID); fprintf(fp_2/,%dt,/dateSizecount. LinkID);fprintf(fp_2,Flag=);fprintf(fp_2,“dt 蔦 date Sizecount. Roadnameflag);fprintf(fp_2/Brunch);
10、fprintf(fp_2,“dt 蔦 date Sizecount. Brunch);fprintf(fp_2/,Dispclass=n);fprintf(fp_2/,%dt,/date Sizecount.Dispclass);fprintf(fp_2/,Roadname=,1);fprintf(fp_2/,%st*/date(Sizecount. Roadname);fprintf(fp_2W);Sizeco un t+;fclose(fp_l);fclose(fp_2);printf(Hnt 文件读取成功nn生成文件nn);return 1;void Qsortfint IJnt r)模
11、块二排序(快速排序) int n=datel丄inklD=l”j=r; dateLength-2=datel;DsLength-2=D sl;ifl=r)return;while(ij)while(i=n) T;datei=datej;Dsi=Dsj);while(ij & datei.LinklD=n)f卄i;datej=datei;Dsj=Dsi;datei=dateLength-2;Dsi=DsLength-2);Qsort(IJ-l);Qsort(i+lzr);int Binsearch(int sjnt tzint key)/二分查找 int low=s/high=t/mid;if(
12、skey)return Binsearch(lowzmidzkey);elsereturn Bin sea rchfmid+l, h igh, key);return -1;int Search。/模块三检索int seljjlagn/key,mid/s=2/t=Sizecount;char Roadname20;FILE*p,*pl,S2;分别保存不同的道路检索信息printf(n请输入检索方式:ntl:指定LinkID检索nt2:指定交叉Link歹!|表示Class 番号检索nt3:指定査找岔路数检索nt4:指定道路乞称检索ntO:返回n请选择:“); while(scanf(,%d,&s
13、el)!=l)/判断输入的数据是否为数字fflush(stdin);Iprintf(nt输入错课,请虫新输入!n);printf(un请输入检索方式:ntl:指定LinkID检索nt2:指定交义Link列表示Class 番号检索nt3:指定査找岔路数检索nt4:指定道路名称检索ntO:返回n请选择:“);switch(sel)case l:/LinklD 检索printf(H请输入 LinkID:”);scanf(吆d“,&n);key=n;mid=Binsearch(s/t/key);if(mid!=-l)printf(Hnt检索到的信息不足5条,信息将显示在屏幕上1岸);printf(nL
14、i nklD=%dtRoadnameflag=%dtBrunch=%dtDispclass=%dtRoadname=%snnNzdatelmidl.LinklDatelmid.Roadnameflag,datemid.Br un ch,datemidDispclass,datemidRoad name);flag 卄; if(flag=O)printf(Hnt没有匹配结果,请重新选择检索方式!nnH); Search();return 0;break;case 2:/指定交义Link列表示Class番号检索printf(H请输入交叉Link列表示Class番号:s,);scanfdj&n);f
15、or(i=2;i=Sizeco un t;i+)if(datei.Dispclass=二n)flag+; if(flag=O)printf(Hnt 没有 Class 番号为d 的道路nnMzn); return 0; if(flag=5)printfC-nt检索到的信息不足5条,信息将显示在屏幕匕W); for(i=2;i=Sizecou nt;i+)if(datei.Dispclass=n)printf(nLi nklD=%dtRoadnameflag=%dtBrunch=%dtDispclass=%dtRoadname=%sn,/dat ei.Li nklD,datei.Road name
16、flag,datei Brunch,dateiDispclass,datei Road name);return 0; else printf(nt结果大于5条,转存到D:Class番号检索结果.TXTnnu); p=fopen(,lD:Class 番号检索结果.TXT,7,w+u);for(i=2;i=Sizeco un t;i+)if(datei.Dispclass=n)fprintf( p/,nUnklD=%dtRoadnameflag=%dtBrunch=%dtDispclass=%dtRoadname=%s,/dateiLinklD,dateiRoadnameflag,dateiBr
17、unch,dateiDispclasS/dateiRoadname);fclose(p);return 0; break;case3:指定查找岔路数检索printf(请输入岔路数:”); scanf(H%d,/&n);for(i=2;iSizecount;i+) if(datei.Br un ch=二n)flag+;I a hIIIif(flag=O)printf(unt没有岔路数为d的道路!Wd); return 0;else if(flag=5)printf(nt检索到的信息不足5条,信息将显示在屏幕上!n); for(i=2;iSizeco un t;i+)if(datei.Brunch
18、=n)printf(,nLinklD=%dtRoadnameflag=%dtBrunch=%dtDispclass=%dtRoadname=%snH/datei.L in klDdatetiJ.Road nameflag,dateiBrunch,dateiDispclass,datei Road name);return 0;elseprintffXnXt结果大于5条,转存到D:岔路口检索结果TXTnW); pgfopenCDW 岔路口检索结果.TXT,;,w+n);for(i=2;iSizeco un t;i+)if(datei. Brunch=n)fprintf(pl/,nLinklD=%
19、dtRoadnameflag=%dtBrunch=%dtDispclass=%dtRoadname=%s,zdatei .Lin klD,datei.Road nameflag,datei Bru nch,d3teiDispclass,dateiRoad name);fclose(pl); return 0;break;case 4:/定道路名称检索printf(HW输入道路名称:”); scanf(,%s,/&Roadname); for(i=2;iSizeco un t;i+)if(strcmp(datei.Road nameRoad name)=0)flag+; if(flag=O)pr
20、intf(Nnt 没有道路名称为%s” 的道路!nn,/Roadname); return 0;else if(flag=5)printf(nnt检索到的信息不足5条,信息将显示在屏幕上!屮); for(i=2;iSizeco un t;i+)if(strcmp(datei.Road nam 巳 Road name)=0) printf(nnLi nklD=%dtRoadnameflag=%dtBrunch=%dtDispclass=%dtRoadname=%sn/datei.L inklD.dateliJ.Road nameflag,datei Brunch,datei.Dispclass,
21、datei Road name);return 0;elseprintf(nt结果大于5条,转存到D:道路名称检索结果.TXTnn); p2=fopen(D:道路名称检索结果.txt,w+“);for(i=2;iSizecou nt;i+)if(strcmp(datei.Road name, Road nameRO)fprintf(p2/,nUnklD=%dtRoadnameflag=%dtBrunch=%dtDispclass=%dtRoadname=%s,/datei.Li nklDzdatei.Road nameflag,dateiBr un chzdatei.Dispclasszdat
22、ei.Road name);fclose(p2);return 0;break;return 0;break;default:/输入不在0到4 Z间,重新返凹检索函数printf(Hnt输入信息有误请重新选择检索方式!nnH); Search();return 0;void Updatedint a;remove(” D:GTBL.dat”);a=rename(,D:Sort.dat,7,D:GTBL.datH);if(a!=O)printf(nt更新失败,无法找到更新文件或请确认操作权限!nn); return;elseprintf(nt 更新成功!nnn);void main()int a
23、/n=0/i,Mark_3=0/Mark_4=0; clock_t start, finish;double Time;FILE *plz*p2;printf(M |* n*n*. #* * *printf(M I*ln);printf(H|*printf(H|*2015-01-14*|nM);欢迎使用电子地图管理系统Group 9printf(M |床琢*專拿*拿*拿*專拿*車拿*車*卓拿printfC*请选择服务的种类:“);printf(ntl:读取文件nt2:排序并输出结果nt3:检索nt4:更新ntO:退出 n请选择:“);while(scanf(%dM,&a)!=l)/判断输入的数
24、据是否为数字fflush(stdin);/淸理缓存printf(nt输入有误,请重新输入!nn);printfCW选择服务的种类:“);printfCAnXtl:读取文件nt2:排序并输出结果nt3:检索nt4:更新ntO: 退出n请选择:“);switch(a)case 1:if(Mark_3=l)printf(unt文件已经读取成功,如需再次读取文件,请关闭本程序重试!nnj;else if(ReadFile()=l)+Mark_l;Mark_3=Mark_l;/tJ制 Mark_l 的值break;case 2:if(Mark_2=l)printf(nt排序已经完成,如需再次排序请关闭本
25、程序重试!nn);else if(Mark_l=O)printf(nt请在排序前先选择“读取文件”操作!nn“);else if(Mark_l=l)+Mark_2;if(date2.UnklDM)检测文件是否有序start = clock();Qsort(2,Sizecountl);finish = clock();Time = (double)(finish - start)/CLOCKS_PER_SEC; printf(nt排序成功,用时:%f秒lnn 排序后的文本文件 nn排序后的土进制文件 nn,/Time);pl=fope nrD:Sortdat,wb+“);p2=fope nD:sorttxtTw+“);for(i=2;iSizecount;i+)fprintf(p2 , %dt , da
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年住房公积金贷款保险服务合同及风险控制条款
- 2025网络直播音乐版权独家授权及数字专辑全球发行合作协议
- 2025年度智能机器人技术独占许可及收益分成合同
- 2025一嗨租车合同范本:企业绿色出行电动车租赁服务协议
- 2025年中药材种子资源保护与生态种植技术共享合同
- 2025年中秋国庆节食品安全冷链物流运输及仓储管理合同
- 2025年度住宅小区消防设备检测与保养服务合作协议
- 2025年政务云平台基础设施建设与运营管理协议
- 2025年中铁工程公司新能源项目专用管道及阀门集成供应合同
- 2025年度主播线下节目合作嘉宾代言合同书
- 2025年山东省普通高校招生(春季高考)全省统一考试语文试题
- 效期药品管理试题及答案
- 医疗信息化建设与医教协同发展策略
- 掌握2025年税务师考试试题及答案
- 挂名法人协议书范本
- 医院招标培训课件
- 渗滤液处理工艺流程的安全管理
- 2025年云南大理州建投开发有限公司招聘笔试参考题库含答案解析
- 智能硬件产品开发项目合作框架协议
- 矿山开采安全生产管理协议书
- T-CMES 04001-2020 机床装备制造成熟度评价规范
评论
0/150
提交评论