旅游管理系统

设计要求

旅游管理系统
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函数。

  • 10
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一、项目简介本课程演示的是一套基于SSM实现的旅游管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。课程包含:1. 项目源码、项目文档、数据库脚本、软件工具等所有资料2. 带你从零开始部署运行本套系统3. 该项目附带的源码资料可作为毕设使用4. 提供技术答疑二、技术实现后台框架:Spring、SpringMVC、MyBatisUI界面:JSP、jQuery 、BootStrap数据库:MySQL 三、系统功能本系统分为前台旅游界面和后台管理,包含三种角色:注册用户、旅游公司和管理员系统的功能模块如下: 1.登陆注册模块 管理员的登录模块:管理员登录系统对本系统其他管理模块进行管理。 用户的登录模块:用户登录本系统,对个人的信息等进行查询,操作可使用的功能。 用户注册模块:游客用户可以进行用户注册,系统会反馈是否注册成功。 添加管理员模块:向本系统中添加更多的管理人员,管理员包括普通管理员和超级管理员。 2.景点信息管理模块: 景点信息列表:将数据库的景点信息表以列表的形式呈现给管理员。 添加景点信息:实现管理员添加景点信息。 修改景点信息:实现管理员修改景点信息。 3.公告文章管理模块: 公告文章列表:将数据库的公告文章表以列表的形式呈现给管理员。 添加公告文章:实现管理员添加公告文章。 修改公告文章:实现管理员修改公告文章。 4.旅游线路管理模块: 旅游线路列表:显示系统的所有旅游线路,可以通过关键字查询。 旅游线路删除:对输入错误或过期的旅游线路删除。 5.变幻图管理模块: 变幻图列表:显示系统的所有变幻图,可以通过关键字查询。 变幻图删除:对输入错误或过期的变幻图删除。 6.用户模块: 资料管理:用户登录本系统。可以对自己的个人主页进行查看。 系统信息:用户可以查看自己的系统提示信息。 修改资料:用户可以修改自己的账号密码。 信息搜索:用户可以通过关键字搜索站内信息。 密码修改:用户可以修改个人登录密码。 7.系统管理模块 8.退出模块该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。四、项目截图1)前台首页2)旅游景点详情3)旅游线路报名4)系统后台登陆5)后台管理界面  更多Java毕设项目请关注【毕设系列课程】https://edu.csdn.net/lecturer/2104   

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值