您的位置:首页 > 其它

小型校园导游系统

2010-11-29 20:32 274 查看
其实感觉自己写的也挺乱的。

不过是第一个算是自己写的东西吧。

继续努力~

#include"校园景点布局.h"
#include<string.h>
#include<conio.h>
#include<windows.h>

#define MAX_SCENCE_SUM 100//最大景点数
#define MAX_LENGTH 10000//定义路径的无穷大
#define N 23//当前的景点数目

typedef struct data
{
int Num;//景点编号
char Name[100];//景点名称
char Introduction[1000];//景点介绍
}DATA;

typedef struct vnode
{
int num;//景点编号
DATA Vdata;//景点信息

}VNODE,ADJLIST[MAX_SCENCE_SUM];

typedef struct graph
{
ADJLIST ADJDATA;
int Path[MAX_SCENCE_SUM][MAX_SCENCE_SUM];
}GRAPH;

GRAPH G;
int PATH[MAX_SCENCE_SUM][MAX_SCENCE_SUM];
int SHORTESTPATH[MAX_SCENCE_SUM][MAX_SCENCE_SUM];

void CreatGraph()
{
int i,j;

for(i = 1 ; i <= N ; i++)
{
G.ADJDATA[i].num=i;
G.ADJDATA[i].Vdata.Num=i;
}

strcpy(G.ADJDATA[1].Vdata.Name,"主楼");
strcpy(G.ADJDATA[1].Vdata.Introduction,"黑龙江大学主楼是黑大最古老的建筑,同时也是俄语哲学等学科的办公教学场所。/n建筑风格为俄罗斯式,于90年代扩建一次,仍然保持了原有风格。");

strcpy(G.ADJDATA[2].Vdata.Name,"体育馆");
strcpy(G.ADJDATA[2].Vdata.Introduction,"可以进行综合性体育运动的体育场馆。/n馆内有篮球馆、羽毛球馆、乒乓球等场馆。");

strcpy(G.ADJDATA[3].Vdata.Name,"2号教学楼");
strcpy(G.ADJDATA[3].Vdata.Introduction,"综合性教学楼。");

strcpy(G.ADJDATA[8].Vdata.Name,"音乐厅");
strcpy(G.ADJDATA[8].Vdata.Introduction,"音乐厅。");

strcpy(G.ADJDATA[4].Vdata.Name,"A区游泳馆");
strcpy(G.ADJDATA[4].Vdata.Introduction,"建立比较早的游泳馆,所以环境和设施不是特别好。");

strcpy(G.ADJDATA[5].Vdata.Name,"联通广场");
strcpy(G.ADJDATA[5].Vdata.Introduction,"联通公司在黑龙江大学出资建立的广场。");

strcpy(G.ADJDATA[9].Vdata.Name,"图书馆");
strcpy(G.ADJDATA[9].Vdata.Introduction,"黑龙江大学图书馆是黑龙江省唯一一所地方综合性大学图书馆。/n是于1958年9月在哈尔滨外国语学院图书馆的基础上扩建起来的,其前身可追溯到抗战时期的延安外国语学校图书馆。");

strcpy(G.ADJDATA[10].Vdata.Name,"1号教学楼");
strcpy(G.ADJDATA[10].Vdata.Introduction,"综合性教学楼。主要为外语学院的学生在此上课。");

strcpy(G.ADJDATA[7].Vdata.Name,"校医院");
strcpy(G.ADJDATA[7].Vdata.Introduction," 校医院就诊的时间为8:00—11:30,13:30—17:00。/n在此时间外及节假日,医院均有值班医生和护士。/n医院将努力做到接待学生热心、解释问题耐心、诊断疾病细心、治疗用药放心。 ");

strcpy(G.ADJDATA[11].Vdata.Name,"实验楼");
strcpy(G.ADJDATA[11].Vdata.Introduction,"数学科学技术学院和电工学院坐落于此。");

strcpy(G.ADJDATA[6].Vdata.Name,"博文楼");
strcpy(G.ADJDATA[6].Vdata.Introduction,"新建立的图书馆。");

strcpy(G.ADJDATA[12].Vdata.Name,"A区食堂");
strcpy(G.ADJDATA[12].Vdata.Introduction,"黑龙江大学饮食服务中心。");

strcpy(G.ADJDATA[13].Vdata.Name,"黑龙江大学出版社&&农学楼");
strcpy(G.ADJDATA[13].Vdata.Introduction,"黑龙江大学出版社是于2007年3月经中华人民共和国新闻出版总署批准,由黑龙江省教育厅主管、黑龙江大学主办的图书出版企业,是黑龙江省第一家正式注册为企业的出版社。");

strcpy(G.ADJDATA[14].Vdata.Name,"2号体育场");
strcpy(G.ADJDATA[14].Vdata.Introduction,"大学体育场。");

strcpy(G.ADJDATA[15].Vdata.Name,"汇文楼");
strcpy(G.ADJDATA[15].Vdata.Introduction,"是一座综合性教学楼。是各个学院学生的主要上课地点。");

strcpy(G.ADJDATA[16].Vdata.Name,"B区食堂");
strcpy(G.ADJDATA[16].Vdata.Introduction,"一层和二层为学生食堂。/n三层为大学生活动中心。/n四层为各个学院的导员办公室。");

strcpy(G.ADJDATA[17].Vdata.Name,"联通大厅");
strcpy(G.ADJDATA[17].Vdata.Introduction,"联通营业厅。");

strcpy(G.ADJDATA[18].Vdata.Name,"后勤服务中心");
strcpy(G.ADJDATA[18].Vdata.Introduction,"后勤服务中心。");

strcpy(G.ADJDATA[19].Vdata.Name,"4号教学楼");
strcpy(G.ADJDATA[19].Vdata.Introduction,"计算机科学技术学院和软件学院坐落于此。地下一层为学生创业园,另外汇通驾校为与此楼的一层。");

strcpy(G.ADJDATA[20].Vdata.Name,"3号教学楼");
strcpy(G.ADJDATA[20].Vdata.Introduction,"综合性教学楼。");

strcpy(G.ADJDATA[21].Vdata.Name,"C区游泳馆");
strcpy(G.ADJDATA[21].Vdata.Introduction,"黑龙江大学城游泳馆座落于黑龙江省大学城C区。/n作为东北三省唯一一座设施先进、功能齐全的现代化游泳场馆,规模与设备在全国堪称一流。");

strcpy(G.ADJDATA[22].Vdata.Name,"艺术楼");
strcpy(G.ADJDATA[22].Vdata.Introduction,"艺术学院坐落于此。");

strcpy(G.ADJDATA[23].Vdata.Name,"C区食堂");
strcpy(G.ADJDATA[23].Vdata.Introduction,"一层和二层为学生食堂。三层为阳光餐厅。");

for(i = 1 ; i <= N ; i++)
for(j = 1 ;j <=N ; j++)
G.Path[i][j]=MAX_LENGTH;

for(i = 1 ;i <= N; i++)
SHORTESTPATH[i][i]=0;

G.Path[1][2]=G.Path[2][1]=150;
G.Path[1][3]=G.Path[3][1]=70;
G.Path[1][4]=G.Path[4][1]=170;
G.Path[1][6]=G.Path[6][1]=270;

G.Path[2][4]=G.Path[4][2]=170;

G.Path[3][4]=G.Path[4][3]=230;
G.Path[3][5]=G.Path[5][3]=80;
G.Path[3][6]=G.Path[6][3]=230;

G.Path[4][5]=G.Path[5][4]=150;
G.Path[4][10]=G.Path[10][4]=130;

G.Path[5][6]=G.Path[6][5]=230;
G.Path[5][8]=G.Path[8][5]=170;
G.Path[5][9]=G.Path[9][5]=100;
G.Path[5][10]=G.Path[10][5]=110;

G.Path[6][7]=G.Path[7][6]=150;
G.Path[6][12]=G.Path[12][6]=120;
G.Path[6][13]=G.Path[13][6]=180;

G.Path[7][10]=G.Path[10][7]=50;
G.Path[7][11]=G.Path[11][7]=70;
G.Path[7][12]=G.Path[12][7]=120;

G.Path[8][9]=G.Path[9][8]=120;
G.Path[8][14]=G.Path[14][8]=170;

G.Path[9][10]=G.Path[10][9]=80;
G.Path[9][14]=G.Path[14][9]=120;

G.Path[10][11]=G.Path[11][10]=100;
G.Path[10][14]=G.Path[14][10]=150;

G.Path[11][12]=G.Path[12][11]=100;
G.Path[11][14]=G.Path[14][11]=170;

G.Path[12][13]=G.Path[13][12]=120;
G.Path[12][16]=G.Path[16][12]=150;

G.Path[14][15]=G.Path[15][14]=120;

G.Path[15][19]=G.Path[19][15]=250;

G.Path[16][17]=G.Path[17][16]=100;
G.Path[16][18]=G.Path[18][16]=100;

G.Path[17][18]=G.Path[18][17]=30;
G.Path[17][19]=G.Path[19][17]=120;
G.Path[17][20]=G.Path[20][17]=130;

G.Path[18][19]=G.Path[19][18]=130;
G.Path[18][20]=G.Path[20][18]=130;

G.Path[19][20]=G.Path[20][19]=100;
G.Path[19][21]=G.Path[21][19]=220;
G.Path[19][22]=G.Path[22][19]=270;

G.Path[20][21]=G.Path[21][20]=220;

G.Path[21][22]=G.Path[22][21]=80;

G.Path[22][23]=G.Path[23][22]=190;
}

