https://github.com/anasbinrashid/library-management-system-oop-java
I made a Library Management System using OOP concepts in Java.
https://github.com/anasbinrashid/library-management-system-oop-java
book java library-management-system lms oop oops-in-java
Last synced: 15 days ago
JSON representation
I made a Library Management System using OOP concepts in Java.
- Host: GitHub
- URL: https://github.com/anasbinrashid/library-management-system-oop-java
- Owner: anasbinrashid
- License: mit
- Created: 2024-09-17T09:16:13.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-17T09:25:43.000Z (almost 2 years ago)
- Last Synced: 2025-11-22T05:02:54.347Z (7 months ago)
- Topics: book, java, library-management-system, lms, oop, oops-in-java
- Language: Java
- Homepage:
- Size: 12.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Library Management System
A Java-based console application that manages a library's books and users, and handles book loans. This project implements object-oriented principles, including inheritance, abstraction, interfaces, and polymorphism, to provide a clean and modular design. The system allows users to add books, manage users, loan books, return books, and track loan details.
## Features
- **Add and Remove Books**: Support for adding and removing different types of books (e.g., Novels, Textbooks, Reference Books).
- **Manage Users**: The system manages three types of users: Students, Faculty, and Public Members, each with specific loan limits.
- **Loan System**: Books can be loaned to users, with different loan fees calculated based on the type of book and loan duration.
- **Return Books**: Users can return loaned books, and late fees are applied based on the number of days overdue.
- **Loan Tracking**: Track the books loaned to users and calculate total loan fees.
- **Extend Loans**: Implements an interface (`Loanable`) that defines whether items can be loaned and whether loans can be extended.
## Classes
### Main Classes
- **`Library`**: Manages the collection of books and users, handles loans and returns.
- **`User`** (Abstract): Represents a library user, with subclasses for Students, Faculty, and Public Members, each with different loan limits.
- **`Book`** (Abstract): Represents a book, with subclasses for specific types (Novel, TextBook, ReferenceBook).
### Subclasses of `Book`
- **`Novel`**: Represents a novel and calculates a base loan fee.
- **`TextBook`**: Represents a textbook and supports additional logic for loan calculations.
- **`ReferenceBook`**: Represents a reference book, usually non-loanable.
### Subclasses of `User`
- **`Student`**: Represents a student user with a specific loan limit.
- **`Faculty`**: Represents a faculty member with a higher loan limit.
- **`PublicMember`**: Represents a public member with a fixed base loan fee and lower loan limit.
### Interface
- **`Loanable`**: Defines methods related to loan operations, such as calculating the loan fee, checking availability, and whether a loan can be extended.
## Prerequisites
- **Java Development Kit (JDK)**: Make sure you have JDK 8 or later installed.
- **IDE**: You can use any IDE, such as IntelliJ IDEA, Eclipse, or VS Code with Java extensions.
## Contributing
Contributions are welcome! Feel free to submit a pull request or open an issue if you find a bug or want to suggest improvements.
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.