某顾客到商店购买生活物品,购买:米5斤每斤2.4元,猪肉2斤每斤10元,油一壶50元,请设计一段程序实现顾客购物清单及总价的计算及显示,具体要求如下: (1)编写一个抽象类Goods,在public中包含两个纯虚函数goodsprice与show; (2)编写三个类rice、pork、oil,公共继承Goods类;且每个类都两个私有属性weight,price分别表示单位及单位价格,有一个私有goodsprice函数计算商品价格:weight*price;有一个公有函数show显示商品的价格; (3)编写一个total函数计算所有商品总价; (4)编写main函数显示所有商品的价格及总价。
时间: 2024-02-15 08:04:45 浏览: 55
好的,以下是程序的实现:
```cpp
#include<iostream>
using namespace std;
// 抽象类Goods
class Goods{
public:
virtual double goodsprice() = 0; // 纯虚函数
virtual void show() = 0; // 纯虚函数
};
// 商品rice
class rice: public Goods{
private:
double weight;
double price;
public:
rice(double w, double p){
weight = w;
price = p;
}
double goodsprice() { // 重写goodsprice函数
return weight * price;
}
void show() { // 重写show函数
cout << "rice: " << goodsprice() << " yuan" << endl;
}
};
// 商品pork
class pork: public Goods{
private:
double weight;
double price;
public:
pork(double w, double p){
weight = w;
price = p;
}
double goodsprice() { // 重写goodsprice函数
return weight * price;
}
void show() { // 重写show函数
cout << "pork: " << goodsprice() << " yuan" << endl;
}
};
// 商品oil
class oil: public Goods{
private:
double weight;
double price;
public:
oil(double w, double p){
weight = w;
price = p;
}
double goodsprice() { // 重写goodsprice函数
return weight * price;
}
void show() { // 重写show函数
cout << "oil: " << goodsprice() << " yuan" << endl;
}
};
// 计算所有商品总价
double total(Goods** goodsList, int n) {
double total = 0;
for (int i = 0; i < n; i++) {
total += goodsList[i]->goodsprice();
}
return total;
}
// 主函数
int main() {
// 创建商品对象
rice r(5, 2.4);
pork p(2, 10);
oil o(1, 50);
// 创建商品指针数组
Goods* goodsList[3];
goodsList[0] = &r;
goodsList[1] = &p;
goodsList[2] = &o;
// 显示每个商品的价格
for (int i = 0; i < 3; i++) {
goodsList[i]->show();
}
// 显示所有商品的总价
cout << "Total: " << total(goodsList, 3) << " yuan" << endl;
return 0;
}
```
运行结果为:
```
rice: 12 yuan
pork: 20 yuan
oil: 50 yuan
Total: 82 yuan
```
阅读全文