任务描述
本关任务:通过归纳与总结类之间的继承与派生关系,设计并编程实现若干个相互有关联的自定义类,而后对这些类进行简单使用。
相关知识
为了完成本关任务,你需要掌握:1.如何获取类的定义,2.如何派生类。
获取数组的长度
某商店有如下几种货品:衬衣、帽子、立柜。每一种货物都有与其关联的说明信息。衬衣:单价、产地、布料;帽子:单价、产地、布料、样式(平顶或尖顶);立柜:单价、产地、木料、颜色。
操作要求: 商品的进库(增加某类商品及其库存量),商品的出库(减少某类商品及其库存量),某类货品总价值的计算,总价值=单价*库存数量。注意:当出库数量大于库存数量时,程序会输出提示“Insufficient number!”,同时将系统中的库存数量置为0。合理设计数据结构,用类的继承与派生关系将上述的各种货品表示出来,并使用类的构造函数来初始化每一类对象的初始数据。而后将上述的商品管理计算机化,完成操作要求的功能。
编程要求
根据提示,在右侧编辑器补充代码,完成程序要求
int main() {
Shirt s1("江西南昌",235,150,"纯棉");//商品产地,单价,数量,材质 Cap p1("四川成都",88,150,"尼龙","平顶");//商品产地,单价,数量,形状 Capboard cup1("云南昆明",3500,10,"云松木","原色");//商品产地,单价,数量,材质 int i,j,k,m; cin>>i>>j>>k>>m; s1.InStorage(i); s1.OutStorage(j); p1.OutStorage(k); cup1.OutStorage(m); s1.Calculate(); p1.Calculate(); cup1.Calculate(); }
测试说明
平台会对你编写的代码进行测试:
测试输入: 50 200 100 8
预期输出: total money=0 total money=4400 total money=7000 测试输入: 100 100 50 5 预期输出: `total money=35250 total money=8800 total money=17500
开始你的任务吧,祝你成功!
代码如下:
#include<iostream>
#include<string>
using namespace std;
/***********begin**********/
//此处完成各个类的书写,并实现题目输出
class Shirt {
private:
string place;
int price;
int num;
string mar;
public:
Shirt(string, int, int, string);
void InStorage(int i);
void OutStorage(int j);
void Calculate();
};
Shirt::Shirt(string a, int b, int c, string d)
{
place = a;
price = b;
num = c;
mar = d;
}
void Shirt::InStorage(int i)
{
num = num + i;
}
void Shirt::OutStorage(int j)
{
if (j > num)
{
cout << "Insufficient number!" << endl;
}
else {
num = num - j;
}
}
void Shirt::Calculate()
{
int m;
m = num * price;
cout << "total money=" << m << endl;
}
class Cap:public Shirt
{
public:
Cap(string, int, int, string, string);
private:
string shape;
};
Cap::Cap(string a, int b, int c, string d, string e):Shirt(a,b,c,d),shape(e){}
class Capboard:public Shirt
{
public:
Capboard(string, int, int, string, string);
private:
string color;
};
Capboard::Capboard(string a,int b,int c,string d,string f):Shirt(a,b,c,d),color(f){}
/**********end***********/
int main() {
Shirt s1("江西南昌", 235, 150, "纯棉");
Cap p1("四川成都", 88, 150, "尼龙", "平顶");
Capboard cup1("云南昆明", 3500, 10, "云松木", "原色");
int i, j, k, m;
cin >> i >> j >> k >> m;
s1.InStorage(i);
s1.OutStorage(j);
p1.OutStorage(k);
cup1.OutStorage(m);
s1.Calculate();
p1.Calculate();
cup1.Calculate();
}