题目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
#include
#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)
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)
{
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=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%.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;i0&&c=='\b')
{
i--;
putchar('\b');
putchar(' ');
putchar('\b');
}
}
printf("\n");
a2[i]='\0';
}
首先你得先以管理员的身份选择
(7) 菜单管理:对所有菜肴的管理,包括菜肴的编号,名称,单价等。
添加菜单,才能使用
这是我之前添加的菜单(你们运行没有)
如果你想添加菜单选择 4
这就添加成功
记住你可以先不输入0退出,可以继续添加菜单,但最后一定要 输入 0 退出 才算真真的添加成功