【任务描述】用c++编写一个图书信息管理系统对我校的图书信息进行管理并实现借书、还书功能。【功能要求】1管理员功能 图书信息管理:图书信息包括:编号、书名、作者名、分类号、出版单位、出版时间、库存数量价格等。可对图书进行添加、删除、修改、查询等操作。 读者信息管理:读者信息包括:编号借阅号姓名最大借阅额度已借阅数量。可对读者信息进行添加、删除、修改、查询、保存、浏览等操作。 借阅信息查询:可
【代码实现】
以下是一个简单的图书信息管理系统的c++代码实现:
#include
using namespace std;
// 定义图书信息结构体 struct Book { string id; // 编号 string name; // 书名 string author; // 作者名 string category; // 分类号 string publisher; // 出版单位 string pub_date; // 出版时间 int stock; // 库存数量 double price; // 价格 };
// 定义读者信息结构体 struct Reader { string id; // 编号 string borrow_id; // 借阅号 string name; // 姓名 int borrow_limit; // 最大借阅额度 int borrow_count; // 已借阅数量 };
// 定义借阅信息结构体 struct Borrow { string book_id; // 图书编号 string reader_id; // 读者编号 string borrow_date; // 借书日期 string return_date; // 还书日期 };
// 文件名 const string BOOK_FILE = "book.txt"; const string READER_FILE = "reader.txt"; const string BORROW_FILE = "borrow.txt";
// 全局变量
vector
// 读取图书信息 void read_book() { ifstream fin(BOOK_FILE); if (!fin) { cout << "无法打开文件 " << BOOK_FILE << endl; return; } books.clear(); Book book; while (fin >> book.id >> book.name >> book.author >> book.category >> book.publisher >> book.pub_date >> book.stock >> book.price) { books.push_back(book); } fin.close(); }
// 保存图书信息 void save_book() { ofstream fout(BOOK_FILE); if (!fout) { cout << "无法打开文件 " << BOOK_FILE << endl; return; } for (auto book : books) { fout << book.id << " " << book.name << " " << book.author << " " << book.category << " " << book.publisher << " " << book.pub_date << " " << book.stock << " " << book.price << endl; } fout.close(); }
// 添加图书信息 void add_book() { Book book; cout << "请输入图书信息:" << endl; cout << "编号:"; cin >> book.id; cout << "书名:"; cin >> book.name; cout << "作者名:"; cin >> book.author; cout << "分类号:"; cin >> book.category; cout << "出版单位:"; cin >> book.publisher; cout << "出版时间(格式:yyyy-mm-dd):"; cin >> book.pub_date; cout << "库存数量:"; cin >> book.stock; cout << "价格:"; cin >> book.price; books.push_back(book); save_book(); cout << "添加成功!" << endl; }
// 删除图书信息 void delete_book() { string id; cout << "请输入要删除的图书编号:"; cin >> id; for (auto it = books.begin(); it != books.end(); ++it) { if (it->id == id) { books.erase(it); save_book(); cout << "删除成功!" << endl; return; } } cout << "没有找到该图书!" << endl; }
// 修改图书信息 void modify_book() { string id; cout << "请输入要修改的图书编号:"; cin >> id; for (auto it = books.begin(); it != books.end(); ++it) { if (it->id == id) { cout << "请输入新的图书信息:" << endl; cout << "编号:"; cin >> it->id; cout << "书名:"; cin >> it->name; cout << "作者名:"; cin >> it->author; cout << "分类号:"; cin >> it->category; cout << "出版单位:"; cin >> it->publisher; cout << "出版时间(格式:yyyy-mm-dd):"; cin >> it->pub_date; cout << "库存数量:"; cin >> it->stock; cout << "价格:"; cin >> it->price; save_book(); cout << "修改成功!" << endl; return; } } cout << "没有找到该图书!" << endl; }
// 查询图书信息 void query_book() { string keyword; cout << "请输入查询关键字:"; cin >> keyword; for (auto book : books) { if (book.id == keyword || book.name == keyword || book.author == keyword || book.category == keyword || book.publisher == keyword || book.pub_date == keyword) { cout << "编号:" << book.id << endl; cout << "书名:" << book.name << endl; cout << "作者名:" << book.author << endl; cout << "分类号:" << book.category << endl; cout << "出版单位:" << book.publisher << endl; cout << "出版时间:" << book.pub_date << endl; cout << "库存数量:" << book.stock << endl; cout << "价格:" << book.price << endl; } } }
// 读取读者信息 void read_reader() { ifstream fin(READER_FILE); if (!fin) { cout << "无法打开文件 " << READER_FILE << endl; return; } readers.clear(); Reader reader; while (fin >> reader.id >> reader.borrow_id >> reader.name >> reader.borrow_limit >> reader.borrow_count) { readers.push_back(reader); } fin.close(); }
// 保存读者信息 void save_reader() { ofstream fout(READER_FILE); if (!fout) { cout << "无法打开文件 " << READER_FILE << endl; return; } for (auto reader : readers) { fout << reader.id << " " << reader.borrow_id << " " << reader.name << " " << reader.borrow_limit << " " << reader.borrow_count << endl; } fout.close(); }
// 添加读者信息 void add_reader() { Reader reader; cout << "请输入读者信息:" << endl; cout << "编号:"; cin >> reader.id; cout << "借阅号:"; cin >> reader.borrow_id; cout << "姓名:"; cin >> reader.name; cout << "最大借阅额度:"; cin >> reader.borrow_limit; cout << "已借阅数量:"; cin >> reader.borrow_count; readers.push_back(reader); save_reader(); cout << "添加成功!" << endl; }
// 删除读者信息 void delete_reader() { string id; cout << "请输入要删除的读者编号:"; cin >> id; for (auto it = readers.begin(); it != readers.end(); ++it) { if (it->id == id) { readers.erase(it); save_reader(); cout << "删除成功!" << endl; return; } } cout << "没有找到该读者!" << endl; }
// 修改读者信息 void modify_reader() { string id; cout << "请输入要修改的读者编号:"; cin >> id; for (auto it = readers.begin(); it != readers.end(); ++it) { if (it->id == id) { cout << "请输入新的读者信息:" << endl; cout << "编号:"; cin >> it->id; cout << "借阅号:"; cin >> it->borrow_id; cout << "姓名:"; cin >> it->name; cout << "最大借阅额度:"; cin >> it->borrow_limit; cout << "已借阅数量:"; cin >> it->borrow_count; save_reader(); cout << "修改成功!" << endl; return; } } cout << "没有找到该读者!" << endl; }
// 查询读者信息 void query_reader() { string keyword; cout << "请输入查询关键字:"; cin >> keyword; for (auto reader : readers) { if (reader.id == keyword || reader.borrow_id == keyword || reader.name == keyword) { cout << "编号:" << reader.id << endl; cout << "借阅号:" << reader.borrow_id << endl; cout << "姓名:" << reader.name << endl; cout << "最大借阅额度:" << reader.borrow_limit << endl; cout << "已借阅数量:" << reader.borrow_count << endl; } } }
// 读取借阅信息 void read_borrow() { ifstream fin(BORROW_FILE); if (!fin) { cout << "无法打开文件 " << BORROW_FILE << endl; return; } borrows.clear(); Borrow borrow; while (fin >> borrow.book_id >> borrow.reader_id >> borrow.borrow_date >> borrow.return_date) { borrows.push_back(borrow); } fin.close(); }
// 保存借阅信息 void save_borrow() { ofstream fout(BORROW_FILE); if (!fout) { cout << "无法打开文件 " << BORROW_FILE << endl; return; } for (auto borrow : borrows) { fout << borrow.book_id << " " << borrow.reader_id << " " << borrow.borrow_date << " " << borrow.return_date << endl; } fout.close(); }
// 借书功能 void borrow_book() { string book_id, reader_id; cout << "请输入要借阅的图书编号:"; cin >> book_id; cout << "请输入借阅人编号:"; cin >> reader_id; for (auto book : books) { if (book.id == book_id) { if (book.stock > 0) { for (auto reader : readers) { if (reader.id == reader_id) { if (reader.borrow_count < reader.borrow_limit) { Borrow borrow; borrow.book_id = book_id; borrow.reader_id = reader_id; borrow.borrow_date = "2021-01-01"; // 借书日期暂时写死 borrow.return_date = ""; // 还书日期为空 borrows.push_back(borrow); book.stock--; reader.borrow_count++; save_borrow(); save_book(); save_reader(); cout << "借书成功!" << endl; return; } else { cout << "已达到最大借阅额度!" << endl; return; } } } cout << "没有找到该借阅人!" << endl; return; } else { cout << "库存不足!" << endl; return; } } } cout << "没有找到该图书!" << endl; }
// 还书功能 void return_book() { string book_id, reader_id; cout << "请输入要归还的图书编号:"; cin >> book_id; cout << "请输入借阅人编号:"; cin >> reader_id; for (auto borrow : borrows) { if (borrow.book_id == book_id && borrow.reader_id == reader_id) { for (auto book : books) { if (book.id == book_id) { book.stock++; break; } } for (auto reader : readers) { if (reader.id == reader_id) { reader.borrow_count--; break; } } borrow.return_date = "2021-01-02"; // 还书日期暂时写死 save_borrow(); save_book(); save_reader(); cout << "还书成功!" << endl; return; } } cout << "没有找到该借阅记录!" << endl; }
int main() { read_book(); read_reader(); read_borrow(); while (true) { cout << "请选择操作:" << endl; cout << "1.图书信息管理" << endl; cout << "2.读者信息管理" << endl; cout << "3.借阅信息查询" << endl; cout << "4.图书查询" << endl; cout << "5.借书" << endl; cout << "6.还书" << endl; cout << "0.退出" << endl; int choice; cin >> choice; switch (choice) { case 1: while (true) { cout << "请选择操作:" << endl; cout << "1.添加图书信息" << endl; cout << "2.删除图书信息" << endl; cout << "3.修改图书信息" << endl; cout << "4.查询图书信息" << endl; cout << "0.返回上一级菜单" << endl; cin >> choice; switch (choice) { case 1: add_book(); break; case 2: delete_book(); break; case 3: modify_book(); break; case 4: query_book(); break; case 0: goto BOOK_END; default: cout << "无效操作!" << endl; } } BOOK_END: break; case 2: while (true) { cout << "请选择操作:" << endl; cout << "1.添加读者信息" << endl; cout << "2.删除读者信息" << endl; cout << "3.修改读者信息" << endl; cout << "4.查询读者信息" << endl; cout << "0.返回上一级菜单" << endl; cin >> choice; switch (choice) { case 1: add_reader(); break; case 2: delete_reader(); break; case 3: modify_reader(); break; case 4: query_reader(); break; case 0: goto READER_END; default: cout << "无效操作!" << endl; } } READER_END: break; case 3: cout << "借阅信息查询功能开发中..." << endl; break; case 4: query_book(); break; case 5: borrow_book(); break; case 6: return_book(); break; case 0: return 0; default: cout << "无效操作!" << endl; } }
原文地址: http://www.cveoy.top/t/topic/hnXs 著作权归作者所有。请勿转载和采集!