假设某商店有如下几种货品衬衣帽子立柜每一种货物都有与其关联的说明信息.docx
《假设某商店有如下几种货品衬衣帽子立柜每一种货物都有与其关联的说明信息.docx》由会员分享,可在线阅读,更多相关《假设某商店有如下几种货品衬衣帽子立柜每一种货物都有与其关联的说明信息.docx(15页珍藏版)》请在冰豆网上搜索。
假设某商店有如下几种货品衬衣帽子立柜每一种货物都有与其关联的说明信息
《C++程序设计》上机实验
题目:
假设某商店有如下几种货品:
衬衣、帽子、立柜。
每一种货物都有与其关联的说明信息。
衬衣:
单价、产地、库存量、布料;
帽子:
单价、产地、库存量、布料、样式(平顶或尖顶);
立柜:
单价、产地、库存量、木料、颜色。
对这些商品的操作有:
商品的进库(增加库存量),商品的出库(减少库存量),该类货
品总价格的计算。
要求自行设计数据结构,用类的继承与派生关系将上述的各种货品表示出来,并使用类
的构造函数来初始化每一类对象的初始数据。
而后将上述的商品管理计算机化,完成操作要
求的功能。
【实现方法提示】
1.设立3个不同的类来描述与处理3种不同的货品。
首先注意到上述3种货品数据之
间的相互关联关系,可使用C++基类及其派生类的定义方法,先抽象出(“提取”出)如下每
一货品都具有的“公有”数据构成一个所谓的基类base,而后再派生出所需的那3个类。
(1)base(基)类:
单价、产地、库存量;
(2)由base作为基类,派生出shirt(衬衣)类:
增加“布料”数据;
(3)由base出发,派生出wardrobe(立柜)类:
增加“木料”与“颜色”数据;
(4)而后又由shirt类出发(作为基类),派生出cap(帽子)类:
增加“样式”数据。
2.对应于要对各类数据所进行的操作,而设立出类的如下几个成员函数。
(1)构造函数
通过传递来的实参数据,来构造出每一对象所具有的各数据成员。
如基类base需要传
递place、count与price三项数据,而派生类shirt则需在base数据的基础上增加第四项
即布料数据material等。
(2)商品的进库(增加库存量)
voidin_something(intadd_cnt);
将对象的库存量count增加一个数量add_cnt。
(3)商品的出库(减少库存量)
voidout_something(intdel_cnt);
将对象的库存量count减少一个数量del_cnt。
(4)该类货品总价格的计算
doubletotal_price();
通过使用“price*count”计算并返回对象所代表货品的总价格。
(5)对象数据的输出。
在屏幕上显示出对象所拥有的当前数据。
//复杂化要求:
1.各自商品拥有独立特征独立库存数量、单价和其他特性
2.2.录入功能中
(1)需要判断现在输入与以前输入的是否相同若相同则叠加库存量
(2)在
(1)的基础上判断单价是否冲突若冲突则要求重新录入
3.功能部分要求自由度并设立查询功能
程序如下:
#include
#include
usingnamespacestd;
classbase{
protected:
floatprice;//单价
stringplace;//产地
intcount;//库存量
public:
base(float&p,int&c,string&pl)
{price=p;count=c;place=pl;}
voidin_something(intadd_cnt)
{count+=add_cnt;}
voidout_something(intdel_cnt)
{
if(del_cnt>count)count=0;//变0保护小于0的按0计算
elsecount-=del_cnt;
}
doubletotal_price()
{returnprice*count;}
intr_count()
{returncount;}
};
classshirt:
publicbase{
protected:
stringmaterial;
public:
shirt(float&p,int&c,string&pl,string&m):
base(p,c,pl)
{material=m;}
voidprint()
{
cout<<"\n衬衣"<<"\t产地:
"<"<<<"\n库存量:
"<"<}
};
classwardrobe:
publicbase{
protected:
stringwood;
stringcolor;
public:
wardrobe(float&p,int&c,string&pl,string&w,string&co):
base(p,c,pl)
{
wood=w;color=co;
}
voidprint()
{
cout<<"\n立柜"<<"\t产地:
"<"<"<"
<"<}
};
classcap:
publicshirt{
protected:
stringstyle;
public:
cap(float&p,int&c,string&pl,string&m,string&st):
shirt(p,c,pl,m)
{
style=st;
}
voidprint()
{
cout<<"\n帽子"<<"\t产地:
"<"<<<"样式:
"<