Untitled
unknown
plain_text
a year ago
7.0 kB
6
Indexable
/* Project: LIBRARY MANAGEMENT SYSTEM Features: Add New Book Delete Book Display All Book Search for a Book Issue a Book Return a Book */ #include <iostream> #include <string> #include <vector> #include <limits> using namespace std; struct book { unsigned int id = 0; string title = ""; string author = ""; bool isIssued = false; }; static void add_book(vector<book> &books); static void delete_book(vector<book> &books); static void display_book(vector<book> &books); static void search_book(vector<book> &books); static void issue_book(vector<book> &books, unsigned int id); static void return_book(vector<book> &books); static bool redundancy_checker(vector<book> &books); int main() { static vector<book> books; unsigned int choice = 0; while (true) { cout << "\n-----WELCOME TO LIBRARY MANAGEMENT SYSTEM-----\n"; cout << "\nPlease select from the below options:\n"; cout << "1. Add Book" << endl; cout << "2. Delete Book" << endl; cout << "3. Display Book List" << endl; cout << "4. Search/Issue Book" << endl; cout << "5. Return Book" << endl; cout << "6. Exit Portal" << endl; cout << "\nEnter your choice: "; while (!(cin >> choice)) { cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); cout << "Please enter a valid input : "; } if (choice == 1) { add_book(books); } else if (choice == 2) { delete_book(books); } else if (choice == 3) { display_book(books); } else if (choice == 4) { search_book(books); } else if (choice == 5) { return_book(books); } else if (choice == 6) { return 0; } else { cout << "Please enter a valid choice out of the given options" << endl; } } add_book(books); add_book(books); delete_book(books); display_book(books); search_book(books); return 0; } static bool redundancy_checker(vector<book> &books, unsigned int id) { for (auto &book : books) { if (book.id == id) { return true; } } return false; } static void add_book(vector<book> &books) { book newBook; while (true) { cout << "Enter ID : "; while (!(cin >> newBook.id)) { cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); cout << "Enter a valid value : "; } if (redundancy_checker(books, newBook.id)) { cout << "A book with same ID has already been registered.\n" << endl; } else { break; } } cin.ignore(); cout << "Enter the title of the book : "; getline(cin, newBook.title); cout << "Enter the author name : "; getline(cin, newBook.author); books.push_back(newBook); cout << "\nAdded Successfully !!" << endl; cout << "Book ID : " << newBook.id << endl; cout << "Book Name : " << newBook.title << endl; cout << "Author : " << newBook.author << endl; for (int i = 0; i < (newBook.title).length() + 9; i++) { cout << "-"; } cout << "\n" << endl; } static void delete_book(vector<book> &books) { unsigned int id; cout << "Enter the ID of the book which you want to delete : "; while (!(cin >> id)) { cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); cout << "Enter a valid value : "; } for (auto it = books.begin(); it != books.end();) { if (it->id == id) { it = books.erase(it); cout << "Book deleted successfully!\n"; return; // Exit after deleting the book } else { ++it; } } cout << "Book not found!\n"; } static void display_book(vector<book> &books) { if (books.size() == 0) { cout << "No Books Available !!" << endl; } else { cout << "\nID Title" << endl; cout << "-------------------" << endl; for (auto &book : books) { cout << book.id << " " << book.title << endl; } cout << "\n" << endl; } } static void search_book(vector<book> &books) { unsigned int id; cout << "Enter the book ID : "; while (!(cin >> id)) { cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); cout << "Enter a valid value : "; } for (auto &book : books) { if (book.id == id) { cout << "Book Found "; if (book.isIssued == false) { cout << "and can be issued" << endl; issue_book(books, id); } else { cout << "but it is issued already." << endl; } return; } else { cout << "Sorry book with given ID: " << id << " could not be found." << endl; } } } static void issue_book(vector<book> &books, unsigned int id) { string choice = ""; cout << "Do you want to issues this book ?\nEnter your choice in yes or no : "; cin >> choice; while ((choice != "yes") && (choice != "no")) { cout << "Please enter yes or no : "; cin >> choice; } if (choice == "yes") { for (auto &book : books) { if (book.id == id) { book.isIssued == true; cout << "Book with ID: " << book.id << " has been issued successfully." << endl; return; } } } return; } static void return_book(vector<book> &books) { unsigned int id; cout << "Enter the ID of the book you want to return : "; while (!(cin >> id)) { cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); cout << "Enter a valid ID : "; } for (auto &book : books) { if (book.id == id) { if (book.isIssued == true) { book.isIssued == false; cout << "Book with ID: " << book.id << " has been returned successfully." << endl; return; } else { cout << "This book has not been issued" << endl; return; } } } cout << "Book with ID: " << id << " does not exists." << endl; }
Editor is loading...
Leave a Comment