用线性顺序表写出图书管理系统
时间: 2024-09-21 22:08:09 浏览: 46
基于线性表的图书管理系统 源代码 顺序表&链表
创建一个简单的图书管理系统通常会涉及到图书(Book)的数据结构、图书列表(List of Books)、以及添加、删除、查找等基本操作。这里我会给你提供一个使用C++实现的基本概念框架:
```cpp
#include <iostream>
#include <string>
using namespace std;
// 定义图书类
class Book {
public:
string title;
string author;
int publicationYear;
// 构造函数
Book(string t, string a, int y) : title(t), author(a), publicationYear(y) {}
// 显示书的信息
void display() {
cout << "Title: " << title << ", Author: " << author << ", Publication Year: " << publicationYear << endl;
}
};
// 线性顺序表(使用数组或动态分配)
class Library {
private:
int size;
Book* books; // 书籍指针数组
public:
Library(int s = 5) { size = s; books = new Book[size]; } // 初始化库容量
// 添加图书
void addBook(Book book) {
if (size == 0) {
books[0] = book;
} else {
for (int i = 0; i < size; ++i) {
if (books[i].title.empty()) { // 如果找到空位置,则插入
books[i] = book;
break;
}
}
if (i == size) { // 插入满时,扩展数组
size *= 2;
Book* temp = new Book[size];
for (int j = 0; j < size; ++j) {
if (j < size / 2) {
temp[j] = books[j];
} else {
temp[j - size / 2] = books[j];
}
}
delete[] books;
books = temp;
}
}
}
// 删除图书(根据标题查找并移除)
bool removeBook(string title) {
for (int i = 0; i < size; ++i) {
if (books[i].title == title) {
for (int j = i; j < size - 1; ++j) {
books[j] = books[j + 1];
}
size--;
return true;
}
}
return false;
}
// 查找图书
Book* findBook(string title) const {
for (int i = 0; i < size; ++i) {
if (books[i].title == title) {
return &books[i];
}
}
return nullptr;
}
// 释放资源(记得在程序结束前调用)
~Library() {
delete[] books;
}
};
int main() {
Library myLibrary(10);
Book book1("The Great Gatsby", "F. Scott Fitzgerald", 1925);
myLibrary.addBook(book1);
book1.display(); // 显示新添加的书信息
if (myLibrary.removeBook("The Great Gatsby")) {
cout << "Book removed successfully." << endl;
} else {
cout << "Book not found." << endl;
}
return 0;
}
```
这个例子中,我们定义了一个`Book`类表示图书,包含标题、作者和出版年份。`Library`类负责管理这些图书,包括初始化、添加、删除和查找图书。请注意,这个简单版本的线性顺序表没有优化处理如书籍重复的情况,实际应用可能需要进行更复杂的数据结构设计。
阅读全文