C++餐厅管理系统.docx
《C++餐厅管理系统.docx》由会员分享,可在线阅读,更多相关《C++餐厅管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
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<""<}
}
}
();
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++实验的时候,敲错一个字母甚至是一个标点符号,就难以建立,难以运行。
那可真是惨状啊!
老师早已做下一步,可能你还停留在原地,跟不上老师的进程,耽误实习任务,所以要记得认真,这样可以接