课程设计

来源:互联网 发布:windows10视频剪辑软件 编辑:程序博客网 时间:2024/06/05 16:48

模拟餐馆点菜系统  

你到一个餐馆去仔细研究一下餐馆的业务流程:餐馆事先准备好自己的招牌菜及一些常规的菜式,有营业场所,服务人员等;顾客来了以后,服务生先给客人找一张桌子坐下来,然后递上菜谱等待顾客点菜,顾客可以点一个菜,也可以退菜,完了之后结账走人,这张桌子又可以用来招待下一批顾客。自己设计程序模拟点菜系统。

自己分析:主要由菜单页面、点菜页面,一开始并没有什么头绪,于是上网寻找资料,看到大部分的资料用的都是9、10、11、12章的类容,都用到了类和对象,感觉看着眼花缭乱,我尝试过用结构体构造一个菜单,但是到了点菜的环节就失败了,我也借鉴过很多的资料,但是因为涉及的内容超出了自己所学的范围,或许是自己思维受限吧,怎么都想不出来,于是我只能学着网上的资料一步一步的用类和对象的方式来写,一开始也遇到很多问题,即使是跟着写,写着写着就眼花缭乱了,感觉都找不到北了,但是我知道我只能硬着头皮好好模仿着写了,于是我又花了很长时间,改正,修改,调试,最终终于出了个样子了,希望老师谅解,我会继续学习的,在这次的课程设计中我终于知道了一名程序员是要能沉得住气的,面对数百甚至数千的代码,还是需要勇气和耐心的,同时我感觉我对c++的了解也加深了不少,但是还有很大的提升空间。希望以后我能学的更好,在此,谢谢老师您的教导!

  

#include<iostream> #include <iomanip> #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<<setw(3)<<num<<setw(22)<<name<<setw(16)<<kind<<setw(16)<<price<<endl; } void  Cmenu::selectdisplay()           {cout<<setw(3)<<num<<setw(24)<<name<<setw(16)<<kind<<setw(16)<<price<<setw(19)<<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,id,m,q,z,sort,b;char j;    int geshu;int NUM;  string NAME,KIND;float PRICE,POINT,sum=0;Cmenu food[40];                    ifstream f1("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<<"━0━0━0━0━0━0━0━0━0━0━0━欢迎光临世界杯咖啡店━0━0━0━0━0━0━0━0"<<endl;    //菜单 while(1)    {   cout<<"━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━"<<endl;cout<<endl;    cout<<"               ┏━━━━━━━━━━━━━━━━━━━━━━━━┓    "<<endl; cout<<"               ┃                                                ┃    "<<endl;    cout<<"               ┃                                                ┃     "<<endl;    cout<<"               ┃       0---------------菜单信息                 ┃    "<<endl;cout<<"               ┃^ 0 ^  1---------------分类查找     ^ 0 ^       ┃    "<<endl;cout<<"               ┃       2---------------开始点菜                 ┃    "<<endl;    cout<<"               ┃                                                ┃    "<<endl;  cout<<"               ┗━━━━━━━━━━━━━━━━━━━━━━━━┛     "<<endl;  cout<<endl;    cout<<"━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━0━"<<endl;cin>>q;   if(q==0)            {        cout<<"-------------------------------菜单---------------------------"<<endl;                 cout<<"菜的编号             菜名             类别            单价/元 "<<endl;              for(j=0;j<12;j++)             food[j].menudisplay();   cout<<"-------------------------------------------------------------"<<endl;   }       if(q==1)                                     {      cout<<"1--------------世界杯咖啡"<<endl;   cout<<"2--------------世界杯点心"<<endl;   cout<<"3--------------世界杯扒"<<endl;           cin>>z;   if(z>3)    {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;          case 3:  //输出扒类    for(j=0;j<40;j++)    {                           if(food[j].returnkind()=="世界杯扒")  food[j].menudisplay();}break;}      }   if(q>2)    {  system("cls");  cout<<"请输入正确序号"<<endl;   }       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<<"    ┃          0--------退出系统               ┃      "<<endl;   cout<<"    ┃                                          ┃    "<<endl;   cout<<"    ┃                                          ┃   "<<endl;   cout<<"    ┗━━━━━━━━━━━━━━━━━━━━━┛         "<<endl;   cin>>b;      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==0){system("cls");           cout<<endl;cout<<endl;cout<<endl; cout<<"*****************************欢迎再次光临********************************"<<endl; cout<<endl; cout<<endl;      break;}if(b>4) {system("cls");cout<<"请输入正确序号"<<endl;}   }


这是点菜的菜单,我取店名为世界杯咖啡店。


这是菜单,主要以咖啡为主,点心和扒类为辅。



这是分类查找










开始点菜!



加菜菜单,金额计算。









0 0
原创粉丝点击