#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MaxSize 100 //声明最多只能输入100个菜品
#define Maxfwy 50 //声明最多只能输入50个服务员
#define Maxgk 2000//声明最多只能输入2000个顾客
int a[9999];
int n;
int xuanxiang,dn=0;//dn为菜品计数,在菜品管理中用到
int bh = 0;;//定义员工计数变量
int kr;//定义顾客计数变量
void encrypt(char*pwd);//加密函数
void bubble();//冒泡排序函数
char mima[20],mima2[20];//用于存放读取到的密码
struct dishes { //结构菜品多个数据项
int num;
char caiming[10]; //菜名
char zhonglei[10]; //菜品种类
int jiage;//价格
int xiaoshou, c; //菜品售出量
};
struct waiter { //结构员工多个数据项
int gh;//定义工号
char name[10];//员工名字
int yeji;//员工业绩
char ygmm[20];//员工密码
};
struct raed { //结构读取多个数据项
int num1;//编号
char name1[10];//名称
int yj2;//yeji
char mm1[20];//mima
int jiage;//价格
char zhonglei[10];
};
struct raed dq[50];
struct guke{ //结构多个客户数据项
int num2;
char name[10];
char xx[1000],xx1[1000];//顾客点的所有菜名
int xf;//总消费金额
char tel[100];//顾客联系方式
char pj[200];
};
void guanliyuan();
/oid fuwuyan();
void yonghu();
void caidanguanli();
void tongjifenxi();
void gukeguanli();
void diancanguanli();
void caipinchakan();
void encrypt(char*pwd);
void bubble(int a[], int n, struct raed dq[50]);
int main(void)
{
printf("欢迎点菜\n");
guanliyuan();
return 0;
}
//*******************************************************************************************************************************
void guanliyuan()
{
/*FILE *fp;
if ((fp = fopen("管理员.txt", "w")) == NULL){
printf("打开失败\n");
exit(0);
}*/
//printf("请输入管理员密码\n");
//scanf("%s", mima);
//fscanf(fp, "%s",mima2 );
//encrypt(mima2);//解密
//fclose(fp);
//if (strcmp(mima2, mima) == 0){
system("cls");//及时将屏幕上的密码清除保证安全性
do{
printf("管理员主菜单\n1:用户管理\n2:菜品管理\n3:统计分析\n0:退出\n \n");
scanf("%d", &xuanxiang);
switch (xuanxiang)
{
case 1:
yonghu();
break;
case 2:
caidanguanli();
break;
case 3:
tongjifenxi();
break;
case 0:
xuanxiang = 5;
return;
default:
printf("输入错误,请更正后输入!\n");
break;
}
} while (xuanxiang != 0);
//}
/*else{
printf("密码输入错误!已自动返回上一层菜单");
return;
}*/
}
//*******************************************************************************************************************************
/*void fuwuyan()
{
FILE *fp;
int aaa, i;
char bbb[20];
if ((fp = fopen("服务员.txt", "r")) == NULL){
printf("打开失败\n");
exit(0);
}
printf("请输入服务员工号"); scanf("%d",&aaa);
struct raed dq[50];
for (i = 0; i < bh; i++)
{
fscanf(fp, "%d%s%d%s", &dq[i].num1, dq[i].name1, dq[i].yj2, dq[i].mm1);
if (aaa == dq[i].num1){
printf("%s您好,请输入您的密码 \n", dq[i].name1);
scanf("%s", bbb);
encrypt(dq[i].mm1);//解密
if (strcmp(bbb, dq[i].mm1) == 0)
break;
else{
printf("密码错误! 已返回上层菜单");
return;
}
}
}
fclose(fp);
do{
printf("服务员主菜单\n1:顾客管理\n2:点餐管理\n3:菜品信息查询\n0:退出\n 请选择:\n");
scanf("%d", &xuanxiang);
switch (xuanxiang)
{
case 1:
gukeguanli();
break;
case 2:
diancanguanli();
break;
case 3:
caipinchakan();
break;
case 0:
xuanxiang = 5;
return;
default:
printf("输入错误,请更正后输入!\n");
break;
}
} while (xuanxiang != 0);
}*/
//*******************************************************************************************************************************
void yonghu()
{
int i,xuanxiang;
int bh = 0, c;//定义员工计数变量
FILE *fp;
int shurudegonghao;
char shuru[20],shuru2[20];//输入2用于校验密码的正确性
char gonhao, fuwuyuanxingming[20],yeji,asd[50];
struct waiter yg[Maxfwy];
do{
printf("请选择:\n1:查询服务员 \n2:新建服务员\n3:修改管理员密码\n0:退出\n \n ");
scanf("%d", &xuanxiang);
switch (xuanxiang){
case 1://查询服务员**************************************************************************************************
if ((fp = fopen("服务员.txt", "r")) == NULL){
printf("打开失败\n");
exit(0);
}
printf("请输入服务员工号\n");
scanf("%d", &shurudegonghao);
/*if (bh == 0){
printf("当前没有员工!已返回上层菜单\n");
break;
}*/
rewind(fp);//移动到文件头位置
while(!feof(fp))
{
fscanf(fp, "%d%s%d%s", &gonhao, fuwuyuanxingming, &yeji,asd);
if (shurudegonghao == gonhao)
printf("该服务员姓名为:%s业绩为:%d \n", fuwuyuanxingming, yeji);
}
/* if (shurudegonghao == 10086)
printf("找不到该工号对应的服务员\n");*/
fclose(fp);
break;
case 2://新建服务员******************************************************************************************
{
if ((fp = fopen("服务员.txt", "a")) == NULL){
printf("打开失败\n");
exit(0);
}
do{
printf("您已进入员工增加程序,您正在添加第%d个员工(最多能添加50个员工)\n", bh + 1);
yg[bh].gh = bh + 1;
fprintf(fp, "%d", yg[bh].gh);//gonhao
printf("请输员工名字:"); scanf("%s", yg[bh].name);
fprintf(fp, " ");
fputs(yg[bh].name, fp);//姓名
yg[bh].yeji = 0;
fprintf(fp, " ");
fprintf(fp, "%d", yg[bh].yeji);//yeji
printf("请为新员工安排一个初始密码:"); scanf("%s", yg[bh].ygmm);
fprintf(fp, " ");
encrypt(yg[bh].ygmm);//加密处理
fputs(yg[bh].ygmm, fp);
printf("员工添加成功!该员工的工号为:%d是否继续添加?\n 1)是 2)否\n",yg[bh].gh);
scanf("%d", &c);
if (c == 2)
break;
fprintf(fp, "\n");
bh++;
} while (bh < 100);
printf("输入完毕,已自动返回上层菜单\n");
fclose(fp); //关闭服务员.txt
break;
}
/*case 3://修改管理员密码 *********************************************************************************
{
if ((fp = fopen("管理员.txt", "r+")) == NULL){
printf("打开失败/n");
exit(0);
}
printf("需要验证你的旧管理员密码\n");
scanf("%s", shuru);
fscanf(fp, "%s", mima);
encrypt(mima);
if (strcmp(shuru, mima) == 0){
do{
encrypt(shuru);
printf("请输入新密码:");
scanf("%s", shuru);
printf("请再次输入新密码:");//校验密码的正确性
scanf("%s", shuru2);
if (strcmp(shuru, shuru2) == 0)
{
fprintf(fp, "%s", shuru);
printf("请及时记下您的密码\n");
system("cls");//及时将屏幕上的密码清除保证安全性
printf("密码修改成功!,已自动返回上级菜单\n");
fclose(fp);
break;
}
else
printf("两次密码输入不一致!请重新输入\n");
} while (strcmp(shuru, shuru2) == 0);
}
else
printf("密码错误,已自动返回上级菜单\n");
fclose(fp);
return;
};
case 0://退出
xuanxiang = 5;
return;*/
default:
printf("输入错误,请更正后输入!\n");
break;
}
} while (xuanxiang != 0);
return;
}
void caidanguanli()
{
struct dishes sa[MaxSize];
FILE *fp;
int i, b=1,shurudebianhao;
char a[1024];
do{
printf("请选择:\n1:增加菜品 \n2:查看菜品列表\n3:查询菜品\n0:退出\n \n ");
scanf("%d", &xuanxiang);
switch (xuanxiang){
case 1://增加菜品************************************************************************************************
{
if ((fp = fopen("菜品.txt", "a")) == NULL){
printf("打开失败\n");
exit(0);
}
do{
printf("您已进入菜品增加程序,您正在添加第%d道菜(最多能添加100道菜)\n", dn + 1);
sa[dn].num = dn + 1;
fprintf(fp, "%d", sa[dn].num);
printf("请输菜名:"); scanf("%s", sa[dn].caiming);
fprintf(fp, " ");
fputs(sa[dn].caiming, fp);
printf("请输菜品种类,例:(主食 汤 小炒 火锅 川菜):"); scanf("%s", sa[dn].zhonglei);
fprintf(fp, "