题目19酒店点菜管理系统设计

1、问题描述

为了适应现代信息时代点餐的需求,采用新信息技术,研究设计了一个计算机点餐系统。能够完成权限管理、点餐管理、订单管理、结账管理、菜谱评分等功能。

2、功能要求

管理员用户名: admin

管理员密码: 123456 (输入时以密文形式,如: *****)

管理员:

(1)添加普通用户用户名和密码信息。

(2)重置普通用户初始密码。(如: 1)

(3)权限管理:包括用户的注册、登录、用户信息管理。

(4)查看功能:查看所有座台点餐订单。

(5)结账管理:统计所有消费的总额。

(6)查看历史:查看所有消费历史。

(7) 菜单管理:对所有菜肴的管理,包括菜肴的编号,名称,单价等。

普通用户:

(1)点餐功能:包括座台标号,餐单的增加、修改、删除、查看。

(3)订单管理:包括生成订单、修改、删除、查找。

(4)结账管理:用户消费的总额。

(5)查看历史:查看用户消费历史。

(6)菜谱评分:对各菜谱中经常点取的菜肴进行评分。

## 代码

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include <conio.h> 
#include <ctype.h>
#include "malloc.h"
#define mq(a,b) memset(a,b,sizeof(a))
int menu1();//首页菜单 //
int menu2();//管理员菜单 //
int menu3();//用户菜单 //
void zhuce();//用户注册 //
void aaa();//添加普通用户用户名和密码信息//
void bbb();//重置普通用户初始密码 //
void ccc();//用户的注册、登录、用户信息管理//
void ddd();//查看所有 座台点 餐订单 //
void eee();//统计所有消费的总额//
void fff();//查看所有消费历史//
void ggg();//菜肴的编号,名称,单价管理//
void hhh();//点餐功能 //
void iii();//订单生成 // 
void jjj();//结账管理 //
void kkk();//查看用户消费历史 //
void mmm();//对各菜中经常点取的菜进行评分 
void secretword(char a2[]);//隐藏密码 //
char g1[20]="admin",g2[20]="123456";
char a1[20],a2[20],key[20];
int b[999],b3[999],sss[999];//b标记,b3编号; 
char b2[999][25];//名 
float b1[999];//b1评分
struct ppp //用户账号 //file.txt
{
	char q1[20];
	char q2[20];
}q,p[999];
struct caicai//菜单 //菜单.txt 
{
	int h;//编号 
	char cai[25];// 菜名 
	int s;//价钱 
	float fen;// 菜评分 
	int po;//评分的人数 
	struct caicai *link;
}caa[999];
struct zhangdan
{
	char zhanghao[20];//用户名 
	int zh;//座号
	int cai[60];//菜编号 
	char caiming[60][25]; 
	int sl[60]; //单价 
	int  s;//总价 
	int z;//总共点几道菜 
}zd,xx,mm[999]; 
int main()
{
	int n,i,m,k=0,l,j;
	do
	{
		k=0;n=0; 
		n=menu1();
		printf("\n"); 
		if(n==0)
			exit(0);
		while(n==1)
		{
			printf("\t\t\t管理员登陆\n");
			printf("\t\t\t输入账号:");
			scanf("%s",a1);
			printf("\t\t\t输入密码:");
			secretword(a2);
			if(strcmp(g1,a1)==0&&strcmp(g2,a2)==0)
			{
				printf("\t\t\t登录成功\n");
				while(1)
				{
				m=menu2();
				switch(m)
				{
					case 1:aaa(); break;
					case 2:bbb(); break;
					case 3:ccc(); break;
					case 4:ddd(); break;
					case 5:eee(); break;
					case 6:fff(); break;
					case 7:ggg(); break;
					case 0:exit(0);
				} 
				}
			}
			else
			printf("\t\t\t账号或密码错误,请重新登录\n\n");
			 
		}
		while(n==2)
		{
			k=0;
			FILE *fp;
			int pp=0;
			zd.z=0; 
			zd.s=0;
			printf("\t\t\t用户登陆\n");
			printf("\t\t\t输入账号:");
			scanf("%s",a1);
			printf("\t\t\t输入密码:");
			secretword(a2);
			fp=fopen("file.txt","ab+");
			while(fread(&p[k],sizeof(struct ppp),1,fp)==1)
			{
				k++;
			} 
			fclose(fp);
			for(i=0;i<k;i++)
			{
				if(strcmp(a1,p[i].q1)==0)
				{
					if(strcmp(a2,p[i].q2)==0)
					{
						printf("\n"); 
						printf("\t\t\t登录成功\n\n");
						strcpy(zd.zhanghao,a1);
						while(1)
						{
						m=menu3();
						switch(m)
						{
								case 1:hhh(); break;
								case 2:iii(); break;
								case 3:jjj(); break;
								case 4:kkk(); break;
								case 5:mmm(); break;
								case 0:exit(0);	
						}
						}
					}
					else
					{
					 	pp=1;
					 	break;
					}	 	
				}	
			}
			if(pp||i>=k)
			printf("\t\t\t账号或密码错误,请重新登录\n\n");
		}
		if(n==3)
			zhuce();
	}while(n==3);
	
}
int menu1()
{
	int n;
	printf("\t\t\t***********************\n");
	printf("\t\t\t*  酒店点菜管理系统   *\n");
	printf("\t\t\t***********************\n");
	printf("\t\t\t*  1.管理员登录       *\n");
	printf("\t\t\t*  2.用户登录         *\n");
	printf("\t\t\t*  3.用户注册         *\n");
	printf("\t\t\t*  0.退出程序         *\n");
	printf("\t\t\t***********************\n");
	printf("\t\t\t*请输入选项编号(0~3)*\n");
	printf("\t\t\t***********************\n");
	printf("\t\t\t你输入的编号为:");
	scanf("%d",&n);
	return n; 
}
int menu2()
{
	int n;
	printf("\t\t\t******************\n");
	printf("\t\t\t*   管理员系统   *\n");
	printf("\t\t\t******************\n");
	printf("\t\t\t*  1.添加普通用户*\n");
	printf("\t\t\t*  2.重置用户密码*\n");
	printf("\t\t\t*  3.权限管理    *\n");
	printf("\t\t\t*  4.查看功能    *\n");
	printf("\t\t\t*  5.结账管理    *\n");
	printf("\t\t\t*  6.查看历史    *\n");
	printf("\t\t\t*  7.菜单管理    *\n");
	printf("\t\t\t*  0.退出程序    *\n");
	printf("\t\t\t******************\n");
	printf("\t\t\t你输入的编号为:");
	scanf("%d",&n);
	return n; 
}
int menu3()
{
	int n;
	printf("\t\t\t******************\n");
	printf("\t\t\t*酒店点菜管理系统*\n");
	printf("\t\t\t******************\n");
	printf("\t\t\t*   1.点餐功能   *\n");
	printf("\t\t\t*   2.订单管理   *\n");
	printf("\t\t\t*   3.结账管理   *\n");
	printf("\t\t\t*   4.查看历史   *\n");
	printf("\t\t\t*   5.菜谱评分   *\n");
	printf("\t\t\t*   0.退出程序   *\n");
	printf("\t\t\t******************\n");
	printf("\t\t\t你输入的编号为:");
	scanf("%d",&n);
	return n; 
}
void zhuce()
{
	int k=0,i=0;
	FILE *fp;
	fp=fopen("file.txt","ab+");
	while(fread(&p[k],sizeof(struct ppp),1,fp)==1)
	{
		k++;
	}	
	while(1)
	{	printf("\n"); 
		printf("\t\t\t输入注册的账户名:");
		scanf("%s",p[k].q1);
		printf("\t\t\t输入注册的账户密码:");
		secretword(p[k].q2);
	///	scanf("%s",);
		for(i=0;i<k;i++)
		{
			if(strcmp(p[k].q1,p[i].q1)==0)
				break;
		}
		if(i>=k)
		{
			fwrite(&p[k],sizeof(struct ppp),1,fp); 
			printf("\t\t\t注册成功\n\n");
			fclose(fp);
			return ;
		}
		else
			printf("\t\t\t该用户名已存在\n\n");
	}
	fclose(fp);
	return ;
}
void aaa()//添加普通用户用户名和密码信息
{
	int n,m;
	FILE *fp;
	fp=fopen("file.txt","ab+");
	n=1;
	while(n)
	{
		printf("\n"); 
		printf("\t\t\t输入添加用户名(输入0退出):");
		scanf("%s",q.q1);
		if(q.q1[0]=='0')
			break; 
		printf("\t\t\t输入添加用户名的密码:");
		secretword(q.q2);
		fwrite(&q,sizeof(struct ppp),1,fp);
		printf("\t\t\t添加成功\n\n"); 
	}
	fclose(fp);
	return ;
}
void bbb()//重置普通用户初始密码 
{
	int k=0,i=0;
	FILE *fp;
	fp=fopen("file.txt","ab+");
	while(fread(&p[k],sizeof(struct ppp),1,fp)==1)
	{
		k++;
	} 
	fclose(fp);
	while(1)
	{
		printf("\n"); 
		printf("\t\t\t输入重置的用户名(输入0退出):");
		scanf("%s",a1);
		if(a1[0]=='0')
		break;
		printf("\t\t\t输入重置的密码:");
		secretword(a2);
		for(i=0;i<k;i++)
		{
			if(strcmp(a1,p[i].q1)==0)
			{
				strcpy(p[i].q2,a2);
				break;
			}	
		}
		if(i<k)
		{
			fp=fopen("file.txt","wb");
			for(i=0;i<k;i++)
			{
				fwrite(&p[i],sizeof(struct ppp),1,fp);
			}
			printf("\t\t\t重置成功\n");
		}
		else
			printf("\t\t\t未找到该用户名");
		 
	}
	fclose(fp);
	return ; 
}
void ccc()//用户的注册、登录、用户信息管理
{
	int k=0,i=0;
	FILE *fp;
	fp=fopen("file.txt","ab+");
	while(fread(&p[k],sizeof(struct ppp),1,fp)==1)
	{
		k++;
	} 
	fclose(fp);
	printf("\n"); 
	printf("\t\t\t总共注册的账号数为:%d\n",k);
	for(i=0;i<k;i++)
	{
		printf("\t\t\t%d :\n",i+1);
		printf("\t\t\t账号:%s\n",p[i].q1);
		printf("\t\t\t密码:%s\n\n",p[i].q2);
	}
	return ;
}
void ddd()//查看所有座台点餐订单 
{
	
	FILE *fp;
	mq(b,0);
	int k=0,i;
	fp=fopen("订单.txt","ab+");
	while(fread(&mm[k],sizeof(struct zhangdan),1,fp)==1)
	{
		b[mm[k].zh]=1;
		k++;
	}
	fclose(fp);
	i=k;
	for(k=i-1;k>=0;k--)
	{
		if(b[mm[k].zh]==1)
		{
			b[mm[k].zh]=2;
			printf("\n"); 
			printf("\t\t\t座台标号为:%d\n",mm[k].zh);
			printf("\t\t\t用户名: %s\n",mm[k].zhanghao); 
			printf("\t\t\t菜名       数量  金额\n");
			for(i=0;i<mm[k].z;i++)
			printf("\t\t\t%-12s*1   %d\n",mm[k].caiming[i],mm[k].sl[i]);
			printf("\t\t\t总共点菜数: %d\n",mm[k].z);
			printf("\t\t\t\t 总额为:%d\n\n",mm[k].s);
		}
	}
	return ;
}
void eee()//统计所有消费的总额
{
	mq(b,0);
	mq(sss,0);
	FILE *fp;
	int k1=0,i=0,k2=0,k=0,ii;
	fp=fopen("菜单.txt","ab+");
	while(fread(&caa[k1],sizeof(struct caicai),1,fp)==1)
	{
		strcpy(b2[k1],caa[k1].cai);
		sss[k1]=caa[k1].s;
		k1++;
	} 
	fclose(fp);
	fp=fopen("订单.txt","ab+");
	while(fread(&mm[k2],sizeof(struct zhangdan),1,fp)==1)
	{
			for(i=0;i<mm[k2].z;i++)
			{
				for(ii=0;ii<k1;ii++)
				{
					if(strcmp(b2[ii],mm[k2].caiming[i])==0)
					{
						b[ii]++;
					}
				}
			}
	}
	fclose(fp);
	printf("\n"); 
	printf("\t\t\t菜名         数量 金额\n");
	for(i=0;i<k1;i++)
	{
		if(b[i]!=0)
		{
			printf("\t\t\t%-12s   %d  %d\n",b2[i],b[i],sss[i]*b[i]);
			k=k+sss[i]*b[i];
		}
	}
	printf("\t\t\t\t总额为%d\n\n",k);
	return ;
}
void fff()//查看所有消费历史
{
	FILE *fp;
	int k=0,i;
	fp=fopen("订单.txt","ab+");
	printf("\n"); 
	while(fread(&mm[k],sizeof(struct zhangdan),1,fp)==1)
	{
		
			printf("\t\t\t%d\n",k+1);
			printf("\t\t\t用户名:%s\n",mm[k].zhanghao); 
			printf("\t\t\t座台标号为:%d\n",mm[k].zh);
			printf("\t\t\t菜名       数量  金额\n");
			for(i=0;i<mm[k].z;i++)
			printf("\t\t\t%-12s *1  %d\n",mm[k].caiming[i],mm[k].sl[i]);
			printf("\t\t\t总共点菜数: %d\n",mm[k].z);
			printf("\t\t\t\t 总额为:%d\n\n",mm[k].s);
			k++;
	}
	printf("\t\t\t共有%d个历史消费\n\n",k);
	fclose(fp);
	return ;
}
void ggg()//菜肴的编号,名称,单价管理
{
	mq(b,0);
	FILE *fp;
	int k=0,i=0;
	printf("\n"); 
	fp=fopen("菜单.txt","ab+");
	if(fread(&caa[k],sizeof(struct caicai),1,fp)==1)
	{
		b[caa[k].h]=1;
		printf("\t\t\t编号:%d\n",caa[k].h);
		printf("\t\t\t菜名:%s\n",caa[k].cai);
		printf("\t\t\t评分:%.2f\n",caa[k].fen);
		printf("\t\t\t评分人数: %d\n",caa[k].po);
		printf("\t\t\t价钱:%d\n\n",caa[k].s);
		k++;
	}
	while(fread(&caa[k],sizeof(struct caicai),1,fp)==1)
	{
		printf("\t\t\t编号:%d\n",caa[k].h);
		printf("\t\t\t菜名:%s\n",caa[k].cai);
		printf("\t\t\t评分:%.2f\n",caa[k].fen);
		printf("\t\t\t评分人数: %d\n",caa[k].po);
		printf("\t\t\t单价:%d\n\n",caa[k].s);
		k++;
	} 
	fclose(fp);
	while(1)
	{
		printf("\t\t\t【1】修改单价\n");
		printf("\t\t\t【2】修改编号\n");
		printf("\t\t\t【3】修改名称\n");
		printf("\t\t\t【4】增加菜肴\n");
		printf("\t\t\t【5】减少菜肴\n");
		printf("\t\t\t【0】退出\n");
		int m,m1,m2;
		printf("\t\t\t输入你的选择:");
		scanf("%d",&m);
		if(m==0)
			break;
		while(m==1)
		{
			printf("\t\t输入你要修改菜肴的编号(输入-1退出):");
			scanf("%d",&m1);
			if(m1==-1)
				break;
			printf("\t\t\t输入你要修改为的单价:");
			scanf("%d",&m2); 
			for(i=0;i<k;i++)
			{
				if(caa[i].h==m1)
				{
					caa[i].s=m2;
					break;
				}
			}
			if(i<k)
			{
				printf("\n\t\t\t编号:%d\n",caa[i].h);
				printf("\t\t\t菜名:%s\n",caa[i].cai);
				printf("\t\t\t评分:%.2f\n",caa[i].fen);
				printf("\t\t\t评分人数: %d\n",caa[i].po);
				printf("\t\t\t单价:%d\n\n",caa[i].s);
				printf("\n\t\t\t修改成功\n\n");
			}
				
			else
				printf("\t\t\t未找到\n\n"); 
		}
		while(m==2)
		{
			printf("\t\t输入你要修改菜肴的编号(输入-1退出):");
			scanf("%d",&m1);
			if(m1==-1)
			break;
			printf("\t\t\t输入你要修改为的编号:");
			scanf("%d",&m2); 
			for(i=0;i<k;i++)
			{
				if(caa[i].h==m1)
				{
					caa[i].h=m2;
					break;
				}
			}
			if(i<k)
			{
				printf("\n\t\t\t编号:%d\n",caa[i].h);
				printf("\t\t\t菜名:%s\n",caa[i].cai);
				printf("\t\t\t评分:%.2f\n",caa[i].fen);
				printf("\t\t\t评分人数: %d\n",caa[i].po);
				printf("\t\t\t单价:%d\n\n",caa[i].s);
				printf("\n\t\t\t修改成功\n\n");
			}
				
			else
				printf("\t\t\t未找到\n\n"); 
		}
		while(m==3)
		{
			printf("\t\t输入你要修改菜肴的编号(输入-1退出):");
			scanf("%d",&m1);
			if(m1==-1)
			break;
			printf("\t\t\t输入你要修改为的名称:");
			scanf("%s",a1); 
			for(i=0;i<k;i++)
			{
				if(caa[i].h==m1)
				{
					strcpy(caa[i].cai,a1);
					break;
				}
			}
			if(i<k)
			{
				printf("\n\t\t\t编号:%d\n",caa[i].h);
				printf("\t\t\t菜名:%s\n",caa[i].cai);
				printf("\t\t\t评分:%.2f\n",caa[i].fen);
				printf("\t\t\t评分人数: %d\n",caa[i].po);
				printf("\t\t\t单价:%d\n\n",caa[i].s);
				printf("\n\t\t修改成功\n\n");
			}
				
			else
				printf("\t\t\t未找到\n"); 
		}
		while(m==4)
		{
			printf("\t\t\t输入增加菜肴的编号(输入-1退出):");
			scanf("%d",&caa[k].h); 
			if(caa[k].h==-1)
				break;
			printf("\t\t\t输入增加菜肴的菜名:");
			scanf("%s",caa[k].cai); 	
			printf("\t\t\t输入增加菜肴的价钱:");
			scanf("%d",&caa[k].s);	
			printf("\t\t\t输入增加菜肴的评分:");
			scanf("%f",&caa[k].fen);
			printf("\t\t\t输入增加菜肴的评分人数:");
			scanf("%d",&caa[k].po);
			if(b[caa[k].h]==1)
			printf("\t\t\t该编号已使用,请重新输入\n\n");
			else
			{	
				printf("\n\t\t\t编号:%d\n",caa[k].h);
				printf("\t\t\t菜名:%s\n",caa[k].cai);
				printf("\t\t\t评分:%.2f\n",caa[k].fen);
				printf("\t\t\t评分人数: %d\n",caa[k].po);
				printf("\t\t\t单价:%d\n\n",caa[k].s);
				k++; 
				printf("\n\t\t\t增加成功\n\n");
			}
		}
		while(m==5)
		{
			i=0;
			int m3;
			printf("\t\t输入减少的菜肴编号(输入-1退出):");
			scanf("%d",&m3); 
			if(m3==-1)
				break;
			for(i=0;i<k;i++)
			{
				if(caa[i].h==m3)
					break;
			}
			if(i<k)
			{
				for(;i<k-1;i++)
					p[i]=p[i+1];
				k--;
				printf("\t\t\t删减成功\n\n");
			}
			else
			printf("\t\t\t未找到\n\n");
		}
	}
	fp=fopen("菜单.txt","wb");
	for(i=0;i<k;i++)
		fwrite(&caa[i],sizeof(struct caicai),1,fp);
	fclose(fp);
	return ;
}
void hhh()//点餐功能 
{
	FILE *fp;
	int k=0,i=0;
	printf("\n"); 
	fp=fopen("菜单.txt","ab+");
	if(fread(&caa[k],sizeof(struct caicai),1,fp)==1)
	{
		b[caa[k].h]=1;
		printf("\t\t\t编号:%d\n",caa[k].h);
		printf("\t\t\t菜名:%s\n",caa[k].cai);
		printf("\t\t\t评分:%.2f\n",caa[k].fen);
		printf("\t\t\t评分人数: %d\n",caa[k].po);
		printf("\t\t\t单价:%d\n\n",caa[k].s);
		k++;
	}
	while(fread(&caa[k],sizeof(struct caicai),1,fp)==1)
	{
		printf("\t\t\t编号:%d\n",caa[k].h);
		printf("\t\t\t菜名:%s\n",caa[k].cai);
		printf("\t\t\t评分:%.2f\n",caa[k].fen);
		printf("\t\t\t评分人数: %d\n",caa[k].po);
		printf("\t\t\t单价:%d\n\n",caa[k].s);
		k++;
	} 
	fclose(fp);
	printf("\n"); 
	printf("\t\t\t输入你的座台标号为:");
	scanf("%d",&zd.zh);
	while(1)
	{printf("\n"); 
		int m1,m2,m3,m; 
		printf("\t\t\t【1】餐单的增加\n");
		printf("\t\t\t【2】餐单的修改\n");
		printf("\t\t\t【3】餐单的删除\n");
		printf("\t\t\t【4】餐单的查看\n");
		printf("\t\t\t【0】退出\n\n");
		printf("\t\t\t输出你的选择:"); 
		scanf("%d",&m);
		if(m==0)
			break;	
		while(m==1) 
		{
		printf("\t\t输入你所增加菜的编号(输入-1退出):");
		scanf("%d",&zd.cai[zd.z]);
		if(zd.cai[zd.z]==-1)
			break;
		for(i=0;i<k;i++)
		{
			if(caa[i].h==zd.cai[zd.z])
			{
				strcpy(zd.caiming[zd.z],caa[i].cai);
				zd.sl[zd.z]=caa[i].s;//单价 
				zd.s+=caa[i].s;//总价 
				break;
			}
		}
		zd.z++;
		printf("\t\t\t增加成功\n\n");
		}
		while(m==2)
		{
			printf("\t\t\t输出你要修改的餐单编号(输入-1退出):");
			scanf("%d",&m1); 
			if(m1==-1)
			break;
			printf("\t\t\t输出你要改为的餐单编号:");
			scanf("%d",&m2);
			for(i=0;i<zd.z;i++)
			{
			if(zd.cai[i]==m1)
			{
			//	printf("&&&&&\n"); 
				zd.cai[i]=m2;
					break;
			}
			}
			for(int j=0;j<k;j++)
			{
			if(caa[j].h==zd.cai[i])
			{
				strcpy(zd.caiming[i],caa[j].cai);
				zd.s=zd.s-zd.sl[i]+caa[j].s;
				zd.sl[i]=caa[j].s; 
				break;
			}
			}
			printf("\t\t\t修改成功\n\n");
		}
		while(m==3)
		{
			printf("\t\t\t输出你要删除的餐单编号:(输入-1退出)");
			scanf("%d",&m1);
			if(m1==-1)
			break;
			for(i=0;i<zd.z;i++)
			{
				if(zd.cai[i]==m1)
				{
					if(i!=zd.z-1)
					{
						zd.cai[i]=zd.cai[zd.z-1];
						zd.s-=zd.sl[i];
						zd.sl[i]=zd.sl[zd.z-1];
						strcpy(zd.caiming[i],zd.caiming[zd.z-1]);
						zd.z--;
						break;
					}
					if(i==zd.z-1)
					{
						zd.s-=zd.sl[i];
						zd.z--;
						break;
					}
				}
			} 
			printf("\t\t\t删除成功\n\n");
		}
		if(m==4)
		{
			for(i=0;i<k;i++)
			{
			printf("\t\t\t编号:%d\n",caa[i].h);
			printf("\t\t\t菜名:%s\n",caa[i].cai);
			printf("\t\t\t评分:%.2f\n",caa[i].fen);
			printf("\t\t\t评分人数: %d\n",caa[i].po);
			printf("\t\t\t单价:%d\n\n",caa[i].s);
			}
		}	
	}
	return ;
}
void iii()//订单生成 
{
	int i,j;int m1,m2,m3,m; 
	FILE *fp;
	while(1)
	{printf("\n"); 
		printf("\t\t\t【1】订单的生成\n");
		printf("\t\t\t【2】订单的修改(座台标号)\n");
		printf("\t\t\t【3】订单的删除\n");
		printf("\t\t\t【4】订单的查找\n");
		printf("\t\t\t【0】退出\n\n");
		printf("\t\t\t输出你的选择:"); 
		scanf("%d",&m);
		if(m==0)
			break;
		if(m==1)
		{
			if(zd.s!=0)
			{
			fp=fopen("订单.txt","ab+");
			fwrite(&zd,sizeof(struct zhangdan),1,fp);
			fclose(fp);
			printf("\t\t\t订单生成成功\n\n");
			}
			else
			{
				printf("\t\t\t没有订单\n\n");
			}
		} 
		if(m==2)
		{
			if(zd.s!=0)
			{
			printf("\t\t输入你要修改的座台标号:");
			scanf("%d",&zd.zh);
			printf("\t\t\t订单修改完成\n\n"); 
			}
			else
			{
				printf("\t\t\t没有订单\n\n");
			}
		}
		if(m==3)
		{
			zd=xx;
			printf("\t\t\t订单删除成功\n\n");
		}
		if(m==4)
		{	if(zd.s!=0)
			{
			printf("\t\t\t用户名:%s\n",zd.zhanghao);
			printf("\t\t\t座台标号为:%d\n",zd.zh);
			printf("\t\t\t菜名       数量  金额\n");
			for(i=0;i<zd.z;i++)
			printf("\t\t\t%-12s*1   %d\n",zd.caiming[i],zd.sl[i]);
			printf("\t\t\t总共点菜数: %d\n",zd.z);
			printf("\t\t\t\t 总额为:%d\n\n",zd.s);
			}
			else
			{
				printf("\t\t\t没有订单\n\n");
			}
		}
	}
	return ;
}
void jjj()//结账管理 
{
	int i;
	if(zd.s!=0)
	{
		printf("\n"); 
			printf("\t\t\t用户名:%s\n",zd.zhanghao);
			printf("\t\t\t座台标号为:%d\n",zd.zh);
			printf("\t\t\t菜名       数量  金额\n");
			for(i=0;i<zd.z;i++)
			printf("\t\t\t%-12s*1   %d\n",zd.caiming[i],zd.sl[i]);
			printf("\t\t\t总共点菜数: %d\n",zd.z);
			printf("\t\t\t\t 总额为:%d\n\n",zd.s);
	}
	else
	{
		printf("\t\t\t没有账单可结算\n\n");
	}
	return ;
}
void kkk()//查看用户消费历史
{
	
	FILE *fp;
	int k=0,i;
	fp=fopen("订单.txt","ab+");
	while(fread(&mm[k],sizeof(struct zhangdan),1,fp)==1)
	{
		
		if(strcmp(mm[k].zhanghao,zd.zhanghao)==0)
		{
			printf("\t\t\t%d\n",k+1);
			printf("\t\t\t用户名:%s\n",mm[k].zhanghao); 
			printf("\t\t\t座台标号为:%d\n",mm[k].zh);
			printf("\t\t\t菜名       数量  金额\n");
			for(i=0;i<mm[k].z;i++)
			printf("\t\t\t%-12s*1   %d\n",mm[k].caiming[i],mm[k].sl[i]);
			printf("\t\t\t总共点菜数: %d\n",mm[k].z);
			printf("\t\t\t\t 总额为:%d\n\n",mm[k].s);
			k++;
		}
	}
	if(k==0)
	{
		printf("\t\t\t无消费历史\n\n");
	}
	else
	{
		printf("\t\t\t共%d个消费历史\n\n",k); 
	}
	fclose(fp);
	return ;
}
void mmm()//对各菜中经常点取的菜进行评分 
{
	mq(b,0);
	mq(b1,0);//b1评分
	FILE *fp;
	int k=0,i,ss=0;
	fp=fopen("订单.txt","ab+");
	while(fread(&mm[k],sizeof(struct zhangdan),1,fp)==1)
	{
		
		if(strcmp(mm[k].zhanghao,zd.zhanghao)==0)
		{
			for(i=0;i<mm[k].z;i++)
			{
				if(!b[mm[k].cai[i]])
				{
					b[mm[k].cai[i]]=1;
					b3[ss]=mm[k].cai[i];//菜单编号 
					strcpy(b2[ss++],mm[k].caiming[i]);//菜名 
				}
			}
			k++;	
		}
	}
	int m1,m2;
	printf("\n"); 
	printf("\t\t\t你点过%d种菜,分别为:\n\n",ss);
	for(i=0;i<ss;i++)
	printf("\t\t\t编号:%d   %s\n",b3[i],b2[i]);
	printf("\n");
	while(1)
	{
		printf("\t\t输入你要评分菜的编号(输入-1退出):");
		scanf("%d",&m1);
		if(m1==-1)
		break;
		if(b[m1]==1) 
		{
		b[m1]=2;
		printf("\t\t\t输入你的评分:");
		scanf("%f",&b1[m1]);
		printf("\t\t\t评分成功\n\n");
		}
		else
		printf("\t\t\t输入错误,请重新输入\n");
	}
	fclose(fp);
	fp=fopen("菜单.txt","ab+");
	k=0;
	while(fread(&caa[k],sizeof(struct caicai),1,fp)==1)
		k++;
	fclose(fp);
	for(i=0;i<k;i++)
	{
		if(b[caa[i].h]==2)
		{
			float ww=caa[i].fen;
			caa[i].fen=(caa[i].fen*caa[i].po+b1[caa[i].h])*1.0/(caa[i].po+1);
			caa[i].po+=1;
			printf("\n\t\t\t编号:%d\n",caa[i].h);
			printf("\t\t\t菜名:%s\n",caa[i].cai);
			printf("\t\t\t评分:%.2f--->%.2f\n",ww,caa[i].fen);
			printf("\t\t\t评分人数: %d--->%d\n",caa[i].po-1,caa[i].po);
			printf("\t\t\t价钱:%d\n\n",caa[i].s);
			
		}
	}
	fp=fopen("菜单.txt","wb");
	for(i=0;i<k;i++)
	fwrite(&caa[i],sizeof(struct caicai),1,fp);
	fclose(fp);
	return ;
}
void secretword(char a2[])
{
	unsigned char c;
	int i=0;
	while((c=getch())!='\r')                                      
	{
		if(i<20&&isprint(c))	   								 
		{
			a2[i]=c;
			i++;
			putchar('*');
		}
		else if(i>0&&c=='\b')
		{
			i--;
			putchar('\b');
			putchar(' ');
			putchar('\b');
		}
	}
	printf("\n");
	a2[i]='\0';
}

首先你得先以管理员的身份选择

(7) 菜单管理:对所有菜肴的管理,包括菜肴的编号,名称,单价等。

添加菜单,才能使用

点餐服务系统体系架构设计怎么写 点餐管理系统总体设计_i++

 这是我之前添加的菜单(你们运行没有)

点餐服务系统体系架构设计怎么写 点餐管理系统总体设计_点餐服务系统体系架构设计怎么写_02

 

点餐服务系统体系架构设计怎么写 点餐管理系统总体设计_普通用户_03

 

点餐服务系统体系架构设计怎么写 点餐管理系统总体设计_i++_04

 如果你想添加菜单选择  4

点餐服务系统体系架构设计怎么写 点餐管理系统总体设计_点餐服务系统体系架构设计怎么写_05

 

这就添加成功

记住你可以先不输入0退出,可以继续添加菜单,但最后一定要 输入 0 退出 才算真真的添加成功