C++设计一个抽象类,编写一个程序实现图书和杂志销售管理。当输入一系列图书和杂志销售记录后,将销售记录良好(图书每月销售500本以上,杂志每月销售2500本以上)的图书和杂志名称显示出来。
时间: 2024-02-20 16:57:15 浏览: 43
一个用c++做的图书管理系统
5星 · 资源好评率100%
好的,下面是一个抽象类 `Publication` 的设计:
```cpp
#include <string>
class Publication {
public:
Publication(std::string name, int sales) : name_(name), sales_(sales) {}
virtual bool is_popular() const = 0;
std::string name() const { return name_; }
protected:
std::string name_;
int sales_;
};
```
然后我们可以创建两个子类 `Book` 和 `Magazine`,它们分别继承自 `Publication` 类,并实现 `is_popular` 方法:
```cpp
class Book : public Publication {
public:
Book(std::string name, int sales) : Publication(name, sales) {}
bool is_popular() const override {
return sales_ >= 500;
}
};
class Magazine : public Publication {
public:
Magazine(std::string name, int sales) : Publication(name, sales) {}
bool is_popular() const override {
return sales_ >= 2500;
}
};
```
最后,我们可以编写一个程序来输入销售记录,并显示出销售良好的图书和杂志名称:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<Book> books;
std::vector<Magazine> magazines;
while (true) {
std::string name;
std::cout << "请输入书籍/杂志名称:";
std::getline(std::cin, name);
if (name.empty()) {
break;
}
std::cout << "请输入该书籍/杂志的月销售量:";
int sales;
std::cin >> sales;
std::cin.ignore();
if (name.substr(0, 2) == "书") {
books.emplace_back(name, sales);
} else if (name.substr(0, 2) == "杂志") {
magazines.emplace_back(name, sales);
}
}
std::vector<std::string> popular_books, popular_magazines;
for (const auto& book : books) {
if (book.is_popular()) {
popular_books.push_back(book.name());
}
}
for (const auto& magazine : magazines) {
if (magazine.is_popular()) {
popular_magazines.push_back(magazine.name());
}
}
std::cout << "销售良好的书籍有:";
for (const auto& name : popular_books) {
std::cout << name << " ";
}
std::cout << std::endl;
std::cout << "销售良好的杂志有:";
for (const auto& name : popular_magazines) {
std::cout << name << " ";
}
std::cout << std::endl;
return 0;
}
```
这个程序会不断要求输入书籍/杂志名称和月销售量,当输入空字符串时结束输入。最后会输出销售良好的图书和杂志名称。
阅读全文