c++制作一个超市购物系统要求有封装性多态性和继承性,其功能包括展示商品类型,购物及余额计算,代码行数在200左右
时间: 2024-03-26 11:39:28 浏览: 61
好的,以下是一份简单的 C++ 超市购物系统代码,实现了面向对象的封装、继承和多态:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 商品类
class Goods {
public:
Goods(string name, double price) : name(name), price(price) {}
virtual ~Goods() {}
string getName() { return name; }
double getPrice() { return price; }
virtual void showInfo() { cout << name << " ¥" << price << endl; }
private:
string name;
double price;
};
// 食品类
class Food : public Goods {
public:
Food(string name, double price, string expireDate) : Goods(name, price), expireDate(expireDate) {}
void showInfo() { cout << getName() << " ¥" << getPrice() << " 过期日期:" << expireDate << endl; }
private:
string expireDate;
};
// 电子产品类
class Electronics : public Goods {
public:
Electronics(string name, double price, string brand) : Goods(name, price), brand(brand) {}
void showInfo() { cout << getName() << " ¥" << getPrice() << " 品牌:" << brand << endl; }
private:
string brand;
};
// 购物车类
class ShoppingCart {
public:
ShoppingCart(double balance) : balance(balance) {}
void addGoods(Goods* goods) {
goodsList.push_back(goods);
cout << "已加入购物车:" << goods->getName() << endl;
}
void showGoodsList() {
if (goodsList.empty()) {
cout << "购物车为空" << endl;
} else {
cout << "购物车列表:" << endl;
for (auto goods : goodsList) {
goods->showInfo();
}
}
}
void calculateTotalPrice() {
double totalPrice = 0.0;
for (auto goods : goodsList) {
totalPrice += goods->getPrice();
}
cout << "商品总价:¥" << totalPrice << endl;
}
void pay() {
double totalPrice = 0.0;
for (auto goods : goodsList) {
totalPrice += goods->getPrice();
}
if (balance < totalPrice) {
cout << "余额不足,请充值" << endl;
} else {
balance -= totalPrice;
cout << "支付成功,余额:" << balance << endl;
goodsList.clear();
}
}
private:
double balance;
vector<Goods*> goodsList;
};
int main() {
Goods* apple = new Food("苹果", 4.5, "2022-01-01");
Goods* banana = new Food("香蕉", 3.0, "2021-12-31");
Goods* phone = new Electronics("手机", 2999.0, "Apple");
ShoppingCart cart(10000.0); // 初始余额 10000 元
cart.addGoods(apple); // 加入购物车:苹果
cart.addGoods(banana); // 加入购物车:香蕉
cart.addGoods(phone); // 加入购物车:手机
cart.showGoodsList(); // 购物车列表:
// 苹果 ¥4.5 过期日期:2022-01-01
// 香蕉 ¥3 品牌:
// 手机 ¥2999 品牌:Apple
cart.calculateTotalPrice(); // 商品总价:¥3006.5
cart.pay(); // 支付成功,余额:6993.5
cart.showGoodsList(); // 购物车为空
delete apple;
delete banana;
delete phone;
return 0;
}
```
该程序中,我们定义了一个 `Goods` 商品类,包含商品名称和价格,以及展示商品信息的虚函数 `showInfo()`,并派生出了 `Food` 食品类和 `Electronics` 电子产品类,它们分别在 `showInfo()` 中展示了不同的商品信息。
我们还定义了一个 `ShoppingCart` 购物车类,包含余额和商品列表,以及添加商品、展示商品列表、计算商品总价和支付等操作。在购物车中,我们使用了指向 `Goods` 类的指针,从而实现了多态的效果。
在 `main()` 函数中,我们创建了苹果、香蕉和手机三个商品,并加入购物车中。之后我们展示了购物车列表、计算商品总价和支付等操作。最后我们还释放了动态分配的内存空间。
以上代码仅供参考,不一定符合您的要求,您可以根据实际需求进行修改和完善。
阅读全文