#include "Book.h"
#include "Reader.h"
#include "Manager.h"
#include <stdlib.h>
#include <iostream>
using namespace std;
// 添加书籍
void Manager::AddBook(Book book)
{
m_bookList.push_back(book);
cout << "书籍添加成功" << endl;
}
// 删除书籍
void Manager::DeleteBook(string bid)
{
for (int i = 0; i < m_bookList.size(); i++)
{
if (m_bookList[i].IsThisBook(bid))
{
m_bookList.erase(m_bookList.begin() + i);
cout << "书籍删除成功" << endl;
break;
}
}
}
// 打印所有图书列表
void Manager::PrintBookList()
{
for (int i = 0; i < m_bookList.size(); i++)
{
cout << i+1 << ")\t";
m_bookList[i].Show();
}
}
// 打印未借出图书列表
void Manager::PrintUBList()
{
int k = 0;
for (int i = 0; i < m_bookList.size(); i++)
{
if (!m_bookList[i].IsBorrowed())
{
cout << ++k << ")\t";
m_bookList[i].Show();
}
}
}
// 打印已借出图书列表
void Manager::PrintEBList()
{
int k = 0;
for (int i = 0; i < m_bookList.size(); i++)
{
if (m_bookList[i].IsBorrowed())
{
cout << ++k << ")\t";
m_bookList[i].Show();
}
}
}
// 添加读者
void Manager::AddReader(Reader reader)
{
m_readerList.push_back(reader);
cout << "读者添加成功" << endl;
}
// 删除读者
void Manager::DeleteReader(string rid)
{
for (int i = 0; i < m_readerList.size(); i++)
{
if (m_readerList[i].IsThisReader(rid))
{
m_readerList[i].ReturnAllBooks();
m_readerList.erase(m_readerList.begin() + i);
cout << "书籍删除成功" << endl;
break;
}
}
}
// 打印读者列表
void Manager::PrintReaderList()
{
for (int i = 0; i < m_readerList.size(); i++)
{
m_readerList[i].ShowInfo();
}
}
// 借书
void Manager::Borrow(string r_id, string b_id)
{
Reader* r = FindReader(r_id);
Book* b = FindBook(b_id);
if (!r->CanBorrowBook())
{
cout << "该读者已借满10本书,无法继续借书" << endl;
return;
}
if (b->IsBorrowed())
{
cout << "该书籍已被借出,请先归还该书" << endl;
return;
}
r->Borrow(b);
b->Borrow(r);
cout << "借书成功" << endl;
}
// 还书
void Manager::Return(string r_id, string b_id)
{
Reader* r = FindReader(r_id);
Book* b = FindBook(b_id);
r->Return(b);
b->Return();
cout << "还书成功" << endl;
}
// 显示借书列表
void Manager::ShowBrrList()
{
for (int i = 0; i < m_readerList.size(); i++)
{
m_readerList[i].ShowBookList();
}
}
// 根据读者id查找读者
Reader* Manager::FindReader(string id)
{
for (int i = 0; i < m_readerList.size(); i++)
{
if (m_readerList[i].IsThisReader(id))
{
return &m_readerList[i];
}
}
}
// 根据图书id查找图书
Book* Manager::FindBook(string id)
{
for (int i = 0; i < m_bookList.size(); i++)
{
if (m_bookList[i].IsThisBook(id))
{
return &m_bookList[i];
}
}
}
// 显示主页
void Manager::ShowMainBoard()
{
system("cls");
cout << "------------------------------\n";
cout << "| 图书借阅系统 |\n";
cout << "------------------------------\n";
cout << "a 添加图书 \n";
cout << "b 删除图书 \n";
cout << "c 打印所有图书 \n";
cout << "d 打印未借出图书 \n";
cout << "e 打印已借出图书 \n";
cout << "f 添加读者 \n";
cout << "g 删除读者 \n";
cout << "h 打印所有读者 \n";
cout << "i 借书 \n";
cout << "j 还书 \n";
cout << "k 显示借书列表 \n";
cout << "q 退出图书借阅系统 \n";
cout << "请输入您要执行的操作命令:";
}
// 运行图书管理系统
void Manager::Run()
{
char cmd;
string id, name, r_id, b_id;
Book* book;
Reader* reader;
int i;
while(1)
{
ShowMainBoard();
cin >> cmd;
system("cls");
switch(cmd)
{
case 'a':
cout << "请输入图书的编号和书名:";
cin >> id >> name;
book = new Book(id, name);
AddBook(*book);
break;
case 'b':
cout << "请输入要删除的图书id:";
cin >> id;
DeleteBook(id);
break;
case 'c':
PrintBookList();
break;
case 'd':
PrintUBList();
break;
case 'e':
PrintEBList();
break;
case 'f':
cout << "请输入读者的编号和姓名:";
cin >> id >> name;
reader = new Reader (id, name);
AddReader(*reader);
break;
case 'g':
cout << "请输入要删除的读者id:";
cin >> id;
DeleteReader(id);
break;
case 'h':
PrintReaderList();
break;
case 'i':
cout << "请输入读者编号和图书编号:";
cin >> r_id >> b_id;
Borrow(r_id, b_id);
break;
case 'j':
cout << "请输入读者编号和图书编号:";
cin >> r_id >> b_id;
Return(r_id, b_id);
break;
case 'k':
for (i = 0; i < m_readerList.size(); i++)
m_readerList[i].ShowBookList();
break;
case 'q':
return;
}
cout << "退出请按q,返回主页请按其他键: ";
char cmm;
cin >> cmm;
if (cmm == 'q')
break;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
图书管理系统.rar (27个子文件)
图书管理系统
Reader.h 636B
Lib2.dsp 5KB
Lib2.opt 49KB
Book.h 559B
Book.cpp 809B
Lib2.plg 1KB
Lib2.ncb 73KB
Lib2.dsw 531B
main.cpp 82B
Debug
Lib2.ilk 828KB
Lib2.pdb 1.11MB
Reader.obj 71KB
图书管理系统(简易).exe 576KB
Manager.obj 251KB
vc60.idb 89KB
Manager.sbr 211KB
main.obj 26KB
Reader.sbr 115KB
vc60.pdb 132KB
Book.sbr 115KB
Lib2.exe 576KB
Lib2.pch 2.06MB
Book.obj 70KB
main.sbr 150KB
Reader.cpp 1KB
Manager.h 1012B
Manager.cpp 5KB
共 27 条
- 1
资源评论
- 色空空色2023-07-26文件中的描述语言直接、明了,让人可以很快就理解并运用其中的代码。
- LauraKuang2023-07-26这个文件详细介绍了用C语言实现一个简易的图书管理系统,让人读起来感到很实用。
- 艾苛尔2023-07-26文件中给出了一个简单却有鲜明特色的图书管理系统的实现思路,算是一个很好的学习案例。
- 坐在地心看宇宙2023-07-26通过阅读这份文件,我对C语言的面向对象编程有了更深入的了解,收获颇多。
- FloritaScarlett2023-07-26作者在代码的编写上做到了面向对象的思维方式,使得系统的扩展性变得很好。
武玲奈
- 粉丝: 2
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功