- A lightweight, menu-driven Java console application designed to manage physical books and ebooks. The project demonstrates object-oriented programming, collections, interfaces, inheritance, custom utilities, and multithreading concepts all implemented in a clean, modular structure.
- This project simulates a library management system with features such as adding books, issuing and returning books, searching, sorting, and background notifications.
- It supports both physical books and ebooks, while maintaining clean separation of concerns via classes, interfaces, and utility components.
- The application runs entirely in the console.
This project applies core Java concepts, including:
-
Programming Fundamentals
- Variables & data types
- Arithmetic operators (issued vs remaining book count)
- Conditional statements (if, switch)
- Loops (for-each loops for displaying collections)
-
Object-Oriented Programming
- Classes & Objects
- Interfaces (Borrowable)
- Inheritance (Book EBook)
- Encapsulation (private fields + getters/setters)
- Method overriding
- Static members (tracking totals)
-
Collections & Streams
- HashMap for fast ID-based lookup
- Stream filtering for search
- Stream sorting with comparators
- Lambdas (forEach, filtering expressions)
-
Exception Handling
- Input mismatch handling for integers/doubles
- Validation for string inputs
-
Multithreading
- Background notification thread (NotificationUtils)
- Conditional notification behavior
- Demonstrates concurrent execution
.
|-- Book.java
|-- Borrowable.java
|-- EBook.java
|-- Library.java
|-- LibraryApp.java
`-- utils
|-- InputUtils.java
|-- MenuDecoratorUtils.java
`-- NotificationUtils.java
1 directory, 8 files
-
Prerequisites
- Java 25
- Any IDE or terminal java commands
-
Clone the repository
git clone https://github.com/devendraDPI/library-management-system.git- Navigate to the project folder
cd library-management-system- Run the app
java LibraryApp.java- See how the Library Management System works in this video walkthrough.
- MIT License: See License file for details.
