图书馆管理系统 c++
时间: 2023-10-18 09:04:06 浏览: 42
一个图书馆管理系统的基本模块包括:书籍信息管理、读者信息管理、借阅管理、归还管理等。下面是一个简单的 C++ 代码示例:
```c++
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
// 书籍信息结构体
struct Book {
string name;
string author;
string publisher;
string isbn;
bool available; // 是否可借
};
// 读者信息结构体
struct Reader {
string name;
string id;
vector<Book*> borrowed_books; // 已借书籍指针集合
};
vector<Book> books; // 所有书籍
vector<Reader> readers; // 所有读者
// 添加书籍
void add_book() {
Book book;
cout << "请输入书籍信息:" << endl;
cout << "书名:";
getline(cin, book.name);
cout << "作者:";
getline(cin, book.author);
cout << "出版社:";
getline(cin, book.publisher);
cout << "ISBN:";
getline(cin, book.isbn);
book.available = true;
books.push_back(book);
cout << "添加成功!" << endl;
}
// 添加读者
void add_reader() {
Reader reader;
cout << "请输入读者信息:" << endl;
cout << "姓名:";
getline(cin, reader.name);
cout << "学号/工号:";
getline(cin, reader.id);
readers.push_back(reader);
cout << "添加成功!" << endl;
}
// 借书
void borrow_book() {
string book_name;
string reader_id;
cout << "请输入借书信息:" << endl;
cout << "书名:";
getline(cin, book_name);
cout << "借书人学号/工号:";
getline(cin, reader_id);
// 查找书籍
auto book_iter = find_if(books.begin(), books.end(), [&book_name](const Book& book) {
return book.name == book_name && book.available;
});
// 查找读者
auto reader_iter = find_if(readers.begin(), readers.end(), [&reader_id](const Reader& reader) {
return reader.id == reader_id;
});
if (book_iter == books.end()) {
cout << "未找到该书籍或该书籍不可借!" << endl;
} else if (reader_iter == readers.end()) {
cout << "未找到该读者!" << endl;
} else {
// 借书成功,更新书籍和读者信息
(*book_iter).available = false;
(*reader_iter).borrowed_books.push_back(&(*book_iter));
cout << "借书成功!" << endl;
}
}
// 还书
void return_book() {
string book_name;
string reader_id;
cout << "请输入还书信息:" << endl;
cout << "书名:";
getline(cin, book_name);
cout << "借书人学号/工号:";
getline(cin, reader_id);
// 查找书籍
auto book_iter = find_if(books.begin(), books.end(), [&book_name](const Book& book) {
return book.name == book_name && !book.available;
});
// 查找读者
auto reader_iter = find_if(readers.begin(), readers.end(), [&reader_id](const Reader& reader) {
return reader.id == reader_id;
});
if (book_iter == books.end()) {
cout << "未找到该书籍或该书籍已归还!" << endl;
} else if (reader_iter == readers.end()) {
cout << "未找到该读者!" << endl;
} else {
// 还书成功,更新书籍和读者信息
(*book_iter).available = true;
auto borrowed_books = &(*reader_iter).borrowed_books;
auto borrowed_book_iter = find(borrowed_books->begin(), borrowed_books->end(), &(*book_iter));
borrowed_books->erase(borrowed_book_iter);
cout << "还书成功!" << endl;
}
}
int main() {
int choice;
while (true) {
cout << "请选择操作:1. 添加书籍 2. 添加读者 3. 借书 4. 还书 5. 退出" << endl;
cin >> choice;
cin.ignore(); // 忽略换行符
switch (choice) {
case 1:
add_book();
break;
case 2:
add_reader();
break;
case 3:
borrow_book();
break;
case 4:
return_book();
break;
case 5:
return 0;
default:
cout << "无效操作!" << endl;
break;
}
}
return 0;
}
```
这个示例代码只是一个简单的图书馆管理系统模型,实际应用中还需要考虑更多因素,如借书期限、超期罚款、图书分类、读者类型等。