📄 小芳便利店.cpp
字号:
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int const N=6;
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 addGoods(int choice)
{
this->basket.addGoods(GOODS[choice-1]);
}; //添加选中的商品到购物篮
void printMenu() const
{
cout<<"******************************************\n";
cout<<" Welcome to XiaoFang Convinence Store\n";
cout<<"******************************************\n";
cout<<endl;
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<<endl;
cout<<" "<<"(9)"<<" "<<"CHECK OUT"<<endl;
cout<<" "<<"(0)"<<" "<<"EXIT"<<endl;
cout<<"------------------------------------------"<<endl;
cout<<"PLEASE SELECT A NUMBER: ";
}//打印菜单
void invalidInput()
{
cout<<"INVALID INPUT,PLEASE TRY AGAIN"<<endl;
system("pause");
Store::printMenu();
}; //当输入错误的时候,打印消息
};
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()
{
Store store;
bool flag=true;
store.printMenu();
int n=1;
while(n!=0)
{
//cout<<"PLEASE SELECT A NUMBER:";
char* str=new char[20];
cin>>str;
if(strlen(str)!=1)
n=10;
else
for(int 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<<endl;
cout<<"YOU HAVE SELECT ["<<GOODS[0].getName()<<"]"<<" "<<"$"<<GOODS[0].getPrice()<<endl;
cout<<endl;
store.printMenu();
store.basket.addGoods(GOODS[0]);break;
case 2:
cout<<endl;
cout<<"YOU HAVE SELECT ["<<GOODS[1].getName()<<"]"<<" "<<"$"<<GOODS[1].getPrice()<<endl;
cout<<endl;
store.printMenu();
store.basket.addGoods(GOODS[1]);break;
case 3:
cout<<endl;
cout<<"YOU HAVE SELECT ["<<GOODS[2].getName()<<"]"<<" "<<"$"<<GOODS[2].getPrice()<<endl;
cout<<endl;
store.printMenu();
store.basket.addGoods(GOODS[2]);break;
case 4:
cout<<endl;
cout<<"YOU HAVE SELECT ["<<GOODS[3].getName()<<"]"<<" "<<"$"<<GOODS[3].getPrice()<<endl;
cout<<endl;
store.printMenu();
store.basket.addGoods(GOODS[3]);break;
case 5:
cout<<endl;
cout<<"YOU HAVE SELECT ["<<GOODS[4].getName()<<"]"<<" "<<"$"<<GOODS[4].getPrice()<<endl;
cout<<endl;
store.printMenu();
store.basket.addGoods(GOODS[4]);break;
case 6:
cout<<endl;
cout<<"YOU HAVE SELECT ["<<GOODS[5].getName()<<"]"<<" "<<"$"<<GOODS[5].getPrice()<<endl;
cout<<endl;
store.printMenu();
store.basket.addGoods(GOODS[5]);break;
case 9:
cout<<endl;
store.checkOut();
store.exit();
//cout<<"Press any KEY to CONTINUE shopping!"<<endl;
system("pause");
store.printMenu();break;
case 0:
cout<<endl;
store.exit();
flag=false;break;
default:
cout<<endl;
store.invalidInput();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -