课程设计《模拟点餐系统》

#include<iostream>    
	   
#include<fstream>   
	   
#include<string>     
	                       
using namespace std;   
	   
	   
class Cmenu        //创建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    //创建一个array数组   
	{    
       public:   
              void getnum(int NUM);                    //初始化num的函数   
	          void getsort(int SORT);                  //初始化sort的函数   
			  int  returnnum()   {   return num; }     //返回num的函数   
              int   returnsort()    { return sort;}    //返回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,j,id,m,q,z,sort,b;   
        int geshu;   
	    int NUM;     
            string NAME,KIND;   

	    float PRICE,POINT,sum=0;   
       
	   
        Cmenu food[40];    //创建Cmenu类的对象数组   
       
	    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);   
	          
		} 
		
        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;   

	        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)  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].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;}   
	          
	}   
	       }


效果截图如下:




这里出现了问题!




老师,这个系统有参考别人的,暂时只能做到这样,很多都还是不会,考完试有时间会慢慢地自学一下,越来越发现对C++的兴趣越来越浓厚了!



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值