亲宝软件园·资讯

展开

C++校园导游系统

HappyNewStart 人气:0

校园导游系统

问题描述:设计一个校园导游程序,完成校园信息的维护以及为来访的客人提供信息查询等服务功能。

基本要求:

设计学校的校园平面图,所含景点不少于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);    
    }
    
     }
} 

加载全部内容

相关教程
猜你喜欢
用户评论