程序设计点菜

来源:互联网 发布:抢红包软件 编辑:程序博客网 时间:2024/06/10 14:57
#include<iostream>using namespace std;//class Waiter//{};class MENU{private:int num;char name[30];float price;public:MENU();void Setmenu(int nums,char *names,float prices);int Getnum();char *Getname();float Getprice();};class TABLE{private:int i;int order[32];int number[32];MENU me[32];public:TABLE();void Seti(int n){i=n;}int Geti(){return i;}void Setorder(int orders[32]);int *Getorder();void Setnumber(int numbers[32]);int *Getnumber();void Printmenu();void Getlassorder();void Printlassorder();void Getmore_order();void Getless_order();void GetPay();};class RESTAURANT{private:TABLE tab[31];public:RESTAURANT(){}void Service();       void Searchtable();     //查桌子void Choose();          //选桌子void Order();           //点菜void More();            //加菜  void Less();            //退菜void Pay();            //买单};//MENU一族的成员******************************************************MENU::MENU(){num=0;name[0]='\0';price=0.0;}void MENU::Setmenu(int nums,char *names,float prices){num=nums;strcpy(name,names);price=prices;}int MENU::Getnum(){return num;}char *MENU::Getname(){return name;}float MENU::Getprice(){return price;}//TABLE一族的成员*****************************************************TABLE::TABLE():i(0){for(int i=0;i<32;i++){order[i]=0;number[i]=0;}me[1].Setmenu(1," 农家炒肉饭",10);me[2].Setmenu(2," 爆辣鸡丁饭",15);me[3].Setmenu(3," 葱爆肥肠饭",15);me[4].Setmenu(4," 香辣牛肉饭",18);me[5].Setmenu(5," 麻辣排骨饭",18);me[6].Setmenu(6," 糖醋排骨饭",18);me[7].Setmenu(7," 油淋排骨饭",20);me[8].Setmenu(8," 爆炒鸡杂饭",20);    me[9].Setmenu(9," 仙鹤烩熊掌",30);    me[10].Setmenu(10,"干烧网鲍片",40);me[11].Setmenu(11,"清汤雪耳  ",90);me[12].Setmenu(12,"菠萝拼火鹅",50);me[13].Setmenu(13,"月中丹桂  ",60);me[14].Setmenu(14,"露笋拼鸡肉",70);me[15].Setmenu(15,"凤入竹林  ",80);me[16].Setmenu(16,"百花酿鱼肚",82);me[17].Setmenu(17,"清汤雪耳  ",90);me[18].Setmenu(18,"清蒸海鲜  ",90);}void TABLE::Setorder(int orders[32]){for(int i=1;i<32;i++)order[i]=orders[i];}int *TABLE::Getorder(){int *p;p=order;return p;}void TABLE::Setnumber(int numbers[32]){for(int i=1;i<32;i++)number[i]=numbers[i];}int *TABLE::Getnumber(){int *p;p=number;return p;}void TABLE::Printmenu(){/*cout<<"【菜的编号】  【菜名】                【单价】 "<<endl;for(int i=1;i<11;i++){if(me[i].Getname()==0&&me[i].Getprice()==0)break;cout<<"     "<<me[i].Getnum()<<"       "<<me[i].Getname()<<"               "<<me[i].Getprice()<<"元/份"<<endl;}*/cout<<"    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  "<<endl;cout<<"    ┃【菜单号】     【菜名】                【单价】         ┃     "<<endl;for(int i=1;i<19;i++){if(me[i].Getname()==0&&me[i].Getprice()==0)break;cout<<"    ┃    "<<me[i].Getnum()<<"          "<<me[i].Getname()<<"              "<<me[i].Getprice()<<"元/份"<<"         ┃"<<endl;}cout<<"    ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛         "<<endl;}void TABLE::Getlassorder()//点菜{int num,number;int ord[32],nums[32];int j;while(j!=1){cout<<"请输入菜单号:";cin>>num;cout<<"要点几份:";cin>>number;if(num>18||num<1||number<0){cout<<"您输入有误,请重新输入:"<<endl;continue;}elsej=1;if(ord[num]==1)nums[num]+=number;else{ord[num]=1;nums[num]=number;}}TABLE::Setorder(ord);TABLE::Setnumber(nums);}void TABLE::Printlassorder(){/*for(int i=1;i<32;i++){if(order[i]==1){cout<<"**********   "<<me[i].Getnum()<<"   "<<me[i].Getname()<<"  "<<me[i].Getprice()<<"       份数 :"<<number[i]<<"   *********"<<endl;}elsecontinue;}*/cout<<"      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  "<<endl;for(int i=1;i<32;i++){if(order[i]==1){cout<<"      ┃"<<me[i].Getnum()<<"   "<<me[i].Getname()<<"  "<<me[i].Getprice()<<"元/份       份数 :"<<number[i]<<"                  ┃"<<endl;}elsecontinue;}cout<<"      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛         "<<endl;}void TABLE::Getmore_order()//加菜{int num=0,numbers=0;int j=0;while(j!=1){cout<<"请输入菜单号:";cin>>num;cout<<"要点几份:";cin>>numbers;if(num>18||num<1||numbers<0){cout<<"您输入有误,请重新输入:"<<endl;continue;}elsej=1;if(order[num]==1)number[num]+=numbers;else{order[num]=1;number[num]=numbers;}}}void TABLE::Getless_order()//退菜{int num,numbers;int j=0;while(j!=1){cout<<"请输入菜单号:";cin>>num;cout<<"要退几份:";cin>>numbers;if(num>18||num<1||numbers<0){cout<<"您输入有误,请重新输入:"<<endl;continue;}elsej=1;if(order[num]==1){number[num]-=numbers;if(number[num]<0)number[num]=0;}else{num=0;numbers=0;continue;}num=0;numbers=0;}}void TABLE::GetPay()//买单{double m[32];int i;for(i=1;i<32;i++){m[i]=0;}for(i=1;i<32;i++){if(order[i]==1)m[i]=me[i].Getprice()*number[i];elsecontinue;}for(i=2;i<32;i++){if(m[i]>=0){m[1]+=m[i];}elsecontinue;}cout<<"您应付"<<m[1]<<"元."<<endl;for(i=1;i<32;i++){order[i]=0;number[i]=0;}}//RESTAURANT一族的成员************************************************void RESTAURANT::Service(){cout<<"━*━*━*━*━*━*━*━*━*━*━欢迎光临━*━*━*━*━*━*━*━*━*━*━"<<endl;int j=0;int k=1;while(k!=0){cout<<"            ┏━━━━━━━━━━━━━━━━━━━━━━━┓    "<<endl;                                           cout<<"            ┃    1--查桌子      2--选桌子     3--点菜      ┃    "<<endl;cout<<"            ┃                                              ┃    "<<endl;cout<<"            ┃    4--加菜        5--退菜       6--买单      ┃    "<<endl;cout<<"            ┃                                              ┃    "<<endl;cout<<"            ┃    7--退出                                   ┃    "<<endl;  cout<<"            ┗━━━━━━━━━━━━━━━━━━━━━━━┛    "<<endl;  cout<<endl;cout<<"请输入您要服务的号码:";cin>>j;cout<<endl;while(j<0||j>7){cout<<"您输入有误,请重新输入:";cin>>j;cout<<endl;}switch(j){case 1:Searchtable();break;case 2:Choose();break;case 3:Order();break;case 4:More();break;case 5:Less();break;case 6:Pay();break;case 7:k=0;cout<<"谢谢您的光临!"<<endl;default:break;}}}void RESTAURANT::Searchtable(){cout<<"现在为您服务查找空桌子..."<<endl;cout<<endl;int i;for(i=1;i<=30;i++){if(tab[i].Geti()==0)cout<<i<<"号桌子没有客人!"<<endl;elsecout<<i<<"号桌子已经有客人!**********"<<endl;cout<<endl;}}void RESTAURANT::Choose(){int i=0,n=0;for(i=1;i<31;i++){if(tab[i].Geti()==0){cout<<i<<"号桌子没有客人!"<<endl;}else{cout<<i<<"号桌子已经有客人!"<<endl;}cout<<endl;}cout<<"现在为您服务选桌..."<<endl;cout<<endl;cout<<"请在1~30号中选择桌子号码:";cin>>n;cout<<endl;while(tab[n].Geti()==1){cout<<"您输入的号码有误,请重新输入:";cin>>n;cout<<endl;}tab[n].Seti(1);cout <<"您刚才选的是 "<< n <<"号桌子."<<endl;cout <<endl;}void RESTAURANT::Order(){for(int i=1;i<31;i++){if(tab[i].Geti()==0){if(i==30){cout<<"对不起,您还没选桌,请先选桌."<<endl;cout<<endl;}else continue;}elseif(tab[i].Geti()==1){int n=0;cout<<"请您再次输入您的桌子的号码:";cin>>n;cout<<endl;while(tab[n].Geti()!=1){cout<<"您输入的桌子号码有误,请重新输入:";cin>>n;cout<<endl;}cout<<"现在为您服务点菜..."<<endl;cout<<endl;cout<<"━*━*━*━*━*━*━*━*━*━*━健康餐馆菜单━*━*━*━*━*━*━*━*━*━*━"<<endl;tab[n].Printmenu();cout<<"请问您想点什么菜?"<<endl;tab[n].Getlassorder();cout<<"您刚才点的菜有:"<<endl;tab[n].Printlassorder();break;}}}void RESTAURANT::More(){for(int i=1;i<31;i++){if(tab[i].Geti()==0){if(i==30){cout<<"对不起,您还没选桌,请先选桌."<<endl;cout<<endl;}else continue;}else{int n;cout<<"现在为您服务加菜..."<<endl;cout<<"请您再次输入您的桌子的号码:";cin>>n;cout<<endl;while(tab[n].Geti()!=1){cout<<"您输入的桌子号码有误,请重新输入:";cin>>n;cout<<endl;}cout<<"这些是您刚才点的菜:"<<endl;tab[n].Printlassorder();cout<<endl;cout<<"━*━*━*━*━*━*━*━*━*━*━健康餐馆菜单━*━*━*━*━*━*━*━*━*━*━"<<endl;tab[n].Printmenu();cout<<"请问您想加些什么菜呢?"<<endl;tab[n].Getmore_order();tab[n].Printlassorder();break;}}}void RESTAURANT::Less(){for(int i=1;i<31;i++){if(tab[i].Geti()==0){if(i==30){cout<<"对不起,您还没选桌,请先选桌."<<endl;cout<<endl;}else continue;}else{int n;cout<<"现在为您服务退菜..."<<endl;cout<<"请您再次输入您的桌子的号码:";cin>>n;cout<<endl;while(tab[n].Geti()!=1){cout<<"您输入的桌子号码有误,请重新输入:";cin>>n;cout<<endl;}cout<<"这些是您刚才点的菜:"<<endl;tab[n].Printlassorder();/*int r=tab[n].Printlassorder();if(r==0){cout<<"对不起,您还没点菜!"<<endl;return 0;}*/cout<<"请问您想退那些菜呢?"<<endl;tab[n].Getless_order();cout<<"您现在点的菜有:"<<endl;tab[n].Printlassorder();break;}}}void RESTAURANT::Pay(){for(int i=1;i<31;i++){if(tab[i].Geti()==0){if(i==30){cout<<"对不起,您还没选桌,请先选桌."<<endl;cout<<endl;}else continue;}else{int n;cout<<"现在为您服务结帐..."<<endl;cout<<"请您再次输入您的桌子的号码:";cin>>n;cout<<endl;while(tab[n].Geti()!=1){cout<<"您输入的桌子号码有误,请重新输入:";cin>>n;cout<<endl;}cout<<"您结的是"<<n<<"号桌子的帐。"<<endl;cout<<"您刚才点的菜有:"<<endl;tab[n].Printlassorder();tab[n].GetPay();tab[n].Seti(0);//cout<<"谢谢光临!"<<endl;cout<<endl;break;}}}int main(int argc, char* argv[]){RESTAURANT a;a.Service();return 0;}

0 0
原创粉丝点击