C++餐厅管理系统.docx
- 文档编号:16771491
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:21
- 大小:50.26KB
C++餐厅管理系统.docx
《C++餐厅管理系统.docx》由会员分享,可在线阅读,更多相关《C++餐厅管理系统.docx(21页珍藏版)》请在冰点文库上搜索。
C++餐厅管理系统
北华大学
C++课程实习报告
餐厅点菜系统
学院:
电气信息工程学院
专业:
电子信息工程
班级:
学号:
姓名:
指导教师:
餐厅点菜系统
一、需求分析
1、该程序对于餐厅菜单进行管理,显示所有菜,顾客可以点餐厅的所有菜,也可以按类查找,自动生成菜单,自动计算消费金额,可以使用优惠劵
2、显示菜的编号、菜名、类别和单价
3、菜可以按类查找:
炒菜、炒饭和面类
4、点菜
a)增加点菜
b)删除一个点菜
c)输出点菜信息并保存
d)计算消费金额
优惠卷
1)金额优惠
2)打折优惠
二、设计实现
该餐厅点菜系统共有两个类和一个构造函数,Cmenu类(菜的属性)和array类(菜的数组),与函数youhui(计算有优惠卷时的价格)
在Cmenu类中,
定义:
name菜的编号,name菜名,price菜的单价,kind菜的种类,sort菜的数量,函数getnum录入菜的编号
函数实现:
函数getname实现:
录入菜的名字,
函数getprice实现:
录入菜的单价,
函数getkind实现:
录入菜的类别,
函数getsort实现:
录入所点菜的数量,
函数menudisplay实现:
菜谱显示,
函数selectdisplay实现:
对所点的菜进行输出,
函数returnnum实现:
返回菜的编号,
函数returnname实现:
返回菜名,
函数returnprice实现:
返回菜的单价,
函数returnkind实现:
返回菜的类别,
函数returnsort实现:
返回菜的数量。
在array类中,
定义:
sort菜的类别,num菜的数量
函数实现:
函数getnum实现:
初始化num,
函数getsort实现:
初始化sort,
函数returnnum实现:
返回num,
函数returnsort实现:
返回sort
主函数main的运行流程图:
三、测试结果
首页:
菜的信息:
按类查找:
炒菜
炒饭
面类
点菜
菜的信息:
增加点菜:
删除点菜:
计算消费金额:
1、没有拥有优惠卷
2、拥有优惠卷:
a)20元的优惠卷
b)0.85折优惠卷
退出系统:
四、结论及需改进的问题
餐厅点菜系统是在图书管理系统的基础上,慢慢自己改进的,其中增加点菜,删除点菜,输出菜单,按类查询都是按照图书管理系统中增加图书,删除图书,显示图书,按类查询中改进的,其中最重要的是菜单的录用,自己想了很多方法,最后用文本输入函数做的,把菜单完全的输入进去,还有一点新颖的地方,源于优惠劵的使用,不仅可以使用金额的优惠,并且还会使用打折卷的优惠,虽然这里面的算法很简单,但是增加的程序的实用性。
我感觉不足的是,应该有一个会进人后台的功能,进去可以增加菜单里的菜,删除菜,更改类别和金额,更方便餐厅的管理者,当然进人的时候,加入管理员密码。
餐厅点菜系统C++代码
#include
#include
#include
#include
usingnamespacestd;
classCmenu//创建Cmenu类菜的属性
{
intnum;//菜的编号
stringname;//菜名
floatprice;//菜的单价
stringkind;//菜的种类
intsort;//菜的数量
public:
voidgetnum(inti);//录入菜的编号
voidgetname(stringName);//录入菜的名字
voidgetprice(floatPrice);//录入菜的单价
voidgetkind(stringKind);//录入菜的类别
voidgetsort(intSORT);//录入所点菜的数量
voidmenudisplay();//菜谱显示
voidselectdisplay();//对所点的菜进行输出
floatreturnnum()//返回菜的编号
{returnnum;}
stringreturnname()//返回菜名
{returnname;}
floatreturnprice()//返回菜的单价
{returnprice;}
stringreturnkind()//返回菜的类别
{returnkind;}
intreturnsort()//返回菜的数量
{returnsort;}
};
voidCmenu:
:
getnum(inti)//录入菜的编号函数
{
num=i;
}
voidCmenu:
:
getname(stringName)//录入菜的名字
{
name=Name;
}
voidCmenu:
:
getprice(floatPrice)//录入菜的单价
{
price=Price;
}
voidCmenu:
:
getkind(stringKind)//录入菜的类别
{
kind=Kind;
}
voidCmenu:
:
getsort(intSORT)//录入所点菜的数量
{
sort=SORT;
}
voidCmenu:
:
menudisplay()//菜单的信息显示
{
cout< } voidCmenu: : selectdisplay()//对所点的菜进行输出 { cout< } floatyouhui(floatsum,floatpoint)//函数计算有优惠卷时的价格 { if(point>1.0) { sum=sum-point; } if(point<=1.0) { sum=sum*point; } returnsum; } classarray//创建一个array数组 { public: voidgetnum(intNUM);//初始化num的函数 voidgetsort(intSORT);//初始化sort的函数 intreturnnum()//返回num的函数 {returnnum;} intreturnsort()//返回sort的函数 {returnsort;} private: intsort,num; }; voidarray: : getnum(intNUM)//初始化num的函数体 { num=NUM; } voidarray: : getsort(intSORT)//初始化sort的函数体 { sort=SORT; } voidmain()//主函数 { inti,id,m,q,z,sort,b; charj; intgeshu; intNUM; stringNAME,KIND; floatPRICE,POINT,sum=0; Cmenufood[40];//创建Cmenu类的对象数组 ifstreamf1("menu.txt");//文件输入菜单信息 for(j=0;j<12;j++) { f1>>NUM; f1>>KIND; f1>>NAME; f1>>PRICE; food[j].getnum(NUM); food[j].getkind(KIND); food[j].getname(NAME); food[j].getprice(PRICE); food[0].getnum (1); food[0].getkind("炒菜"); food[0].getname("麻辣豆腐"); food[0].getprice(8); food[1].getnum (2); food[1].getkind("炒菜"); food[1].getname("烧茄子"); food[1].getprice(10); food[2].getnum(3); food[2].getkind("炒菜"); food[2].getname("香辣肉丝"); food[2].getprice(15); food[3].getnum(4); food[3].getkind("炒菜"); food[3].getname("锅包肉"); food[3].getprice(15); food[4].getnum(5); food[4].getkind("炒饭"); food[4].getname("蛋炒饭"); food[4].getprice(5); food[5].getnum(6); food[5].getkind("炒饭"); food[5].getname("扬州炒饭"); food[5].getprice(6); food[6].getnum(7); food[6].getkind("炒饭"); food[6].getname("火腿炒饭"); food[6].getprice(6); food[7].getnum(8); food[7].getkind("炒饭"); food[7].getname("鱿鱼炒饭"); food[7].getprice(7); food[8].getnum(9); food[8].getkind("面类"); food[8].getname("刀削面"); food[8].getprice(5); food[9].getnum(10); food[9].getkind("面类"); food[9].getname("羊肉面"); food[9].getprice(8); food[10].getnum(11); food[10].getkind("面类"); food[10].getname("热干面"); food[10].getprice(5); food[11].getnum(12); food[11].getkind("面类"); food[11].getname("手擀面"); food[11].getprice(6); } f1.close(); cout<<"━*━*━*━*━*━*━*━*━*━*━*━欢迎光临本店━*━*━*━*━*━*━*━*━*━*━*"< while (1) { cout<<"━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━"< cout< cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━┓"< cout<<"┃┃"< cout<<"┃┃"< cout<<"┃0---------------显示菜单里所有的菜的信息┃"< cout<<"┃1---------------在菜单里按类查找。 ┃"< cout<<"┃2---------------点菜。 ┃"< cout<<"┃┃"< cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━┛"< cout< cout<<"━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━"< cin>>q; if(q==0)//显示菜单里所有的菜名 { cout<<"-------------------------------菜单---------------------------"< cout<<"菜的编号菜名类别单价/元"< for(j=0;j<12;j++) food[j].menudisplay(); cout<<"-------------------------------------------------------------"< } if(q==1)//在菜单里按类查找 { cout<<"1--------------炒菜"< cout<<"2--------------炒饭"< cout<<"3--------------面类"< cin>>z; if(z>3) { system("cls"); cout<<"请输入正确序号"< } switch(z) { case1: //输出炒菜类 for(j=0;j<40;j++) { if(food[j].returnkind()=="炒菜") food[j].menudisplay(); } break; case2: //输出炒饭类 for(j=0;j<40;j++) { if(food[j].returnkind()=="炒饭") food[j].menudisplay(); } break; case3: //输出面类 for(j=0;j<40;j++) { if(food[j].returnkind()=="面类") food[j].menudisplay(); } break; } } if(q>2) { system("cls"); cout<<"请输入正确序号"< } if(q==2)break;//退出进入点菜环节 } cout<<"你要点多少个菜"< cin>>i; array*a=newarray[i];//动态创建i个array类的数组来储存菜的编号和数量 for(j=0;j { cout<<"请选择第"< "< cin>>id;//输入每个菜的编号 cout<<"请输入数量: "< cin>>sort;//输入每个菜的数量 a[j].getnum(id); a[j].getsort(sort); } for(;;)//对定的菜进行操作 { cout<<""< cout<<""< cout<<"┏━━━━━━━━━━━━━━━━━━━━━┓"< cout<<"┃┃"< cout<<"┃┃"< cout<<"┃1--------增加点菜┃"< cout<<"┃2--------删除一个菜┃"< cout<<"┃3--------输出点菜信息并保存┃"< cout<<"┃4--------计算消费金额┃"< cout<<"┃0--------退出系统┃"< cout<<"┃┃"< cout<<"┃┃"< cout<<"┗━━━━━━━━━━━━━━━━━━━━━┛"< cin>>b; if(b==1) { cout<<"你要增加多少个菜? "< cin>>geshu; array*p=newarray[i]; for(j=0;j { p[j].getnum(a[j].returnnum()); p[j].getsort(a[j].returnsort()); } delete[]a; i=i+geshu; a=newarray[i]; for(j=0;j {a[j].getnum(p[j].returnnum()); a[j].getsort(p[j].returnsort()); } delete[]p; for(j=i-geshu;j { cout<<"请输入增加的一个菜的编号和数量: "< cin>>id; cin>>sort; a[j].getnum(id); a[j].getsort(sort); } cout<<"增加点菜成功。 "< } if(b==2) { cout<<"请输入要删除的菜的编号: "< cin>>id; for(j=0;j { if(a[j].returnnum()==id) { m=j; for(j=m;j { a[j]=a[j+1]; } i--; cout<<"删除点菜成功。 "< } } if(j==i) { cout<<"你没有点这个菜! ! 错误。 "< } } if(b==3)//输出所点菜的信息 {charbaocun; cout<<"菜的编号菜名类别单价/元数量"< for(m=0;m { for(j=0;j<40;j++) { if(a[m].returnnum()==food[j].returnnum()) {food[j].getsort(a[m].returnsort()); food[j].selectdisplay(); } } } cout<<"是否保存并退出? "< cout<<"请按y(是)或n(否)"< cin>>baocun; if(baocun=='y') {ofstreamfile("select.txt"); file<<"菜的编号菜名类别单价/元数量"< for(m=0;m { for(j=0;j<40;j++) { if(a[m].returnnum()==food[j].returnnum()) {file< ""< } } } file.close(); cout<<"已成功保存! "< break;} } if(b==4){ sum=0; cout<<"你是否拥有优惠券? "< cout<<"0----------是"< cout<<"1----------否"< cin>>q; for(m=0;m { for(j=0;j<40;j++) { if(a[m].returnnum()==food[j].returnnum()) {food[j].getsort(a[m].returnsort()); sum=sum+food[j].returnprice()*food[j].returnsort();//计算所点菜的总金 } } } if(q>1){system("cls");cout<<"请输入正确序号"< if(q==0) { cout<<"请输入优惠券的优惠金额(大于1)或者是优惠的折扣比: "< cin>>POINT; cout<<"打折后的总的金额是: "< } if(q==1) { cout<<"总的金额是: "< } if(b==0) {system("cls");//退出 cout< cout< cout< cout<<"*****************谢谢使用************谢谢使用****************谢谢使用****************"< cout< cout< break;} if(b>4){system("cls");cout<<"请输入正确序号"< } } 实习心得 通过这次C++实习,我确实学到了许多方面的知识,不仅仅包含课本上现有的基础知识点,更重要的是亲自实践,动手操作编写程序以及程序的调试。 在这期间锻炼了我的动手能力,开拓了思维,更培养了独立思考问题的能力。 因此我才有了以下六点心得和体会: 第一: 不管做任何事都要有勇气,不要对不可预知的事说不,要知道只有不恐惧才会有收获。 C++程序编写的时候比较复杂,而且内容也比较多,所以我们不应该被这种问题吓到,只要我们认真思考,就可以发现他其实并不是我们想象的那么难! 第二: 要记得做任何事都要认真,粗心可真是吃大亏。 尤其是在做C++实验的时候,敲错一个字母甚至是一个标点符号,就难以建立,难以运行。 那可真是惨状啊! 老师早已做下一步,可能你还停留在原地,跟不上老师的进程,耽误实习任务,所以要记得认真,这样可以接近成功! 第三: 要多思考,虽然老
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 餐厅 管理 系统