Project Title: "Library Management System"
Objective
Develop a Python application that manages a library's book inventory and user interactions,
applying concepts such as file handling, functions, loops, data structures, and libraries like
Pandas and NumPy.
Project Tasks
1. Data Initialization
● Use a CSV file to store initial library data:
○ Fields: Book ID, Title, Author, Genre, Availability (Yes/No),
Borrower (if any).
● Load the data into a Pandas DataFrame for processing.
2. Book Management
● Allow the librarian to:
○ Add new books to the inventory.
○ Remove books by their ID.
○ Update book details (e.g., availability, borrower).
3. Borrowing and Returning Books
● Implement logic for:
○ Borrowing a Book:
■ Check if the book is available.
■ Update the borrower details and availability status.
○ Returning a Book:
■ Mark the book as available and clear the borrower details.
4. Search and Filter Features
● Allow users to search for books:
○ By title, author, or genre using Boolean Indexing.
● Provide filtering options to:
○ Show only available books.
○ List books borrowed by a specific user.
5. Advanced Features (Optional for Bonus Marks)
● Exception Handling:
○ Handle invalid book IDs or missing entries gracefully.
● Regular Expressions (RegEx):
○ Validate user input for book IDs (e.g., BK-001 format).
● Data Visualization:
○ Display a bar chart showing the number of books in each genre.
○ Generate a pie chart of availability status (Available vs Borrowed).
6. Statistics Using NumPy
● Use NumPy to:
○ Calculate the total number of books in the library.
○ Identify the most borrowed genre.
○ Analyze borrowing trends (e.g., average borrowing duration).
7. Interactive Console Interface
● Create a menu-driven interface with options like:
○ View all books.
○ Add, remove, or update a book.
○ Borrow or return a book.
○ Search for a book.
○ View statistics and visualizations.
8. File Handling
● Save changes made to the library inventory back to the CSV file after each operation.
● Allow exporting filtered or searched data to a new CSV file.