📄 supermarket.cpp
字号:
#include <iostream.h>
#include <string.h>
#include <iomanip.h>
const MAX=10;
//商品抽象类
class Goods
{
protected:
char gName[10]; //商品名称
int currentQuantity; //商品数量
public:
Goods()
{
cout<<"请输入商品名称:";
cin>>gName;
cout<<"请输入商品数量:";
cin>>currentQuantity;
}
char *getName(){return gName;} //取商品名称
int setCurrentQuantity(int num) //出售商品数量处理
{
if(currentQuantity>=num)
currentQuantity-=num;
else
cout<<"库存不够!\n";
return currentQuantity;
}
int addCurrentQuantity(int num) //新增商品数量处理
{
currentQuantity+=num;
return currentQuantity;
}
virtual void ShowMe()=0;
};
//日用品类
class DailyGoods:public Goods
{
public:
DailyGoods():Goods()
{ /*空*/}
void ShowMe()
{
cout<<setw(10)<<gName<<setw(10)<<currentQuantity<<endl;
}
};
//食品类
class Food:public Goods
{
private:
int preservePeriod;
public:
Food():Goods()
{
cout<<"请输入保质期限:";
cin>>preservePeriod;
}
void ShowMe()
{
cout<<setw(10)<<gName<<setw(10)<<currentQuantity<<setw(10)<<preservePeriod<<endl;
}
};
//家电类
class ElectricalAppliance:public Goods
{
private:
char color[10];
public:
ElectricalAppliance():Goods()
{
cout<<"请输入颜色:";
cin>>color;
}
void ShowMe()
{
cout<<setw(10)<<gName<<setw(10)<<currentQuantity<<setw(10)<<color<<endl;
}
};
//超市类
class Supermarket
{
private:
static int iDG;
static int iF;
static int iEA;
DailyGoods *pD[MAX];
Food *pF[MAX];
ElectricalAppliance *pE[MAX];
public:
void Add(); //新增商品
void Sale(); //出售商品
void Search(); //查询商品
~Supermarket() //析构函数
{
int i;
for(i=0;i<iDG;i++)
delete pD[i];
for(i=0;i<iF;i++)
delete pF[i];
for(i=0;i<iEA;i++)
delete pE[i];
}
};
//新增实现
void Supermarket::Add(){
int addChoice;
char con='y';
do{
cout<<"请选择增加的商品种类:\n";
cout<<"1.日用品 2.食品 3.家电 0.退出\n";
cin>>addChoice;
switch(addChoice)
{
case 1:
do{
pD[iDG]=new DailyGoods;
iDG++;
cout<<"是否继继?(Y/N)";
cin>>con;
}while(con=='y'||con=='Y');
break;
case 2:
do{
pF[iF]=new Food;
iF++;
cout<<"是否继继?(Y/N)";
cin>>con;
}while(con=='y'||con=='Y');
break;
case 3:
do{
pE[iEA]=new ElectricalAppliance;
iEA++;
cout<<"是否继继?(Y/N)";
cin>>con;
}while(con=='y'||con=='Y');
break;
case 4:
cout<<"选择错误!\n";
}
}while(addChoice!=0);
}
//出售实现
void Supermarket::Sale(){
int saleChoice;
char saleName[10];
int saleNum;
int i;
do{
cout<<"请选择出售的商品种类:\n";
cout<<"1.日用品 2.食品 3.家电 0.退出\n";
cin>>saleChoice;
switch(saleChoice)
{
case 0:
break;
case 1:
cout<<"请输入出售的商品名称:\n";
cin>>saleName;
for(i=0;i<iDG;i++)
{
if(strcmp(saleName,pD[i]->getName())==0)
{
cout<<"请输入此种商品出售数量:";
cin>>saleNum;
pD[i]->setCurrentQuantity(saleNum);
break;
}
}
if(i==iDG)
cout<<"对不起,无此类商品!\n";
break;
case 2:
cout<<"请输入出售的商品名称:\n";
cin>>saleName;
for(i=0;i<iF;i++)
{
if(strcmp(saleName,pF[i]->getName())==0)
{
cout<<"请输入此种商品出售数量:";
cin>>saleNum;
pF[i]->setCurrentQuantity(saleNum);
break;
}
}
if(i==iF)
cout<<"对不起,无此类商品!\n";
break;
case 3:
cout<<"请输入出售的商品名称:\n";
cin>>saleName;
for(i=0;i<iEA;i++)
{
if(strcmp(saleName,pE[i]->getName())==0)
{
cout<<"请输入此种商品出售数量:";
cin>>saleNum;
pE[i]->setCurrentQuantity(saleNum);
break;
}
}
if(i==iEA)
cout<<"对不起,无此类商品!\n";
break;
default:
cout<<"选择错误!\n";
}
}while(saleChoice!=0);
}
//查询实现
void Supermarket::Search()
{
int i;
int searchChoice;
do{
cout<<"请输入要查询的商品种类:";
cout<<"1.日用品 2.食品 3.家电 0.退出\n";
cin>>searchChoice;
switch(searchChoice)
{
case 0:
break;
case 1:
cout<<setw(10)<<"名称"<<setw(10)<<"数量"<<endl;
for(i=0;i<iDG;i++)
pD[i]->ShowMe();
break;
case 2:
cout<<setw(10)<<"名称"<<setw(10)<<"数量"<<setw(10)<<"保质期"<<endl;
for(i=0;i<iF;i++)
pF[i]->ShowMe();
break;
case 3:
cout<<setw(10)<<"名称"<<setw(10)<<"数量"<<setw(10)<<"颜色"<<endl;
for(i=0;i<iEA;i++)
pE[i]->ShowMe();
break;
default:
cout<<"选择错误\n";
}
}while(searchChoice!=0);
}
//静态成员初始化
int Supermarket::iDG=0;
int Supermarket::iF=0;
int Supermarket::iEA=0;
//主函数
void main()
{
Supermarket smarket;
int typeChoice;
do{
cout<<"请选择您的操作:\n";
cout<<"1.新增 2.出售 3.查询 0.退出\n";
cin>>typeChoice;
switch (typeChoice)
{
case 0:
break;
case 1:
smarket.Add();
break;
case 2:
smarket.Sale();
break;
case 3:
smarket.Search();
break;
default:
cout<<"\n选择错误!\n";
}
}while(typeChoice!=0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -