C课程设计自助点餐系统.docx
- 文档编号:4542332
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:11
- 大小:18.16KB
C课程设计自助点餐系统.docx
《C课程设计自助点餐系统.docx》由会员分享,可在线阅读,更多相关《C课程设计自助点餐系统.docx(11页珍藏版)》请在冰豆网上搜索。
C课程设计自助点餐系统
文档编制序号:
[KKIDT-LLE0828-LLETD298-POI08]
C课程设计自助点餐系统
面向对象程序课程设计
(2014/2015学年第一学期第20周)
指导教师:
庄巧莉、杨东鹤
班级:
计算机科学与技术13
(1)
学号:
姓名:
面向对象程序课程设计
一、题目
二、需求分析
三、系统结构图
四、类的设计
五、程序代码与说明
六、运行结果与分析
七、心得与体会
一:
题目
自助点餐系统
二:
需求分析
有一个小型餐厅,该餐厅提供即时就餐和外卖服务。
现在这个餐厅打算使用自助点餐系统,让顾客自己点餐,实现以下功能。
1、根据顾客的选择正确打出账单
2、正确统计出每一天的及时就餐和外卖的销售情况
3、实现对餐厅菜式和价格的有效管理
4、考虑点餐的自动排序问题,使顾客可以实时查询到自己菜单处理情况
三:
系统结构图
四:
类的设计
Client类:
客户类,包含客户属性姓名,电话号码,费用等信息,登记客户,记录客户订单信息
ClientManager类:
客户管理类,用于管理客户,记录客户数量,存储客户菜单信息,查询客户订单信息,统计订单
FeeManager类:
用于记录就餐、外卖的销售费用,统计收入
Food类:
餐厅食物的类,包含食物名称和价格
FoodManager类:
管理菜单,用于添加食物,修改食物,删除食物,记录不同食物的信息,呈现菜单
MenuView类:
用于打印各种操作界面
五:
程序代码与说明
#ifndefCLIENT
#defineCLIENT
#include""
#include
usingnamespacestd;
classClient
{
private:
intnumber;etName()<<"\t"< } cout<<"总价: \t\t"< } char*Client: : getName() { returnname; } voidClient: : changNum() { intn; intnumss; cout<<"请输入食物序号: ";cin>>n; cout<<"您选择了食物: "<<(n-1)< cout<<"请输入数量: ";cin>>numss; fee+=(numss-num[n-1])*(n-1)); num[n-1]=numss; } voidClient: : deleFood() { intn; cout<<"请输入食物序号: ";cin>>n; cout<<"您选择了食物: "<<(n-1)< fee-=(num[n-1])*(n-1)); for(inti=n-1;i<();i++) { [i]=[i+1]; num[i]=num[i+1]; } ()-1); } #ifndefCLIENTMANAGER #defineCLIENTMANAGER #include"" #include usingnamespacestd; #defineMAX_CLIENT_NUM60etType()==1) { cout<<"第"<<++count<<"单: "< "< if(strcmp(client[i].getName(),s)==0)th=count; } for(inti=0;i if(client[i].getType()==2) { cout<<"第"<<++count<<"单: "< "< if(strcmp(client[i].getName(),s)==0)th=count; } cout<<"您当前排在第"< cout<<"----------------------------------"< } voidClientManager: : showAll() { for(inti=0;i { if(client[i].getType()==1) { cout<<"订单号: "< client[i].showClientMessage(); cout< } } for(inti=0;i { if(client[i].getType()==2) { cout<<"订单号: "< client[i].showClientMessage(); cout< } } } #ifndefFOOD #defineFOOD classFood { private: char*name;etName()<<"\t"< } voidFoodManager: : changePrice() { char*s; intcode; s=newchar[20]; doublep; cout<<"请输入食物编号: "; cin>>code; s=food[code].getName(); cout<<"您选择了食物: "< cout<<"请输入价格: "; cin>>p; for(inti=0;i if(strcmp(food[i].getName(),s)==0) { food[i].setPrice(p); cout<<"修改成功"< return; } cout<<"没有这种食物,修改失败"< } voidFoodManager: : deleteFood() { char*s; s=newchar[20]; cout<<"请输入菜名: "; cin>>s; for(inti=0;i if(strcmp(food[i].getName(),s)==0) { cout<<"成功删除"< total--; for(intt=i;t food[t]=food[t+1]; return; } cout<<"没有这种食物"< } voidFoodManager: : addFood(char*s,doublep) { food[total++]=Food(s,p); } doubleFoodManager: : getPriceByName(char*s) { for(inti=0;i if(strcmp(food[i].getName(),s)==0) returnfood[i].getPrice(); returnfalse; } intFoodManager: : getListByName(char*s) { for(inti=0;i if(strcmp(food[i].getName(),s)==0) returni; returnfalse; } intFoodManager: : getTotal() { returntotal; } char*FoodManager: : getNameByList(intlist) { returnfood[list].getName(); } voidFoodManager: : setTotal(intx) { total=x; } #ifndefFEEMANAGER #defineFEEMANAGER classFeeManager { private: doublejiuCanFee;etType (1); (); while(true) { (); intchoices; choices=(); if(choices==1)etName(); cout<<"您选择了食物: "< prices=(n); cout<<"请输入数量: ";cin>>nums; [curClient].(Food(n,prices)); [curClient].addFee(nums*prices); [curClient].num[[curClient].()-1]=nums; cout<<"当前的总费用是"<<[curClient].getFee()< } elseif(choices==2)howClientMessage(); mendDingDanChoice=(); if(mendDingDanChoice==1) { [curClient].changNum(); } elseif(mendDingDanChoice==2) { [curClient].deleFood(); } elseif(mendDingDanChoice==3)break; } } elseif(choices==3)etFee());howClientMessage();etType (2); (); while(true) { (); intchoices; choices=(); if(choices==1)etName(); cout<<"您选择了食物: "< prices=(n); cout<<"请输入数量: ";cin>>nums; [curClient].(Food(n,prices)); [curClient].addFee(nums*prices); [curClient].num[[curClient].()-1]=nums; cout<<"当前的总费用是"<<[curClient].getFee()< } elseif(choices==2)howClientMessage(); mendDingDanChoice=(); if(mendDingDanChoice==1) { [curClient].changNum(); } elseif(mendDingDanChoice==2) { [curClient].deleFood(); } elseif(mendDingDanChoice==3)break; } } elseif(choices==3)etFee());howClientMessage();etName()<<"\t"<<[i].getPrice(); if(i! =()-1)) ioFile< } (); cout<<"成功退出系统"< system("pause"); return0; } } } 六: 运行结果与分析 从文件导入菜单,内容如下 瓜丝儿10山鸡丁儿12拌海蜇19龙须菜46 炝冬笋84玉兰片27浇鸳鸯115烧鱼头26 烧槟子34烧百合31炸豆腐26炸面筋4 拔丝山药10糖焖莲子18酿山药88山东煎饼3 草泥马100金华火腿99 运行程序,进入主界面: 选择: 1顾客服务再选择1新顾客点餐登记客户信息姓名 接下来弹出客户服务选择界面 进入服务选择界面,选择1就餐 弹出菜单,有食物编号,名称,价格 选择1加菜 选择食物编号0瓜丝儿,数量3 同理,再添加食物金华火腿*1山鸡丁儿*4山东煎饼*5 选择2,修改订单 选择1,修改食物数量 选择瓜丝儿,数量修改为1 选择2删除食物山东煎饼 修改后的订单如上,选3退出修改,再选3提交订单,此时输出客户订单信息,并返回主界面,如下所示 同理,继续添加客户如下 现在点1,顾客服务2查询订单,查询猪八戒的订单 订单排在第3,这里就餐和外卖进行了排序,就餐在外卖前面,就餐和外卖则按照先后顺利排列 选择2: 退出订单查询 选择2,食物管理 添加食物冰糖葫芦价格46,结果如下 多出了第18道菜,冰糖葫芦 选择2,修改食物价格,把浇鸳鸯的价格改为1 先择3删除食物草泥马改变后的菜单列表如下 选择4,退出食物管理进入主菜单 选择3今日反馈 显示今日的销售额,显示所有订单详情,按照就餐和外卖先后顺序排序 选择4退出系统 七: 心得与体会 通过设计这个自主点餐系统,我对C++面向对面的思想和对于类的运用有了更深的理解。 编写程序时遇到了各种问题,我通过复习课本上的知识,对于自己所出现的问题逐一解决,巩固了知识点,提升了理论知识的运用能力及解决问题的能力。 程序设计和调试程序的能力都有很大的提升。 考核成绩评定表 平时成绩 答辩成绩 总成绩 如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。 copyright@ 2008-2022 冰点文档网站版权所有 经营许可证编号:鄂ICP备2022015515号-1