用c++实现//某顾客到商店购买生活物品,购买:米5斤每斤2.4元,猪肉2斤每斤10元,油一壶50元, // 请设计一段程序实现顾客购物清单及总价的计算及显示,具体要求如下: //(1)编写一个抽象类Goods,在public中包含两个纯虚函
时间: 2024-01-26 07:03:17 浏览: 79
用.net编写的C++程序,写一个超市的售货结算,手动输入模拟读码器
数getPrice和getName,分别用于获取商品单价和商品名称。
//(2)编写三个子类,分别表示米、猪肉和油,实现父类中的纯虚函数,并添加一个私有成员变量quantity表示购买数量。
//(3)编写一个ShoppingCart类,包含一个vector成员变量用于存储购买的商品,提供addGoods方法用于向购物车中添加商品,以及getTotalPrice方法用于获取购物车中所有商品的总价。
//(4)在主函数中,创建米、猪肉、油三个商品对象,调用addGoods方法将它们添加到购物车中,最后调用getTotalPrice方法输出购物清单和总价。
#include<iostream>
#include<vector>
#include<string>
using namespace std;
class Goods {
public:
virtual double getPrice() = 0;
virtual string getName() = 0;
};
class Rice : public Goods {
private:
double price = 2.4;
string name = "rice";
int quantity;
public:
Rice(int q) {
quantity = q;
}
double getPrice() {
return price * quantity;
}
string getName() {
return name;
}
};
class Pork : public Goods {
private:
double price = 10;
string name = "pork";
int quantity;
public:
Pork(int q) {
quantity = q;
}
double getPrice() {
return price * quantity;
}
string getName() {
return name;
}
};
class Oil : public Goods {
private:
double price = 50;
string name = "oil";
int quantity;
public:
Oil(int q) {
quantity = q;
}
double getPrice() {
return price * quantity;
}
string getName() {
return name;
}
};
class ShoppingCart {
private:
vector<Goods*> cart;
public:
void addGoods(Goods* g) {
cart.push_back(g);
}
double getTotalPrice() {
double total = 0;
for (int i = 0; i < cart.size(); i++) {
total += cart[i]->getPrice();
cout << cart[i]->getName() << " " << cart[i]->getPrice() << endl;
}
cout << "Total price: " << total << endl;
return total;
}
};
int main() {
Rice* r = new Rice(5);
Pork* p = new Pork(2);
Oil* o = new Oil(1);
ShoppingCart cart;
cart.addGoods(r);
cart.addGoods(p);
cart.addGoods(o);
cart.getTotalPrice();
delete r, p, o;
return 0;
}
阅读全文