食堂菜谱管理c++

 

//食堂菜谱管理
#include<iostream>
#include<string>
#include<iomanip>
#include<fstream>
using namespace std;
struct Cai{//结构体:菜名+价格
	string caiming;
	int price;
};

class A{//相关操作类
private:
	Cai *Menu0;//菜单
	Cai *Menu1;//账单
	int Num;
public:
	A(string caishuzu[],int prishuzu[],int num){//构造函数:传入结构体数组、数组长度 组成菜单
		Num=num;
		Menu0=new Cai[100];
		for(int i=0;i<Num;i++){//菜单赋初值
			Menu0[i].caiming=caishuzu[i];
			Menu0[i].price=prishuzu[i];
		}			
		Menu1=new Cai[20];
		for(int j=0;j<20;j++){//账单赋初值
			Menu1[j].caiming="";
			Menu1[j].price=NULL;
		}
	}

	
	void paixu(){//选择排序  选择最大的价格放在最前面
		Cai *line=new Cai[Num];
		int i;
		for(i=0;i<Num;i++){
			line[i].caiming=Menu0[i].caiming;
			line[i].price=Menu0[i].price;
		}
		int max;
		int j;
		string t1; int t2;
		for(i=0;i<Num;i++){
			max=i;
			for(j=i;j<Num-1;j++){			
				if(line[max].price<line[j+1].price ){ 
					t1=line[j+1].caiming;
					line[j+1].caiming=line[max].caiming;
					line[max].caiming=t1;
					t2=line[j+1].price;
					line[j+1].price=line[max].price;
					line[max].price=t2;	
				}
			}
		}
		cout<<"按价格降序排列:"<<endl; 
		cout<<setw(16)<<"菜名:"<<setw(16)<<"价格:"<<endl;
		for(j=0;j<Num;j++){
			cout<<setw(16)<<line[j].caiming<<setw(14)<<line[j].price<<endl;			
		}
	}


	void add0(string cai1,int price1){//菜单增加菜
		int count;
		for(int i=0;i<Num;i++){
			if(cai1==Menu0[i].caiming){
				count++;
			}
		}
		if(count==0){
			Menu0[Num].caiming=cai1;
			Menu0[Num].price=price1;
			Num++;
		}
		else{
			cout<<"已存在该菜"<<endl;
		}
	}	
	void del0(int n){//菜单减少菜
		for(int i=n-1;i<Num-1;i++){
			Menu0[i].caiming=Menu0[i+1].caiming;
			Menu0[i].price=Menu0[i+1].price;
		}
		Num--;		
	}
	void menushow0(){//保存到 d:\\菜单.txt 并显示菜单 
		ofstream file("d:\\菜单.txt");
		file<<setw(16)<<"编号:"<<setw(16)<<"菜名:"<<setw(16)<<"价格:"<<endl;
		int j=0;
		for(int i=0;i<Num;i++){
			file<<setw(14)<<i+1<<setw(18)<<Menu0[i].caiming<<setw(14)<<Menu0[i].price<<endl;			
		}
		file.close();
		
		ifstream file1("d:\\菜单.txt");
		string s;
		while( getline(file1,s) ){
			cout<<s<<endl;
		}
		file1.close();
		
	}	
	void fix(int i,string cai1,int price1){//修改菜单
		Menu0[i-1].caiming=cai1;
		Menu0[i-1].price=price1;
	}
	
	void fin(int x){//按价格查询 
		int count=0;
		for(int i=0;i<Num;i++){
			if(Menu0[i].price==x){ 
				cout<<Menu0[i].caiming<<"	";
				count++;
			} 
		}
		if(count==0)	cout<<"没有该价格的菜"<<endl;
		cout<<endl;
	}
	int add1(int n,int &num){//账单增加菜 返回价格
		int count=0;
		for(int i=0;i<num;i++){
			if(Menu0[n-1].caiming==Menu1[i].caiming)
				count++;
		}
		if(count==0){
			Menu1[num].caiming=Menu0[n-1].caiming;
			Menu1[num].price=Menu0[n-1].price;
			num++;
			return Menu1[num-1].price;
		}
		else{
			cout<<"已存在该菜"<<endl;
			return 0;
		}
	}	
	int del1(int n,int num){//账单减少菜 返回价格
		if(n>num)	cout<<"没有该菜"<<endl;
		int m=Menu1[n-1].price;
		for(int i=n-1;i<Num-1;i++){
			Menu1[i].caiming=Menu1[i+1].caiming;
			Menu1[i].price=Menu1[i+1].price;
		}
		num--;	
		return m;	
	}	
	void menushow1(int num,int sum){//保存到 d:\\账单.txt 并显示账单 
		ofstream file("d:\\账单.txt");
		file<<setw(17)<<"菜名:"<<setw(16)<<"价格:"<<endl;
		int j=0;
		for(int i=0;i<num;i++){
			file<<setw(17)<<Menu1[i].caiming<<setw(13)<<Menu1[i].price<<endl;			
		}
		file.close();
		
		ifstream file1("d:\\账单.txt");
		string s;
		while( getline(file1,s) ){
			cout<<s<<endl;
		}
		file1.close();
	}
	
};


