课程设计

来源:互联网 发布:淘宝上的凯威淘淘通讯 编辑:程序博客网 时间:2024/06/05 15:45

#include<iostream>#include<iomanip>#include<fstream>#include<string>using namespace std;class menu{int num;      //菜式的编号string name;   //菜名float price;    //价格string kind;    //种类int sort;       //数量public:    void num(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()         //返回菜式类别{  returnkind; }            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<<stew(16)<<kind<<setw(16)kind<<price<<endl; }void Cmenu::selectdisplay()      //输出菜单{ cout<<setw(3)<<num<<setw(24)<<name<<setw(16)<<kind<<setw(16)<<kind<<setw(16)<<price<<setw(19)<<sort<<endl; }class array{public:void getnum(int Num);        //初始化num的函数void getsort(int Sort);      //初始化sort的函数int returnnum()           //返回num的函数{ return num; }                int returnsort()          //返回sort的函数{ return sort; }          private:int sort,num;}void array::getnum(int Num)         //初始化num的函数体{ num=Num; }void array::getsort(int Sort)       //初始化sort的函数体{ sort=Sort; }void main(){int i,d,m,q,z,sort,b;char j;int g;int Num;string Name,Kind;float Price,Point,sum=0;Cmenu food[30];                  //创建Cmenu类的对象数组ifstream f1("menu.txt");         //文件输入菜单信息for(j=0;j<30;j++){f1>>Num;f1>>Kind;f1>>Name;f1>>Price;food[j].num(Num);food[j].kind(Kind);food[j].name(Name);food[j].price(Price);food[0].num(1);food[0].kind("星冰乐");    food[0].name("摩卡星冰乐");    food[0].price(25);food[1].num(2);food[1].kind("星冰乐");    food[1].name("奶油星冰乐");    food[1].price(26);food[2].num(3);food[2].kind("星冰乐");    food[2].name("焦糖星冰乐");    food[2].price(25);food[3].num(4);food[3].kind("星冰乐");    food[3].name("咖啡星冰乐");    food[3].price(28);food[4].num(5);food[4].kind("甜品");    food[4].name("马卡龙");    food[4].price(30);food[5].num(6);food[5].kind("甜品");    food[5].name("焦糖布丁");    food[5].price(15);food[6].num(7);food[6].kind("甜品");    food[6].name("手工巧克力");    food[6].price(30);food[7].num(8);food[7].kind("甜品");    food[7].name("曲奇");    food[7].price(18);food[8].num(9);food[8].kind("甜品");    food[8].name("萨芭雍");    food[8].price(22);food[9].num(10);food[9].kind("蛋糕");    food[9].name("提拉米苏");    food[9].price(23);food[10].num(11);food[10].kind("蛋糕");    food[10].tname("起司蛋糕");    food[10].price(25);food[11].num(12);food[11].kind("蛋糕");    food[11].name("酸奶乳酪蛋糕");    food[11].price(24);}f1.close();cout<<"o(╯□╰)oo(╯□╰)oo(╯□╰)oo(╯□╰)o星爸爸欢迎你o(╯□╰)oo(╯□╰)oo(╯□╰)oo(╯□╰)o"<<endl;cout<<"                                                                                1--------显示菜单信息                                                  2--------分类查找  3--------下单  "<<endl;cout<<"( ⊙o⊙ ) ( ⊙o⊙ ) ( ⊙o⊙ ) ( ⊙o⊙ ) ( ⊙o⊙ ) ( ⊙o⊙ ) ( ⊙o⊙ ) ( ⊙o⊙ ) ( ⊙o⊙ ) "<<endl;if(q==0)         //显示菜单里所有的商品名字{ cout<<"-------------------------------菜单---------------------------"<<endl;              cout<<"编号              名字             类别            单价/元 "<<endl;              for(j=0;j<30;j++)             food[j].menudisplay();    cout<<"-------------------------------------------------------------"<<endl;}    if(q==2)                                  //  在菜单里按类查找{   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<30;j++)  {       if(food[j].returnkind()=="星冰乐")         food[j].menudisplay(); }break;                   case 2:  //输出甜品类    for(j=0;j<30;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>3)    {  system("cls");  cout<<"请输入正确序号"<<endl;   }       if(q==3)  break;       //退出进入点菜环节     }cout<<"你要下单的数量?"<<endl;   //下单cin>>i;    array *a=new array[i] ;       //动态创建i个array类的数组来储存编号和数量      for(j=0;j<i;j++)     {   cout<<"请选择第"<<j+1<<"个商品的编号:"<<endl;   cin>>id;               //输入每个编号        cout<<"请输入数量:"<<endl;   cin>>sort;     //输入所点商品的数量   a[j].num(d);   a[j].sort(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>>g;    array *p=new array[i];      for(j=0;j<i;j++)  {   p[j].num(a[j].returnnum());  p[j].sort(a[j].returnsort());  }delete [] a;i=i+g;a=new array[i];for(j=0;j<i-g;j++){    a[j].num(p[j].returnnum());  a[j].sort(p[j].returnsort());   }              delete [] p;               for(j=i-g;j<i;j++)   {   cout<<"请输入增加的一个商品的编号和数量:"<<endl;                   cin>>d;                   cin>>sort;     a[j].num(d); a[j].sort(sort);      }    cout<<"增加点菜成功。"<<endl;  }       if(b==2)      {   cout<<"请输入要删除的商品的编号:"<<endl;          //删除操作      cin>>d;    for(j=0;j<i;j++)  {    if(a[j].returnnum()==d)  {  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<30;j++) { if(a[m].returnnum()==food[j].returnnum())   {   food[j].sort(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<30;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;         cin>>q;               for(m=0;m<i;m++)    { for(j=0;j<30;j++) { if(a[m].returnnum()==food[j].returnnum())   {   food[j].gsort(a[m].returnsort());     sum=sum+food[j].returnprice()*food[j].returnsort();    //计算所点总金  } }} if(q>1)       {system("cls");cout<<"请输入正确序号"<<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;}   }   }


这是主界面窗口



这是全部商品显示


这是下单界面




这是下单确认输出界面





这是按分类查找界面








一开始看到题目的时候,因为自己之前好奇了一下看了后面第九章的内容,所以我立马感觉到这是要类与对象来实现商品的分类、储存与输出功能。在加上之前所学的结构体,和第十章的多重继承。但在编写的过程中慢慢出现许多问题,像对象的指定不符合(这个是用翻译直译的导致我也不知道问题究竟是哪里!!),在查阅了资料后,终于把前面的40多行对象确定下来。后来在软件专业朋友的协助下,慢慢调试,修改终于写出来如下版本。但是还有一个问题实现不了。当在操作界面按4的时候,不能直接输出消费金额,只有执行了3输出商品后,按4才会输出金额,不知道问题出现在哪里。通过这次课程设计,我明白我们所学的东西只是皮毛,我们要不断开拓我们的知识面,才能适应以后在学习和工作中出现的各种问题。



0 0
原创粉丝点击