模拟餐馆点菜系统
你到一个餐馆去仔细研究一下餐馆的业务流程:餐馆事先准备好自己的招牌菜及一些常规的菜式,有营业场所,服务人员等;顾客来了以后,服务生先给客人找一张桌子坐下来,然后递上菜谱等待顾客点菜,顾客可以点一个菜,也可以退菜,完了之后结账走人,这张桌子又可以用来招待下一批顾客。自己设计程序模拟点菜系统。
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class Cmenu
{
int num;
string name;
float price;
string kind;
int sort;
public:
void getnum(int i);
void getname(string Name);
void getprice(float Price);
void getkind(string Kind);
void getsort(int SORT);
void menudisplay();
void selectdisplay();
float returnnum() {return num;}
string returnname() { return name;}
float returnprice() { return price;}
string returnkind() {return kind;}
int returnsort() { return sort;}
};
void Cmenu::getnum(int i)
{ num=i; }
void Cmenu::getname(string Name)
{ name=Name;}
void Cmenu::getprice(float Price)
{ price=Price;}
void Cmenu::getkind(string Kind)
{ kind=Kind; }
void Cmenu::getsort(int SORT)
{ sort=SORT; }
void Cmenu::menudisplay()
{cout<<num<<"\t "<<name<<"\t "<<kind<<"\t "<<price<<endl; }
void Cmenu::selectdisplay()
{cout<<num<<"\t "<<name<<"\t "<<kind<<"\t "<<price<<"\t "<<sort<<endl; }
float youhui(float sum,float point)
{
if(point>1.0)
{ sum=sum-point;}
if(point<=1.0)
{
sum=sum*point;}
return sum;
}
class array
{
public:
void getnum(int NUM);
void getsort(int SORT);
int returnnum() { return num; }
int returnsort() { return sort;}
private: int sort,num;
};
void array::getnum(int NUM)
{ num=NUM;}
void array::getsort(int SORT)
{sort=SORT;}
void main()
{
int i,j,id,m,q,z,sort,b;
int geshu;
int NUM;
string NAME,KIND;
float PRICE,POINT,sum=0;
Cmenu food[40];
ifstream f1("menu.txt");
for(j=0;j<40;j++)
{
f1>>NUM>>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(18);
food[1].getnum(2);
food[1].getkind("饮品");
food[1].getname(" 一一奶茶 ");
food[1].getprice(8);
food[2].getnum(3);
food[2].getkind("饮品");
food[2].getname(" 热牛奶 ");
food[2].getprice(8);
food[3].getnum(4);
food[3].getkind("饮品");
food[3].getname(" 橙汁 ");
food[3].getprice(10);
food[4].getnum(5);
food[4].getkind("甜点");
food[4].getname(" 布丁 ");
food[4].getprice(12);
food[5].getnum(6);
food[5].getkind("甜点");
food[5].getname(" 提拉米苏 ");
food[5].getprice(20);
food[6].getnum(7);
food[6].getkind("甜点");
food[6].getname(" 双皮奶 ");
food[6].getprice(8);
food[7].getnum(8);
food[7].getkind("甜点");
food[7].getname("黑森林蛋糕");
food[7].getprice(28);
food[8].getnum(9);
food[8].getkind("甜点");
food[8].getname(" 芝士蛋糕 ");
food[8].getprice(18);
food[9].getnum(10);
food[9].getkind("甜点");
food[9].getname(" 蛋挞 ");
food[9].getprice(4);
food[10].getnum(11);
food[10].getkind("甜点");
food[10].getname(" 慕斯蛋糕 ");
food[10].getprice(15);
food[11].getnum(12);
food[11].getkind("甜点");
food[11].getname(" 班戟 ");
food[11].getprice(25);
}
f1.close();
cout<<" "<<endl;
cout<<" *━*==*━*==*━*==*━*==*━欢迎光临一一甜品屋━*==*━*==*━*==*━*==*━*"<<endl<<endl<<endl;
for(;;)
{ cout<<"*==**==**==**==**==**==**==**==**==**==**==**==**==**==**==**==**==**==**==**==*"<<endl;
cout<<" 请选择您需要的服务功能 "<<endl;
cout<<"*==**==**==**==**==**==**==**==**==**==**==**==**==**==**==**==**==**==**==**==*"<<endl;
cout<<endl;
cout<<" *==* ┏━━━━━━━━━━━━━━━━━━━━━━━━┓ *==* "<<endl;
cout<<" *==* ┃ ┃ *==* "<<endl;
cout<<" *==* ┃ ┃ *==* "<<endl;
cout<<" *==* ┃ 0-----显示菜单里所有的菜的信息 ┃ *==* "<<endl;
cout<<" *==* ┃ ┃ *==* "<<endl;
cout<<" *==* ┃ 1-----在菜单里按类查找。 ┃ *==* "<<endl;
cout<<" *==* ┃ ┃ *==* "<<endl;
cout<<" *==* ┃ 2-----点餐。 ┃ *==* "<<endl;
cout<<" *==* ┃ ┃ *==* "<<endl;
cout<<" *==* ┗━━━━━━━━━━━━━━━━━━━━━━━━┛ *==* "<<endl<<endl;
cout<<endl;
cout<<"================================================================================"<<endl;
cin>>q;
if(q>2) {system("cls");
cout<<"请输入正确序号"<<endl;}
if(q==0)
{
cout<<"-------------------------------菜单---------------------------"<<endl;
cout<<"甜品的编号 甜品 类别 单价/元 "<<endl;
for(j=0;j<40;j++)
food[j].menudisplay();
cout<<"-------------------------------------------------------------"<<endl;
}
if(q==1)
{
cout<<"1--------------饮品"<<endl;
cout<<"2--------------甜点"<<endl;
cin>>z;
if(z>2) {system("cls");cout<<"请输入正确序号"<<endl;}
switch(z)
{
case 1: for(j=0;j<40;j++)
if(food[j].returnkind()=="饮品") food[j].menudisplay();break;
case 2: for(j=0;j<40;j++)
if(food[j].returnkind()=="甜点") food[j].menudisplay();break;
}
}
if(q==2) break;
}
cout<<"你要点多少样甜品?"<<endl;
cin>>i;
array *a=new array[i] ;
for(j=0;j<i;j++)
{
cout<<"请选择第"<<j+1<<"个甜品的编号:"<<endl;
cin>>id;
cout<<"请输入数量:"<<endl;
cin>>sort;
a[j].getnum(id);
a[j].getsort(sort);
}
for(;;)
{
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" ┏━━━━━━━━━━━━━━━━━━━━━┓ "<<endl;
cout<<" ┃ ┃ "<<endl;
cout<<" ┃ ┃ "<<endl;
cout<<" ┃ 1--------增加甜品 ┃ "<<endl;
cout<<" ┃ 2--------删除一个甜品 ┃ "<<endl;
cout<<" ┃ 3--------输出甜品信息并保存 ┃ "<<endl;
cout<<" ┃ 4--------计算消费金额 ┃ "<<endl;
cout<<" ┃ 5--------退出系统 ┃ "<<endl;
cout<<" ┃ ┃ "<<endl;
cout<<" ┃ ┃ "<<endl;
cout<<" ┗━━━━━━━━━━━━━━━━━━━━━┛ "<<endl;
cin>>b;
if(b<1||b>4) {system("cls");cout<<"请输入正确序号"<<endl;}
if(b==1)
{
cout<<"你要增加多少样甜品?"<<endl;
cin>>geshu;
array *p=new array[i];
for(j=0;j<i;j++)
{ p[j].getnum(a[j].returnnum());
p[j].getsort(a[j].returnsort());
}
delete [] a;
i=i+geshu;
a=new array[i];
for(j=0;j<i-geshu;j++)
{ a[j].getnum(p[j].returnnum());
a[j].getsort(p[j].returnsort());
}
delete [] p;
for(j=i-geshu;j<i;j++)
{
cout<<"请输入增加的一样甜品的编号和数量:"<<endl;
cin>>id;
cin>>sort;
a[j].getnum(id);
a[j].getsort(sort);
}
cout<<"增加甜品成功。"<<endl;
}
if(b==2)
{
cout<<"请输入要删除的甜品的编号:"<<endl;
cin>>id;
for(j=0;j<i;j++)
{
if(a[j].returnnum()==id)
{
m=j;
for(j=m;j<i;j++) { a[j]=a[j+1];}
i--;
cout<<"删除甜品成功。"<<endl;break;
}
}
if(j==i)
{cout<<"你没有点这个甜品!!错误。"<<endl;
}
}
if(b==3)
{ char baocun;
cout<<"甜品的编号 甜品名 类别 单价/元 数量"<<endl;
for(m=0;m<i;m++)
{
for(j=0;j<40;j++)
{
if(a[m].returnnum()==food[j].returnnum())
{ food[j].getsort(a[m].returnsort());
food[j].selectdisplay();
}
}
}
cout<<"是否保存并退出?"<<endl;
cout<<"请按y(是)或n(否)"<<endl;
cin>>baocun;
if(baocun=='y')
{ ofstream file("select.txt");
file<<"甜品的编号 甜品名 类别 单价/元 数量"<<endl;
for(m=0;m<i;m++)
{
for(j=0;j<40;j++)
{
if(a[m].returnnum()==food[j].returnnum())
{ file<<food[j].returnnum()<<" "<<food[j].returnname()<<" "<<food[j].returnkind()<<
" "<<food[j].returnprice()<<" "<<food[j].returnsort()<<endl;
}
}
}
file.close();
cout<<"已成功保存!"<<endl;
break;}
}
if(b==4) {
sum=0;
cout<<"你是否拥有优惠券?"<<endl;
cout<<"0----------是"<<endl;
cout<<"1----------否"<<endl;
cin>>q;
for(m=0;m<i;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<<"请输入正确序号"<<endl;}
if(q==0)
{
cout<<"请输入优惠券的优惠金额(大于1)或者是优惠的折扣比:"<<endl;
cin>>POINT;
cout<<"打折后的总的金额是:"<<youhui(sum,POINT)<<"元"<<endl;
}
if(q==1)
{
cout<<"总的金额是:"<<sum<<"元"<<endl;}
}
if(b==5)
{system("cls");
cout<<endl;
cout<<endl;
cout<<endl;
cout<<"***************************谢谢您的光临,一一甜品屋期望您下次的惠顾*****************************"<<endl;
cout<<endl;
cout<<endl;
break;}
}
}
因为一直在待审核,所以有图片版的还在审核。
开始看到这个课程设计完全没有头绪不知道这么做,上网看了很多有关的点菜模拟程序,但是网上的都是很复杂比较厉害的,看不太懂。但是基本的点菜流程还是知道了,然后按照那个流程模仿着自己去写程序,但还是不是很好。