苦逼的计科实训结束了,特在此贴一下代码
#include
#include
#include
#include
int k = 0;//订单号
int t = 0;//菜单菜目数量
int y = 0;//已经结账的用户数量
int cans = 5;//餐桌的初始
int ps = 3;//人员
struct node//存储文件里的信息
{
char name[5], pwd[5];
char num ;
} ls[1000];
struct cai//菜的信息
{
char name[10];
int num;
char caiz, caih;
double p;
int f;
} caid[1000];
struct no
{
char name[10];
int fen;
int num;
double p;
};
struct jiezhang//订单信息
{
char name[15];
int s;//菜的个数
int zuohao;//桌号
double m;//总金额
char huo;//状态
char zd;//订单是否买单
struct no us[1000];
} lk[1000];
struct zuo//台桌信息
{
char zt;
char hd;
int h;
} lz[100];
struct ns
{
char name[15];
double sum;
} ly[1000];
void admin();//管理员模块
void denglu();//登陆页面
void director();//经理模块
void waiter();//服务员模块
void denglu();//登陆模块
void canzhuo();//餐桌页面
void caidan();//菜单的增删
int caiq(int d);//寻找某个编号的菜;
void diancai();//点菜
void canzuog();//餐桌改变
void renyuang();//人员管理
char str[26];
int main()
{
FILE *fp;
int i;
char ch;
printf("系统初始化******\n");
printf("初始化完成.\n");
if((fp = fopen("d:\\user.dat","ab+")) == NULL)
{
printf("Cannot Open !!!\n");
exit(0) ;
}
for(i = 0; i < 5; i++)//台桌信息初始化
{
lz[i].zt = 'Y';
lz[i].hd = 'Y';
lz[i].h = i;
}
ch = fgetc(fp);
if(ch == EOF)
{
printf("创建新的111 111的管理员用户\n");
strcpy(ls[0].name,"111");
strcpy(ls[0].pwd,"111");
ls[0].num = 'a';
char cc[25] = {'1','1','1',' ','1','1','1',' ','a'};
fputs(cc,fp);
}
else
{
rewind(fp);
for(i = 0; i < 1000; i++)
{
fgets(str,25,fp);
sscanf(str,"%s %s %c",ls[i].name,ls[i].pwd,&ls[i].num);//数据解析
}
}
fclose(fp);
denglu();
}
char name[5], pwd[5];
void denglu()//登陆页面
{
int i;
system("CLS");
printf("+----------------------------+\n");
printf("+ +\n");
printf("+ 易用点菜系统 +\n");
printf("+ CopyRight +\n");
printf("+ +\n");
printf("+----------------------------+\n");
printf("请输入用户名>");//读入数据
scanf("%s",name);
printf("请输入密码>");
scanf("%s",pwd);
char c = '0';
for(i = 0; i < 1000; i++)
{
if((strcmp(name,ls[i].name) == 0) && (strcmp(pwd,ls[i].pwd) ==0))
{
c = ls[i].num;
break;
}
}
if(c == 'a')//管理员模块调用
{
admin();
}
else if(c == 'd')//主管模块调用
{
director();
}
else if(c == 'w')//服务员模块的调用
{
waiter();
}
else //没有此用户
{
printf("登录失败!!!\n");
}
}
void admin()//管理页面
{
system("CLS");
printf("+------- -------+\n");
printf("+--- ---+\n");
printf("+--- 管理页面 ---+\n");
printf("+--- ---+\n");
printf("+------- -------+\n");
printf(" 1 : 菜谱管理\n");
printf(" 2 : 餐桌管理\n");
printf(" 3 : 人员管理\n");
printf(" c : 切换用户\n");
printf(" q : 退出系统\n");
printf(" 输入你的选择 >");
char c;
scanf("%s",&c);
if(c == '1')//菜谱页面
{
caidan();
admin();
}
else if(c == '2')//餐桌管理
{
canzuog();
}
else if(c == '3')
{
renyuang();
}
else if(c == 'q')//切换用户
{
denglu();
}
else if(c == 'c')//退出系统
{
denglu();
}
}
void director()//主管页面
{
system("CLS");
printf("+------- -------+\n");
printf("+--- ---+\n");
printf("+--- 主管页面 ---+\n");
printf("+--- ---+\n");
printf("+------- -------+\n");
printf(" 1 : 营销统计\n");
printf(" 2 :\n");
printf(" 3 :\n");
printf(" c : 切换用户\n");
printf(" q : 退出系统\n");
printf(" 输入你的选择 >");
//getchar();
char c;
scanf("%s",&c);
if(c == '1')
{
int i;
double sum = 0;
printf("用户 营业额\n");
for(i = 0; i < y; i++)
{
printf("%s %.2lf\n",ly[i].name,ly[i].sum);
sum += ly[i].sum;
}
printf("总计 %.2lf\n",sum);
system("pause");
director();
}
else if(c == 'c')
{
denglu();
}
else if(c == 'q')
{
denglu();
}
}
int caiq(int d)//寻找某个编号的菜
{
int i;
for(i = 0; i < t; i++)
{
if(caid[i].num == d)
{
break;
}
}
printf("菜号 菜名 价格 状态 是否活动\n");
printf("%d %s %.2lf %c %c\n",caid[i].num,caid[i].name,caid[i].p,caid[i].caiz,caid[i].caih);
return i;
}
void caidan()//菜目的增删改查
{
system("CLS");
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(" 输入你的选择 >");
//getchar();
char c;
scanf("%s",&c);
if(c == '1') //增加菜目
{
printf("输入菜目编号:");
scanf("%d",&caid[t].num);
printf("输入菜目名称:");
scanf("%s",caid[t].name);
printf("输入菜目价格:");
scanf("%lf",&caid[t].p);
//getchar();
printf("输入菜目状态:");
scanf("%s",&caid[t].caiz);
caid[t].f = 1;
printf("输入菜目活动:");
//getchar();
scanf("%s",&caid[t++].caih);
printf("是否确认添加:");
char u;
scanf("%s",&u);
if(u == 'N')
{
t--;
}
system("pause");
caidan();
}
else if(c == '2')//删除菜目
{
printf("输入要删除的菜号\n");
int d;
printf("1.输入菜号>");
scanf("%d",&d);
int i = caiq(d);
printf("是否删除>");
char mm;
//getchar();
scanf("%s",&mm);
printf("\n");
if(mm == 'Y')
{
caid[i].f = 0;
}
system("pause");
caidan();
}
else if(c == '4')
{
printf("输入要查询的菜号\n");
printf("1.输入菜号>");
int d;
scanf("%d",&d);
int i ;
i = caiq(d);
system("pause");
caidan();
}
else if(c == '5')
{
int i;
for(i = 0; i < t; i++)
{
if(caid[i].f == 1)
{
printf("菜号 菜名 价格 状态 是否活动\n");
printf("%d %s %.2lf %c %c\n",caid[i].num,caid[i].name,caid[i].p,caid[i].caiz,caid[i].caih);
}
}
system("pause");
caidan();
}
else if(c == '3')//修改菜目信息
{
printf("请输入要修改菜目的编号");
int d;
scanf("%d",&d);
d = caiq(d);
int num;
char gname[15];
double pp;
char caiz, caih;
printf("输入菜目编号:");
scanf("%d",&num);
printf("输入菜目名称:");
scanf("%s",gname);
printf("输入菜目价格:");
scanf("%lf",&pp);
//getchar();
printf("输入菜目状态:");
scanf("%s",&caiz);
printf("输入菜目活动:");
//getchar();
scanf("%s",&caih);
printf("是否确认修改:");
char u;
scanf("%s",&u);
if(u == 'Y')//修改完成
{
printf("修改完成,请继续!\n");
caid[d].num = num;
strcpy(caid[d].name,gname);
caid[d].p = pp;
caid[d].caiz = caiz;
caid[d].caih = caih;
}
system("pause");
caidan();
}
}
void diancai()//点菜
{
int i;
printf("订单号 桌号 菜数 已买单 活动 用户名\n");
for(i = 0; i < k; i++)
{
printf("%d %d %d %c %c %s\n",i+1,lk[i].zuohao,lk[i].s,lk[i].zd,lk[i].huo,lk[i].name);
}
printf("输入要点菜的订单号\n");
int d;
scanf("%d",&d);
d = d-1;
printf("这是菜单\n");
int j;
printf("菜号 菜名 价格 状态 是否活动\n");
for(j = 0; j < t; j++)
{
if(caid[j].f == 1)
{
printf("%d %s %.2lf %c %c\n",caid[j].num,caid[j].name,caid[j].p,caid[j].caiz,caid[j].caih);
}
}
printf("这是你订单的已点菜\n");
for(j = 0; j < lk[d].s; j++)
{
printf("%d %s %.2lf %d\n",lk[d].us[j].num,lk[d].us[j].name,lk[d].us[j].p,lk[d].us[j].fen);
}
printf("输入菜号>");
int r;
scanf("%d",&r);//要点菜的编号
r = caiq(r);
lk[d].us[lk[d].s].num = caid[r].num;
strcpy(lk[d].us[lk[d].s].name,caid[r].name);
lk[d].us[lk[d].s].p = caid[r].p;
int p;//要点菜的份数
printf("输入份数>");
scanf("%d",&p);
lk[d].us[lk[d].s].fen = p;
int ll;
ll = p;
printf("是否确认点菜?>");
char e;
scanf("%s",&e);
if(e == 'Y')
{
lk[d].s++;
lk[d].m += ll*caid[r].p;
}
printf("是否继续点菜>");
scanf("%s",&e);
if(e == 'Y')
{
diancai();
}
else
{
system("pause");
waiter();
}
}
void waiter()//服务模块
{
system("CLS");
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(" 6 : 买 单\n");
printf(" c : 切换用户\n");
printf(" q : 退出系统\n");
printf("输入你的选择 >");
char c;
//getchar();
scanf("%s",&c);
if(c == '1')//开桌
{
int i;
printf("桌号 状态 是否活动\n");
for(i = 0; i < 5; i++)
{
printf("%d %c %c\n",lz[i].h,lz[i].hd,lz[i].zt);
}
printf("输入要选择的台桌>");
int d;
scanf("%d",&d);
printf("确认选择吗");
char ci;
scanf("%s",&ci);
if(ci == 'Y')//订单的初始化
{
lz[d].zt = 'N';
strcpy(lk[k].name,name);
lk[k].s = 0;
lk[k].huo = 'Y';
lk[k].m = 0;
lk[k].zd = 'N';
lk[k++].zuohao = d;
}
system("pause");
waiter();
}
else if(c == '2')//点菜
{
diancai();
}
else if(c == '3')//查询台桌
{
printf("输入要查询台桌的桌号>");
int x;
scanf("%d",&x);
printf("桌号 状态 活动 \n");
printf("%d %c %c\n",lz[x].h,lz[x].zt,lz[x].hd);
system("pause");
waiter();
}
else if(c == '4')//点菜记录
{
printf("输入要查询的订单号>");
int x;
scanf("%d",&x);
int i;
printf("菜号 菜名 份数\n");
for(i = 0; i < lk[x-1].s; i++)
{
printf("%d %s %d\n",lk[x-1].us[i].num,lk[x-1].us[i].name,lk[x-1].us[i].fen);
}
system("pause");
waiter();
}
else if(c == '5')//查询订单
{
printf("输入要查询的订单号>");
int x;
scanf("%d",&x);
printf("订单号 桌号 菜数 合计 已买单 活动 用户名\n");
printf("%d %d %d %.2lf %c %c %s\n",x-1,lk[x-1].zuohao,lk[x-1].s,lk[x-1].m,lk[x-1].zd,lk[x-1].huo,lk[x-1].name);
system("pause");
waiter();
}
else if(c == '6')//买单
{
int i;
printf("订单号 桌号 菜数 合计 已买单 活动 用户名\n");
for(i = 0; i < k; i++)
{
printf("%d %d %d %.2lf %c %c %s\n",i+1,lk[i].zuohao,lk[i].s,lk[i].m,lk[i].zd,lk[i].huo,lk[i].name);
}
printf("输入要结账的订单号\n");
int e;
scanf("%d",&e);
int ll;
ll = e;
printf("是否确认结账>");
char u;
scanf("%s",&u);
if(u == 'Y')
{
ll=ll-1;
lk[ll].zd = 'Y';
ly[y].sum = lk[ll].m;
lz[lk[ll].zuohao].zt = 'Y';
strcpy(ly[y].name,lk[ll].name);
y++;
printf("结账成功!!!\n");
}
system("pause");
waiter();
}
else if(c == 'c')//切换用户
{
denglu();
}
else if(c == 'q')//退出系统
{
denglu();
}
}
void canzuog()
{
system("CLS");
printf("+------- -------+\n");
printf("+--- ---+\n");
printf("+--- 餐桌页面 ---+\n");
printf("+--- ---+\n");
printf("+------- -------+\n");
printf(" 1 -> 增加餐桌\n");
printf(" 2 -> 删除餐桌\n");
printf(" 3 -> 查询餐桌\n");
printf(" 4 -> 所有餐桌\n");
printf(" q -> 返 回\n");
printf(" 输入你的选择 >");
char c;
scanf("%s",&c);
if(c == '1')//餐桌增加
{
lz[cans].h = cans;
lz[cans].hd = 'Y';
lz[cans].zt = 'Y';
cans++;
printf("餐桌增加成功!\n");
system("pause");
canzuog();
}
else if(c == '2')//删除餐桌
{
printf("输入要删除的餐桌号>");
int x;
scanf("%d",&x);
int ll;
ll = x;
printf("确定要删除>");
char cm;
scanf("%s",&cm);
if(cm == 'Y')//确定活动和状态为‘N’,为不可用,即为删除;
{
lz[ll].hd = 'N';
lz[ll].zt = 'N';
}
system("pause");
canzuog();
}
else if(c == '3')//查询餐桌
{
printf("输入要查询的餐桌号>");
int x;
scanf("%d",&x);
printf("桌号 状态 活动 \n");
printf("%d %c %c\n",lz[x].h,lz[x].zt,lz[x].hd);
system("pause");
canzuog();
}
else if(c == '4')//所有餐桌
{
int i;
printf("桌号 状态 活动 \n");
for(i = 0; i < cans; i++)
{
printf("%d %c %c\n",lz[i].h,lz[i].zt,lz[i].hd);
}
system("pause");
canzuog();
}
else if(c == 'q')//返回上个界面
{
admin();
}
}
void renyuang()
{
system("CLS");
printf("+------- -------+\n");
printf("+--- ---+\n");
printf("+-- 人员管理 ---+\n");
printf("+--- 页面 ---+\n");
printf("+------- -------+\n");
printf(" 1 -> 增加人员\n");
printf(" 2 -> 删除人员\n");
printf(" 3 -> 查询人员\n");
printf(" 4 -> 所有人员\n");
printf(" q -> 返 回\n");
printf(" 输入你的选择 >");
char c;
scanf("%s",&c);
if(c == 'q')
{
admin();
}
else if(c == '1')//添加人员
{
printf("输入账号>");
char cname[15];
scanf("%s",cname);
char cpwd[15];
printf("输入密码>");
scanf("%s",cpwd);
printf("输入标示管理员-a主管-d服务员-w\n");
char cnum;
scanf("%s",&cnum);
printf("确定添加>");
char cb;
scanf("%s",&cb);
if(cb == 'Y')
{
strcpy(ls[ps].name,cname);
strcpy(ls[ps].pwd,cpwd);
ls[ps].num = cnum;
ps++;
}
}
else if(c == '2')//删除人员
{
printf("输入要删除人员的用户名>");
char cnm[15];
scanf("%s",cnm);
int i;
for(i = 0; i < ps; i++)
{
if(strcmp(ls[i].name,cnm) == 0)
{
ls[i].num = 'm';//设置标示为m,为已被清除人员
break;
}
}
}
else if(c == '3')//查询人员
{
printf("输入要查询人员的用户名>");
char cnm[15];
scanf("%s",cnm);
int i;
for(i = 0; i < ps; i++)
{
if(strcmp(ls[i].name,cnm) == 0)
{
printf("用户名 :%s",ls[i].name);
printf("身份: ");
if(ls[i].num == 'a')
{
printf("管理者\n");
}
else if(ls[i].num == 'd')
{
printf("主管\n");
}
else if(ls[i].num == 'w')
{
printf("服务员\n");
}
else
{
printf("辞职者\n");
}
break;
}
}
}
else if(c == '4')//全部人员
{
int i;
for(i = 0; i < ps; i++)
{
if(ls[i].num == 'm')
{
continue;
}
printf("用户名 :%s",ls[i].name);
printf("身份: ");
if(ls[i].num == 'a')
{
printf("管理者\n");
}
else if(ls[i].num == 'd')
{
printf("主管\n");
}
else if(ls[i].num == 'w')
{
printf("服务员\n");
}
}
}
system("pause");
renyuang();
}