某学校图书馆管理系统中,书本种类信息包括:书号,书名,价格三项属性,且书的种类不超过 20,用 C++ 编写代码,分别用顺序存储方式和链式存储方式实现图书管理系统数据结构的构建,并至少能够进行初始化,
时间: 2024-10-17 22:07:09 浏览: 63
在C++中,我们可以用两种常见的方式创建一个图书管理系统的数据结构,一种是数组(顺序存储),另一种是动态链表(链式存储)。这里我会分别给出这两种情况下的代码实现。
**顺序存储(数组)方式:**
```cpp
#include <iostream>
using namespace std;
const int MAX_BOOKS = 20; // 最大书籍数
struct Book {
string bookID;
string title;
double price;
};
class Library {
private:
Book books[MAX_BOOKS]; // 顺序数组存储书本信息
int numBooks; // 当前书籍数量
public:
// 初始化函数
void initialize() {
numBooks = 0;
}
// 添加新书
void addBook(string id, string name, double price) {
if (numBooks < MAX_BOOKS) {
books[numBooks].bookID = id;
books[numBooks].title = name;
books[numBooks].price = price;
numBooks++;
} else {
cout << "书籍已达最大容量,无法添加新的书本。\n";
}
}
// ...其他操作(如查找、删除等)
};
// 示例
int main() {
Library lib;
lib.initialize();
lib.addBook("001", "计算机科学入门", 59.9);
// ...更多操作...
return 0;
}
```
**链式存储(链表)方式:**
```cpp
#include <iostream>
#include <string>
struct BookNode {
string bookID;
string title;
double price;
BookNode* next;
BookNode(const string& id, const string& name, double p) : bookID(id), title(name), price(p), next(nullptr) {}
};
class NodePtr {
private:
BookNode* ptr;
public:
NodePtr() : ptr(nullptr) {}
void set(BookNode* node) { ptr = node; }
BookNode* get() { return ptr; }
};
class DynamicLibrary {
private:
NodePtr head; // 链表头部指针
int numBooks; // 当前书籍数量
public:
// 初始化函数
void initialize() {
head.set(nullptr);
numBooks = 0;
}
// 添加新书
void addBook(string id, string name, double price) {
BookNode* newNode = new BookNode(id, name, price);
newNode->next = head.get();
head.set(newNode);
numBooks++;
}
// ...其他操作(如查找、删除等)
};
// 示例
int main() {
DynamicLibrary dynamicLib;
dynamicLib.initialize();
dynamicLib.addBook("002", "数据结构基础", 49.9);
// ...更多操作...
return 0;
}
```
阅读全文