void mainshow(){//主界面 
	cout<<"━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━";  
	cout<<"  		          《主界面》                        "<<endl;
	cout<<"  		┏━━━━━━━━━━━━━━━━━━━┓  "<<endl;         
	cout<<"  		┃      1--------显示菜单               ┃  "<<endl;  
	cout<<"  		┃      2--------修改菜单               ┃  "<<endl; 
	cout<<"  		┃      3--------价格排序               ┃  "<<endl;        
	cout<<"  		┃      4--------点菜操作               ┃  "<<endl;      
	cout<<"  		┃      5--------输出账单并保存         ┃  "<<endl;      
	cout<<"  		┃      0--------退出系统               ┃  "<<endl;      
	cout<<"  		┗━━━━━━━━━━━━━━━━━━━┛  "<<endl;
	cout<<"━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━"<<endl;
}
void fun1show(){//修改菜单界面 
	cout<<"━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━";  
	cout<<"  		         《修改菜单界面》                   "<<endl;
	cout<<"  		┏━━━━━━━━━━━━━━━━━━━┓  "<<endl;         
	cout<<"  		┃      1--------菜单增加菜             ┃  "<<endl;  
	cout<<"  		┃      2--------菜单减少菜             ┃  "<<endl;  
	cout<<"  		┃      3--------修改菜单               ┃  "<<endl;       
	cout<<"  		┃      0--------返回上一层             ┃  "<<endl;      
	cout<<"  		┗━━━━━━━━━━━━━━━━━━━┛  "<<endl;
	cout<<"━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━"<<endl;
}
void fun2show(){//点菜界面 
	cout<<"━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━";  
	cout<<"  		         《点菜界面》                       "<<endl;
	cout<<"  		┏━━━━━━━━━━━━━━━━━━━┓  "<<endl; 
	cout<<"  		┃      1--------按价格查询             ┃  "<<endl;        
	cout<<"  		┃      2--------账单增加菜             ┃  "<<endl;  
	cout<<"  		┃      3--------账单减少菜             ┃  "<<endl;          
	cout<<"  		┃      0--------返回上一层             ┃  "<<endl;      
	cout<<"  		┗━━━━━━━━━━━━━━━━━━━┛  "<<endl;
	cout<<"━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━"<<endl;
}


int main(){
	string caishuzu[12]={"麻辣豆腐","烧茄子","香辣肉丝","锅包肉","蛋炒饭","扬州炒饭","火腿炒饭","鱿鱼炒饭","刀削面","羊肉面","热干面","手擀面"};
	int prishuzu[12]={8,10,15,15,5,6,6,7,5,8,5,6};
	A b(caishuzu,prishuzu,12);	
	int x1,x2,x3,x4,x5,x6,x7,x8;
	string cai2;int price2;
	int sum=0,num=0;
	string cai3;int price3;
while(1){
	system("cls");	//清屏操作
	mainshow();
	cin>>x1;
	switch(x1){
		case 1://显示菜单
			system("cls");	//清屏操作
			b.menushow0();
			system("pause");//按任意键继续 			
			break;
		case 2://修改菜单
			system("cls");
			fun1show();
			while(1){
				cin>>x2;
				if(x2==0){ system("cls"); break; }
				switch(x2){
					case 1://菜单增加菜
						cout<<"请输入菜名+价格"<<endl;
						cin>>cai2>>price2;
						b.add0(cai2,price2);
						system("pause");						
						break;
					case 2://菜单减少菜
						cout<<"请输入菜名编号"<<endl;
						cin>>x3;
						b.del0(x3);
						system("pause"); 						
						break;
					case 3://修改菜单信息
						cout<<"请输入修改菜的编号+菜名+价格:";
						cin>>x4>>cai3>>price3;
						b.fix(x4,cai3,price3);
						system("pause"); 
						break;						
					default :
						cout<<"请输入正确序号"<<endl;
						system("pause"); 						
						break;
				}
			}
			break;
		case 3://价格将序排列 
			system("cls"); 
			b.paixu();
			system("pause"); 
			break;
		case 4://点菜
			system("cls");
			fun2show();
			while(1){
				cin>>x5;
				if(x5==0){  break; }
				switch(x5){
					case 1://按价格查询 
				 		cout<<"请输入菜价"<<endl;
				 		cin>>x6;
				 		b.fin(x6); 
				 		system("pause"); 						
						break;
					case 2://账单增加菜
						cout<<"请输入菜名编号"<<endl;
						cin>>x7;
						sum+=b.add1(x7,num);					
						system("pause"); 						
						break;
					case 3://账单减少菜
						cout<<"请输入菜的编号"<<endl;
						cin>>x8;						
						sum=sum-b.del1(x8,num);
						num--;
						system("pause"); 					
						break;
					default :
						cout<<"请输入正确序号"<<endl;
						system("pause"); 					
						break;
				}
			}
			break;
		case 5://输出账单并保存
			system("cls");
			b.menushow1(num,sum);
			system("pause"); 			
			break;
		case 0://退出
			exit(0);
			break;
		default :
			cout<<"请输入正确序号"<<endl;
			system("pause"); 
			system("cls");
			break;		
	}
}
  return 0;
}


 

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sinat_36710456

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值