?? 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 + -