计科实训 餐馆点菜系统
苦逼的计科实训结束了,特在此贴一下代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>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("输入菜目状态<Y/N>:");scanf("%s",&caid[t].caiz);caid[t].f = 1;printf("输入菜目活动<Y/N>:");//getchar();scanf("%s",&caid[t++].caih);printf("是否确认添加<Y/N>:");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("是否删除<Y/N>>");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("输入菜目状态<Y/N>:");scanf("%s",&caiz);printf("输入菜目活动<Y/N>:");//getchar();scanf("%s",&caih);printf("是否确认修改<Y/N>:");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("是否确认点菜<Y/N>?>");char e;scanf("%s",&e);if(e == 'Y'){lk[d].s++;lk[d].m += ll*caid[r].p;}printf("是否继续点菜<Y/N>>");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("确认选择吗<Y/N>");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("是否确认结账<Y/N>>");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("确定要删除<Y/N>>");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("确定添加<Y/N>>");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();
}
计科实训 餐馆点菜系统相关推荐
- 银行管理系统 - 2022计科实训QT课设
Github: https://github.com/okfanger/xiaofang-supermarket-qt 1. 项目速览 开发语言:QT 5.6.3 开发工具:QT Creator 4. ...
- python在线投票系统讲解_Python开发基础-项目实训-在线投票系统ppt课件
<Python开发基础-项目实训-在线投票系统ppt课件>由会员分享,可在线阅读,更多相关<Python开发基础-项目实训-在线投票系统ppt课件(27页珍藏版)>请在人人文库 ...
- 简易实训教学授课系统解决方案
概述 简易实训教学授课系统集合现代高速发展的信息化技术.互联网技术.工业化技术于一身,包含可视化示教.无线拍摄.课程录制.移动课程讲解等功能,为授课.讲解等活动的顺利进行,提供可靠的高清拍摄.视频录制 ...
- python实训项目-Python开发基础-项目实训-在线投票系统.pptx
项目实训-在线投票系统本章任务/30完成"在线投票系统"添加投票候选人删除候选人为候选人投票按序号投票删除投票输出统计信息--本章目标/30理解程序的基本概念会使用顺序.选择.循环 ...
- java计算机毕业设计高校实习实训管理系统MyBatis+系统+LW文档+源码+调试部署
java计算机毕业设计高校实习实训管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计高校实习实训管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目 ...
- 项目实训 - 智能车系统 - 第七周记录
项目实训 - 智能车系统 - 第七周记录 日期:4.04 – 4.10 项目进度 本周工作进展: 更换了底层的通信框架(shm) 熟悉速腾雷达驱动,以及ros相关驱动,为二次开发驱动做准备 1.更换底 ...
- mybatis数据库框架应用之餐馆点菜系统
系统介绍 我们通过控制台实现了一个简单的餐馆点菜系统.本系统以控制台的操作代码输入的方式对一个点菜系统进行模拟.通过不同的选项,实现点菜,已点菜品查看和结算三个小功能.本系统的主要目的是通过对系统的构 ...
- 工业机器人机械装调维修虚拟仿真实训与考评系统
工业机器人机械装调维修虚拟仿真实训与考评系统 一.概述 1.工业机器人机械装调维修虚拟仿真实训与考评系统分学习模式.训练模式.考核模式,共计35个实训项目任务,支持<工业机器人基础>< ...
- python在线投票系统_Python开发基础-项目实训-在线投票系统.pptx
项目实训-在线投票系统本章任务/30完成"在线投票系统"添加投票候选人删除候选人为候选人投票按序号投票删除投票输出统计信息--本章目标/30理解程序的基本概念会使用顺序.选择.循环 ...
- python在线投票系统源码-Python开发基础-项目实训-在线投票系统.pptx
项目实训-在线投票系统本章任务/30完成"在线投票系统"添加投票候选人删除候选人为候选人投票按序号投票删除投票输出统计信息--本章目标/30理解程序的基本概念会使用顺序.选择.循环 ...
最新文章
- 135. Leetcode 46. 全排列 (回溯算法-排列问题)
- Android--WebView
- spring学习(48):自动装配中定义的bean的作用域
- springboot2整合mysql5_SpringBoot2.X (二十五):SpringBoot整合 Mybatis + MySQL CURD 示例
- excel 文件导入数据库(java)
- ACM模板——线段树树状数组ST表
- 计算机考试的话语,鼓励别人考试的句子
- Android 选择国家对应区号 中英双版
- scala中的Unit
- 三相桥式全控整流电路simulink仿真_变频器为什么要整流然后再逆变?
- 关于网络渗透的过程以及感想记录
- ps图层转css3代码,CSS3Ps:ps图层转CSS3代码之神器
- 在Unity中创建基于Node节点的编辑器 (二) 窗口序列化
- 2022年营收增长高达70%,智云健康“医院为先”战略成效持续凸显
- 迅雷CTO李金波:致创业者的一封信
- python读取svg_使用Python / PIL读取SVG文件
- 在配有通道的计算机系统中,用户程序需要输出时,引起的中断是,计算机系统结构自考2009年7月真题...
- 个人小程序实现微信支付
- c语言中字符加上48是,【2017年整理】C语言字符型数据(4、5).doc
- 图像质量评价数据库TID2013连接
热门文章
- 3大类6种排序 插入排序 选择排序 冒泡排序 希尔排序 堆排序 快速排序 —————— 开开开山怪
- 10-Transformation
- 深恶痛绝……残忍虐杀何时终止?
- JS学习之路系列总结二阴阳阵(此文犹如武林之中的易筋经,是你驰骋IT界的武功心法,学会JS五大阵法就学会了JS,博主建议先学三才阵)...
- 如何用MATLAB编写简单的音乐程序
- Excel设置图片固定在某个单元格内部
- 切西瓜(空间划分问题)
- Entry name ‘META-INF/xxxxxxxx‘ collided 解决方法
- 图像分割-专有名词讲解
- java jsp实现网站访问量的统计