用vs实现一个简易的自动售货系统,售货柜中有若干种商品,每种商品有名称(name)、价格(price),库存(stock)三个属性。实现以下功能。 。售货柜可以列出当前的所有商品,每种商品显示各自的名称,库存和价格。。给售货柜补货,即给指定名称的商品添加一定数量的库存。 ●销售商品,给定商品的名称和数量以及顾客预支配金额,判断金额是否足够,若不够则 进行提醒,若足够则减库存并找零。 提示 创建两个类,一个是售货柜类(SellingMachine),另一个是商品类(Product)。
时间: 2024-03-12 15:46:48 浏览: 178
好的,下面是一个简单的实现方案。
首先是商品类(Product),代码如下:
```cpp
class Product {
public:
Product(string name, double price, int stock) :
m_name(name), m_price(price), m_stock(stock) {}
string getName() { return m_name; }
double getPrice() { return m_price; }
int getStock() { return m_stock; }
void addStock(int num) { m_stock += num; }
bool sell(int num, double money) {
if (num <= 0 || num > m_stock) return false;
double total_price = num * m_price;
if (money < total_price) return false;
m_stock -= num;
cout << "找零:" << money - total_price << endl;
return true;
}
private:
string m_name;
double m_price;
int m_stock;
};
```
这个类包含了商品的三个属性,以及两个操作:添加库存和销售商品。销售商品时需要传入购买数量和顾客支付的金额,然后判断是否足够支付,如果足够则减少库存并计算找零,否则返回false。
接下来是售货柜类(SellingMachine),代码如下:
```cpp
class SellingMachine {
public:
void addProduct(Product product) {
for (auto &p : m_products) {
if (p.getName() == product.getName()) {
p.addStock(product.getStock());
return;
}
}
m_products.push_back(product);
}
void showProducts() {
for (auto &p : m_products) {
cout << "名称:" << p.getName() << ", 库存:" << p.getStock()
<< ", 价格:" << p.getPrice() << endl;
}
}
bool sellProduct(string name, int num, double money) {
for (auto &p : m_products) {
if (p.getName() == name) {
return p.sell(num, money);
}
}
return false;
}
private:
vector<Product> m_products;
};
```
这个类包含了一个商品列表,以及三个操作:添加商品、列出商品、销售商品。添加商品时需要查找是否已经有了这种商品,如果有则直接添加库存,否则新建一个商品并添加到列表中。列出商品时遍历列表输出每种商品的信息。销售商品时需要查找是否有这种商品,如果有则调用商品的sell方法进行销售。
这个简易的自动售货系统就实现了。下面是一个使用示例:
```cpp
int main() {
Product p1("可乐", 2.5, 10);
Product p2("雪碧", 2.8, 5);
Product p3("红茶", 3.0, 3);
SellingMachine sm;
sm.addProduct(p1);
sm.addProduct(p2);
sm.addProduct(p3);
cout << "售货柜中的商品有:" << endl;
sm.showProducts();
cout << endl << "补货可乐" << endl;
p1.addStock(5);
sm.showProducts();
cout << endl << "销售雪碧 2 瓶,支付 5 元" << endl;
if (sm.sellProduct("雪碧", 2, 5)) {
cout << "销售成功" << endl;
} else {
cout << "销售失败" << endl;
}
cout << endl << "销售红茶 4 杯,支付 10 元" << endl;
if (sm.sellProduct("红茶", 4, 10)) {
cout << "销售成功" << endl;
} else {
cout << "销售失败" << endl;
}
return 0;
}
```
输出结果为:
```
售货柜中的商品有:
名称:可乐, 库存:10, 价格:2.5
名称:雪碧, 库存:5, 价格:2.8
名称:红茶, 库存:3, 价格:3
补货可乐
名称:可乐, 库存:15, 价格:2.5
名称:雪碧, 库存:5, 价格:2.8
名称:红茶, 库存:3, 价格:3
销售雪碧 2 瓶,支付 5 元
找零:-0.1
销售成功
销售红茶 4 杯,支付 10 元
销售失败
```
阅读全文