使用现代C++设计一个图书馆类
以下是一个简单的图书馆类的示例代码:
#include <vector>
#include <string>
#include <iostream>
class Book {
public:
Book(std::string title, std::string author, int year, bool available)
: title_(title), author_(author), year_(year), available_(available) {}
std::string getTitle() const { return title_; }
std::string getAuthor() const { return author_; }
int getYear() const { return year_; }
bool isAvailable() const { return available_; }
void setAvailable(bool available) { available_ = available; }
private:
std::string title_;
std::string author_;
int year_;
bool available_;
};
class Library {
public:
void addBook(const Book& book) {
books_.push_back(book);
}
void removeBook(const Book& book) {
for (auto it = books_.begin(); it != books_.end(); ++it) {
if (*it == book) {
books_.erase(it);
return;
}
}
}
std::vector<Book> searchBooks(const std::string& title, const std::string& author, int year) {
std::vector<Book> result;
for (const auto& book : books_) {
if (book.getTitle() == title && book.getAuthor() == author && book.getYear() == year) {
result.push_back(book);
}
}
return result;
}
void printBooks() const {
for (const auto& book : books_) {
std::cout << book.getTitle() << " by " << book.getAuthor() << " (" << book.getYear() << ")";
if (book.isAvailable()) {
std::cout << " - available" << std::endl;
} else {
std::cout << " - not available" << std::endl;
}
}
}
private:
std::vector<Book> books_;
};
int main() {
Library library;
Book book1("The C++ Programming Language", "Bjarne Stroustrup", 1985, true);
Book book2("Effective C++", "Scott Meyers", 1992, true);
Book book3("Design Patterns", "Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides", 1994, false);
library.addBook(book1);
library.addBook(book2);
library.addBook(book3);
library.printBooks();
std::vector<Book> results = library.searchBooks("Design Patterns", "Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides", 1994);
std::cout << "Search results:" << std::endl;
for (const auto& book : results) {
std::cout << book.getTitle() << " by " << book.getAuthor() << " (" << book.getYear() << ")" << std::endl;
}
return 0;
}
这个图书馆类包含了添加书籍、删除书籍、搜索书籍和打印书籍列表等基本功能。每本书都有标题、作者、出版年份和可用性属性。搜索函数可以根据书名、作者和年份进行搜索,返回匹配的书籍列表。打印函数会列出所有书籍的信息,包括标题、作者、出版年份和可用性状态。
原文地址: https://www.cveoy.top/t/topic/Juh 著作权归作者所有。请勿转载和采集!