Question 1:
Use the following guidelines when writing you code:
//Book.h //Library.h
//Prog4.cpp fretzPark.addBook("Rocky", "L123.54", true); fretzPark.displayAllBooks(); fretzPark.addBook("Rocky6", "L123.59", true); fretzPark.displayAllBooks(); fretzPark.removeBookByTitle("Rocky2"); fretzPark.displayAllBooks(); fretzPark.addBook("Rocky6", "L123.59", true); fretzPark.displayAllBooks(); const Book *myBook1=fretzPark.getBookByCallNo("L123.59"); const Book *myBook2=fretzPark.getBookByTitle("Rocky7"); |
Solution 1: Save the following code in a file named Book.h ---------------------------------start--------------------------------------- class Book { #endif
Save the following code in a file named Book.cpp -----------------------------------------------------------start----------------------------- #include "Book.h"
#include <CSTRING> using namespace std;
#include <IOSTREAM> using namespace std;
Book::Book(char* bookTitle,char* bookCallNumber,bool bookCirculating) { strcpy(title,bookTitle); strcpy(callNumber,bookCallNumber); circulating=bookCirculating; Book::bookCount++; }
Book::~Book() { Book::bookCount--; }
bool Book::getCirculating() const { return circulating; }
void Book::setCirculating(bool bookCirculating) { circulating=bookCirculating; }
const char* Book::getTitle() const { return title; }
const char* Book::getCallNumber() const { return callNumber; }
int Book::getCount() { return Book::bookCount; }
int Book::bookCount = 0; ----------------------------------------------------------end-------------------------------
Save the following code in a file named Library.h
---------------------------------start--------------------------------------- #ifndef LIBRARY_H #define LIBRARY_H #include "Book.h"
class Library { public: Library(int=10); ~Library(); void addBook(char*,char*,bool); void removeBookByTitle(char*); void removeBookByCallNo(char*); const Book* getBookByTitle(char*) const; const Book* getBookByCallNo(char*) const; void displayAllBooks() const; static int getBookCount(); int getBookShelfSpace() const; private: Book **bookShelf; Book* bookPtr[10]; const int bookShelfSpace; };
#endif -----------------------------------------------------------------end------------------------ --------------------------------------------------------------start-------------------------- #include "Book.h" #include "Library.h"
#include <CSTRING> using namespace std;
#include <IOSTREAM> using namespace std;
Library::Library(int libraryBookShelfSpace): bookShelfSpace(libraryBookShelfSpace) { bookShelf=bookPtr; for(int i=0;i<bookShelfSpace;i++) { bookPtr[i]=NULL; }
}
Library::~Library() { for(int i=0;i<bookShelfSpace;i++) { if(bookPtr[i]!=NULL) { delete bookPtr[i]; bookPtr[i]=NULL; return; } } }
void Library::addBook(char *bookTitle, char *bookCallNumber, bool bookCirculatity) { int numberOfBooksOnShelf=getBookCount(); if(numberOfBooksOnShelf<bookShelfSpace) { for(int i=0;i<bookShelfSpace;i++) { if(bookPtr[i]==NULL) { bookPtr[i]=new Book(bookTitle,bookCallNumber,bookCirculatity); return; } } } else cout<<"\nBookshelf is full"; }
void Library::removeBookByTitle(char *bookTitle) { for(int i=0;i<bookShelfSpace;i++) { if(bookPtr[i]!=NULL) { if(strcmp(bookPtr[i]->getTitle(),bookTitle)==0) { delete bookPtr[i]; bookPtr[i]=NULL; cout<<"\nBook removed"; return; } } } cout<<"\nNo book matching this title"; }
void Library::removeBookByCallNo(char *bookCallNo) { for(int i=0;i<bookShelfSpace;i++) { if(bookPtr[i]!=NULL) { if(strcmp(bookPtr[i]->getCallNumber(),bookCallNo)==0) { delete bookPtr[i]; bookPtr[i]=NULL; cout<<"\nBook removed"; return; } } } cout<<"\nNo book matching this Call Number"; }
const Book* Library::getBookByTitle(char *bookTitle) const { for(int i=0;i<bookShelfSpace;i++) { if((bookPtr[i])!=NULL) { if(strcmp((bookPtr[i])->getTitle(),bookTitle)==0) { cout<<"\nBook found"; return bookPtr[i]; } } } cout<<"\nNo book matching this title"; return NULL; }
const Book* Library::getBookByCallNo(char *bookCallNo) const { for(int i=0;i<bookShelfSpace;i++) { if(bookPtr[i]!=NULL) { if(strcmp(bookPtr[i]->getCallNumber(),bookCallNo)==0) { cout<<"\nBook found"; return bookPtr[i]; } } } cout<<"\nNo book matching this Call Number"; return NULL; }
void Library::displayAllBooks() const { int flag=0; cout<<"\nBooks available in library: \n"; for(int i=0;i<bookShelfSpace;i++) { if(bookPtr[i]!=NULL) { flag++; cout<<"\nBook Title: "<<bookPtr[i]->getTitle(); } } if(flag==0) cout<<"No books in library";
}
int Library::getBookCount() { return Book::getCount(); }
int Library::getBookShelfSpace() const { return bookShelfSpace; } -------------------------------------------------------------end----------------------------
Save the following code in a file named Prog4.cpp #include "Library.h" #include "Book.h" #include <CONIO.H> #include <IOSTREAM> using namespace std;
void main() { Library fretzPark(5); fretzPark.displayAllBooks(); cout << "\nBook count = " << Book::getCount() << endl;
fretzPark.addBook("Rocky", "L123.54", true); fretzPark.addBook("Rocky2", "L123.55", false); fretzPark.addBook("Rocky3", "L123.56", true); fretzPark.addBook("Rocky4", "L123.57", true); fretzPark.addBook("Rocky5", "L123.58", true);
fretzPark.displayAllBooks(); cout << "\nBook count = " << Book::getCount() << endl;
fretzPark.addBook("Rocky6", "L123.59", true); fretzPark.addBook("Rocky7", "Li23.510", false);
fretzPark.displayAllBooks(); cout << "\nBook count = " << Book::getCount() << endl;
fretzPark.removeBookByTitle("Rocky2"); fretzPark.removeBookByCallNo("L123.57"); fretzPark.removeBookByCallNo("L999.66");
fretzPark.displayAllBooks(); cout << "\nBook count = " << Book::getCount() << endl;
fretzPark.addBook("Rocky6", "L123.59", true); fretzPark.addBook("Rocky7", "L123.510", false);
fretzPark.displayAllBooks(); cout << "\nBook count = " << Book::getCount() << endl;
const Book *myBook1=fretzPark.getBookByCallNo("L123.59"); if (myBook1 != NULL){ cout << "Title: " << myBook1->getTitle() << endl; cout << "Call number: " << myBook1->getCallNumber() << endl; cout << "Circulating: " <<(myBook1->getCirculating()? "Yes" : "No") << endl; }
const Book *myBook2=fretzPark.getBookByTitle("Rocky7"); if (myBook2 != NULL){ cout << "\n\nTitle: " << myBook2->getTitle() << endl; cout << "Call number: " << myBook2->getCallNumber() << endl; cout << "Circulating: " << (myBook2->getCirculating()? "Yes" : "No") << endl; } getch(); }
-----------------------------------------------------------------end------------------------ |