请使用C++设计一个图书管理系统
时间: 2023-09-22 17:06:41 浏览: 37
好的,以下是一个简单的C++图书管理系统:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
// 书籍信息结构体
struct Book {
string name; // 书名
string author; // 作者
string publisher; // 出版社
string publishDate; // 出版日期
string ISBN; // ISBN号
double price; // 价格
};
// 读者信息结构体
struct Reader {
string name; // 姓名
string gender; // 性别
int age; // 年龄
string contact; // 联系方式
};
// 借阅信息结构体
struct Borrow {
string ISBN; // ISBN号
string readerName; // 读者姓名
string borrowDate; // 借阅日期
string returnDate; // 归还日期
};
// 图书管理系统类
class Library {
public:
// 添加书籍
void addBook();
// 添加读者
void addReader();
// 借阅书籍
void borrowBook();
// 归还书籍
void returnBook();
// 查询书籍
void searchBook();
// 查询读者
void searchReader();
// 查询借阅信息
void searchBorrow();
private:
vector<Book> books; // 书籍信息
vector<Reader> readers; // 读者信息
vector<Borrow> borrows; // 借阅信息
string bookFile = "books.txt"; // 书籍信息存储文件
string readerFile = "readers.txt"; // 读者信息存储文件
string borrowFile = "borrows.txt"; // 借阅信息存储文件
};
// 添加书籍
void Library::addBook() {
// 输入书籍信息
Book newBook;
cout << "请输入书籍信息:" << endl;
cout << "书名:";
getline(cin, newBook.name);
cout << "作者:";
getline(cin, newBook.author);
cout << "出版社:";
getline(cin, newBook.publisher);
cout << "出版日期:";
getline(cin, newBook.publishDate);
cout << "ISBN号:";
getline(cin, newBook.ISBN);
cout << "价格:";
cin >> newBook.price;
cin.ignore(); // 忽略换行符
// 将新书籍信息添加到 books 数组中
books.push_back(newBook);
// 将新书籍信息写入文件中
ofstream fout(bookFile, ios::app);
fout << newBook.name << "," << newBook.author << "," << newBook.publisher
<< "," << newBook.publishDate << "," << newBook.ISBN << "," << newBook.price << endl;
fout.close();
cout << "添加书籍成功!" << endl;
}
// 添加读者
void Library::addReader() {
// 输入读者信息
Reader newReader;
cout << "请输入读者信息:" << endl;
cout << "姓名:";
getline(cin, newReader.name);
cout << "性别:";
getline(cin, newReader.gender);
cout << "年龄:";
cin >> newReader.age;
cin.ignore(); // 忽略换行符
cout << "联系方式:";
getline(cin, newReader.contact);
// 将新读者信息添加到 readers 数组中
readers.push_back(newReader);
// 将新读者信息写入文件中
ofstream fout(readerFile, ios::app);
fout << newReader.name << "," << newReader.gender << "," << newReader.age
<< "," << newReader.contact << endl;
fout.close();
cout << "添加读者成功!" << endl;
}
// 借阅书籍
void Library::borrowBook() {
// 输入借阅信息
Borrow newBorrow;
cout << "请输入借阅信息:" << endl;
cout << "ISBN号:";
getline(cin, newBorrow.ISBN);
cout << "读者姓名:";
getline(cin, newBorrow.readerName);
cout << "借阅日期:";
getline(cin, newBorrow.borrowDate);
cout << "归还日期:";
getline(cin, newBorrow.returnDate);
// 将新借阅信息添加到 borrows 数组中
borrows.push_back(newBorrow);
// 将新借阅信息写入文件中
ofstream fout(borrowFile, ios::app);
fout << newBorrow.ISBN << "," << newBorrow.readerName << ","
<< newBorrow.borrowDate << "," << newBorrow.returnDate << endl;
fout.close();
cout << "借阅成功!" << endl;
}
// 归还书籍
void Library::returnBook() {
// 输入借阅信息
Borrow returnBorrow;
cout << "请输入归还信息:" << endl;
cout << "ISBN号:";
getline(cin, returnBorrow.ISBN);
cout << "读者姓名:";
getline(cin, returnBorrow.readerName);
// 查找借阅信息
int index = -1;
for (int i = 0; i < borrows.size(); i++) {
if (borrows[i].ISBN == returnBorrow.ISBN && borrows[i].readerName == returnBorrow.readerName) {
index = i;
break;
}
}
if (index == -1) {
cout << "未找到借阅信息!" << endl;
return;
}
// 更新借阅信息
string returnDate;
cout << "请输入归还日期:";
getline(cin, returnDate);
borrows[index].returnDate = returnDate;
// 将借阅信息更新到文件中
ofstream fout(borrowFile);
for (int i = 0; i < borrows.size(); i++) {
fout << borrows[i].ISBN << "," << borrows[i].readerName << ","
<< borrows[i].borrowDate << "," << borrows[i].returnDate << endl;
}
fout.close();
cout << "归还成功!" << endl;
}
// 查询书籍
void Library::searchBook() {
string keyword;
cout << "请输入书名、作者、ISBN号等关键字:";
getline(cin, keyword);
cout << "查询结果:" << endl;
for (int i = 0; i < books.size(); i++) {
if (books[i].name.find(keyword) != string::npos ||
books[i].author.find(keyword) != string::npos ||
books[i].ISBN.find(keyword) != string::npos) {
cout << "书名:" << books[i].name << endl;
cout << "作者:" << books[i].author << endl;
cout << "出版社:" << books[i].publisher << endl;
cout << "出版日期:" << books[i].publishDate << endl;
cout << "ISBN号:" << books[i].ISBN << endl;
cout << "价格:" << books[i].price << endl;
cout << endl;
}
}
}
// 查询读者
void Library::searchReader() {
string keyword;
cout << "请输入姓名、联系方式等关键字:";
getline(cin, keyword);
cout << "查询结果:" << endl;
for (int i = 0; i < readers.size(); i++) {
if (readers[i].name.find(keyword) != string::npos ||
readers[i].contact.find(keyword) != string::npos) {
cout << "姓名:" << readers[i].name << endl;
cout << "性别:" << readers[i].gender << endl;
cout << "年龄:" << readers[i].age << endl;
cout << "联系方式:" << readers[i].contact << endl;
cout << endl;
}
}
}
// 查询借阅信息
void Library::searchBorrow() {
string keyword;
cout << "请输入读者姓名或ISBN号:";
getline(cin, keyword);
cout << "查询结果:" << endl;
for (int i = 0; i < borrows.size(); i++) {
if (borrows[i].readerName.find(keyword) != string::npos ||
borrows[i].ISBN.find(keyword) != string::npos) {
cout << "ISBN号:" << borrows[i].ISBN << endl;
cout << "读者姓名:" << borrows[i].readerName << endl;
cout << "借阅日期:" << borrows[i].borrowDate << endl;
cout << "归还日期:" << borrows[i].returnDate << endl;
cout << endl;
}
}
}
// 主函数
int main() {
Library lib;
int choice;
while (true) {
cout << "请选择操作:" << endl;
cout << "1. 添加书籍" << endl;
cout << "2. 添加读者" << endl;
cout << "3. 借阅书籍" << endl;
cout << "4. 归还书籍" << endl;
cout << "5. 查询书籍" << endl;
cout << "6. 查询读者" << endl;
cout << "7. 查询借阅信息" << endl;
cout << "0. 退出" << endl;
cin >> choice;
cin.ignore(); // 忽略换行符
switch (choice) {
case 0:
return 0;
case 1:
lib.addBook();
break;
case 2:
lib.addReader();
break;
case 3:
lib.borrowBook();
break;
case 4:
lib.returnBook();
break;
case 5:
lib.searchBook();
break;
case 6:
lib.searchReader();
break;
case 7:
lib.searchBorrow();
break;
default:
cout << "无效操作,请重新选择!" << endl;
break;
}
}
return 0;
}
```
以上代码实现了一个基本的图书管理系统,包括添加书籍、添加读者、借阅书籍、归还书籍、查询书籍、查询读者和查询借阅信息等功能。程序使用了文件存储书籍、读者和借阅信息,每个信息单独存储在一个文件中,方便数据的管理和维护。