void Introduce()
{
int number;
cout<<"请输入需要查询的经典编号:";		cin>>number;
cout<<endl;
switch(number)
{
case 1:
cout<<"景点编号:"<<G.ADJDATA[1].Vdata.Num<<endl;
cout<<"景点名称  "<<G.ADJDATA[1].Vdata.Name<<endl;
cout<<"景点简介: "<<G.ADJDATA[1].Vdata.Introduction<<endl;
break;
case 2:
cout<<"景点编号:"<<G.ADJDATA[2].Vdata.Num<<endl;
cout<<"景点名称: "<<G.ADJDATA[2].Vdata.Name<<endl;
cout<<"景点简介: "<<G.ADJDATA[2].Vdata.Introduction<<endl;
break;

case 3:
cout<<"景点编号:"<<G.ADJDATA[3].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[3].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[3].Vdata.Introduction<<endl;
break;

case 4:
cout<<"景点编号:"<<G.ADJDATA[4].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[4].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[4].Vdata.Introduction<<endl;
break;

case 5:
cout<<"景点编号:"<<G.ADJDATA[5].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[5].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[5].Vdata.Introduction<<endl;
break;

case 6:
cout<<"景点编号:"<<G.ADJDATA[6].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[6].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[6].Vdata.Introduction<<endl;
break;

case 7:
cout<<"景点编号:"<<G.ADJDATA[7].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[7].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[7].Vdata.Introduction<<endl;
break;

case 8:
cout<<"景点编号:"<<G.ADJDATA[8].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[8].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[8].Vdata.Introduction<<endl;
break;

case 9:
cout<<"景点编号:"<<G.ADJDATA[9].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[9].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[9].Vdata.Introduction<<endl;
break;

case 10:
cout<<"景点编号:"<<G.ADJDATA[10].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[10].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[10].Vdata.Introduction<<endl;
break;

case 11:
cout<<"景点编号:"<<G.ADJDATA[11].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[11].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[11].Vdata.Introduction<<endl;
break;

case 12:
cout<<"景点编号:"<<G.ADJDATA[12].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[12].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[12].Vdata.Introduction<<endl;
break;

case 13:
cout<<"景点编号:"<<G.ADJDATA[13].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[13].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[13].Vdata.Introduction<<endl;
break;

case 14:
cout<<"景点编号:"<<G.ADJDATA[14].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[14].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[14].Vdata.Introduction<<endl;
break;

case 15:
cout<<"景点编号:"<<G.ADJDATA[15].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[15].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[15].Vdata.Introduction<<endl;
break;

case 16:
cout<<"景点编号:"<<G.ADJDATA[16].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[16].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[16].Vdata.Introduction<<endl;
break;

case 17:
cout<<"景点编号:"<<G.ADJDATA[17].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[17].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[17].Vdata.Introduction<<endl;
break;

case 18:
cout<<"景点编号:"<<G.ADJDATA[18].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[18].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[18].Vdata.Introduction<<endl;
break;

case 19:
cout<<"景点编号:"<<G.ADJDATA[19].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[19].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[19].Vdata.Introduction<<endl;
break;

case 20:
cout<<"景点编号:"<<G.ADJDATA[20].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[20].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[20].Vdata.Introduction<<endl;
break;

case 21:
cout<<"景点编号:"<<G.ADJDATA[21].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[21].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[21].Vdata.Introduction<<endl;
break;

case 22:
cout<<"景点编号:"<<G.ADJDATA[22].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[22].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[22].Vdata.Introduction<<endl;
break;

case 23:
cout<<"景点编号:"<<G.ADJDATA[23].Vdata.Num<<endl;
cout<<"景点名称:"<<G.ADJDATA[23].Vdata.Name<<endl;
cout<<"景点简介:"<<G.ADJDATA[23].Vdata.Introduction<<endl;
break;

default:
cout<<"编号输入错误!!"<<endl;
break;
}
}

