# include & lt字符串& gt
# include & ltvector & gt
# include & ltcstdlib & gt
使用命名空間std
課堂用書{
公共:
void addBook();
string book info(bool is _ borrowed = false)const;
void modified info();
內聯bool findBook(常量字符串& ampinfo,bool by_isbn = false) const{
if (by_isbn)
返回m _ isbn = = info
其他
return m _ author = = info | | m _ ISBN = = info | | m _ name = = info | | m _ publisher = = info;
}
私人:
字符串m_name,m_author,m_isbn,m _ publisher
};
分類系統{
公共:
void findBookInfo()const;
book * find book()const;
void modified book info();
void addBook();
void borrow book();
void remove book();
void pop menu();
inline void leftBookNum() const{
cout & lt& lt"剩余書籍:"
cout & lt& lt"總計:"
};
私人:
向量& ltBook * & gt書,借_書;
};
void Book::addBook(){
cout & lt& lt"請輸入圖書名稱:";
CIN & gt;& gtm _ name
cout & lt& lt“請輸入圖書作者:“;
CIN & gt;& gtm _作者;
cout & lt& lt"請輸入書號:";
CIN & gt;& gtm _ isbn
cout & lt& lt"請輸入圖書出版商:";
CIN & gt;& gtm _ publisher
cout & lt& lt“添加成功!”& lt& ltendl
}
string Book::Book info(bool is _ lowered)const {
字符串信息;
info = " Title:"+this-& gt;m_name +(是_借的?"(lent)\ n ":" \ n ");
Info += "作者:"+this-& gt;m _ author+" \ n number:"+this-& gt;m _ ISBN+" \ n press:"+this-& gt;m _ publisher+" \ n ";
返回信息;
}
void Book::modifiedInfo(){
cout & lt& lt"修訂版:\n1。標題\n2。作者\n3。編號\n4。出版社\ n請選擇:";
int n;
CIN & gt;& gtn;
開關(n){
案例1:{
cout & lt& lt"請輸入圖書名稱:";
CIN & gt;& gt這-& gt;m _ name
打破;
}
案例2:{
cout & lt& lt“請輸入圖書作者:“;
CIN & gt;& gt這-& gt;m _作者;
打破;
}
案例3:{
CIN & gt;& gt"請輸入書號:";
CIN & gt;& gt這-& gt;m _ isbn
打破;
}
案例4:{
cout & lt& lt"請輸入圖書出版商:";
CIN & gt;& gt這-& gt;m _ publisher
打破;
}
默認值:{
cout & lt& lt“選錯了!”& lt& ltendl
返回;
}
}
cout & lt& lt“修改成功!”& lt& ltendl
}
Book *System::findBook() const{
cout & lt& lt"請輸入書號:";
字符串isbn
CIN & gt;& gtisbn
Book * book = NULL
for(size _ t t = 0;t!= books . size();t++){
if(books . at(t)-& gt;findBook(isbn,true)){
book = books . at(t);
打破;
}
}
if (book == NULL){
for(size _ t t = 0;t!= lowed _ books . size();t++){
if(借閱_書籍. at(t)-& gt;findBook(isbn,true)){
book =借入_ books . at(t);
打破;
}
}
}
還書;
}
void System::findBookInfo()const {
cout & lt& lt“請輸入書名/作者/序號/出版社進行搜索”:
字符串信息;
CIN & gt;& gt信息;
int count = 0;
size _ t t = 0;
for(t = 0;t!= books . size();t++){
if(books . at(t)-& gt;findBook(info)){
cout & lt& ltbooks . at(t)-& gt;book info()& lt;& ltendl
count++;
}
}
for(t = 0;t!= lowed _ books . size();t++){
if(借閱_書籍. at(t)-& gt;findBook(info)){
cout & lt& lt借閱_書籍. at(t)-& gt;book info(true)& lt;& ltendl
count++;
}
}
cout & lt& lt“* * *找到了”
}
void System::addBook(){
書*書=新書;
書-& gt;addBook();
books . push _ back(book);
}
void System::modifiedBookInfo(){
book * book = find book();
if(book == NULL)
cout & lt& lt“沒有這樣的書!”& lt& ltendl
其他
書-& gt;modified info();
}
void System::removeBook(){
book * book = find book();
if(book == NULL){
cout & lt& lt“沒有這樣的書!”& lt& ltendl
返回;
}
向量& ltBook * & gt*叠代器it = books . begin();
for(it = books . begin();它!= books . end();it++){
if((*it) == book){
books . erase(it);
cout & lt& lt“刪除成功!”& lt& ltendl
返回;
}
}
for(it = borrowed _ books . begin();它!= lowed _ books . end();it++){
if((*it) == book){
借來的_ books . erase(it);
cout & lt& lt“刪除成功!”& lt& ltendl
返回;
}
}
cout & lt& lt“刪除失敗!”& lt& ltendl
}
void System::borrowBook(){
book * book = find book();
if(book == NULL){
cout & lt& lt“沒有這樣的書!”& lt& ltendl
返回;
}
for(vector & lt;Book * & gt*叠代器it = books . begin();它!= books . end();it++){
if((*it) == book){
books . erase(it);
打破;
}
}
borrowed_books.push_back(圖書);
cout & lt& lt“借書成功了!”& lt& ltendl
}
void System::popMenu(){
while(true){
const string menu = " = = = = = = = = = = = = = = = = = = = = = = = = = = = = \ n圖書管理系統\n1。圖書條目\n2。圖書信息修改\n3。圖書刪除\n4。
cout & lt& lt菜單;
int n;
CIN & gt;& gtn;
開關(n){
案例1:{
addBook();
打破;
}
案例2:{
modifiedBookInfo();
打破;
}
案例3:{
remove book();
打破;
}
案例4:{
findBookInfo();
打破;
}
案例5:{
borrow book();
打破;
}
案例6:{
leftBookNum();
打破;
}
案例7:{
退出(0);
}
默認值:{
cout & lt& lt"錯誤選擇"
CIN . sync();
CIN . clear();
打破;
}
}
}
}
int main(){
System *sys =新系統;
sys-& gt;pop menu();
返回0;
}