某学校的图书管理系统中,书本种类信息包括:书号、书名、价格三项属性,且书的种类数不超过20。编写C++程序代码,用链式存储方式实现该图书管理系统数据结构的构建,并至少能够进行初始化、清空、增加、删除、查找操作。
时间: 2024-10-17 11:07:58 浏览: 31
为了实现这个图书管理系统的链式数据结构,我们可以创建一个简单的Book类作为节点,包含书号、书名和价格等属性,然后用一个动态数组或者链表来存储这些节点。下面是一个简化的C++实现:
```cpp
#include <iostream>
#include <list>
class Book {
public:
int bookID;
std::string title;
double price;
// 构造函数
Book(int id, const std::string& name, double p) : bookID(id), title(name), price(p) {}
// 显示书的信息
void display() {
std::cout << "Book ID: " << bookID << ", Title: " << title << ", Price: $" << price << "\n";
}
};
// 图书管理系统类
class LibrarySystem {
private:
std::list<Book> books; // 链表用于存储书籍
public:
// 初始化
void init() {
books.clear(); // 清空列表
}
// 添加新书
void addBook(Book newBook) {
books.push_back(newBook); // 将新书添加到列表尾部
}
// 删除一本书
void deleteBook(int id) {
for (auto it = books.begin(); it != books.end(); ++it) {
if (it->bookID == id) {
books.erase(it);
break;
}
}
}
// 查找书籍
bool findBook(int id) {
for (const auto& book : books) {
if (book.bookID == id) {
book.display();
return true;
}
}
std::cout << "Book not found." << std::endl;
return false;
}
};
int main() {
LibrarySystem libSys;
libSys.init();
// 示例操作
Book book1(1, "Book1", 29.99);
libSys.addBook(book1);
libSys.findBook(1); // 查找并显示 book1
return 0;
}
```
在这个例子中,我们首先定义了一个Book类,然后在LibrarySystem类中实现了初始化、添加、删除和查找的功能。注意这里使用的是C++标准库中的list容器,因为它支持在任意位置插入和删除元素,非常适合实现这种需要频繁增删操作的数据结构。
阅读全文