校园导航系统源代码课件_第1页
校园导航系统源代码课件_第2页
校园导航系统源代码课件_第3页
校园导航系统源代码课件_第4页
校园导航系统源代码课件_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构-校园导航系统简介:本系统采用C语言编写,运行环境为Dev-C+; 内容以西安电子科技大学南校区为例; 主要功能有:1.查询景点信息;2.查询两景点间最短距离;3.查询两景点间所有路线;4.查询西电校园地图;5.修改景点和路径信息.注意事项:在进行修改景点和路径信息操作前,请在可执行文件目录下用记事本创建”superUser.CODE”文件来存放用户名与密码(中间以空格隔开),否则无法进入.源代码:#include #include #include #include #include #define Max 20000typedef struct ArcCellint adj; /两

2、个景点间的距离ArcCell;typedef struct VertexTypeint number; /景点编号 char sight100; /景点名称 char description1000; /景点简介char particular11000;char particular21000;char particular31000; /景点详情VertexType;typedef structVertexType vex20; /最多存放20个景点信息 ArcCell arcs2020; /两个景点间的距离 int vexnum,arcnum;MGraph;MGraph G;char na

3、meofschool100; /学校名称int NUM=9;int P2020;int p20;int visited20;int a=0;long int D20;int x20=0; /函数声明 void CreateUDN(int v,int a);void narrate();void ShortestPath(int num);void output(int sight1,int sight2);char Menu();void search();char SearchMenu();void HaMiTonian(int);void Searchpath1(MGraph g);voi

4、d disppath(MGraph g,int i,int j);void path(MGraph g,int i,int j,int k);void NextValue(int); void display();int Addnewsight(int n);int Deletesight(int n);void Changesight();char Changemenu();char Sightmenu();int Maintain(void); int VerificatianIdentity(void); void map(); /主函数 int main() int v0,v1;int

5、 MaintainFlag; char ck; system(color 0F); CreateUDN(NUM,11); do ck=Menu(); switch(ck)case 1: search(); break; case 2:system(cls);narrate(); printf(nnttt请选择起点景点(0%d):,NUM-1); scanf(%d,&v0); printf(ttt请选择终点景点(0%d):,NUM-1); scanf(%d,&v1); ShortestPath(v0); output(v0,v1); printf(nntttt请按任意键继续.n); getcha

