⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 小芳便利店m.cpp

📁 版本要求: 程序体现面向对象的编程思想; 要求能够灵活添加新物品
💻 CPP
字号:
#include<iostream>
#include<string>
#include<vector>
using namespace std;

int const  N=6;

int Strlen(char *s)         // 计算字符串的长度 
{
    int i;
    for (i=0; s[i]!='\0'; )    
        i++;
    return i;                  //将累加的i值返回给Strlen() 
}


class Goods
{
	string name;
	float price;
public:
	Goods(string na=0,float pr=0.0):name(na),price(pr){};
	void setName(string na)
	{
		name=na;
	};
	string getName() const
	{
		return(name);
	};
	void setPrice(float pr)
	{
		price=pr;
	};
	float getPrice() const
	{
		return(price);
	};
};



class Basket
{
	vector<Goods> goodsList;
public:
	void addGoods(Goods goods)
	{
		goodsList.push_back(goods);
	};
	vector<Goods> getAllGoods()
	{
		return(goodsList);
	};
	bool isEmpty()
	{
		if(goodsList.size()==0)
			return true;
		else 
			return false;
	};
	void clear()
	{
		goodsList.clear();
	};
	float getTotalPrice()
	{
		float total=0;
		for(int i=0;i<goodsList.size();i++)
			total+=goodsList[i].getPrice();
		return total;

	};
};



class Store
{
public:
	static const Goods GOODS[N]; //所有商品
	Basket basket;  //存放选中商品的购物篮
	static const string MESSAGE_HEADER;  //菜单顶部
	static const string MESSAGE_FOOTER;  //菜单底部

	void exit()
	{
		basket.clear();
		cout<<"THANKS!"<<endl;
	};  //打印消息退出整个程序
	void checkOut()
	{
		cout<<"========CHECK OUT==========="<<endl;
		for(int i=0;i<basket.getAllGoods().size();i++)
		cout<<"    "<<basket.getAllGoods()[i].getName()<<"    "<<basket.getAllGoods()[i].getPrice()<<endl;
		cout<<"============================="<<endl;
		cout<<"TOTAL:"<<"   "<<basket.getTotalPrice()<<endl;
		
	};  //买单,打印所有已经选择的商品
	void invalidInput()
	{
		cout<<"INVALIDINPUT,PLEASE TRY AGAIN"<<endl;
	};  //当输入错误的时候,打印消息
	void addGoods(int choice)
	{
		this->basket.addGoods(GOODS[choice-1]);
	};  //添加选中的商品到购物篮
	void printMenu() const
	{
		cout<<"******************************************\n";
		cout<<"    Welcome to XiaoFang Convinence Store\n";
		cout<<"******************************************\n";
		cout<<"    "<<"(1)"<<"     "<<"Bread"<<"       "<<"1.0"<<endl;
		cout<<"    "<<"(2)"<<"     "<<"Cocacoal"<<"    "<<"1.0"<<endl;
		cout<<"    "<<"(3)"<<"     "<<"Beer"<<"        "<<"1.0"<<endl;
		cout<<"    "<<"(4)"<<"     "<<"Chocolate"<<"   "<<"1.0"<<endl;
		cout<<"    "<<"(5)"<<"     "<<"Pencial"<<"     "<<"0.5"<<endl;
		cout<<"    "<<"(6)"<<"     "<<"Notebook"<<"    "<<"3.0"<<endl;
		cout<<"    "<<"(9)"<<"     "<<"CHECK OUT"<<endl;
		cout<<"    "<<"(0)"<<"     "<<"EXIT"<<endl;
		cout<<"------------------------------------------"<<endl;
		//cout<<"PLEASE SELECT A NUMBER: ";
	}//打印菜单
};
static const Goods GOODS[N]={Goods("Bread",1.0),Goods("Cocacola",1.0),Goods("Bear",1.0),Goods("Chocalate",1.0),Goods("Pencial",0.5),Goods("Notebook",3.0)};
static const string MESSAGE_HEADER="**********\nWelcome to XiaoFang Convinence Store\n*********";
static const string MESSAGE_FOOTER="-------------------";



void main()  
{
	int i;
	int n=1;
	Store store;
	bool flag=true;
	store.printMenu();

    while(n!=0)
	{
		cout<<"PLEASE SELECT A NUMBER:";
		char* str=new char[20];
		cin>>str;
	//	fflush(stdin);
		
		if(Strlen(str)!=1)
			n=10;
		else
			for(i=0;i<1;i++)
			{
				if(str[i]<'0'||str[i]>'9')
					n=10;
				else
					sscanf(str,"%d",&n);
			}

		delete [] str;//清除原数组内容
	

	if(flag)
	{
		switch(n)
		{
		case 1:
			cout<<"YOU HAVE SELECT    ["<<GOODS[0].getName()<<"]"<<"  "<<"$"<<GOODS[0].getPrice()<<endl;
			store.basket.addGoods(GOODS[0]);break;
		case 2:
			cout<<"YOU HAVE SELECT    ["<<GOODS[1].getName()<<"]"<<"  "<<"$"<<GOODS[1].getPrice()<<endl;
			store.basket.addGoods(GOODS[1]);break;
		case 3:
			cout<<"YOU HAVE SELECT    ["<<GOODS[2].getName()<<"]"<<"  "<<"$"<<GOODS[2].getPrice()<<endl;
			store.basket.addGoods(GOODS[2]);break;
		case 4:
			cout<<"YOU HAVE SELECT    ["<<GOODS[3].getName()<<"]"<<"  "<<"$"<<GOODS[3].getPrice()<<endl;
			store.basket.addGoods(GOODS[3]);break;
		case 5:
			cout<<"YOU HAVE SELECT    ["<<GOODS[4].getName()<<"]"<<"  "<<"$"<<GOODS[4].getPrice()<<endl;
			store.basket.addGoods(GOODS[4]);break;
		case 6:
			cout<<"YOU HAVE SELECT    ["<<GOODS[5].getName()<<"]"<<"  "<<"$"<<GOODS[5].getPrice()<<endl;
			store.basket.addGoods(GOODS[5]);break;
		case 9:
			store.checkOut();cout<<"THANKS!"<<endl;
			cout<<endl;
			store.printMenu();
			break;
		case 0:
			store.exit();
			flag=false;break;
		default:
            store.invalidInput();

		}
	}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -