
In ICS 211 our group was asked to create a library management system using C++. We used a website called Replit to collaborate work on the code and share our ideas/codes within the group. There was add book, delete book, edit book, search book, view all books, and quit.
class Book {
private:
std::string isbn;
std::string title;
std::string author;
std::string edition;
std::string publication;
public:
virtual void displayBookInfo() const {
std::cout << "ISBN: " << isbn << "\nTitle: " << title << "\nAuthor: " << author
<< "\nEdition: " << edition << "\nPublication: " << publication << "\n";
}
void setIsbn(const std::string& value) { isbn = value; }
void setTitle(const std::string& value) { title = value; }
void setAuthor(const std::string& value) { author = value; }
void setEdition(const std::string& value) { edition = value; }
void setPublication(const std::string& value) { publication = value; }
std::string getIsbn() const { return isbn; }
std::string getTitle() const { return title; }
std::string getAuthor() const { return author; }
std::string getEdition() const { return edition; }
std::string getPublication() const { return publication; }
};
class Fiction : public Book {
private:
std::string genre;
public:
void setGenre(const std::string& g) { genre = g; }
std::string getGenre() const { return genre; }
void displayBookInfo() const override {
std::cout << "Fiction Book\n";
Book::displayBookInfo();
std::cout << "Genre: " << genre << "\n";
}
};
class NonFiction : public Book {
private:
std::string topic;
public:
void setTopic(const std::string& t) { topic = t; }
std::string getTopic() const { return topic; }
void displayBookInfo() const override {
std::cout << "Non-Fiction Book\n";
Book::displayBookInfo();
std::cout << "Topic: " << topic << "\n";
}
};
class Library {
private:
static const int MAX_BOOKS = 100;
Book* books[MAX_BOOKS];
int numBooks;
public:
Library() : numBooks(0) {}
void addBook(Book* book) {
if (numBooks < MAX_BOOKS) {
books[numBooks++] = book;
} else {
std::cout << "Library is full. Cannot add more books.\n";
}
}
void deleteBook(const std::string& isbn) {
for (int i = 0; i < numBooks; ++i) {
if (books[i]->getIsbn() == isbn) {
for (int j = i; j < numBooks - 1; ++j) {
books[j] = books[j + 1];
}
delete books[--numBooks];
std::cout << "Book with ISBN " << isbn << " deleted.\n";
return;
}
}
std::cout << "Book with ISBN " << isbn << " not found.\n";
}
void searchBook(const std::string& isbn) const {
for (int i = 0; i < numBooks; ++i) {
if (books[i]->getIsbn() == isbn) {
books[i]->displayBookInfo();
return;
}
}
std::cout << "Book with ISBN " << isbn << " not found.\n";
}
void viewAllBooks() const {
if (numBooks == 0) {
std::cout << "No books in the library.\n";
} else {
std::cout << "All Books in the Library:\n";
for (int i = 0; i < numBooks; ++i) {
books[i]->displayBookInfo();
std::cout << "------------------------\n";
}
}
}
void editBook(const std::string& isbn) {
for (int i = 0; i < numBooks; ++i) {
if (books[i]->getIsbn() == isbn) {
std::cout << "Enter new details for the book with ISBN " << isbn << ":\n";
std::string newTitle;
std::cout << "Enter new Title: ";
std::cin.ignore();
std::getline(std::cin, newTitle);
books[i]->setTitle(newTitle);
std::cout << "Book details updated.\n";
return;
}
}
std::cout << "Book with ISBN " << isbn << " not found.\n";
}
~Library() {
for (int i = 0; i < numBooks; ++i) {
delete books[i];
}
}
};
int main() {
Library library;
int choice;
std::string isbn;
do {
std::cout << "\nLIBRARY MANAGEMENT SYSTEM\n"
<< "[1] ADD FICTION BOOK\n"
<< "[2] ADD NONFICTION BOOK\n"
<< "[3] DELETE BOOK\n"
<< "[4] EDIT BOOK\n"
<< "[5] SEARCH BOOK\n"
<< "[6] VIEW ALL BOOKS\n"
<< "[7] EXIT\n\n"
<< "Enter Choice: ";
std::cin >> choice;
switch (choice) {
case 1: {
// Add a new fiction book
Fiction* newFiction = new Fiction();
std::cout << "Enter ISBN: ";
std::cin >> isbn;
newFiction->setIsbn(isbn);
std::cout << "Enter Title: ";
std::cin.ignore();
std::getline(std::cin, isbn);
newFiction->setTitle(isbn);
std::cout << "Enter Author: ";
std::getline(std::cin, isbn);
newFiction->setAuthor(isbn);
std::cout << "Enter Edition: ";
std::getline(std::cin, isbn);
newFiction->setEdition(isbn);
std::cout << "Enter Publication: ";
std::getline(std::cin, isbn);
newFiction->setPublication(isbn);
std::cout << "Enter Genre: ";
std::getline(std::cin, isbn);
newFiction->setGenre(isbn);
std::cout << "Book Added";
library.addBook(newFiction);
break;
}
case 2: {
// Add a new nonfiction book
NonFiction* newNonFiction = new NonFiction();
std::cout << "Enter ISBN: ";
std::cin >> isbn;
newNonFiction->setIsbn(isbn);
std::cout << "Enter Title: ";
std::cin.ignore();
std::getline(std::cin, isbn);
newNonFiction->setTitle(isbn);
std::cout << "Enter Author: ";
std::getline(std::cin, isbn);
newNonFiction->setAuthor(isbn);
std::cout << "Enter Edition: ";
std::getline(std::cin, isbn);
newNonFiction->setEdition(isbn);
std::cout << "Enter Publication: ";
std::getline(std::cin, isbn);
newNonFiction->setPublication(isbn);
std::cout << "Enter Topic: ";
std::getline(std::cin, isbn);
newNonFiction->setTopic(isbn);
std::cout << "Book Added!!!!";
library.addBook(newNonFiction);
break;
}
case 3: {
// Delete a book
std::cout << "Enter ISBN of the book to delete: ";
std::cin >> isbn;
library.deleteBook(isbn);
break;
}
case 4: {
// Edit book details
std::cout << "Enter ISBN of the book to edit: ";
std::cin >> isbn;
library.editBook(isbn);
break;
}
case 5: {
// Search for a book
std::cout << "Enter ISBN of the book to search: ";
std::cin >> isbn;
library.searchBook(isbn);
break;
}
case 6: {
// View all books
library.viewAllBooks();
break;
}
case 7: {
// Exit the program
std::cout << "Exiting the program.\n";
break;
}
default: {
std::cout << "Invalid choice. Please try again.\n";
break;
}
}
} while (choice != 7);
return 0;
}
Source: Group-8-Project