校园导航系统的设计与实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cout<<"登录页面"<<endl;
cout<<"┏━━━━━━━━━━━━━━━━━━━━┓"<<endl;
cout<<"┃1.管理员┃"<<endl;
cout<<"┃2.游客┃"<<endl;
cout<<"┗━━━━━━━━━━━━━━━━━━━━┛"<<endl;
int n;
cin>>n;
switch(n)
}
for(i=1;i<=j;i++)
{
f2>>a;
f2>>b;
f2>>c;
changdu[a][b].weight=c;
changdu[b][a].weight=c;
changdu[a][b].k=1;
changdu[b][a].k=1;
}
//Browser();
Menu1();
/*这是我自己写的求两景点之间最短距离的方法,不知道是对是错,其他求最短距离的算法很难看懂,我就自己设计了一个,不过时间上面会花费很多*/
cout<<"┃2.查看所有游览路线┃"<<endl;
cout<<"┃3.选择出发点和目的地┃"<<endl;
cout<<"┃4.修改数据┃"<<endl;
cout<<"┃5.退出系统┃"<<endl;
cout<<"┗━━━━━━━━━━━━━━━━━━━━┛"<<endl;
cout<<"Option-:";
{
case 1:admin_log();break;
case 2:Menu();break;
}
return 0;
}
void admin_log()
{
int key,id;
cout<<"管理员编号:";
cin>>id;
cout<<"管理员密码:";
cin>>key;
if(key==123&&id==1)
{
cout<<"景点编号不存在!请重新输入出发点和目的地的编号:";
short();
}
if(changdu[k][j].weight<10000)
cout<<"可以从景点"<<jingdian[k].name<<"到达景点"<<jingdian[j].name<<endl<<"总路线长为"<<changdu[k][j].weight;
cout<<"请修改景点介绍"<<endl;
cin>>jingdian[k].introduction;
}
elseif(n==3)
{
cout<<"请问删除第几个景点的数据"<<endl;
cin>>k;
for(;k<jingdiangeshu;)
{
jingdian[k].num=jingdian[k+1].num;
}
void lvyouluxian() //查看所有游览路线
{
int i,j;
for(i=1;i<=jingdiangeshu;i++)
for(j=1;j<=jingdiangeshu;j++)
{
if(changdu[i][j].k&&i<j)
{
cout<<""<<jingdian[i].name<<"----->>"<<jingdian[j].name<<endl;
ifstream f1("1.in");
for(i=1;i<=jingdiangeshu;i++)
{
f1>>jingdian[i].num;
f1>>jingdian[i].name;
f1>>jingdian[i].introduction;
}
cout<<"请输入各个景点间的距离"<<endl;
cout<<"请把输入文件保存在2.in内"<<endl;
changdu[jingdiangeshu][bianhaos].k=1;
changdu[bianhaos][jingdiangeshu].k=1;
}
}
}
elseif(n==2)
{
cout<<"请问修改第几个景点的数据"<<endl;
cin>>k;
cout<<"请修改景点名称"<<endl;
cin>>jingdian[k].name;
changdu[a][b].weight=changdu[a][c].weight+changdu[c][b].weight;
}
}
void Menu1()
{
cout<<" **大学导游图"<<endl;
cout<<"┏━━━━━━━━━━━━━━━━━━━━┓"<<endl;
cout<<"┃1.浏览各景点及简介┃"<<endl;
*/
/*文件2.in中的数据
13
1 2 50
1 3 100
2 5 58
2 6 20
2 7 75
3 4 10
3 6 60
4 6 30
5 8 15
6 7 10
7 10 10
8 9 20
9 10 23
*/
cout<<"距离为"<<changdu[i][j].weight<<endl;
}
}
}
void Short() //选择出发点和目的地
{
int k,j;
cout<<"请输入出发点和目的地的编号(用空格隔开):";
cin>>k>>j;
if(k>jingdiangeshu||j>jingdiangeshu)
for(j=1;j<jingdiangeshu;j++)
for(a=1;a<=jingdiangeshu;a++)
for(b=1;b<=jingdiangeshu;b++)
{Leabharlann Baidu
if(changdu[a][c].weight!=10000&&changdu[c][b].weight!=100000)
if(changdu[a][c].weight+changdu[c][b].weight<changdu[a][b].weight)
cout<<"┃"<<jingdian[i].num<<"┃"<<jingdian[i].name<<" "<<jingdian[i].introduction<<endl;
cout<<"┗━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl;
cout<<endl;
for(i=1;i<=jingdiangeshu;i++)
fout<<"┃"<<jingdian[i].num<<"┃"<<jingdian[i].name<<" "<<jingdian[i].introduction<<endl;
}
Menu1();
}
/*文件1.in中的数据
1前门面南.对面有小超市
cout<<"Option-:";
int i,k,n;
int y,bianhaos,weights;
cin>>n;
if(n==1)
{
cout<<"添加几个景点的数据"<<endl;
cin>>k;
for(i=1;i<=k;i++)
{
jingdiangeshu=jingdiangeshu+1;
jingdian[jingdiangeshu].num=jingdiangeshu;
cin>>y;
while(y--)
{
cout<<"请输入可以到达的景点编号"<<endl;
cin>>bianhaos;
cout<<"请输入景点间的距离"<<endl;
cin>>weights;
changdu[jingdiangeshu][bianhaos].weight=weights;
changdu[bianhaos][jingdiangeshu].weight=weights;
}
}
void Browser() //浏览各景点及简介
{
int i;
cout<<endl;
cout<<"┏━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;
cout<<"┃编号┃景点名称┃简介┃"<<endl;
for(i=1;i<=jingdiangeshu;i++)
int n;
cin>>n;
switch(n)
{
case 1: Browser(); Menu1(); break;
case 2: lvyouluxian();Menu1(); break;
case 3: Short();Menu1(); break;
case 4: xiugai(); break;
case 5: break;
cout<<"┃1.添加数据┃"<<endl;
cout<<"┃2.修改数据┃"<<endl;
cout<<"┃3.删除数据┃"<<endl;
cout<<"┃4.保存数据┃"<<endl;
cout<<"┃5.大学导游图┃"<<endl;
cout<<"┗━━━━━━━━━━━━━━━━┛"<<endl;
cout<<endl;
#include <iomanip>
int jingdiangeshu ; ///景点个数<=100,超过100会数组会越界
struct //图中顶点表示主要景点,存放景点的编号、名称、简介等信息,
{
int num; //景点的编号
char name[30]; //名称
char introduction[100] ; //简介
//校园导航系统的设计与实现
#include<iostream>
using namespace std;
#include <fstream>
#include<stdlib.h>
#include<string.h>
using namespace std;
ofstream fout("1.out");//输出文件
}jingdian[100];
struct
{
int k; //可以一次性到达,不需要经过其他景点
int weight; //两景点之间的距离
}changdu[100][100];
void admin_log(void );
void Menu(void );
void Menu1(void );
void Browser(void );
ifstream f2("2.in");
int j,a,b,c; //有多少种方法到达
f2>>j;
for(a=1;a<=jingdiangeshu;a++)
for(b=1;b<=jingdiangeshu;b++)
{
changdu[a][b].k=0;
changdu[a][b].weight=10000;
cout<<"请输入景点名称"<<endl;
cin>>jingdian[jingdiangeshu].name;
cout<<"请输入景点介绍"<<endl;
cin>>jingdian[jingdiangeshu].introduction;
cout<<"请问该景点可以直接到达哪个几个景点"<<endl;
else
cout<<"无法从景点"<<jingdian[k].name<<"到达景点"<<jingdian[j].name<<endl;
}
void xiugai() //修改数据
{
cout<<endl<<endl;
cout<<" **修改数据"<<endl;
cout<<"┏━━━━━━━━━━━━━━━━┓"<<endl;
{
Menu();
}
else
{
cout<<"错误!"<<endl;
admin_log();
}
}
void Menu()
{
cout<<"初始景点个数为10个"<<endl;
jingdiangeshu=10;
int i;
cout<<"请依次输入景点的编号,名称和简介"<<endl;
cout<<"请把输入文件保存在1.in内"<<endl;
void lvyouluxian(void );
void Short(void );
void xiugai(void );
int main()
{
system("color 1f");
system("mode con: cols=100 lines=40");
// infotype jingdian[100];
strcmp(jingdian[k].name,jingdian[k+1].name);
strcmp(jingdian[k].introduction,jingdian[k+1].introduction);
k++;
}
jingdiangeshu--;
}
elseif(n==4)
{
cout<<"保存的文本名为:1.out"<<endl;
2图书馆藏书几十万册,设施良好,一二楼均有自修室
3教二楼学校的主要教学楼,共六层,有多个专业实验
4实验楼紧邻教二楼,共七层,主要为公共实验室,六层有通宵自习室
5操场全新塑胶跑道,中间为人工草皮足球场
6教一楼教一楼
7食堂标准食堂,两层,清洁卫生
8水房配备自动刷卡系统
9学一公寓男生公寓
10学二公寓女生公寓
cout<<"┏━━━━━━━━━━━━━━━━━━━━┓"<<endl;
cout<<"┃1.管理员┃"<<endl;
cout<<"┃2.游客┃"<<endl;
cout<<"┗━━━━━━━━━━━━━━━━━━━━┛"<<endl;
int n;
cin>>n;
switch(n)
}
for(i=1;i<=j;i++)
{
f2>>a;
f2>>b;
f2>>c;
changdu[a][b].weight=c;
changdu[b][a].weight=c;
changdu[a][b].k=1;
changdu[b][a].k=1;
}
//Browser();
Menu1();
/*这是我自己写的求两景点之间最短距离的方法,不知道是对是错,其他求最短距离的算法很难看懂,我就自己设计了一个,不过时间上面会花费很多*/
cout<<"┃2.查看所有游览路线┃"<<endl;
cout<<"┃3.选择出发点和目的地┃"<<endl;
cout<<"┃4.修改数据┃"<<endl;
cout<<"┃5.退出系统┃"<<endl;
cout<<"┗━━━━━━━━━━━━━━━━━━━━┛"<<endl;
cout<<"Option-:";
{
case 1:admin_log();break;
case 2:Menu();break;
}
return 0;
}
void admin_log()
{
int key,id;
cout<<"管理员编号:";
cin>>id;
cout<<"管理员密码:";
cin>>key;
if(key==123&&id==1)
{
cout<<"景点编号不存在!请重新输入出发点和目的地的编号:";
short();
}
if(changdu[k][j].weight<10000)
cout<<"可以从景点"<<jingdian[k].name<<"到达景点"<<jingdian[j].name<<endl<<"总路线长为"<<changdu[k][j].weight;
cout<<"请修改景点介绍"<<endl;
cin>>jingdian[k].introduction;
}
elseif(n==3)
{
cout<<"请问删除第几个景点的数据"<<endl;
cin>>k;
for(;k<jingdiangeshu;)
{
jingdian[k].num=jingdian[k+1].num;
}
void lvyouluxian() //查看所有游览路线
{
int i,j;
for(i=1;i<=jingdiangeshu;i++)
for(j=1;j<=jingdiangeshu;j++)
{
if(changdu[i][j].k&&i<j)
{
cout<<""<<jingdian[i].name<<"----->>"<<jingdian[j].name<<endl;
ifstream f1("1.in");
for(i=1;i<=jingdiangeshu;i++)
{
f1>>jingdian[i].num;
f1>>jingdian[i].name;
f1>>jingdian[i].introduction;
}
cout<<"请输入各个景点间的距离"<<endl;
cout<<"请把输入文件保存在2.in内"<<endl;
changdu[jingdiangeshu][bianhaos].k=1;
changdu[bianhaos][jingdiangeshu].k=1;
}
}
}
elseif(n==2)
{
cout<<"请问修改第几个景点的数据"<<endl;
cin>>k;
cout<<"请修改景点名称"<<endl;
cin>>jingdian[k].name;
changdu[a][b].weight=changdu[a][c].weight+changdu[c][b].weight;
}
}
void Menu1()
{
cout<<" **大学导游图"<<endl;
cout<<"┏━━━━━━━━━━━━━━━━━━━━┓"<<endl;
cout<<"┃1.浏览各景点及简介┃"<<endl;
*/
/*文件2.in中的数据
13
1 2 50
1 3 100
2 5 58
2 6 20
2 7 75
3 4 10
3 6 60
4 6 30
5 8 15
6 7 10
7 10 10
8 9 20
9 10 23
*/
cout<<"距离为"<<changdu[i][j].weight<<endl;
}
}
}
void Short() //选择出发点和目的地
{
int k,j;
cout<<"请输入出发点和目的地的编号(用空格隔开):";
cin>>k>>j;
if(k>jingdiangeshu||j>jingdiangeshu)
for(j=1;j<jingdiangeshu;j++)
for(a=1;a<=jingdiangeshu;a++)
for(b=1;b<=jingdiangeshu;b++)
{Leabharlann Baidu
if(changdu[a][c].weight!=10000&&changdu[c][b].weight!=100000)
if(changdu[a][c].weight+changdu[c][b].weight<changdu[a][b].weight)
cout<<"┃"<<jingdian[i].num<<"┃"<<jingdian[i].name<<" "<<jingdian[i].introduction<<endl;
cout<<"┗━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl;
cout<<endl;
for(i=1;i<=jingdiangeshu;i++)
fout<<"┃"<<jingdian[i].num<<"┃"<<jingdian[i].name<<" "<<jingdian[i].introduction<<endl;
}
Menu1();
}
/*文件1.in中的数据
1前门面南.对面有小超市
cout<<"Option-:";
int i,k,n;
int y,bianhaos,weights;
cin>>n;
if(n==1)
{
cout<<"添加几个景点的数据"<<endl;
cin>>k;
for(i=1;i<=k;i++)
{
jingdiangeshu=jingdiangeshu+1;
jingdian[jingdiangeshu].num=jingdiangeshu;
cin>>y;
while(y--)
{
cout<<"请输入可以到达的景点编号"<<endl;
cin>>bianhaos;
cout<<"请输入景点间的距离"<<endl;
cin>>weights;
changdu[jingdiangeshu][bianhaos].weight=weights;
changdu[bianhaos][jingdiangeshu].weight=weights;
}
}
void Browser() //浏览各景点及简介
{
int i;
cout<<endl;
cout<<"┏━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;
cout<<"┃编号┃景点名称┃简介┃"<<endl;
for(i=1;i<=jingdiangeshu;i++)
int n;
cin>>n;
switch(n)
{
case 1: Browser(); Menu1(); break;
case 2: lvyouluxian();Menu1(); break;
case 3: Short();Menu1(); break;
case 4: xiugai(); break;
case 5: break;
cout<<"┃1.添加数据┃"<<endl;
cout<<"┃2.修改数据┃"<<endl;
cout<<"┃3.删除数据┃"<<endl;
cout<<"┃4.保存数据┃"<<endl;
cout<<"┃5.大学导游图┃"<<endl;
cout<<"┗━━━━━━━━━━━━━━━━┛"<<endl;
cout<<endl;
#include <iomanip>
int jingdiangeshu ; ///景点个数<=100,超过100会数组会越界
struct //图中顶点表示主要景点,存放景点的编号、名称、简介等信息,
{
int num; //景点的编号
char name[30]; //名称
char introduction[100] ; //简介
//校园导航系统的设计与实现
#include<iostream>
using namespace std;
#include <fstream>
#include<stdlib.h>
#include<string.h>
using namespace std;
ofstream fout("1.out");//输出文件
}jingdian[100];
struct
{
int k; //可以一次性到达,不需要经过其他景点
int weight; //两景点之间的距离
}changdu[100][100];
void admin_log(void );
void Menu(void );
void Menu1(void );
void Browser(void );
ifstream f2("2.in");
int j,a,b,c; //有多少种方法到达
f2>>j;
for(a=1;a<=jingdiangeshu;a++)
for(b=1;b<=jingdiangeshu;b++)
{
changdu[a][b].k=0;
changdu[a][b].weight=10000;
cout<<"请输入景点名称"<<endl;
cin>>jingdian[jingdiangeshu].name;
cout<<"请输入景点介绍"<<endl;
cin>>jingdian[jingdiangeshu].introduction;
cout<<"请问该景点可以直接到达哪个几个景点"<<endl;
else
cout<<"无法从景点"<<jingdian[k].name<<"到达景点"<<jingdian[j].name<<endl;
}
void xiugai() //修改数据
{
cout<<endl<<endl;
cout<<" **修改数据"<<endl;
cout<<"┏━━━━━━━━━━━━━━━━┓"<<endl;
{
Menu();
}
else
{
cout<<"错误!"<<endl;
admin_log();
}
}
void Menu()
{
cout<<"初始景点个数为10个"<<endl;
jingdiangeshu=10;
int i;
cout<<"请依次输入景点的编号,名称和简介"<<endl;
cout<<"请把输入文件保存在1.in内"<<endl;
void lvyouluxian(void );
void Short(void );
void xiugai(void );
int main()
{
system("color 1f");
system("mode con: cols=100 lines=40");
// infotype jingdian[100];
strcmp(jingdian[k].name,jingdian[k+1].name);
strcmp(jingdian[k].introduction,jingdian[k+1].introduction);
k++;
}
jingdiangeshu--;
}
elseif(n==4)
{
cout<<"保存的文本名为:1.out"<<endl;
2图书馆藏书几十万册,设施良好,一二楼均有自修室
3教二楼学校的主要教学楼,共六层,有多个专业实验
4实验楼紧邻教二楼,共七层,主要为公共实验室,六层有通宵自习室
5操场全新塑胶跑道,中间为人工草皮足球场
6教一楼教一楼
7食堂标准食堂,两层,清洁卫生
8水房配备自动刷卡系统
9学一公寓男生公寓
10学二公寓女生公寓