Using NetBeans Java
Please comment the code below, and the code has be commented
In this project, you will design and implement a library management system. The library management system will be for an engineering school that has the following departments: Computer Engineering (CPEN), Electrical Engineering (ELEN) Industrial Engineering (IMEN), Mechanical Engineering MEEN) and Civil Engineering (CIEN). The system will have the following requirements: Each book has a title, author, ISBN mumber, number of pages, edition, publisher and engineering type (CPEN ELEN, IMEN, MEEN or CIEN There are faculty accounts that have first name, last name. ID, departmen, position (adjunct professor assistant professor, professor) and amount of bomowed books . There are student accounts that have first name, last name, ID. department, year and amount of bomowed books The library management system keeps track of books and users by using files o One file handles book information One file handles user information o o One file registers a person and a borrowed book. There is a Registry class that holds a borrower's ID and the ISBN number of the borrowed book Students can only borrow up to 2 books at a time, Faculty can borrow up to 4 books. When returning a book, you should input the amount of days the user held the book. The first 15 days are free, while extra days have a cost of $5 The program should have a menu that allows the following: 1. Add a new book 2. Add a new user (ask if student or faculty) 3. Search for information about a specific book (use ISBN) 4. Delete a book (use ISBN) a. Check first if a user hasn't borrowed the book 5. Delete a user from the sysiem a. Verify the user has returned all his books first 6, Show all books 7. Show all books borrowed by a specific user (use ID) 8. Show all books for a specific department 9. Borrow a book to a user 10. Retun a book 11. Show every user and the books bornowed by user Design constraints: l. Abstraction: Person class is an abstract class 2. Inheritance: Student and Faculty classes extend the Person class. 3. Polymorphism: The ArrayList-Person> holds objects of type Student and Faculty 4. Composition: Library class has: b. ArrayList Book> 5. Interface: Library implements the provided 6. Overriding: Student, Faculty and Library have overridden 7. Constructors: Student, Faculty and Library classes have a LibraryInterface class. toString and equals mcthods. default constructor, an overridden constructor and a copy