C++实现校园导游系统
短信预约 -IT技能 免费直播动态提醒
本文实例为大家分享了C++实现校园导游系统的具体代码,供大家参考,具体内容如下
校园导游系统
问题描述:设计一个校园导游程序,完成校园信息的维护以及为来访的客人提供信息查询等服务功能。
基本要求:
设计学校的校园平面图,所含景点不少于10个,以图中顶点表示校内各景点,顶点的信息包括:景点名称、代号、简介等,以边表示道路,边上信息包括:两点距离、所需时间等相关信息。(注:数据的输入可以是键盘输入或文件输入两种方式)
提供对校园景点信息的编辑(如:添加、删除、修改等)的功能;
为来访客人提供图中任意景点相关信息的查询(可提供多种查询方式);
为来访客人提供从校门口到图中任意景点的问路查询(最短路径);
为来访客人提供图中任意景点间的问路查询。
#include<iostream>
using namespace std;
int main()
{
int n;
const int MAX=1000;
static int r [MAX][MAX]={
{0,100,20,200,MAX,MAX,MAX,MAX,MAX,MAX},
{100,0,MAX,80,MAX,MAX,MAX,90,MAX,MAX},
{20,MAX,0,MAX,MAX,MAX,200,MAX,MAX,MAX},
{200,80,MAX,0,40,MAX,MAX,70,MAX,50},
{MAX,MAX,MAX,40,0,300,MAX,MAX,MAX,60},
{MAX,MAX,MAX,MAX,300,0,50,MAX, MAX,MAX},
{MAX,MAX,200,MAX,MAX,50,0,MAX,MAX,400},
{MAX,90,MAX,70,MAX,MAX,MAX,0,50,50},
{MAX,MAX,MAX,MAX,MAX,MAX,MAX,50,0,70},
{MAX,MAX,MAX,50,60,MAX,400,50,70,0}
};
struct vertex
{string name;
int number;
string introduction;
}ver[MAX]={
{"校门",0,"学校主校门"},
{"体育场",1,"学校举办体育活动的地方"},
{"六号公寓",2,"校内学生宿舍"},
{"沉思广场",3,"大草地"},
{"知源亭",4,"小亭子"},
{"图书馆",5,"书的栖息地"},
{"综合实验楼",6,"实验室云云"},
{"大学会馆",7,"举办会议和活动的地方"},
{"鹏远公寓",8,"鹏远学生宿舍"},
{"工学馆",9,"主教楼"}
};
int b;
for(b=0;b<1000;b++) {
cout<<"|-----------------------------------------------------------------------------|"<<endl;
cout<<"| 欢迎来到校园导游系统 |"<<endl;
cout<<"| 1.管理员登陆 |"<<endl;
cout<<"| 2.游客登录 |"<<endl;
cout<<"| 3.退出校园导游系统 |"<<endl;
cout<<"|-----------------------------------------------------------------------------|"<<endl;
cout<<"校园导游图:"<<endl;
cout<<" 8----------9--------------------------"<<endl;
cout<<" | /|| | "<<endl;
cout<<" | ---/ | | | "<<endl;
cout<<" | / | --- | "<<endl;
cout<<" 7 | | | "<<endl;
cout<<" | | | | | "<<endl;
cout<<" | | | | | "<<endl;
cout<<" | ---3-------4--------------5 | "<<endl;
cout<<" | ---/| | | "<<endl;
cout<<" | / | || "<<endl;
cout<<" 1 | ------- 6 "<<endl;
cout<<" | | / "<<endl;
cout<<" | | ------------ "<<endl;
cout<<" | | / "<<endl;
cout<<" | | / "<<endl;
cout<<" | | 2 "<<endl;
cout<<" |/ "<<endl;
cout<<" 0 "<<endl;
cout<<"景点编号:"<<endl;
cout<<"0.校门 1.体育场"<<endl;
cout<<"2.六号公寓 3.沉思广场"<<endl;
cout<<"4.知源亭 5.图书馆"<<endl;
cout<<"6.综合实验楼 7.大学会馆"<<endl;
cout<<"8.鹏远公寓 9.工学馆"<<endl;
cout<<"请按对应数字选择您操作:";
cin>>n;
if(n==1)
{
cout<<"|-----------------------------------------------------------------------------|"<<endl;
cout<<"| 管理员您好,欢迎来到校园导游系统 |"<<endl;
cout<<"| 1.添加校园景点信息 |"<<endl;
cout<<"| 2.删除校园景点信息 |"<<endl;
cout<<"| 3.修改校园景点信息 |"<<endl;
cout<<"|-----------------------------------------------------------------------------|"<<endl;
cout<<"请输入您将要进行的编辑操作编号:";
int a;
cin>>a;
if(a==1){
cout<<"请输入你将要添加的校园景点编号:";
int m;
cin>>m;
ver[m].number=m;
cout<<"请输入你将要添加的校园景点的名称:";
string x;
cin>>x;
ver[m].name=x;
cout<<"请输入你将要添加的校园景点的介绍:";
string y;
cin>>y;
ver[m].introduction=y;
cout<<"添加成功~" <<endl;
}
if(a==2){
cout<<"请输入你将要删除的校园景点编号:";
int m;
cin>>m;
ver[m]=ver[MAX-1];
cout<<"删除成功~"<<endl;
}
if(a==3){
cout<<"请输入你将要修改的校园景点编号:";
int m;
cin>>m;
cout<<"你将要修改的景点信息如下:"<<endl;
cout<<"景点名称:"<<ver[m].name<<endl;
cout<<"景点介绍:"<<ver[m].introduction<<endl;
cout<<"请输入修改后的景点名称:";
string x;
cin>>x;
ver[m].name=x;
cout<<"请输入修改后的景点介绍信息:";
string y;
cin>>y;
ver[m].introduction=y;
cout<<"修改成功~"<<endl;
}
}
else if(n==2)
{
cout<<"|-----------------------------------------------------------------------------|"<<endl;
cout<<"| 游客您好,欢迎来到校园导游系统 |"<<endl;
cout<<"| 1.查询校园景点信息 |"<<endl;
cout<<"| 2.校门问路查询 |"<<endl;
cout<<"| 3.任意景点问路查询 |"<<endl;
cout<<"|-----------------------------------------------------------------------------|"<<endl;
cout<<"请按对应数字选择您所需要的服务:";
int o;
cin>>o;
switch(o)
{
case 1:{cout<<"查询校园景点信息"<<endl<<"请输入所要查询的景点号码:";
int m;
cin>>m;
cout<<"景点名称:"<<ver[m].name<<endl;
cout<<"景点介绍:"<<ver[m].introduction<<endl;
}break;
case 2:{
cout<<"校门问路查询"<<endl;
cout<<"请输入您想要到达的目的地:";
static int x=0;
static int y;
cin>>y;
cout<<"最短路径为:" ;
static int u;
static int v;
static int w;
static int i;
int t;
static int s[MAX];
static int D[MAX][MAX];
static bool P[10][10][10];
for(v=0;v<10;v++)
for(w=0;w<10;w++){
D[v][w]=r[v][w];
for(u=0;u<10;u++) P[v][w][u]=0;
if(D[v][w]<MAX){
P[v][w][v]=1;P[v][w][w]=1;
}
}
for(u=0;u<10;u++)
for(v=0;v<10;v++)
for(w=0;w<10;w++)
if(D[v][u]+D[u][w]<D[v][w]){
D[v][w]=D[v][u]+D[u][w];
for(i=0;i<10;i++)
P[v][w][i]=P[v][u][i]||P[u][w][i];
}
int q=0;
for(t=0;t<10;t++)
if(P[x][y][t]==true) {
s[q]=t;
q++;
}
int d;
int h;
int f[10]={100};
static int l=0;
int z=x;
for(d=0;d<q-1;d++)
for(h=0;h<q;h++)
if(D[z][s[h]]==r[z][s[h]]&&D[z][s[h]]>0&&s[h]!=f[l]){
cout<<z<<"-->";
l=l+1;
f[l]=z;
z=s[h];
break;
}
cout<<y;
cout<<"这两个地点间的最短距离为"<<D[0][y]<<"m"<<endl;
cout<<"从所在地步行到目的地约用时为"<<D[0][y]/80.0<<"min"<<endl;
}break;
case 3:{cout<<"任意景点问路查询"<<endl<<"请输入您现在所在的地点";
static int x;
cin>>x;
cout<<"请输入您想要到的地点";
static int y;
cin>>y;
cout<<"最短路径为:" ;
static int u;
static int v;
static int w;
static int i;
int t;
static int s[MAX];
static int D[MAX][MAX];
static bool P[10][10][10];
for(v=0;v<10;v++)
for(w=0;w<10;w++){
D[v][w]=r[v][w];
for(u=0;u<10;u++) P[v][w][u]=false;
if(D[v][w]<MAX){
P[v][w][v]=true;P[v][w][w]=true;
}
}
for(u=0;u<10;u++)
for(v=0;v<10;v++)
for(w=0;w<10;w++)
if(D[v][u]+D[u][w]<D[v][w]){
D[v][w]=D[v][u]+D[u][w];
for(i=0;i<10;i++)
P[v][w][i]=P[v][u][i]||P[u][w][i];
}
int q=0;
for(t=0;t<10;t++)
if(P[x][y][t]==true) {
s[q]=t;
q++;
}
int d;
int h;
int f[10]={100};
static int l=0;
int z=x;
for(d=0;d<q-1;d++)
for(h=0;h<q;h++)
if(D[z][s[h]]==r[z][s[h]]&&D[z][s[h]]>0&&s[h]!=f[l]){
cout<<z<<"-->";
l=l+1;
f[l]=z;
z=s[h];
break;
}
cout<<y;
cout<<"这两个地点间的最短距离为"<<D[x][y]<<"m"<<endl;
cout<<"从所在地步行到目的地约用时为"<<D[x][y]/80.0<<"min"<<endl;
}break;
}
}
else {cout<<"感谢使用校园导游系统"<<endl;
exit(0);
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341