void FLOYD()
{
int i,j,k;

for(i = 1 ;i <= N ;i++)
for(j = 1 ; j <= N ; j++)
{
SHORTESTPATH[i][j]=G.Path[i][j];
PATH[i][j]=0;
}

for(k = 1 ; k <= N ; k++)
for(i = 1 ;i <= N ;i++)
for(j = 1 ; j <= N ; j++)
{
if(SHORTESTPATH[i][j]>SHORTESTPATH[i][k]+SHORTESTPATH[k][j])
{
SHORTESTPATH[i][j]=SHORTESTPATH[i][k]+SHORTESTPATH[k][j];
PATH[i][j]=k;
}
}
}

void output(int i,int j)
{
int a = i,b = j;
cout << "您要查询两景点间的最短的路径是:" << endl;
if(SHORTESTPATH[i][j] != MAX_SCENCE_SUM)
{
if(i < j)
{
cout << G.ADJDATA[b].Vdata.Name;
while(PATH[i][j] != 0)
{
cout << "<--" << G.ADJDATA[PATH[i][j]].Vdata.Name;
if(i < j)
j = PATH[i][j];
else
i = PATH[j][i];
}
cout << "<--" << G.ADJDATA[a].Vdata.Name<< endl;
cout << endl;
cout <<G.ADJDATA[a].Vdata.Name<< "到" <<G.ADJDATA[b].Vdata.Name<< "的最短距离是:" <<SHORTESTPATH[a][b] << "米" << endl;
}
else
{
cout <<G.ADJDATA[a].Vdata.Name;
while(PATH[i][j]!=0)
{
cout<<"->"<<G.ADJDATA[PATH[i][j]].Vdata.Name;
if(i<j)
j=PATH[i][j];
else
i=PATH[j][i];
}
cout<<"->"<<G.ADJDATA[b].Vdata.Name;
cout<<"/n/n";
cout<<G.ADJDATA[a].Vdata.Name<<"到"<<G.ADJDATA[b].Vdata.Name<<"最短距离是:"<<SHORTESTPATH[a][b]<<"米"<<endl;
}
}
}

