课程设计

#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才会输出金额,不知道问题出现在哪里。通过这次课程设计,我明白我们所学的东西只是皮毛,我们要不断开拓我们的知识面,才能适应以后在学习和工作中出现的各种问题。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值