标签:case ---- 管理系统 void yhxx break 旅游 printf
旅游管理系统
设计要求
旅游管理系统
1.1设计要求
[问题描述]
本实训项目是根据旅游行业的这种现状,提出解决问题的一个可行性方法,实现了旅游管理的网络化。
(1)身份验证:采用了权限认证的方式,只有经过了系统权限认证之后,方可进入系统主控界面;
(2)普通用户:具有信息查询权限,能够查看最新景点的动态新闻,度假村和景点简介信息及身份注册功能。
(3)会员:在线进行酒店、景点门票、餐饮的预订;
(4)管理员:可以查询用户信息、旅游信息,并具有进行增加、更改、删除的功能;帮助会员自驾游规划线路。
使用简单的C语言完成,要求虽然都完成,但是问题还是有。
设计分析
系统结构
景点图
酒店图
餐饮图
算法设计
需要的函数:
void welcome(); //欢迎界面
void con(); //继续函数
void line_in_JD(); //景点信息载入
void line_in_HY(); //会员信息载入
void line_in_jiu();//酒店信息载入
void line_in_can();//餐饮信息载入
void line_in_weight();//权值信息载入
void DL(); //登录函数
void menu(); //主菜单函数
void JD(); //景点信息查询
void ZC(); //注册函数
void HYRZ(); //会员认证
void GLY_XX(); //管理员-用户信息
void PT(); //普通用户菜单
void HY(); //会员菜单
void GLY(); //管理员菜单
void YD_jiu(); //酒店预订
void YD_jing(); //景点预订
void YD_can(); //餐饮预订
void YD_cg(int n, int m); //预订成功
void floyd(int A[][6], int C[][6]); //A是路径长度矩阵,C是有向网络G的带权邻接矩阵
typedef struct JD //景点的名字和描述结构体 SPELL取大
{
char name[NAME];
char spell[SPELL];
};
typedef struct YHXX //用户的信息(会员)
{
int num;
char name[NAME]; //姓名
char sex[5]; //性别
char tel[15]; //电话
char mima[20]; //密码
char jiudian[20]; //酒店
char canyin[20]; //餐饮
};
typedef struct jiudian
{
char jd1[20]; //酒店1
char jd2[20]; //酒店2
char jd3[20]; //酒店3
};
//全局变量
static int yhbh = 5; //会员人数
初始化信息(存入txt文本)
//会员信息.txt
编号 姓名 性别 电话 密码 酒店 餐饮
1 张三 男 110 111111 一元路酒店1 热干面
2 李四 男 111 222222 一元路酒店2 小笼包
3 王五 男 112 333333 一元路酒店3 豆皮
4 赵六 男 113 444444 一元路酒店1 豆皮
5 刘大 男 114 555555 一元路酒店2 热干面
//景点信息.txt
一元路 去江滩的路1
二曜路 去江滩的路2
三阳路 去江滩的路3
四唯路 去江滩的路4
五福路 去江滩的路5
六合路 去江滩的路6
//酒店信息.txt
一元路酒店1 一元路酒店2 一元路酒店3
二曜路酒店1 二曜路酒店2 二曜路酒店3
三阳路酒店1 三阳路酒店2 三阳路酒店3
四唯路酒店1 四唯路酒店2 四唯路酒店3
五福路酒店1 五福路酒店2 五福路酒店3
六合路酒店1 六合路酒店2 六合路酒店3
程序代码
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<ctype.h>
typedef char DataType;
#define MaxSize 10
#define MaxWeight 10000
#define MaxVertices 6
#define NAME 20
#define SPELL 200
#define maxsize 160
void welcome(); //欢迎界面
void con(); //继续函数
void line_in_JD(); //景点信息载入
void line_in_HY(); //会员信息载入
void line_in_jiu();//酒店信息载入
void line_in_can();//餐饮信息载入
void line_in_weight();//权值信息载入
void DL(); //登录函数
void menu(); //主菜单函数
void JD(); //景点信息查询
void ZC(); //注册函数
void HYRZ(); //会员认证
void GLY_XX(); //管理员-用户信息
void PT(); //普通用户菜单
void HY(); //会员菜单
void GLY(); //管理员菜单
void YD_jiu(); //酒店预订
void YD_jing(); //景点预订
void YD_can(); //餐饮预订
void YD_cg(int n, int m); //预订成功
void floyd(int A[][6], int C[][6]); //A是路径长度矩阵,C是有向网络G的带权邻接矩阵
typedef struct JD
{
char name[NAME];
char spell[SPELL];
};
typedef struct YHXX
{
int num;
char name[NAME];
char sex[5];
char tel[15];
char mima[20];
char jiudian[20];
char canyin[20];
};
typedef struct jiudian
{
char jd1[20];
char jd2[20];
char jd3[20];
};
//结构体变量
struct JD jd[6]; //景点
struct YHXX yhxx[20]; //用户信息
struct jiudian jiu[6]; //酒店
//全局变量
int k = 1;
int temp;
static int yhbh = 5; //会员人数
int path[6][6];//路径矩阵
//邻接矩阵
/*{maxsize, 10, 20, maxsize, maxsize, 10},
{ maxsize,maxsize,maxsize,30,maxsize,10 },
{ maxsize,maxsize,maxsize,maxsize,20,maxsize },
{ 20,maxsize,maxsize,maxsize,maxsize,maxsize },
{ maxsize,maxsize,maxsize,20,maxsize,maxsize },
{ maxsize,maxsize,maxsize,maxsize,10,maxsize }*/
//主函数
int main()
{
welcome();
line_in_JD();
line_in_HY();
line_in_jiu();
menu();
return 0;
}
//欢迎界面
void welcome() //欢迎界面
{
printf("\n\n\n\n\n\n");
printf("【】***************************************【】\n");
printf("***********************************************\n");
printf(" 欢迎进入 \n");
printf(" 旅游管理系统 \n");
printf("***********************************************\n");
printf("【】***************************************【】\n");
}
//按任意键继续函数
void con() //继续函数
{
printf("\n\n按任意键继续!");
getchar();
}
//景点信息载入
void line_in_JD() //信息录入函数
{
FILE* fp;
int i;
fp = fopen("景点信息.txt", "r");
if (!fp)
{
printf("景点信息打开失败");
exit(1);
}
for (i = 0; i < 6; i++)
{
fscanf(fp, "%s %s", &jd[i].name,&jd[i].spell);
}
fclose(fp);
printf("景点信息录入完毕\n");
}
//会员信息载入
void line_in_HY() //信息录入函数
{
FILE* fp;
int i;
fp = fopen("会员信息.txt", "r");
if (!fp)
{
printf("会员信息打开失败\n");
exit(1);
}
for (i = 0; i < 20; i++)
{
fscanf(fp, "%d%s%s%s%s%s%s",&yhxx[i].num, &yhxx[i].name, &yhxx[i].sex, &yhxx[i].tel, &yhxx[i].mima,&yhxx[i].jiudian,&yhxx[i].canyin);
}
fclose(fp);
printf("会员信息录入完毕\n");
}
//酒店信息载入
void line_in_jiu()
{
FILE* fp;
int i;
fp = fopen("酒店信息.txt", "r");
if (!fp)
{
printf("酒店信息打开失败\n");
exit(1);
}
for (i = 0; i < 6; i++)
{
fscanf(fp, "%s%s%s", &jiu[i].jd1, &jiu[i].jd2, &jiu[i].jd3);
}
fclose(fp);
printf("酒店信息录入完毕\n");
}
//主菜单
void menu()
{
int num, k = 1;
while (k)
{
con();
system("cls");
printf("\n\n\n\n请选择你的身份\n\n");
printf("1----普通用户\n");
printf("2----会员\n");
printf("3----管理员\n");
printf("4----退出系统\n");
printf("请输入选项编号:");
scanf("%d", &num);
switch (num)
{
case 1:PT(); break;
case 2:HYRZ(); break;
case 3:DL(); break;
case 4:exit(0); break;
default:
{
printf("请在1-4中选择!\n");
getchar();
}break;
}
}
}
//管理员登录函数
void DL() //登录函数
{
int m = 1, b = 1, n = 0;
while (m)
{
con();
system("cls");
int z = 0;
char c;
char password[20];
printf("1----密码认证\n");
printf("2----返回上一层\n");
printf("请输入选项编号:");
scanf("%d", &n);
switch (n)
{
case 1:
{
printf("请输入6位密码:");
while ((c = getch()) != '\r')
{
if (z < NAME && isprint(c))
{
password[z++] = c;
putchar('*'); //显示*号
}
}
putchar('\n');
password[z] = '\0';
m = strcmp(password, "123456");
if (m == 0)
{
printf("登陆成功!\n");
GLY();
}
else
{
printf("登录失败!\n");
printf("1----重新输入\n");
printf("2----退出系统\n");
printf("3----返回主页面\n");
printf("请输入选项编号:");
scanf("%d", &b);
}
if (b == 2)
exit(0);
if (b == 3)
m = 0;
}; break;
case 2:m = 0; break;
default:
{
printf("请在1-2中选择!\n");
getchar();
}break;
}
}
}
//会员密码认证
void HYRZ() //会员认证
{
int m = 1, b = 1, i = 0, t = 0, n = 0;
while (m)
{
con();
system("cls");
int z = 0;
char c;
char password[20];
printf("1----密码认证\n");
printf("2----返回上一层\n");
printf("请输入选项编号:");
scanf("%d", &n);
switch (n)
{
case 1:
{
printf("请输入密码:");
while ((c = getch()) != '\r')
{
if (z < NAME && isprint(c))
{
password[z++] = c;
putchar('*'); //显示*号
}
}
putchar('\n');
password[z] = '\0';
for (i = 0; i < yhbh; i++)
{
m = strcmp(password, yhxx[i].mima);
if (m == 0)
t
= 1;
}
if (t == 1)
HY();
else
{
printf("登录失败!\n");
printf("1----重新输入\n");
printf("2----退出系统\n");
printf("3----返回主页面\n");
printf("请输入选项编号:");
scanf("%d", &b);
}
if (b == 2)
exit(0);
if (b == 3)
m = 0;
}; break;
case 2:m = 0; break;
default:
{
printf("请在1-2中选择!\n");
getchar();
}; break;
}
}
}
//管理员菜单——用户信息
void GLY_XX()
{
int i,n,m,x,y;
FILE* fp1;
fp1 = fopen("会员信息.txt", "w");
if (!fp1)
printf("打开失败\n");
printf("编号 姓名 性别 电话 密码 酒店 餐饮\n");
for (i = 0; i < yhbh; i++)
{
printf(" %d %-10s %2s %-14s %-6s %-15s %-10s\n", yhxx[i].num, yhxx[i].name, yhxx[i].sex, yhxx[i].tel, yhxx[i].mima, yhxx[i].jiudian, yhxx[i].canyin);
}
printf("\n\n有以下功能\n");
printf("1----增加功能\n");
printf("2----删除功能\n");
printf("3----修改功能\n");
printf("4----返回上一层\n");
printf("请输入选项编号");
scanf("%d", &n);
switch (n)
{
case 1:
{
printf("请输入身份信息\n");
printf("姓名:");
scanf("%s", &yhxx[yhbh].name);
printf("性别:");
scanf("%s", &yhxx[yhbh].sex);
printf("电话:");
scanf("%s", &yhxx[yhbh].tel);
printf("密码:");
scanf("%s", &yhxx[yhbh].mima);
printf("酒店:");
scanf("%s", &yhxx[yhbh].jiudian);
printf("餐饮:");
scanf("%s", &yhxx[yhbh].canyin);
yhxx[yhbh].num = yhbh+1;
yhbh++;
for (i = 0; i < yhbh; i++)
{
fprintf(fp1, "%d %s %s %s %s %s %s\n", yhxx[i].num, yhxx[i].name, yhxx[i].sex, yhxx[i].tel, yhxx[i].mima, yhxx[i].jiudian, yhxx[i].canyin);
}
printf("信息载入成功");
printf("注册成功\n请按任意键返回管理员页面");
getchar();
}; break;
case 2:
{
printf("请选择你要删除的编号");
scanf("%d", &m);
if (m > yhbh)
{
printf("无此人,请重新输入要删除的编号\n");
printf("按任意键返回管理员页面\n");
getchar();
break;
}
printf("您确定删除第%d号用户信息么\n",m);
printf("1----确定\n");
printf("2----返回\n");
printf("请输入选项编号");
scanf("%d", &y);
switch (y)
{
case 1:
{
for (i = m - 1; i < yhbh; i++)
{
strcpy(yhxx[i].name, yhxx[i + 1].name);
strcpy(yhxx[i].sex, yhxx[i + 1].sex);
strcpy(yhxx[i].tel, yhxx[i + 1].tel);
strcpy(yhxx[i].mima, yhxx[i + 1].mima);
strcpy(yhxx[i].jiudian, yhxx[i + 1].jiudian);
strcpy(yhxx[i].canyin, yhxx[i + 1].canyin);
}
yhbh--;
for (i = 0; i < yhbh; i++)
{
fprintf(fp1, "%d %s %s %s %s %s %s\n", yhxx[i].num, yhxx[i].name, yhxx[i].sex, yhxx[i].tel, yhxx[i].mima, yhxx[i].jiudian, yhxx[i].canyin);
}
printf("信息载入成功");
printf("删除成功!\n请按任意键返回管理员页面");
getchar();
}; break;
case 2:
{
y = 0;
printf("按任意键返回管理员页面");
getchar();
}break;
default:
{
printf("请在1-2中选择!\n");
getchar();
}; break;
}
}; break;
case 3:
{
printf("请输入你要修改的编号");
scanf("%d", &x);
if (x > yhbh)
{
printf("无此人,请重新输入要修改的编号");
printf("按任意键返回管理员页面");
getchar();
break;
}
x = x - 1;
printf("姓名");
scanf("%s", &yhxx[x].name);
printf("性别:");
scanf("%s", &yhxx[x].sex);
printf("电话:");
scanf("%s", &yhxx[x].tel);
printf("密码:");
scanf("%s", &yhxx[x].mima);
printf("酒店:");
scanf("%s", &yhxx[x].jiudian);
printf("餐饮:");
scanf("%s", &yhxx[x].canyin);
printf("修改成功!\n请按任意键返回管理员页面。");
for (i = 0; i < yhbh; i++)
{
fprintf(fp1, "%d %s %s %s %s %s %s\n", yhxx[i].num, yhxx[i].name, yhxx[i].sex, yhxx[i].tel, yhxx[i].mima, yhxx[i].jiudian, yhxx[i].canyin);
}
printf("信息载入成功");
getchar();
}; break;
case 4:n = 0; break;
}
getchar();
}
//景点查询函数
void JD() //景点查询函数
{
int num, m = 1;
while (m)
{
con();
system("cls");
printf("请输入想了解的景点\n");
printf("1----一元路\n");
printf("2----二曜路\n");
printf("3----三阳路\n");
printf("4----四唯路\n");
printf("5----五福路\n");
printf("6----六合路\n");
printf("7----返回上一层\n");
printf("8----返回主菜单\n");
printf("请输入选项编号:");
scanf("%d", &num);
switch (num)
{
case 1: {printf("%s", jd[0].spell); getchar(); }; break;
case 2: {printf("%s", jd[1].spell); getchar(); }; break;
case 3: {printf("%s", jd[2].spell); getchar(); }; break;
case 4: {printf("%s", jd[3].spell); getchar(); }; break;
case 5: {printf("%s", jd[4].spell); getchar(); }; break;
case 6: {printf("%s", jd[5].spell); getchar(); }; break;
case 7:m = 0; break;
case 8:menu(); break;
default:
{
printf("请在1-8中选择!\n");
getchar();
}break;
}
}
}
//普通用户菜单
void PT() //普通用户菜单
{
int x = 0, y = 1;
while (y)
{
con();
system("cls");
printf("普通用户菜单\n");
printf("1.景点信息\n");
printf("2.身份注册\n");
printf("3.返回上一层\n");
printf("请输入选项编号:");
scanf("%d", &x);
switch (x)
{
case 1:JD(); break;
case 2:ZC(); break;
case 3:y = 0; break;
default:
{
printf("请在1-3中选择");
getchar();
}break;
}
}
}
//会员菜单
void HY() //会员菜单
{
int x = 0, y = 1;
while (y)
{
system("cls");
printf("会员菜单\n");
printf("1----景点信息\n");
printf("2----酒店预订\n");
printf("3----景点预订\n");
printf("4----餐饮预订\n");
printf("5----返回上一层\n");
printf("请输入选项编号:");
scanf("%d", &x);
switch (x)
{
case 1:JD(); break;
case 2:YD_jiu(); break;
case 3:YD_jing(); break;
case 4:YD_can(); break;
case 5:menu(); break;
default:
{
printf("请在1-5中选择");
getchar();
}break;
}
}
}
//管理员菜单
void GLY() //管理员菜单
{
int x = 0, y = 1;
while (y)
{
system("cls");
printf("管理员菜单\n");
printf("1----用户信息\n");
printf("2----景点信息\n");
printf("3----规划自驾游\n");
printf("4----返回上一层\n");
printf("请输入选项编号:");
scanf("%d", &x);
switch (x)
{
case 1:GLY_XX(); break;
case 2:JD(); break;
case 3: {
int A[6][6];
int C[6][6] = {
{maxsize,10,20,maxsize,maxsize,10},
{maxsize,maxsize,maxsize,30,maxsize,10},
{maxsize,maxsize,maxsize,maxsize,20,maxsize},
{20,maxsize,maxsize,maxsize,maxsize,maxsize},
{maxsize,maxsize,maxsize,20,maxsize,maxsize},
{maxsize,maxsize,maxsize,maxsize,10,maxsize}
};
floyd(A, C);
}break;
case 4:y = 0; break;
default:
{
printf("请在1-4中选择");
getchar();
}break;
}
}
}
//注册函数
void ZC()
{
printf("请输入你的身份信息\n");
printf("姓名:");
scanf("%s", &yhxx[yhbh].name);
printf("性别:");
scanf("%s", &yhxx[yhbh].sex);
printf("电话:");
scanf("%s", &yhxx[yhbh].tel);
printf("密码:");
scanf("%s", &yhxx[yhbh].mima);
yhxx[yhbh].num = yhbh+1;
yhbh++;
printf("注册成功");
getchar();
menu();
}
//预订酒店函数
void YD_jiu()
{
int m = 1, n = 1, x = 1;
while (m)
{
system("cls");
printf("请输入你想何处附近预订酒店\n");
printf("1----一元路\n");
printf("2----二曜路\n");
printf("3----三阳路\n");
printf("4----四唯路\n");
printf("5----五福路\n");
printf("6----六合路\n");
printf("7----返回上一层\n");
printf("8----返回主菜单\n");
printf("请输入选项编号:");
scanf("%d", &n);
switch (n)
{
case 1:
{
printf("1----%s\n2----%s\n3----%s\n", jiu[0].jd1, jiu[0].jd2, jiu[0].jd3);
printf("4----返回上一层\n");
scanf("%d", &x);
switch (x)
{
case 1:YD_cg(0, 1); break;
case 2:YD_cg(0, 2); break;
case 3:YD_cg(0, 3); break;
case 4:x = 0; break;
default:
{
printf("请在1-4中选择");
getchar();
}break;
};
}break;
case 2:
{
printf("1----%s\n2----%s\n3----%s\n", jiu[1].jd1, jiu[1].jd2, jiu[1].jd3);
printf("4----返回上一层\n");
scanf("%d", &x);
switch (x)
{
case 1:YD_cg(1, 1); break;
case 2:YD_cg(1, 2); break;
case 3:YD_cg(1, 3); break;
case 4:x = 0; break;
default:
{
printf("请在1-4中选择");
getchar();
}break;
};
}break;
case 3:
{
printf("1----%s\n2----%s\n3----%s\n", jiu[2].jd1, jiu[2].jd2, jiu[2].jd3);
printf("4----返回上一层\n");
scanf("%d", &x);
switch (x)
{
case 1:YD_cg(2, 1); break;
case 2:YD_cg(2, 2); break;
case 3:YD_cg(2, 3); break;
case 4:x = 0; break;
default:
{
printf("请在1-4中选择");
getchar();
}break;
};
}break;
case 4:
{
printf("1----%s\n2----%s\n3----%s\n", jiu[3].jd1, jiu[3].jd2, jiu[3].jd3);
printf("4----返回上一层\n");
scanf("%d", &x);
switch (x)
{
case 1:YD_cg(3, 1); break;
case 2:YD_cg(3, 2); break;
case 3:YD_cg(3, 3); break;
case 4:x = 0; break;
default:
{
printf("请在1-4中选择");
getchar();
}break;
};
}; break;
case 5:
{
printf("1----%s\n2----%s\n3----%s\n", jiu[4].jd1, jiu[4].jd2, jiu[4].jd3);
scanf("%d", &x);
switch (x)
{
case 1:YD_cg(4, 1); break;
case 2:YD_cg(4, 2); break;
case 3:YD_cg(4, 3); break;
case 4:x = 0; break;
default:
{
printf("请在1-4中选择");
getchar();
}break;
};
}break;
case 6:
{
printf("1----%s\n2----%s\n3----%s\n", jiu[5].jd1, jiu[5].jd2, jiu[5].jd3);
scanf("%d", &x);
switch (x)
{
case 1:YD_cg(5, 1); break;
case 2:YD_cg(5, 2); break;
case 3:YD_cg(5, 3); break;
case 4:x = 0; break;
default:
{
printf("请在1-4中选择");
getchar();
}break;
};
}break;
case 7:m = 0; break;
case 8:menu(); break;
default:
{
printf("请在1-8中选择!\n");
getchar();
}break;
}
}
}
//预订景点函数
void YD_jing()
{
int m = 1, n = 1, x = 1, y;
while (m)
{
system("cls");
printf("请输入你的编号\n");
printf("请输入你想预订的景点\n");
printf("1----一元路\n");
printf("2----二曜路\n");
printf("3----三阳路\n");
printf("4----四唯路\n");
printf("5----五福路\n");
printf("6----六合路\n");
printf("7----返回上一层\n");
printf("8----返回主菜单\n");
printf("请输入选项编号:");
scanf("%d", &n);
switch (n)
{
case 1:
{
printf("预订成功!\n您已预订一元路景点");
}; break;
case 2:
{
printf("预订成功!\n您已预订二曜路景点");
}; break;
case 3:
{
printf("预订成功!\n您已预订三阳路景点");
}; break;
case 4:
{
printf("预订成功!\n您已预订四唯路景点");
}; break;
case 5:
{
printf("预订成功!\n您已预订五福路景点");
}; break;
case 6:
{
printf("预订成功!\n您已预订六合路景点");
}; break;
case 7:m = 0; break;
case 8:HY(); break;
}
getchar();
getchar();
}
}
//预订餐饮函数
void YD_can()
{
int m,n;
printf("预订菜单\n");
printf("1----热干面\n");
printf("2----豆皮\n");
printf("3----小笼包\n");
printf("4----返回上一层\n");
printf("请输入你的编号:");
scanf("%d", &n);
n = n - 1;
if (n > yhbh-1)
{
printf("查无此人\n");
printf("按任意键返回预定菜单\n");
getchar();
getchar();
system("cls");
YD_can();
}
printf("请输入你要预定的餐饮编号:");
scanf("%d", &m);
switch (m)
{
case 1:
{
strcpy(yhxx[n].canyin, "热干面");
printf("预定成功!\n按任意键返回预定菜单\n");
getchar();
getchar();
}
case 2:
{
strcpy(yhxx[n].canyin, "豆皮");
printf("预定成功!\n按任意键返回预定菜单\n");
getchar();
getchar();
}
case 3:
{
strcpy(yhxx[n].canyin, "小笼包");
printf("预定成功!\n按任意键返回预定菜单\n");
getchar();
getchar();
}
case 4:HY(); break;
default:
{
printf("请在1-4中选择");
getchar();
}break;
}
}
//预订成功函数
void YD_cg(int n,int m)
{
int t;
printf("请输入你的编号:");
scanf("%d", &t);
t = t - 1;
printf("预订成功!\n");
switch (m)
{
case 1:
{
printf("您已预订%s", jiu[n].jd1);
strcpy(yhxx[t].jiudian, jiu[n].jd1);
}break;
case 2:
{
printf("您已预订%s", jiu[n].jd2);
strcpy(yhxx[t].jiudian, jiu[n].jd2);
}break;
case 3:
{
printf("您已预订%s", jiu[n].jd3);
strcpy(yhxx[t].jiudian, jiu[n].jd3);
}break;
}
printf("\n按任意键返回会员页面\n");
getchar();
getchar();
HY();
}
//最短路径函数
void floyd(int A[][6], int C[][6]) //A是路径长度矩阵,C是有向网络G的带权邻接矩阵
{
int i, j, k, next;
int max = 160;
for (i = 0; i < 6; i++)//设置A和path的初值
{
for (j = 0; j < 6; j++)
{
if (C[i][j] != max)
path[i][j] = j; //j是i的后继
else
path[i][j] = -1;
A[i][j] = C[i][j];
}
}
for (k = 0; k < 6; k++)
//做n次迭代,每次均试图将顶点k扩充到当前求得的从i到j的最短路径Pij上
{
for (i = 0; i < 6; i++)
{
for (j = 0; j < 6; j++)
{
if (A[i][j] > (A[i][k] + A[k][j]))
{
A[i][j] = A[i][k] + A[k][j]; //修改长度
path[i][j] = path[i][k]; //修改路径
}
}
}
}
printf("景点编号:\n");
printf("1----一元路\n");
printf("2----二曜路\n");
printf("3----三阳路\n");
printf("4----四唯路\n");
printf("5----五福路\n");
printf("6----六合路\n");
printf("7----返回上一层\n");
printf("请输入起始地编号和目的地编号:\n");
scanf("%d%d", &i, &j);
if (i == 7 || j == 7)
GLY();
i = i - 1;
j = j - 1;
if (i != j)
{
printf("%d到%d的最短距离为", i + 1, j + 1);
printf("%d\n", A[i][j]); //输出Pij的长度
next = path[i][j]; //next为起点i的后继顶点
printf("输出路径:\n");
if (next == -1)
printf("%d到%d不可达\n", i + 1, j + 1);
else//Pij存在
{
printf("%d", i + 1);
while (next != j)
{
printf("——>%d", next + 1); //打印后继点
next = path[next][j]; //继续找下一个后继点
}
printf("——>%d\n", j + 1); //打印终点
}
con();
getchar();
}
}
注意事项
1.功能复杂,程序代码较多,需要很多的注释帮助理解各个函数的功能。
2.前面函数的改动对后续函数的影响非常大,在前期构造函数的时候建议把每个情况都考虑到。
3.经常需要用到system”cls” ,strcpy函数。
标签:case,----,管理系统,void,yhxx,break,旅游,printf 来源: https://blog.csdn.net/konnisan/article/details/116989376
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。