利用向量容器设计并实现一个图书评级类对若干图书进行评级,对评级后的图书可以 进行删除、插人等操作。
时间: 2023-11-28 14:51:05 浏览: 42
好的,我来为你介绍一下如何使用向量容器来设计实现一个图书评级类。
首先,我们需要定义一个图书评级类 BookRating,它应该包含以下成员变量和成员函数:
成员变量:
- bookName:图书名称
- rating:评级(介于1到5之间)
成员函数:
- BookRating():构造函数,初始化成员变量
- setBookName():设置图书名称
- setRating():设置评级
- getBookName():获取图书名称
- getRating():获取评级
接下来,我们需要使用向量容器来存储这些 BookRating 对象。在 C++ 中,可以使用 std::vector 来实现向量容器。我们可以定义一个 vector<BookRating> 类型的容器 books,用来存储所有的 BookRating 对象。
然后,我们可以定义以下函数来实现对这个图书评级类进行操作:
- addBookRating():向 books 容器中添加一个 BookRating 对象
- removeBookRating():从 books 容器中删除一个指定的 BookRating 对象
- updateBookRating():更新指定的 BookRating 对象的评级
- getBookRatings():获取所有的 BookRating 对象
下面是一个示例代码,演示了如何使用向量容器来实现一个图书评级类:
```cpp
#include <iostream>
#include <vector>
class BookRating {
public:
BookRating() : rating(0) {}
void setBookName(const std::string& name) {
bookName = name;
}
void setRating(int r) {
rating = r;
}
std::string getBookName() const {
return bookName;
}
int getRating() const {
return rating;
}
private:
std::string bookName;
int rating;
};
class BookRatingManager {
public:
void addBookRating(const BookRating& book) {
books.push_back(book);
}
void removeBookRating(const std::string& name) {
for (auto it = books.begin(); it != books.end(); ++it) {
if (it->getBookName() == name) {
books.erase(it);
break;
}
}
}
void updateBookRating(const std::string& name, int rating) {
for (auto& book : books) {
if (book.getBookName() == name) {
book.setRating(rating);
break;
}
}
}
std::vector<BookRating> getBookRatings() const {
return books;
}
private:
std::vector<BookRating> books;
};
int main() {
BookRatingManager manager;
// 添加图书评级
BookRating book1;
book1.setBookName("C++ Primer");
book1.setRating(4);
manager.addBookRating(book1);
BookRating book2;
book2.setBookName("Effective C++");
book2.setRating(5);
manager.addBookRating(book2);
// 获取所有图书评级
auto allBooks = manager.getBookRatings();
for (const auto& book : allBooks) {
std::cout << book.getBookName() << ": " << book.getRating() << std::endl;
}
// 更新图书评级
manager.updateBookRating("C++ Primer", 5);
// 获取所有图书评级
allBooks = manager.getBookRatings();
for (const auto& book : allBooks) {
std::cout << book.getBookName() << ": " << book.getRating() << std::endl;
}
// 删除图书评级
manager.removeBookRating("Effective C++");
// 获取所有图书评级
allBooks = manager.getBookRatings();
for (const auto& book : allBooks) {
std::cout << book.getBookName() << ": " << book.getRating() << std::endl;
}
return 0;
}
```
这个示例代码中,我们定义了一个 BookRating 类,表示一个图书评级对象。然后,我们定义了一个 BookRatingManager 类,用来管理所有的图书评级。它使用向量容器来存储所有的 BookRating 对象,并实现了添加、删除、更新和获取所有图书评级的操作。
在 main 函数中,我们演示了如何使用 BookRatingManager 对象来添加、更新和删除图书评级,并获取所有图书评级的操作。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)