ishan993 / Library-Management-System

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Library-Management-System

A Spring boot project for CmpE 275 Enterprise Application Development.

3 people team (Raveen Pereira: front-end, Ankit Rajput & me: backend)

The Library Management System provides a simple yet elegant user interface to patrons and librarians, achieved using Google’s Material Design guidelines and principles, a Model-View-Controller Architecture implemented using Spring-boot.

For the librarian, our application provides the following functionality:

  1. Ability to add books, recording their location, call number, number of copies, along with book details.

  2. Update book information after adding the book.

  3. Use ISBN to look up a book’s information to facilitate recording book details, achieved by Google Books API, retrieve a list of books added by a particular librarian.

  4. The ability to search for a book based on the following criteria: book title, keywords, publish year, published, and author.

  5. Automatically sign-up as a librarian by using SJSU email.

  6. Set date and time to check the following functionality: renew books, calculate fine, send reminders.

For the patron, we implemented the following functionality:

  1. The ability to add multiple books to cart, check them out, and return them.

  2. The ability to enroll in multiple books’ waitlist.

  3. The ability to reserve a book for 3 days after the book’s waitlist clears.

  4. The ability to renew book twice if there is not waitlist

  5. Email notification for registration, book checkouts, book returns and book reservation.

  6. Daily Email reminders to return a book which is due within from 5 days.

Important concepts learned throught the project:

  1. Using Spring Boot to implement concepts such as Dependency Control, Aspect oriented programming, Object-Relational Mapping, Model-View-Controller pattern.

  2. Mapping multiplicity between entities to get the required data without writing complex queries.

  3. Using Scheduling to schedule time change and return-date checking in the background, making these processes run on separate threads to improve efficiency.

  4. Integrating Mail notifications in the project to send alerts and reminders to the user.

  5. Using Interceptors for intercepting requests to check them for authorization.

  6. Using controller advice AOP concept to provide Exception handling throughout the application without rewriting code.

Component Design: picture1

Login and signup page: picture2

Librarian adding a book by searching ISBN: picture3

Librarian searching for books to edit their info: picture4

User Dashboard: userdashboard

picture6 picture5

About


Languages

Language:Java 100.0%