/*
功能:给出一张某公园的导游图,游客通过终端询问可知:
从某一景点到另一景点的最短路径。游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边)。
分步实施:
1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2. 完成最低要求:建立一个文件,包括5个景点情况,能完成遍历功能;
3. 进一步要求:进一步扩充景点数目,画出景点图,有兴趣的同学可以自己扩充系统功能。
*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define MaxVertexNum 100
#define MaxCost 9999
typedef char VertexType;
typedef int EdgeType;
typedef struct
{ VertexType vexs[MaxVertexNum];
/* 存放顶点信息 */
EdgeType edges[MaxVertexNum][MaxVertexNum];
/* 存放邻接关系 */
int n,e; /*顶点数和边数*/
}Mgraph;
void mune(); //主菜单界面
void floyd(Mgraph G,int D[MaxVertexNum][MaxVertexNum],int P[MaxVertexNum][MaxVertexNum]); //指定距离的弗洛伊德
void opfloy(int n,int D[MaxVertexNum][MaxVertexNum],int P[MaxVertexNum][MaxVertexNum]); //指定距离的输出
void hamanzi(Mgraph *G); //从起点开始遍历的函数。
void CreateMGraph(Mgraph *G); //建立图的函数
void printph();
void look();
int main()
{
Mgraph G;
int n,D[MaxVertexNum][MaxVertexNum],P[MaxVertexNum][MaxVertexNum];
int a;
char b[100];
char user[20],mana[20]="password",*q,*p,m=0;//依次是登录者,管理者,指针来判断登录账号是否是管理者。
system("color f0");
L: printf("\t ***************************************************\n");
printf("\t请登录(输入你的用户名):");
scanf("%s",user);
p=user;
q=mana;
while(*p==*q)//用来判断登陆者是否为管理者的部分
{
m=1;
p++;
q++;
if(*q=='\0')
break;
}
if(*p!=*q)
m=0;
/******************************************************************/
if(m==1)
{
printf("");
CreateMGraph(&G);
system("cls");
L1: mune();
printf("请输入您的选项\n");
scanf("%d",&a);
switch(a)
{
case 1:
floyd(G,D,P);
opfloy(G.n,D,P);
system("pause");
system("cls");
a=35421568;
goto L1;
case 2:
hamanzi(&G);
system("pause");
system("cls");
a=35421568;
goto L1;
case 3:
printph();