I have one question regarding the requirement itself. How can a user checkout and return the book? Usually, a librarian does this. Otherwise, how do we know what all book was actually taken out of the library or returned?
Each book has a unique identification number, so the user would be able to check out the book by using that identification number. This action can be performed by the librarian as well. Moreover, the book has unique barcodes so only the book whose barcode is scanned will be reserved.