void Shortestpath()
{
int i,j;
cout<<"请输入需要查询的两个景点的编号:";		cin>>i>>j;
if(i > N || i < 0 || j > N || j < 0)
{
cout << "输入错误,景点编号为1到24,请重新输入:" ;
cin >> i >> j;
}
else
{
FLOYD();
output(i,j);
}
}

void MENU(int x)
{
CreatGraph();

if(x==1)
{
cout<<endl<<endl<<endl<<endl;
cout<<"/t _________________黑龙江大学小型校园导游系统________________"<<endl;
cout<<"/t|                                                           |"<<endl;
cout<<"/t|                      1、景点相关信息查询                  |"<<endl;
cout<<"/t|                      2、问路查询                          |"<<endl;
cout<<"/t|                      3、查看景点一览图                    |"<<endl;
cout<<"/t|                      4、退出查询系统                      |"<<endl;
cout<<"/t|                                                           |"<<endl;
cout<<"/t ___________________________________________________________"<<endl;
}
else if(x==2)
{
system("cls");
cout<<"/t ___________________________________________________________"<<endl;
cout<<"/t|黑龙江大学景点列表:      1、 主楼                          |"<<endl;
cout<<"/t|                         2、 体育馆                        |"<<endl;
cout<<"/t|                         3、 2号教学楼                     |"<<endl;
cout<<"/t|                         4、 A区游泳馆                     |"<<endl;
cout<<"/t|                         5、 联通广场                      |"<<endl;
cout<<"/t|                         6、 博文楼                        |"<<endl;
cout<<"/t|    |     |——//         7、 校医院                        |"<<endl;
cout<<"/t|    |     |     //        8、 音乐厅                        |"<<endl;
cout<<"/t|    |_____|      |       9、 图书馆                        |"<<endl;
cout<<"/t|    |     |      |       10、1号教学楼                     |"<<endl;
cout<<"/t|    |     |      |       11、实验楼                        |"<<endl;
cout<<"/t|    |     |     /        12、A区食堂                       |"<<endl;
cout<<"/t|    |     |——/         13、黑龙江大学出版社&&农学楼      |"<<endl;
cout<<"/t|                         14、2号体育场                     |"<<endl;
cout<<"/t|                         15、汇文楼                        |"<<endl;
cout<<"/t|                         16、B区食堂                       |"<<endl;
cout<<"/t|                         17、联通广场                      |"<<endl;
cout<<"/t|                         18、后勤服务中心                  |"<<endl;
cout<<"/t|                         19、4号教学楼&&汇通驾校           |"<<endl;
cout<<"/t|                         20、3号教学楼                     |"<<endl;
cout<<"/t|                         21、C区游泳馆                     |"<<endl;
cout<<"/t|                         22、艺术楼                        |"<<endl;
cout<<"/t|                         23、C区食堂                       |"<<endl;
cout<<"/t ___________________________________________________________"<<endl;
}

}

void cometrue(int x)
{
switch(x)
{
case 1:
{
MENU(2);
Introduce();
return ;
}
case 2:
{
MENU(2);
Shortestpath();
return;
}

case 3:
{
system("cls");
map();
return;
}
case 4:
exit(-1);
}
}

void main()
{
system("color 0f");
int x;
char choose;
while(1)
{
MENU(1);
cout<<endl<<"/t请输入所选服务类型:";
cin>>x;
cometrue(x);
cout<<"是否继续(Y / N):";	cin>>choose;
if(choose=='Y' || choose=='y')
{
system("cls");
continue;
}
else if(choose=='N' || choose=='n')
exit(0);
system("cls");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息