This is a simple Library Management System that allows users to manage books and their borrowing records. The system will have the following functionalities:
- Add a new book to the library with details such as title, author, genre, and publication date.
- Search for books by title, author, or genre.
- Display a list of all available books in the library.
- Borrow a book by a user, with a due date for return.
- Mark a book as returned once it's returned by the user.
- View the borrowing history of a book and its availability status.