话不多说 先上图
三天时间照着课本打出来的~略有改进。
实训答辩能保证运行操作稳过。
底层模块调用链表读模块与链表写模块,各模块内部运行多以链表来实现。
整个系统核心思想为组建多个模块,以模块调用的形式构成整个系统。
(类似于搭积木)
目前我本人做的三界面基本完善,但是有以下几点希望后继者帮忙改进:
程序在进入增删改等底层界面操作完成后或者误入时,可以按任意键返回
结合实际,增加完善经理界面的功能
程序模块结构如下:
1.台桌界面功能选项
void addtab();void delettab();voidaltertab();void looktab();void alltab();
2.人员界面功能选项
void addstaff();voiddeletstaff();void alterstaff();void lookstaff();
void allstaff();
3.菜目界面功能选项
void adddish();voiddeletdish();void alterdish();void lookdish();
void alldish();
4.服务员可操作的功能选项
void seeorder();void seedish();voidpayoff();void starttab();
void startdish();void seetab();
5.经理操作功能项
void dishcharge();voidtabcharge();void staffcharge();
6.主管操作功能项
void countsell();
7.三种账户开始界面及初始化与登录界面
voidmanagerinter();void serverinter();void chargeinter();
voiduserenter();void systementer();
重点来了!代码部分!
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
/*台桌界面功能选项*/
void addtab();
void delettab();
void altertab();
void looktab();
void alltab();
//人员界面功能选项
void addstaff();
void deletstaff();
void alterstaff();
void lookstaff();
void allstaff();
//菜单界面功能选项
void adddish();
void deletdish();
void alterdish();
void lookdish();
void alldish();
//服务员可操作的功能选项
void seeorder();
void seedish();
void payoff();
void starttab();
void startdish();
void seetab();
//经理操作功能项
void dishcharge();
void tabcharge();
void staffcharge();
//主管操作功能项
void countsell();
//三种账户开始界面
void managerinter();
void serverinter();
void chargeinter();
void userenter();
void systementer();
char entername[20];
struct dp//定义结构体储存各类信息
{
char name[20];//订单号+用户名
char num[20];//桌号
double price;//金额
char sta[20];//状态
char act[20];//活动
char pay;//付账状态
int dishname;//菜名
int type;//
struct dp *next;
}*tab,*dish,*user,*order;
//链表读取
struct dp *readlink(int num,struct dp *head)
{
FILE *fp;
if(num == 1)
fp = fopen("d:\\user.dat","rb");
else if(num == 2)
fp = fopen("d:\\dish.dat","rb");
else if(num == 3)
fp = fopen("d:\\tab.dat","rb");
else if(num == 4)
{
if((fp = fopen("d:\\order.dat","rb"))==NULL)
{
printf("没有订单信息!");
char ch;
ch = getch();
if(ch == 27)
serverinter();
}
}
struct dp *p,*t;
t = head;
p = (struct dp*)malloc(sizeof(struct dp));
fread(p,sizeof(struct dp),1,fp);
while(!feof(fp))
{
t->next = p;
t = t->next;
p = (struct dp*)malloc(sizeof(struct dp));
fread(p,sizeof(struct dp),1,fp);
}
fclose(fp);
return head;
};
//链表写入
void writelink(int num,struct dp *head)
{
FILE *in;
struct dp *p;
if(num == 1)
in = fopen("d:\\user.dat","wb+");
else if(num == 2)
in = fopen("d:\\dish.dat","wb+");
else if(num == 3)
in = fopen("d:\\tab.dat","wb+");
else if(num == 4)
in = fopen("d:\\order.dat","wb+");
p=head->next;
while(p)
{
fwrite(p,sizeof(struct dp),1,in);
p=p->next;
}
fclose(in);
}
//账号检测
int checkpassword()
{
char name[20];
printf("请输入用户账户\n");
scanf("%s",name);
char password[20];
printf("请输入用户密码\n");
scanf("%s",password);
FILE *fp;
struct dp *q,*p,*t,*head;
head = (struct dp*)malloc(sizeof(struct dp));
t = head;
p =(struct dp*)malloc(sizeof(struct dp));
fp = fopen("d:\\user.dat","rb");
fread(p,sizeof(struct dp),1,fp);
while(!feof(fp))
{
t->next = p;
t =t->next;
p = (struct dp*)malloc(sizeof(struct dp));
fread(p,sizeof(struct dp),1,fp);
}
fclose(fp);
q= head->next;
while(q)
{
if((strcmp(name,q->name)==0)&&(strcmp(password,q->num)==0))
{
if(q->type == 2)
{
strcpy(entername,q->name);
}
return q->type;
}
else
{
q=q->next;
}
}
return 0;
}
int main()
{
systementer();
return 0;
}
void closesystem()
{
printf("+----------------------+\n");
printf("+------ -------+\n");
printf("+------- --------+\n");
printf("+---- -----+\n");
printf("+--- 欢迎您下次使用 ---+\n");
printf("+---- Copyright -----+\n");
printf("+----- @Fawkes ------+\n");
printf("+------- --------+\n");
printf("+----------------------+\n");
exit(1);
}
//菜单桌单订单
void ordermenu()
{
system("cls");
printf("单号 桌号 已买单 活动\n");
struct dp *head,*p;
head = (struct dp*)malloc(sizeof(struct dp));
head = readlink(4,head);
p=head->next;
while(p)
{
printf("%s %10s %10s %10s\n",p->num,p->num,p->sta,p->act);
p=p->next;
}
char ch;
ch = getch();
if(ch == 27)
serverinter();
}
void dishmenu()
{
system("cls");
printf("菜目号 名称 价格 状态 是否活动\n");
struct dp *q,*head;
head = (struct dp*)malloc(sizeof(struct dp));
head = readlink(2,head);
q=head->next;
while(q!=NULL)
{
printf("%s %10s %10.2lf %10s %10s\n",q->num,q->name,q->price,q->sta,q->act);
q=q->next;
}
}
//桌单
void tabmenu()
{
system("cls");
printf("桌号 状态 活动\n");
struct dp *q,*head;
head = (struct dp*)malloc(sizeof(struct dp));
head = readlink(3,head);
q= head->next;
while(q)
{
printf("%s %10s %10s\n",q->num,q->sta,q->act);
q=q->next;
}
}
//系统初始化建立台桌文件 用户文件 菜单文件
//台桌文件
struct dp *creattab()
{
FILE *ff;
if((ff=fopen("d:\\tab.dat","rb"))==NULL)
{
int i;
struct dp *p,*t,*head;
head = (struct dp*)malloc(sizeof(struct dp));
head->next = NULL;
t = head;
for(i=0; i<1; i++)
{
p=(struct dp*)malloc(sizeof(struct dp));
strcpy(p->num,"001");
strcpy(p->sta,"Y");
strcpy(p->act,"Y");
p->type = 0;
t->next= p;
p->next = NULL;
t= p;
}
tab = head;
FILE *in = fopen("d:\\tab.dat","wb+");
p=head->next;
while(p)
{
fwrite(p,sizeof(struct dp),1,in);
p=p->next;
}
fclose(in);
}
};
//菜单文件
struct dp *creatdish()
{
FILE *ff;
if((ff = fopen("d:\\dish.dat","rb"))==NULL)
{
int i;
struct dp *p,*t,*head;
head = (struct dp*)malloc(sizeof(struct dp));
head->next = NULL;
t = head;
for(i=0; i<1; i++)
{
p=(struct dp*)malloc(sizeof(struct dp));
strcpy(p->num,"001");
strcpy(p->sta,"Y");
strcpy(p->name,"土豆丝");
strcpy(p->act,"N");
p->price = 20;
t->next = p;
p->next = NULL;
t=p;
}
dish = head;
FILE *in = fopen("d:\\dish.dat","wb+");
p=head->next;
while(p)
{
fwrite(p,sizeof(struct dp),1,in);
p=p->next;
}
fclose(in);
}
};
//用户文件
struct dp *creatuser()
{
FILE *ff;
if((ff = fopen("d:\\user.dat","rb"))==NULL)
{
int i;
struct dp *p,*t,*head;
head = (struct dp*)malloc(sizeof(struct dp));
head->next = NULL;
t = head;
for(i=0; i<1; i++)
{
p = (struct dp*)malloc(sizeof(struct dp));
strcpy(p->name,"111");
strcpy(p->num,"111");
p->type = 1;
t->next = p;
p->next = NULL;
t= p;
}
user = head;
FILE *in = fopen("d:\\user.dat","wb+");
p= head->next;
while(p)
{
fwrite(p,sizeof(struct dp),1,in);
p=p->next;
}
fclose(in);
}
}
//订单文件
struct dp *creatorder()
{
FILE *ff;
if((ff=fopen("d:\\order.dat","rb"))==NULL)
{
int i;
struct dp *p,*t,*head;
head = (struct dp*)malloc(sizeof(struct dp));
head->next = NULL;
t= head;
for(i=0; i<1; i++)
{
p=(struct dp*)malloc(sizeof(struct dp));
strcpy(p->name,"001");
strcpy(p->num,"001");
p->price = 0.00;
t->next = p;
p->next = NULL;
t= p;
}
user = head;
FILE *in = fopen("d:\\order.dat","wb+");
p=head->next;
while(p)
{
fwrite(p,sizeof(struct dp),1,in);
p=p->next;
}
fclose(in);
}
};
//加菜目
void adddish()
{
system("cls");
FILE *fp;
struct dp *p;
p = (struct dp*)malloc(sizeof(struct dp));
p->next = NULL;
printf("输入菜目编号: ");
scanf("%s",p->num);
struct dp *head,*q;
head = (struct dp*)malloc(sizeof(struct dp));
head = readlink(2,head);
q = head->next;
while(q)
{
if(strcmp(p->num,q->num)==0)
{
printf("已存在本菜目!\n请重新输入!\n");
Sleep(1000);
adddish();
}
else
{
q=q->next;
}
}
printf("输入菜目名称: ");
scanf("%s",p->name);
q = head->next;
while(q)
{
if(strcmp(p->name,q->name)==0)
{
printf("已存在本菜目!\n请重新输入!\n");
Sleep(1000);
adddish();
}
else
{
q=q->next;
}
}
printf("输入菜目价格: ");
scanf("%lf",&p->price);
printf("输入菜目状态: ");
scanf("%s",p->sta);
printf("输入菜目活动: ");
scanf("%s",p->act);
if((fp = fopen("d:\\dish.dat","ab+"))==NULL)
{
printf("No file in there!");
}
fwrite(p,sizeof(struct dp),1,fp);
free(p);
fclose(fp);
char cc[1];
printf("是否继续添加<Y/N>>");
scanf("%s",cc);
if(strcmp(cc,"Y")==0)
{
adddish();
}
else if(strcmp(cc,"N")==0)
{
dishcharge();
}
}
//去掉菜目
void deletdish()
{
system("cls");
char s[20];
char ch;
struct dp *head,*p,*q;
head = (struct dp*)malloc(sizeof(struct dp));
head = readlink(2,head);
printf("请输入要删除的菜目号: ");
scanf("%s",s);
p = head;
q =p->next;
while(q)
{
if(strcmp(s,q->num)==0)
{
p->next = q->next;
free(q);
break;
}
else
{
p=p->next;
q=q->next;
}
}
if(q==NULL)
{
printf("该桌号不存在");
ch = getch();
if(ch == 27)
{
dishcharge();
}
}
else
{
writelink(2,head);
printf("修改成功!");
}
ch = getch();
if(ch == 27)
{
dishcharge();
}
}
//更改菜目
void alterdish()
{
system("cls");
struct dp *q,*head;
head = (struct dp*)malloc(sizeof(struct dp));
char s[20];
char ch;
head = readlink(2,head);
q= head->next;
printf("请输入要修改的菜目号: ");
scanf("%s",s);
while(q)
{
if(strcmp(s,q->num)==0)
{
printf("请输入新菜目:");
scanf("%s",q->num);
printf("输入菜目状态:");
scanf("%s",q->sta);
printf("输入活动状态: ");
scanf("%s",q->act);
break;
}
else
{
q=q->next;
}
}
if(q==NULL)
{
printf("该菜目不存在");
ch = getch();
if(ch == 27)
{
dishcharge();
}
}
else
{
writelink(2,head);
printf("修改成功!\n请按ESC键返回");
}
ch = getch();
if(ch == 27)
{
dishcharge();
}
}
//查询菜目
void lookdish()
{
system("cls");
struct dp *head,*q;
char s[20];
printf("请输入要查询的菜目编号:");
scanf("%s",s);
head = (struct dp*)malloc(sizeof(struct dp));
head = readlink(2,head);
q = head->next;
while(q)
{
if(strcmp(s,q->num)==0)
{
printf("菜目编号:%s\n菜目名称:%s\n菜目价格:%.2lf\n菜目状态:%s\n菜目活动:%s\n",q->num,q->name,q->price,q->sta,q->act);
Sleep(4000);
dishcharge();
}
else
q=q->next;
}
if(q == NULL)
{
printf("无此菜目信息!");
Sleep(2000);
dishcharge();
}
}
//列出所有菜目
void alldish()
{
dishmenu();
char ch;
ch = getch();
if(ch == 27)
{
dishcharge();
}
}
//员工管理
void staffcharge()
{
system("cls");
printf("+------------------+\n");
printf("+---- -----+\n");
printf("+--- 员工管理 ---+\n");
printf("+---- -----+\n");
printf("+------------------+\n");
printf("\n");
printf(" 1 -> 聘用员工\n");
printf(" 2 -> 解雇员工\n");
printf(" 3 -> 更改员工\n");
printf(" 4 -> 查询员工\n");
printf(" 5 -> 所有员工\n");
printf(" q -> 返 回\n");
printf("\n");
printf(" 输入你的选择 > ");
char s[1];
scanf("%s",s);
if(strcmp(s,"q")==0)
{
system("cls");
managerinter();
}
else if(strcmp(s,"1")==0)
{
addstaff();
}
else if(strcmp(s,"2")==0)
{
deletstaff();
}
else if(strcmp(s,"3")==0)
{
alterstaff();
}
else if(strcmp(s,"4")==0)
{
lookstaff();
}
else if(strcmp(s,"5")==0)
{
allstaff();
}
}
//聘用员工
void addstaff()
{
system("cls");
FILE *fp;
struct dp *p,*t;
p = (struct dp*)malloc(sizeof(struct dp));
p->next = NULL;
p->price = 0.00;//新用户工资
printf("请输入用户名: ");
scanf("%s",p->name);
struct dp *head;
head = (struct dp*)malloc(sizeof(struct dp));
head = readlink(1,head);
t= head->next;
while(t)
{
if(strcmp(p->name,t->name)==0)
{
printf("该用户名已存在!");
Sleep(1000);
addstaff();
}
t=t->next;
}
printf("请输入用户密码:");
scanf("%s",p->num);
printf("请输入用户类型: <1(经理)/2(服务员)/3(主管)>");
scanf("%d",&p->type);
if(p->type == 2)
{
printf("请输入员工薪资: ");
scanf("%lf",&p->price);
}
if((fp = fopen("d:\\user.dat","ab+"))==NULL)
printf("No file in there!");
fwrite(p,sizeof(struct dp),1,fp);
free(p);
fclose(fp);
char cc[1];
printf("是否继续添加<Y/N>");
scanf("%s",cc);
if(strcmp(cc,"N")==0)
{
staffcharge();
}
else if(strcmp(cc,"Y")==0)
{
addstaff();
}
}
//辞退员工
void deletstaff()
{
system("cls");
char s[20];
char ch;
struct dp *head,*p,*q;
head = (struct dp*)malloc(sizeof(struct dp));
head = readlink(1,head);
printf("请输入要删除的员工姓名: ");
scanf("%s",s);
p = head;
q = p->next;
while(q)
{
if(strcmp(s,q->name)==0)
{
p=q->next;
free(q);
break;
}
else
{
p=p->next;
q=q->next;
}
}
if(q==NULL)
{
printf("该用户不存在");
ch = getch();
if(ch == 27)
{
staffcharge();
}
}
else
{
writelink(1,head);
printf("员工已辞退!");
}
ch = getch();
if(ch == 27)
{
staffcharge();
}
}
//换人
void alterstaff()
{
system("cls");
struct dp *q,*head;
head = (struct dp*)malloc(sizeof(struct dp));
char s[20];
char ch;
head = readlink(1,head);
q= head->next;
printf("请输入用户名:");
scanf("%s",s);
while(q)
{
if(strcmp(s,q->name)==0)
{
printf("请输入新员工姓名:");
scanf("%s",q->name);
printf("请输入新员工密码:");
scanf("%s",q->num);
printf("请输入新员工类型:<1(经理)/2(服务员)/3(主管)>");
scanf("%d",&q->type);
break;
}
else
{
q=q->next;
}
}
if(q==NULL)
{
printf("该用户不存在!");
ch =getch();
if(ch == 27)
staffcharge();
}
else
{
writelink(1,head);
printf("修改成功!请按ESC返回");
}
ch = getch();
if(ch == 27)
{
staffcharge();
}
}
//所有员工
void allstaff()
{
system("cls");
printf("用户名 密码 类型\n");
struct dp *head,*q;
head = (struct dp*)malloc(sizeof(struct dp));
head = readlink(1,head);
q=head->next;
while(q)
{
printf("%s %10s %10d\n",q->num,q->name,q->type);
q=q->next;
}
printf("请按ESC键返回上一级菜单");
char ch;
ch =getch();
if(ch ==27)
{
staffcharge();
}
}
//查询员工
void lookstaff()
{
system("cls");
struct dp *head,*q;
char s[20];
printf("请输入要查询的员工用户名:");
scanf("%s",s);
head = (struct dp*)malloc(sizeof(struct dp));
head = readlink(1,head);
q = head->next;
while(q)
{
if(strcmp(s,q->name)==0)
{
printf("用户名:%s\n类型:%d\n",q->num,q->type);
Sleep(5000);
staffcharge();
}
else
{
q=q->next;
}
}
if(q == NULL)
{
printf("无此员工信息!\n");
Sleep(2000);
staffcharge();
}
}
//台桌管理
void tabcharge()
{
system("cls");
printf("+------------------+\n");
printf("+---- -----+\n");
printf("+--- 餐桌管理 ---+\n");
printf("+---- -----+\n");
printf("+------------------+\n");
printf("\n");
printf(" 1 -> 增加餐桌\n");
printf(" 2 -> 移除餐桌\n");
printf(" 3 -> 修改餐桌\n");
printf(" 4 -> 查询餐桌\n");
printf(" 5 -> 所有餐桌\n");
printf(" q -> 返 回\n");
printf("\n");
printf(" 输入你的选择 > ");
char s[1];
scanf("%s",s);
if(strcmp(s,"q")==0)
{
system("cls");
managerinter();
}
else if(strcmp(s,"1")==0)
{
addtab();
}
else if(strcmp(s,"2")==0)
{
delettab();
}
else if(strcmp(s,"3")==0)
{
altertab();
}
else if(strcmp(s,"4")==0)
{
looktab();
}
else if(strcmp(s,"5")==0)
{
alltab();
}
}
//加桌
void addtab()
{
system("cls");
FILE *fp;
struct dp *p;
p = (struct dp*)malloc(sizeof(struct dp));
p->next = NULL;
printf("输入桌号: ");
scanf("%s",p->num);
struct dp *head,*q;
head = (struct dp*)malloc(sizeof(struct dp));
head = readlink(3,head);
q = head->next;
while(q)
{
if(strcmp(p->num,q->num)==0)
{
printf("已存在此桌!\n请重新输入!\n");
Sleep(1000);
addtab();
}
else
{
q=q->next;
}
}
printf("输入状态: ");
scanf("%s",p->sta);
printf("输入活动: ");
scanf("%s",p->act);
if((fp = fopen("d:\\tab.dat","ab+"))==NULL)
{
printf("No file in there!");
}
fwrite(p,sizeof(struct dp),1,fp);
free(p);
fclose(fp);
char cc[1];
printf("是否继续添加<Y/N>>");
scanf("%s",cc);
if(strcmp(cc,"Y")==0)
{
addtab();
}
else if(strcmp(cc,"N")==0)
{
tabcharge();
}
}
//删桌
void delettab()
{
system("cls");
char s[20];
char ch;
struct dp *head,*p,*q;
head = (struct dp*)malloc(sizeof(struct dp));
head = readlink(3,head);
printf("请输入要删除的桌号: ");
scanf("%s",s);
p = head;
q =p->next;
while(q)
{
if(strcmp(s,q->num)==0)
{
p->next = q->next;
free(q);
break;
}
else
{
p=p->next;
q=q->next;
}
}
if(q==NULL)
{
printf("该桌号不存在");
ch = getch();
if(ch == 27)
{
tabcharge();
}
}
else
{
writelink(3,head);
printf("修改成功!");
}
ch = getch();
if(ch == 27)
{
tabcharge();
}
}
//改桌
void altertab()
{
system("cls");
struct dp *q,*head;
head = (struct dp*)malloc(sizeof(struct dp));
char s[20];
char ch;
head = readlink(3,head);
q= head->next;
printf("请输入要修改的桌号: ");
scanf("%s",s);
while(q)
{
if(strcmp(s,q->num)==0)
{
printf("请输入新桌号:");
scanf("%s",q->num);
printf("输入桌号状态:");
scanf("%s",q->sta);
printf("请输入新活动: ");
scanf("%s",q->act);
break;
}
else
{
q=q->next;
}
}
if(q==NULL)
{
printf("该餐桌不存在");
ch = getch();
if(ch == 27)
{
tabcharge();
}
}
else
{
writelink(3,head);
printf("修改成功!\n请按ESC键返回\n");
}
ch = getch();
if(ch == 27)
{
tabcharge();
}
}
//看桌
void alltab()
{
tabmenu();
char ch;
ch = getch();
if(ch == 27)
{
tabcharge();
}
}
//查桌子
void looktab()
{
system("cls");
struct dp *head,*q;
char s[20];
printf("请输入要查询的台桌编号:");
scanf("%s",s);
head = (struct dp*)malloc(sizeof(struct dp));
head = readlink(3,head);
q = head->next;
while(q)
{
if(strcmp(s,q->num)==0)
{
printf("台桌编号:%s\n台桌状态:%s\n台桌活动:%s\n",q->num,q->sta,q->act);
Sleep(5000);
tabcharge();
}
else
q=q->next;
}
if(q== NULL)
{
printf("无此台桌信息!\n");
Sleep(2000);
tabcharge();
}
}
//菜单管理
void dishcharge()
{
system("cls");
printf("+------------------+\n");
printf("+---- -----+\n");
printf("+--- 菜单管理 ---+\n");
printf("+---- -----+\n");
printf("+------------------+\n");
printf("\n");
printf(" 1 -> 增加菜目\n");
printf(" 2 -> 删除菜目\n");
printf(" 3 -> 修改菜目\n");
printf(" 4 -> 查询菜目\n");
printf(" 5 -> 所有菜目\n");
printf(" q -> 返 回\n");
printf("\n");
printf(" 输入你的选择 > ");
char s[1];
scanf("%s",s);
if(strcmp(s,"q")==0)
{
system("cls");
managerinter();
}
else if(strcmp(s,"1")==0)
{
adddish();
}
else if(strcmp(s,"2")==0)
{
deletdish();
}
else if(strcmp(s,"3")==0)
{
alterdish();
}
else if(strcmp(s,"4")==0)
{
lookdish();
}
else if(strcmp(s,"5")==0)
{
alldish();
}
}
//销售统计
void countsell()
{
system("cls");
double allm = 0.00;
printf("员工编号 营业额\n");
struct dp *head,*t;
head = (struct dp*)malloc(sizeof(struct dp));
head = readlink(1,head);
t = head->next;
while(t)
{
if(t->type == 2)
{
printf("%s %10.2lf\n",t->name,t->price);
allm+=t->price;
t=t->next;
}
}
printf("总计 %.2lf\n",allm);
printf("请按ESC键返回\n");
char ch;
ch = getch();
if(ch == 27)
{
chargeinter();
}
}
//看订单
void seeorder()
{
ordermenu();
}
//看菜单
void seedish()
{
system("cls");
ordermenu();
char ch;
ch = getch();
if(ch == 27)
{
serverinter();
}
}
//付账
void payoff()
{
system("cls");
ordermenu();
printf("请输入要付款的订单号:");
char num[20];
scanf("%s",num);
struct dp *head,*p;
head = (struct dp*)malloc(sizeof(struct dp));
head = readlink(4,head);
p=head->next;
while(p)
{
if(strcmp(p->num,num)==0&&strcmp(p->sta,"N")==0)
{
printf("是否确认付账<Y/N>>");
char s[1];
scanf("%s",s);
if(strcmp(s,"Y")==0)
{
printf("结账成功");
strcpy(p->sta,"Y");
writelink(4,head);
struct dp *head2,*t2;
head2 = (struct dp*)malloc(sizeof(struct dp));
head2 = readlink(3,head);
t2 =head2->next;
while(t2)
{
if(strcmp(t2->num,p->num)==0)
{
strcpy(t2->sta,"Y");
writelink(3,head2);
break;
}
else
{
t2=t2->next;
}
}
struct dp *head,*t;
head = (struct dp*)malloc(sizeof(struct dp));
head= readlink(1,head);
t= head->next;
while(t)
{
if(strcmp(t->name,entername)==0)
{
t->price+=p->price;
writelink(1,head);
printf("已将销售金额写入该用户!");
Sleep(1000);
break;
}
else
{
t=t->next;
}
}
break;
}
else if(strcmp(s,"N")==0)
{
payoff();
}
}
if(p==NULL)
{
printf("没有此订单!");
Sleep(1000);
payoff();
}
char ch;
ch = getch();
if(ch == 27)
serverinter();
}
}
//查询台桌
void seetab()
{
system("cls");
tabmenu();
char ch;
ch = getch();
if(ch == 27)
serverinter();
}
//订菜
void startdish()
{
system("cls");
printf("请输入要点菜的订单号:");
char ordernum[20];
scanf("%s",ordernum);
struct dp *t,*head2;
head2 = (struct dp*)malloc(sizeof(struct dp));
t= head2->next;
while(t)
{
if(strcmp(ordernum,t->num)==0)
{
printf("这是菜单\n");
dishmenu();
printf("请输入菜号:");
char num1[20];
int num2;
scanf("%s",num1);
printf("是否确认点菜<Y/N>");
char s[1];
scanf("%s",s);
if(strcmp(s,"Y")==0)
{
struct dp *p,*head1;
head1 = (struct dp*)malloc(sizeof(struct dp));
head1 = readlink(2,head1);
p=p->next;
while(p)
{
if(strcmp(num1,p->num)==0)
{
printf("请输入份数:");
scanf("%d",&num2);
t->price+=num2*p->price;
strcpy(t->sta,"N");
strcpy(t->act,"Y");
writelink(4,head2);
printf("是否继续点菜<Y/N>");
scanf("%s",s);
if(strcmp(s,"Y")==0)
startdish();
else
serverinter();
}
else
{
p=p->next;
}
}
if(p==NULL)
{
printf("没有此菜!");
}
Sleep(1000);
startdish();
}
}
else
{
t=t->next;
}
if(t==NULL)
{
printf("没有此订单或该订单已付款!");
Sleep(1000);
startdish();
}
}
};
//开桌
void starttab()
{
system("cls");
tabmenu();
FILE *fp;
struct dp *p,*head,*t;
p=(struct dp*)malloc(sizeof(struct dp));
p->next = NULL;
printf("输入桌号:");
scanf("%s",p->num);
head = (struct dp*)malloc(sizeof(struct dp));
head =readlink(3,head);
t = head->next;
while(t)
{
if((strcmp(t->num,p->num)==0)&&(strcmp(t->sta,"Y")==0))
{
strcpy(t->sta,"N");
if((fp = fopen("c:\\order.dat","rb"))==NULL)
{
fp =fopen("c:\\order.dat","wb+");
fwrite(p,sizeof(struct dp),1,fp);
free(p);
writelink(3,head);
char cc[1];
printf("是否继续添加<Y/N>");
scanf("%s",cc);
if(strcmp(cc,"Y")==0)
{
starttab();
}
else if(strcmp(cc,"N")==0)
{
serverinter();
}
break;
}
else
{
fp = fopen("c:\\order.dat","ab+");
fwrite(p,sizeof(struct dp),1,fp);
free(p);
fclose(fp);
writelink(3,head);
char cc[1];
printf("是否继续添加<Y/N>");
scanf("%s",cc);
if(strcmp(cc,"Y")==0)
{
starttab();
}
else if(strcmp(cc,"N")==0)
{
serverinter();
}
break;
}
}
else
{
t=t->next;
}
}
if(t==NULL)
{
printf("不能添加此桌!");
Sleep(2000);
starttab();
}
}
//服务员界面
void serverinter()
{
system("cls");
printf("+------------------+\n");
printf("+---- -----+\n");
printf("+--- 服务界面 ---+\n");
printf("+---- -----+\n");
printf("+------------------+\n");
printf("\n");
printf(" 1:开 桌\n\n");
printf(" 2:点 菜\n\n");
printf(" 3:查询台桌\n\n");
printf(" 4:点菜记录\n\n");
printf(" 5:查询订单\n\n");
printf(" 6:买 单\n\n");
printf(" c:切换用户\n\n");
printf(" q:退出系统\n\n");
printf("\n");
printf(" 输入你的选择 > ");
char s[1];
scanf("%s",s);
if(strcmp(s,"c")==0)
{
system("cls");
Sleep(200);
userenter();
}
else if(strcmp(s,"1")==0)
{
starttab();
}
else if(strcmp(s,"2")==0)
{
startdish();
}
else if(strcmp(s,"3")==0)
{
seetab();
}
else if(strcmp(s,"4")==0)
{
seedish();
}
else if(strcmp(s,"5")==0)
{
seeorder();
}
else if(strcmp(s,"6")==0)
{
payoff();
}
else if(strcmp(s,"q")==0)
{
closesystem();
}
}
//主管操作界面
void chargeinter()
{
system("cls");
printf("+------------------+\n");
printf("+---- -----+\n");
printf("+--- 主管界面 ---+\n");
printf("+---- -----+\n");
printf("+------------------+\n");
printf("\n");
printf(" 1: 销售统计\n\n");
printf(" 2: \n\n");
printf(" 3: \n\n");
printf(" c: 切换用户\n\n");
printf(" q: 退出系统\n\n");
printf("\n");
printf(" 输入你的选择 > ");
char s[1];
scanf("%s",s);
if(strcmp(s,"c")==0)
{
system("cls");
Sleep(200);
userenter();
}
else if(strcmp(s,"1")==0)
{
countsell();
}
else if(strcmp(s,"q")==0)
{
closesystem();
}
}
//经理界面
void managerinter()
{
system("cls");
printf("+------------------+\n");
printf("+---- -----+\n");
printf("+--- 管理界面 ---+\n");
printf("+---- -----+\n");
printf("+------------------+\n");
printf("\n");
printf(" 1: 菜谱管理\n\n");
printf(" 2: 餐桌管理\n\n");
printf(" 3: 人员管理\n\n");
printf(" c: 切换用户\n\n");
printf(" q: 退出系统\n\n");
printf("\n");
printf(" 输入你的选择 > ");
char s[1];
scanf("%s",s);
if(strcmp(s,"c")==0)
{
system("cls");
Sleep(200);
userenter();
}
else if(strcmp(s,"1")==0)
{
dishcharge();
}
else if(strcmp(s,"2")==0)
{
tabcharge();
}
else if(strcmp(s,"3")==0)
{
staffcharge();
}
else if(strcmp(s,"q")==0)
{
closesystem();
}
};
//登陆界面
void userenter()
{
printf("+----------------------+\n");
printf("+------ -------+\n");
printf("+------- --------+\n");
printf("+---- -----+\n");
printf("+--- 小米点菜系统 ---+\n");
printf("+---- Copyright -----+\n");
printf("+----- @Fawkes ------+\n");
printf("+------- --------+\n");
printf("+----------------------+\n");
int s;
s = checkpassword();
if(s == 2)
{
printf("\n 正在进入系统请稍后~\n");
for(int j = 0; j<17; j++)
{
printf(" ");
Sleep(50);
}
system("cls");
serverinter();
}
else if(s==3)
{
printf("\n 正在进入系统请稍后~\n");
for(int j = 0; j<17; j++)
{
printf(" ");
Sleep(50);
}
system("cls");
chargeinter();
}
else if(s==1)
{
printf("\n 正在进入系统请稍后~\n");
for(int j = 0; j<17; j++)
{
printf(" ");
Sleep(50);
}
system("cls");
managerinter();
}
else
{
printf("对不起 密码错误 请重试\n");
Sleep(1000);
system("cls");
userenter();
}
}
//初始化界面
void systementer()
{
printf("系统初始化\n初始化完成\n请输入任意键继续\n");
creatuser();
creatdish();
creattab();
creatorder();
getch();
printf("\n 系统启动中,请稍等\n");
for(int j = 0; j<17; j++)
{
printf(" ");
Sleep(50);
}
system("cls");
userenter();
}
其他资料欢迎下载 https://pan.baidu.com/s/1GRgOC7yMkrQfQMgImcMaVA