课程设计

模拟餐馆点菜系统  

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

自己分析:主要由菜单页面、点菜页面,一开始并没有什么头绪,于是上网寻找资料,看到大部分的资料用的都是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;}	   
}


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


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



这是分类查找










开始点菜!



加菜菜单,金额计算。









评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值