按如下要求编写程序: I)实现描述超市的的类Suppermacket 类,记录系统中现有商品(用指针实现),定义 增加商品的函数Append,删除商品的函数D elete,查询商品的函数Query,并显示查询结 果; 2)定义商品类Goods,具有商品名称Na me,商品价格price,商品数量number等属 性,操作Sale(销售商品,余额不足时给予 提示)、Add(商品上架操作)和ShowMe (显示商品信息)。 3)编写main函数,测试以上所要求的各 种功能,完成商品的增加、删除和查询商品, 以及商品销售和商品上架的操作。 4)可以利用对象成员来实现。
时间: 2023-06-09 15:05:58 浏览: 138
好的,我知道了你的要求。我可以帮你回答这个问题。
首先,我们需要定义商品类Goods。它具有商品名称Name,商品价格Price,商品数量Number等属性。操作有Sale,Add和ShowMe。其中,Sale用于销售商品并提示余额不足,Add用于商品上架,ShowMe用于显示商品信息。这里简化了操作,如果需要更多功能,请自行扩展。
```
class Goods {
private:
string name;
float price;
int number;
public:
Goods(string n, float p, int num): name(n), price(p), number(num) {}
void Sale(float& balance, int quantity) {
if (quantity > number) {
cout << "Sorry, not enough goods!" << endl;
return;
}
float pay = quantity * price;
if (balance < pay) {
cout << "Sorry, insufficient balance!" << endl;
return;
}
balance -= pay;
number -= quantity;
cout << "Successfully sold " << quantity << " " << name << " for " << pay << "." << endl;
}
void Add(int quantity) {
number += quantity;
cout << "Successfully added " << quantity << " " << name << "." << endl;
}
void ShowMe() {
cout << "Name: " << name << ", Price: " << price << ", Number: " << number << endl;
}
};
```
接下来是描述超市的类Suppermacket类。它记录系统中现有商品(用指针实现),定义增加商品的函数Append,删除商品的函数Delete,查询商品的函数Query,并显示查询结果。我们定义了一个数组来存储商品的指针。
```
class Suppermacket {
private:
vector<Goods*> goodsList;
public:
void Append(Goods* goods) {
goodsList.push_back(goods);
cout << "Successfully added goods " << goods->GetName() << "." << endl;
}
void Delete(int index) {
if (index < 0 || index >= goodsList.size()) {
cout << "Invalid index!" << endl;
return;
}
goodsList.erase(goodsList.begin() + index);
cout << "Successfully deleted goods." << endl;
}
void Query(string name) {
bool found = false;
for (int i = 0; i < goodsList.size(); i++) {
if (goodsList[i]->GetName() == name) {
found = true;
goodsList[i]->ShowMe();
}
}
if (!found) {
cout << "No goods found!" << endl;
}
}
};
```
最后,我们编写main函数,测试各种功能,完成商品的增加、删除和查询商品,以及商品销售和商品上架的操作。
```
int main() {
// 创建超市对象
Suppermacket Market;
// 创建商品
Goods* apple = new Goods("Apple", 2.5f, 100);
Goods* banana = new Goods("Banana", 1.5f, 50);
// 商品上架
Market.Append(apple);
Market.Append(banana);
// 商品查询
Market.Query("Apple");
Market.Query("Banana");
Market.Query("Orange");
// 商品销售
float balance = 100f;
apple->Sale(balance, 20);
banana->Sale(balance, 30);
apple->Sale(balance, 100);
// 商品删除
Market.Delete(0);
Market.Query("Apple");
Market.Query("Banana");
// 释放资源
delete apple;
delete banana;
return 0;
}
```
上面的代码演示了如何使用Suppermacket类和Goods类实现编写程序要求的功能。你可以根据实际需要进行修改和扩展。
阅读全文