公司库存管理系统#ifndef HEAD_HPP#define HEAD_HPP#include<iostream>#include<iomanip>#include<string.h>using namespace std;class JIADIAN {protected:int ab; // ab=1代表电视机ab=2代表DVD ab=3代表DVDTVchar *pingming; //声明品名字符串char *yanse; //声明颜色字符串int xinghao; //声明型号的大小char *changjia; //声明厂家字符串int value; //声明价格public:JIADIAN(char*,char*,int ,char*, int);//基类构造函数~JIADIAN();//基类析构函数virtual void print();//定义打印虚函数int getkind();//定义取种类函数char* getpingming();//定义取品名指针函数JIADIAN operator =(JIADIAN &); //声明=号赋值重载运算函数};class TV: public JIADIAN{ //电视机类公有继承基类public:TV(char*, char*,int ,char*,int);//电视机类构造函数~TV();//电视机类析构函数void print();//打印函数};class DVD: public JIADIAN{ // DVD类public:DVD(char*,char*,int ,char*,int);// DVD类构造函数~DVD();//DVD类析构函数void print();//打印函数};class DVDTV: public JIADIAN{ // 带有DVD的电视机类public:DVDTV(char*,char*,int , char*,int); // 带有DVD类的电视机类构造函数~DVDTV();// 带有DVD类的电视机类析构函数void print();// 打印函数};#endif#include"tou.h" //把头文件包含进来JIADIAN::JIADIAN(char*PINGMING=NULL,char *YANSE=NULL,int XINGHAO=20 ,char *CHANGJIA=NULL, intVALUE=2000) //家电类的构造函数,初始化参数{pingming=new char[20];// 创建品名的字符长度不超过20个strcpy(pingming,PINGMING);// 把输入的品名输入到内存中yanse=new char[20];// 创建颜色的字符长度不超过20个strcpy(yanse, YANSE);// 把输入的颜色字符串输入xinghao=XINGHAO;// 把输入的型号字符输入到内存中changjia=new char[20];// 创建厂家的字符长度不超过20个字符strcpy(changjia, CHANGJIA);// 输入的厂家字符输入到内存中value=VALUE;return ;}JIADIAN::~JIADIAN()// 家电类的析构函数{delete pingming;//分别释放输入的品名、颜色、厂家的内存单元delete yanse;delete changjia;return ;}char* JIADIAN::getpingming()// 定义基类的取品名函数{return pingming;}int JIADIAN::getkind()// 定义基类的getkind函数{return ab;}JIADIAN JIADIAN ::operator=(JIADIAN& jiadian) // 定义基类的=号赋值重载运算函数{this->ab=jiadian.ab;strcpy(this->pingming,jiadian.pingming); strcpy(this->pingming,jiadian.yanse);this->xinghao=jiadian.xinghao;strcpy(this->pingming,jiadian.changjia); this->value=jiadian.value;return *this;}void JIADIAN:: print(){ return ;}TV::TV(char *PINGMING=NULL, char*YANSE=NULL, int XINGHAO=20, char*CHANGJIA=NULL, int VALUE=1000): //定义电视机类的构造函数,假定电视机类的价格是1000元JIADIAN(PINGMING, YANSE, XINGHAO, CHANGJIA, VALUE)return ;}TV ::~TV() //定义电视机类的析构函数{return ;}void TV:: print() //定义电视机类的打印函数{cout<<"1 TV"<<" " <<pingming<<" " <<yanse<<" " <<xinghao<<" "<<changjia<<" " << value<<" "<<endl;}DVD::DVD(char *PINGMING=NULL, char *YANSE=NULL, int XINGHAO=20, char*CHANGJIA=NULL, int VALUE=1000): //定义DVD类的构造函数JIADIAN(PINGMING, YANSE, XINGHAO, CHANGJIA, VALUE){ ab=2;}DVD::~DVD() //定义DVD类的析构函数{return ;}void DVD:: print() //定义DVD类的打印函数{cout<<"2 DVD" << " " <<pingming<< " " <<yanse<<" " <<xinghao<<" "<<changjia <<" " << value<<" "<<endl;}DVDTV::DVDTV(char *PINGMING=NULL, char *YANSE=NULL, int XINGHAO=20, char *CHANGJIA=NULL, int VALUE=1600): //定义带有DVD类的电视机类的构造函数JIADIAN(PINGMING, YANSE, XINGHAO, CHANGJIA, VALUE){return ;}DVDTV::~DVDTV()// 定义带有DVD的电视机类的析构函数{return ;}void DVDTV:: print() // 定义带有DVD的电视机类的打印函数{cout<<"3 DVDTV" << " "<<pingming<< " " <<yanse<<" "<<xinghao<<" "<<changjia<<" " << value<<" "<<endl;}#include"tou.h"int main(){JIADIAN *scores[10000];//库存的最大容量设定为10000char pm[20]; //品名的最大字符串长度char ys[20]; //颜色的最大字符串长度int xh; //型号为整型变量char cj[20]; //厂家的最大字符串长度int i,j,n,a=0;//n为要选择的1 2 3当中的一个,初始化为0,i、j为循环变量a=0 正常进行功能,a=1输出break前的那个语句。
static int k=0; //k静态全局变量,为库存量,初始化为0cout<<"********"<<"欢迎进入本公司库存管理系统"<<"********"<<"********"<<endl;cout<<"*****请选择: 1 2 3当中的一个*****"<<endl <<"*** 1为查找功能2为增加功能3为删除功能***"<<endl;while(cin>>n&&(n!=7))// 输入1 2 3 的功能实现按7键退出的功能{switch(n){case 1: //实现按品名进行查找、显示功能cout<<"请输入要查找的品名: ";cin>>pm;for(i=0;i<k;i++) //对库存内的产品进行循环查找{if(strcmp(pm,scores[i]->getpingming())==0) // 如果查到所要查找的品名{scores[i]->print();a=1;}// 打印该种品名的相关信息}if(a){a=0;}elsecout<<"查找不到您所需要的结果!";break;case 2: //实现按品名进行增加功能cout<<"请再次选择所要增加的产品代号"<<" 1 TV; 2 DVD; 3 DVDTV"<<endl;cout<<"请输入要增加的品名代号: ";cin>>n;cout<<"请输入要增加的该产品的品名、颜色、型号、厂家:"<<endl;switch(n){case 1: // 增加TVcin>>pm>>ys>>xh>>cj;scores[k++]=new TV(pm,ys,xh ,cj,1500);break;case 2: // 增加DVDcin>>pm>>ys>>xh>>cj;scores[k++]=new DVD(pm, ys, xh, cj,500);break;case 3: // 增加DVDTVcin>>pm>>ys>>xh>>cj;scores[k++]=new DVDTV(pm,ys,xh,cj,1600);break;default:cout<<"不能把这种品名加入本库存中"<<endl;break;}cout<<"增加后的成员如下:"<<endl;for(i=0;i<k;i++)scores[i]->print();break;case 3: // 实现按品名进行删除功能cout<< "请输入要删除的产品的代号: "<<endl;cout<< "1 TV; 2 DVD; 3 DVDTV"<<endl;cin>>n;cout<< "请输入要删除的品名:";switch(n){case 1:cin>>pm;for(i=0;i<k;i++){if(scores[i]->getkind()==1&&strcmp(pm,sco res[i]->getpingming())==0){for(j=i;j<k-1;j++)scores[j]=scores[j+1];k--;}}break;case 2:cin>>pm;for(i=0;i<k;i++){if(scores[i]->getkind()==2&&strcmp(scores[ i]->getpingming(),pm)==0){for(j=i;j<k-1;j++)scores[j]=scores[j+1];k--;}}break;case 3:cin>>pm;for(i=0;i<k-1;i++){if(scores[i]->getkind()==3&&strcmp(scores[ i]->getpingming(),pm)==0){for(int j=i;j<k-1;j++)scores[j]=scores[j+1];k--;}}break;default:break;}cout<<"删除后的剩余成员如下:"<<endl;for(i=0;i<k;i++)scores[i]->print();break;default:break;}cout<<"需要退出请按7键或者继续操作."<<endl;}//system("pause");return 0;}。