6、r(); getchar();break; case3:system(cls); narrate(); x0=1; Searchpath1(G); printf(nntttt请按任意键继续.n); getchar(); getchar(); break; case4: system(cls);map(); printf(nnttttt请按任意键继续.n); getchar(); getchar();break; case5: system(cls); narrate(); MaintainFlag = Maintain();switch(MaintainFlag)case1: system(c

7、ls); narrate(); NUM=Addnewsight(NUM); system(cls); narrate(); break; case2: NUM=Deletesight(NUM); break; case3: Changesight(); break; break;while(ck!=e); return 0; /主菜单 char Menu() char c; int flag; do flag=1; system(cls); narrate(); printf(ntttn); printf(ttt n); printf(ttt 1、查询景点信息 n); printf(ttt 2

8、、查询两景点间最短路径 n); printf(ttt 3、查询两景点间所有路线 n); printf(ttt 4、查看西电校园地图 n); printf(ttt 5、修改景点和路径信息 n); printf(ttt e、退出 n); printf(ttt n); printf(tttn); printf(tttt请输入您的选择:); scanf(%c,&c); if(c=1|c=2|c=3|c=4|c=5|c=e) flag=0; while(flag); return c;/查询菜单 char SearchMenu() char c; int flag; do flag=1; system(

9、cls); narrate(); printf(ntttn); printf(ttt n); printf(ttt 1、按照景点编号查询 n); printf(ttt 2、按照景点名称查询 n); printf(ttt e、返回 n); printf(ttt n); printf(tttn); printf(tttt请输入您的选择:); scanf(%c,&c); if(c=1|c=2|c=e) flag=0; while(flag); return c;/查询信息 void search() int num; int i; char c; char name20; do system(cls

10、); c=SearchMenu(); switch (c) case 1: system(cls); narrate(); printf(nntt请输入您要查找的景点编号:); scanf(%d,&num); for(i=0;iNUM;i+) if(num=G.vexi.number) printf(ntt您要查找景点信息如下:); printf(ntt(%d)%-5s:%-25snn,i,G.vexi.sight,G.vexi.description); printf(ttttt详情介绍:ntt%-sn,G.vexi.particular1); printf(tt%-sn,G.vexi.pa

11、rticular2); printf(tt%-sn,G.vexi.particular3); printf(ntt按任意键返回.); getchar(); getchar(); break; if(i=NUM) printf(nnttt没有找到!); printf(nnttt按任意键返回.); getchar(); getchar(); break; case 2: system(cls); narrate(); printf(nntt请输入您要查找的景点名称:); scanf(%s,name); for(i=0;iNUM;i+) if(!strcmp(name,G.vexi.sight) p

12、rintf(ntt您要查找景点信息如下:); printf(ntt(%d)%-5s:%-25snn,i,G.vexi.sight,G.vexi.description); printf(ttttt详情介绍:ntt%-sn,G.vexi.particular1); printf(tt%-sn,G.vexi.particular2); printf(tt%-sn,G.vexi.particular3); printf(ntt按任意键返回.); getchar(); getchar(); break; if(i=NUM) printf(nnttt没有找到!); printf(nnttt按任意键返回.

13、); getchar(); getchar(); break; while(c!=e);/构造图形 void CreateUDN(int v,int a) int i,j; strcpy(nameofschool,西安电子科技大学); G.vexnum=v; G.arcnum=a; for(i=0;io ); strcpy(G.vex3.particular1, 海棠宿舍位于学校西北面,所以距离北操,新综,北门较近,); strcpy(G.vex3.particular2,准大一的学弟学妹们将会主要居住在5.6号楼(还有一部分会在); strcpy(G.vex3.particular3,9.1

14、0号楼).海棠宿舍为两室一厅,每室各四人.); strcpy(G.vex4.sight,大活); strcpy(G.vex4.description,大学生活动中心的简称,小剧场就在这里. ); strcpy(G.vex4.particular1, 大活建设在学校人工湖旁边,里面有实验室、舞蹈室等专用); strcpy(G.vex4.particular2,教室,也是学校举办室内大型活动的常用地点,曾经陈一冰,周鸿); strcpy(G.vex4.particular3,祎,黄晓明等人在此与同学们见面.); strcpy(G.vex5.sight,北操); strcpy(G.vex5.desc

15、ription,跑步 踢球 狼人杀.等等有趣的活动,超热闹. ); strcpy(G.vex5.particular1, 北操基础设施齐全,有足球场 跑道 观众台 羽毛球场等,是); strcpy(G.vex5.particular2,学校举行大型体育赛事的场地,例如:运动会 足球赛等.每天晚上); strcpy(G.vex5.particular3,也会有许多同学在此运动 玩耍,非常有趣.); strcpy(G.vex6.sight,观光塔); strcpy(G.vex6.description,南校区最显眼的建筑物,可以俯视整个校园. ); strcpy(G.vex6.particular

16、1, 观光塔是西电南校区最负盛名的建筑物,位处南校区最为中); strcpy(G.vex6.particular2,间的位置,走在校园里,总是能够看到观光塔,到了晚上塔上的时); strcpy(G.vex6.particular3,钟会亮起,很远都能看到,在月光下特别的漂亮.); strcpy(G.vex7.sight,体育馆); strcpy(G.vex7.description,今年刚刚建成,外观融合了天圆地方的思想. ); strcpy(G.vex7.particular1, 考虑到学校的所在地西安是十三朝古都,亦应融入中国传统); strcpy(G.vex7.particular2,文

17、化的理念,以及体育馆主馆和训练馆的功能需求,最终决定以中); strcpy(G.vex7.particular3,国传统文化的天圆地方为设计思路.美观大气.); strcpy(G.vex8.sight,行政楼); strcpy(G.vex8.description,可以进行盖章,补办一卡通等众多操作. ); strcpy(G.vex8.particular1, 从东门进入学校,左手边的那栋楼就是行政楼,往后稍小一点); strcpy(G.vex8.particular2,的就是行政辅楼.教务处、学工处、电院办公室在行政楼,一卡通); strcpy(G.vex8.particular3,中心、户

18、籍管理、财务处、一些学院的办公室在行政辅楼.); for(i=0;i20;+i) for(j=0;j20;+j) G.arcsij.adj=Max; G.arcs08.adj=G.arcs80.adj=150; G.arcs01.adj=G.arcs10.adj=600; G.arcs17.adj=G.arcs71.adj=800; G.arcs16.adj=G.arcs61.adj=50; G.arcs14.adj=G.arcs41.adj=600; G.arcs32.adj=G.arcs23.adj=300; G.arcs62.adj=G.arcs26.adj=350; G.arcs35.

19、adj=G.arcs53.adj=300; G.arcs45.adj=G.arcs54.adj=400; G.arcs87.adj=G.arcs78.adj=250;/导图模块 void narrate() int i,k=0; printf(nt*欢迎使用%s校园导游程序*nn,nameofschool); printf(t|n); printf(t* 景点名称 |ttt景点描述tt *n); printf(t|n); for(i=0;iNUM;i+) printf(t* (%d)%-15s|t%-43s *n,i,G.vexi.sight,G.vexi.description); k=k+

20、1; printf(t|n);/迪杰斯特拉算法 void ShortestPath(int num) int v,w,i,t; int final20; int min; for(v=0;vNUM;v+) finalv=0; Dv=G.arcsnumv.adj; for(w=0;wNUM;w+) Pvw=0; if(Dv20000) Pvnum=1; Pvv=1; Dnum=0; finalnum=1; for(i=0;iNUM;+i) min=Max; for(w=0;wNUM;+w) if(!finalw) if(Dwmin) v=w; min=Dw; finalv=1; for(w=0;

21、wNUM;+w) if(!finalw&(min+G.arcsvw.adj)Dw) Dw=min+G.arcsvw.adj; for(t=0;tNUM;t+) Pwt=Pvt; Pww=1; /输出函数 void output(int sight1,int sight2)int a,b,c,d,q=0; a=sight2; if(a!=sight1)printf(ntt从%s到%s的最短路径是,G.vexsight1.sight,G.vexsight2.sight); printf(最短距离为 %dm.)nnt,Da); printf(tt%s,G.vexsight1.sight); d=si

