如何使用C++实现简单校园导游系统
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,小编给大家分享一下如何使用C++实现简单校园导游系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下#inclu
千家信息网最后更新 2025年11月10日如何使用C++实现简单校园导游系统
小编给大家分享一下如何使用C++实现简单校园导游系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
具体内容如下
#include#include #include #include #include #include #define INF 32767int visited[100],password; //password为后台管理的登录密码FILE *fp;char na[100];char str1[100],str3[100];int N,M;int a[100][100];using namespace std;typedef struct{ int num; char name[100]; char introduction[100];} VertexType;typedef struct{ int edges[100][100]; int n,e; VertexType vex[100];} MGraph;typedef struct ANode{ int adjvex; struct ANode *nextarc;} ArcNode;typedef struct Vnode{ ArcNode *firstarc;} VNode;typedef VNode AdjList[100];typedef struct{ AdjList adjlist; int n,e;} ALGraph;MGraph g;//将文本文件打开并输出文件中的内容void ReadData1(MGraph &g){ M=N; FILE *fp; int i = 0,j; if ((fp=fopen("path.txt", "r"))==NULL) { printf("error open!"); exit(0); } for(i=0; i adjlist[i].firstarc=NULL; for(i=0; i =0; j--) { if(g.edges[i][j]!=INF) { p=(ArcNode *)malloc(sizeof(ArcNode)); p->adjvex=j; p->nextarc=G->adjlist[i].firstarc; G->adjlist[i].firstarc=p; } } G->n=g.n; G->e=g.e;}//查找相应景点的介绍void FindIntroduction(MGraph &g){ int x,d; while(1) { printf("请输入要查询的景点的编号:"); scanf("%d",&x); ReadData(g); printf("景点的名称:%s\n",g.vex[x].name); printf("景点的简介:"); printf("%s\n",g.vex[x].introduction); printf("是否要继续查询(0.继续 1.不继续):"); scanf("%d",&d); while(1) { if(d==0||d==1) break; else { printf("输入的数据不合理,请重新输入:"); scanf("%d",&d); } } if(d==0) continue; else break; }}//输出两个顶点间的最短路径void Dispath(MGraph &g,int A[][100],int path[][100]){ int i,j,k,s,u,v; printf("请输入你所在位置的编号:"); scanf("%d",&u); printf("请输入你要去位置的编号:"); scanf("%d",&v); int apath[100],d; for(i=0; i =0; s--) printf("->%s",g.vex[apath[s]].name); printf("\n"); printf(" 路径长度为:%d",A[i][j]); printf("\n"); } } }}//查找两顶点间的最短路径void FindMinPath(MGraph &g){ int A[100][100],path[100][100]; int i,j,k; for(i=0; i A[k][j]+A[i][k]) { A[i][j]=A[k][j]+A[i][k]; path[i][j]=path[k][j]; } } } } Dispath(g,A,path);}//查找两顶点间的所有路径void FindaPath(MGraph &g,ALGraph *G,int u,int v,int path[],int d){ int w,i; ArcNode *p; visited[u]=1; d++; path[d]=u; if(u==v&&d>=1) { printf(" "); for(i=0; i ",g.vex[path[i]].name); printf("%s",g.vex[path[d]].name); printf("\n"); } p=G->adjlist[u].firstarc; while(p!=NULL) { w=p->adjvex; if(visited[w]==0) FindaPath(g,G,w,v,path,d); p=p->nextarc; } visited[u]=0;}//删除景点简介信息void delete_str(char str1[], char str2[],int len,char str3[]){ int num=0,k=0,i=0,j=0; //num用来记录子串的个数 k用来记录子串的位置 char *p=str2; //使用p还原str到初始位置 while(str1[i]!='\0') { if(str1[i]!=str2[j]) { str3[k++]=str1[i++]; //当str1中的字符与str的首字符不相同时 } else { char *temp=str2; for(; (str1[i]==str2[j])&&str2[j]!='\0'; j++) { i++; } if(j==len) { num++; //出现重复子串,num加一 } else { //主字符串中存在和子串前几个字符相同的一段字符 //退出循环并将这段字符写进新的字符数组中 for(int m=0; m ='0'&&a[i]<='9') pass=pass*10+a[i]-'0'; else if(a[i]=='\b') //当遇到退格键不做处理 { printf("\b \b"); i--; } else { pass=0; break; //退出for循环后,再次接受 } } fflush(stdin); //清除键盘缓存区中已经有的输入 printf("\n"); if(pass==0) //此条件成立可能由两种情况引起:输入了非数字字符被直接重置为0,或6位全0后正常退出for循环 { printf("密码要求全为数字,且不能全0!\n"); printf("请重新输入密码: "); } else break; } return pass;}//在图中增加一个顶点void add_point(MGraph &g){ int i,d; N++; g.vex[N-1].num=N-1; printf("%d\n",N); printf("请输入要增加景点的名称:"); scanf("%s",g.vex[N-1].name); printf("%s\n",g.vex[N-1].name); printf("请输入该景点与其它景点间的路径长度:"); for(i=0; i =0&&i<=N-1&&j>=0&&j<=N-1&&j>=0) { if(g.edges[i][j]!=INF&&g.edges[j][i]!=INF) { printf("该两点之间已存在路径,是否进行修改(0.修改 1.不修改):"); scanf("%d",&k); if(k==0) { printf("请输入要修改的路径的长度:"); scanf("%d",&length); g.edges[j][i]=g.edges[i][j]=length; printf("修改成功!"); } else g.edges[j][i]=g.edges[i][j]; } else { printf("请输入要增加的路径的长度:"); scanf("%d",&length); g.edges[j][i]=g.edges[i][j]=length; printf("添加成功!\n"); } break; } else { printf("输入的顶点在原图中不存在!\n"); continue; } } while(1);}//删除图中的一个顶点void delete_point(MGraph &g){ int i,j,m; printf("%d\n",N); printf("请输入要删除景点的编号:"); scanf("%d",&m); do { if(m>=0&&m<=N-1) break; else { printf("请输入要删除景点的编号:"); scanf("%d",&m); } } while(1); for(i=0; i n; i++) visited[i]=0; system("color F0"); printf("\t\t *******************************\n"); printf("\t\t * 1.用户 *\n"); printf("\t\t * 2.管理人员 *\n"); printf("\t\t *******************************\n"); printf("请选择相应的编号进行下一步操作:"); scanf("%d",&k); do { if(k==1||k==2) break; else { printf("输入数据不合理,请重新输入:"); scanf("%d",&k); } } while(1); if(k==1) { system("title 校园景点介绍及路径查询系统"); system("color F0"); printf("\n\n\n\n\n\n\n\n\n\n\n\n"); printf("\t\t\t欢迎进入校园景点介绍及路径查询系统!\n\n\n\n\n\n\n\n\n\n\n\n\n"); printf("正在进入,请稍后...\n"); printf("===============================================================================\r"); for(j=0; j<80; j++) { Sleep(50); printf(">"); } system("cls"); do { printf("\t\t *******************************\n"); printf("\t\t * 1.景点简介 *\n"); printf("\t\t * 2.两景点间最短路径 *\n"); printf("\t\t * 3.两景点间所有路径 *\n"); printf("\t\t * 4.退出系统 *\n"); printf("\t\t *******************************\n"); printf("请输入要进行的操作的编号:"); scanf("%d",&x); do { if(x>=1&&x<=4) break; else { printf("输入数据不合理,请重新输入:"); scanf("%d",&x); } } while(1); if(x>=1&&x<=3) { printf("\t\t *******************************\n"); if(N%2!=0) { for(i=0; i 需要的文件:
path.txt的内容:
0 20 60 150 32767 60 32767 100 300 150 20 0 50 100 32767 32767 32767 32767 32767 32767 60 50 0 32767 32767 300 40 32767 32767 32767 150 100 32767 0 32767 32767 32767 100 32767 32767 32767 32767 32767 32767 0 50 32767 32767 32767 30 60 32767 300 32767 32767 0 200 32767 32767 50 32767 32767 40 32767 32767 200 0 32767 32767 32767100 32767 100 32767 32767 32767 0 50 32767 32767 300 32767 32767 32767 32767 32767 32767 50 0 35050 32767 32767 32767 30 50 32767 32767 350password.txt的内容:
pass 123456data.txt的内容:
0 三元湖 烟大的一道靓丽的风景1 钟楼 配备有专业设备的实验综合楼2 八景园 休息和聊天的好去处3 小树林 各种社团的活动场所,4 九龙广场 海豚雕塑加上美丽的喷泉很漂亮5 八餐 美味的饭菜让人回味无穷6 一餐 豪华的装修,美味的饭菜7 体育场 锻炼和饭后散步的好去处8 七餐 全亚洲最大的学生餐厅9 新图 藏书丰富,安静的环境让人很舒服以上是"如何使用C++实现简单校园导游系统"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
输入
景点
路径
信息
j++
系统
内容
字符
密码
成功
位置
简介
顶点
校园
不合理
数据
长度
查询
管理
文件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
武汉凌峰网络技术有限公司
软件开发代码缩进
学习网络技术可以做软件吗
软件开发和软件销售界定
票据库存管理 数据库设计
数据库只读模式
服务器cpu指标
江苏应用软件开发大概要多少钱
中国金融ORACLE数据库
创众信息网络技术有限公司
定制服务器的税务处理
辰光网络技术服务部
学网络安全技术到
广州手机软件开发哪家公司好
立法审查网络安全
森林如何在别人服务器里开挂
软件开发都是有哪些工作
魔域怎么查服务器
凹印软件开发
服务器一般几点开门
寒武纪系统软件开发面试
2015年国外网络安全事件
软件开发怎么做市场
数据库删除链接后怎么恢复
普及网络安全法的知识
网络安全及信息技术业务工作
企业服务器推荐思科
网站服务器续费怎么续
搞网络安全工作学什么专业
会计专业和软件开发哪个好