22、ght1; for(c=0;cNUM;+c) gate:; Pasight1=0; for(b=0;bNUM;b+) if(G.arcsdb.adj%s,G.vexb.sight); q=q+1; Pab=0; d=b; if(q%8=0) printf(n); goto gate; /查询所有路径 void Searchpath1(MGraph g) int l=0;int k=0;int i,j;printf(t选择出发景点:); scanf(%d,&i);printf(t选择目地景点:);scanf(%d,&j);for(;kg.vexnum;k+)if(i=g.vexk.number)

23、i=k;for(;lg.vexnum;l+) if(j=g.vexl.number) j=l;printf(nt从%s到%s的所有游览路径有:nn,g.vexi.sight,g.vexj.sight);disppath(g,i,j);void disppath(MGraph g,int i,int j)int k;p0=i;for(k=0;kg.vexnum;k+)visitedi=0;a=0;path(g,i,j,0);void path(MGraph g,int i,int j,int k)int s;if(pk=j)a+;printf(t第%d条:t,a); for(s=0;s); pr

24、intf(%sn,g.vexps.sight); s=0;while(sg.vexnum)if(s!=i)if(g.arcspks.adj!=Max&visiteds=0)visiteds=1;pk+1=s; path(g,i,j,k+1); visiteds=0;s+;/添加模块 int Addnewsight(int n)int i;char sight100,description1000,particular11000;char particular21000,particular31000;int length;printf(t请输入新景点的名称:nt);scanf(%s,&sigh

25、t);printf(t请输入新景点的相关信息:nt);scanf(%s,&description);printf(t请输入新景点的详细介绍(每行不超过25字,且不超过3行):nt);scanf(%s,particular1);getchar();scanf(%S,particular2);getchar();scanf(%s,particular3);strcpy(G.vexn.sight,sight); strcpy(G.vexn.description,description); strcpy(G.vexn.particular1,particular1); strcpy(G.vexn.p

26、articular2,particular2); strcpy(G.vexn.particular3,particular3);G.vexn.number=n;for(i=0;in;i+) system(cls); narrate();printf(t请输入此景点到第%d个景点的距离(单位:m)(同一景点或不可到达用20000表示):nt,i);scanf(%d,&length);if(length!=20000)G.arcnum+;G.arcsni.adj=G.arcsin.adj=length;n+;G.vexnum+;return n;/删除模块 int Deletesight(int

27、n)int i;int j;char c;int num;char name20;system(cls); c=SearchMenu(); switch (c) case 1: system(cls); narrate(); printf(nntt请输入您要删除景点的编号:); scanf(%d,&num); for(i=0;iNUM;i+)if(num=G.vexi.number)for(j=0;jNUM;j+)if(G.arcsij.adj!=20000)G.arcnum-;G.arcsij.adj=G.arcsji.adj=20000;for(;numNUM;num+)strcpy(G.

28、vexnum.sight,G.vexnum+1.sight);strcpy(G.vexnum.description,G.vexnum+1.description);n-; printf(nttt按任意键返回.); getchar(); getchar(); break; if(i=NUM) printf(nnttt没有找到!); printf(nnttt按任意键返回.); getchar(); getchar(); break; case 2: system(cls); narrate(); printf(nntt请输入您要删除景点的名称:); scanf(%s,name); for(i=0

29、;iNUM;i+) if(!strcmp(name,G.vexi.sight) num=i; for(j=0;jNUM;j+) if(G.arcsij.adj!=20000) G.arcnum-; G.arcsij.adj=G.arcsji.adj=20000; for(;numNUM;num+) strcpy(G.vexnum.sight,G.vexnum+1.sight);strcpy(G.vexnum.description,G.vexnum+1.description);n-; printf(nttt按任意键返回.); getchar(); getchar(); break; if(i

30、=NUM) printf(nnttt没有找到!); printf(nnttt按任意键返回.); getchar(); getchar(); break; return n;/修改主菜单 char Changemenu() char c; int flag; do flag=1; system(cls); narrate(); printf(ntttn); printf(ttt n); printf(ttt 1、修改景点信息 n); printf(ttt 2、修改道路信息 n); printf(ttt e、返回 n); printf(ttt n); printf(tttn); printf(tt

31、tt请输入您的选择:); scanf(%c,&c); if(c=1|c=2|c=e) flag=0; while(flag); return c;/修改景点信息 char Sightmenu()char c;int flag;doflag=1;system(cls); narrate(); printf(ntttn); printf(ttt n); printf(ttt 1、修改景点名称 n); printf(ttt 2、修改景点描述 n); printf(ttt e、返回 n); printf(ttt n); printf(tttn); printf(tttt请输入您的选择:); scanf

32、(%c,&c); if(c=1|c=2|c=e) flag=0; while(flag); return c;/修改道路信息 void Changesight()int a,b,length;char sight100;char description1000;char p;char q;int i;int num;p=Changemenu();switch(p) case1:system(cls); narrate(); printf(nntt请输入您要修改的景点编号:); scanf(%d,&num); for(i=0;iNUM;i+)if(G.vexi.number=num)q=Sigh

33、tmenu();if(q=1) printf(t请输入修改后的景点名称:nt); scanf(%s,&sight);strcpy(G.vexnum.sight,sight);printf(tttt修改成功!n);else if(q=2)printf(t请输入修改后的景点信息:nt);scanf(%s,&description);strcpy(G.vexnum.description,description);printf(tttt修改成功!n);else if(q=e)p=Changemenu(); printf(ntt按任意键返回.); getchar(); getchar(); break; if(i=NUM) printf(nntttt没有找到!); printf(nnttt按任意键返回.); getchar(); getchar(); break; case 2:printf(tt请输入道路一侧的景点序号:);scanf(%d,&a);printf(tt请输入道路另一侧的景点序号:);scanf(%d,&b);printf(tt请输入修改后的道路长度:);scanf(%d,&length);G.arcsa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论