Features β’ Installation β’ Usage β’ Screenshots β’ Contributing β’ License
Welcome to the Library Management System - a comprehensive desktop application designed to streamline library operations with an intuitive graphical user interface. Built entirely in Java using Swing, this project demonstrates robust Object-Oriented Programming principles while providing practical functionality for managing books, members, and transactions.
This is the proof of my CLI to GUI. Also helped me learn OOP. The only downside is that there is no dedicated database. Hope to update the application with the Database soon.
- π¨ Clean & Intuitive GUI - Built with Java Swing for a seamless user experience
- π Role-Based Access - Separate interfaces for admins and members
- π Complete Book Management - Add, remove, borrow, and return books effortlessly
- π₯ Member Management - Register members and track their activities
- ποΈ OOP Excellence - Demonstrates encapsulation, inheritance, abstraction, and polymorphism
- πΎ Zero External Dependencies - Pure Java implementation with no external libraries
|
|
- π Browse Books - View available books in the library
- π Borrow Books - Check out books with automatic quantity tracking
- π Return Books - Return borrowed books seamlessly
- π Secure Login - Personal account with password protection
βββββββββββββββββββββββββββββββββββββββ
β Java Development Kit (JDK 17+) β
βββββββββββββββββββββββββββββββββββββββ€
β Java Swing (GUI Framework) β
βββββββββββββββββββββββββββββββββββββββ€
β Object-Oriented Programming β
βββββββββββββββββββββββββββββββββββββββ€
β Event-Driven Architecture β
βββββββββββββββββββββββββββββββββββββββ
| Technology | Purpose | Version |
|---|---|---|
| Java | Primary Programming Language | JDK 17+ |
| Swing | GUI Framework | Built-in |
| AWT | Event Handling & Layout | Built-in |
| Collections | Data Management | java.util |
Before you begin, ensure you have the following installed:
- β Java Development Kit (JDK) 17 or higher
- π§ A Java IDE (IntelliJ IDEA, Eclipse, NetBeans) or text editor
- π» A terminal/command prompt
1οΈβ£ Clone the Repository
git clone https://github.com/mehedyk/library-management-system-java-gui.git2οΈβ£ Navigate to Project Directory
cd library-management-system-java-gui3οΈβ£ Compile the Source Files
cd src
javac *.java4οΈβ£ Run the Application
java MainWindow- Open your preferred Java IDE
- Import the project as a Java project
- Locate
MainWindow.java - Run the
main()method
Username: admin
Password: 1234
The system comes pre-loaded with classic literature:
| ID | Title | Author | Quantity |
|---|---|---|---|
| 1 | The Catcher in the Rye | J.D. Salinger | 5 |
| 2 | To Kill a Mockingbird | Harper Lee | 3 |
| 3 | 1984 | George Orwell | 4 |
- Launch the application
- Click "Login (Admin)"
- Enter admin credentials
- Access the admin panel to:
- Add new books
- Remove existing books
- View book inventory
- View member list
- Logout
- Launch the application
- Click "Register (Member)" (first-time users)
- Fill in registration details
- Click "Login (Member)"
- Enter your credentials
- Access member panel to:
- Browse available books
- Borrow books
- Return books
- Logout
library-management-system-java-gui/
β
βββ src/
β βββ MainWindow.java # Entry point & main menu
β βββ LibraryApp.java # Application initialization
β β
β βββ Admin.java # Admin model
β βββ AdminLoginWindow.java # Admin login GUI
β βββ AdminPanelWindow.java # Admin dashboard
β β
β βββ Member.java # Member model
β βββ MemberLoginWindow.java # Member login GUI
β βββ MemberPanelWindow.java # Member dashboard
β βββ MemberRegistrationWindow.java # Member registration GUI
β βββ MemberManager.java # Member operations
β β
β βββ Book.java # Book model
β βββ BookManager.java # Book operations
β βββ AddBookWindow.java # Add book GUI
β β
β βββ Library.java # Library core logic
β
βββ LICENSE # MIT License
βββ README.md # Project documentation
βββββββββββββββββββββββββββββββββββ
β Library Management System β
βββββββββββββββββββββββββββββββββββ€
β [ Login (Admin) ] β
β [ Register (Member) ] β
β [ Login (Member) ] β
β [ Exit ] β
βββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββ
β Admin Panel β
βββββββββββββββββββββββββββββββββββ€
β [ Add Book ] β
β [ Remove Book ] β
β [ List Books ] β
β [ Member List ] β
β [ Logout ] β
βββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββ
β Member Panel β
βββββββββββββββββββββββββββββββββββ€
β [ List Books ] β
β [ Borrow a Book ] β
β [ Return a Book ] β
β [ Logout ] β
βββββββββββββββββββββββββββββββββββ
- Private fields with public getters/setters
- Data hiding in
Book,Member, andAdminclasses
- Separation of concerns between GUI and business logic
- Manager classes handle operations abstractly
- Potential for future role-based inheritance structure
- Extensible class hierarchy
- Method overriding capabilities
- Flexible event handling through ActionListener
LibraryApp (Static Container)
βββ Library (Data Store)
βββ BookManager (Operations)
βββ MemberManager (Operations)
βββ Admin (Model)
Book (Model)
Member (Model)
Window Classes (GUI Layer)
βββ MainWindow
βββ AdminLoginWindow
βββ AdminPanelWindow
βββ MemberLoginWindow
βββ MemberRegistrationWindow
βββ MemberPanelWindow
βββ AddBookWindow
-
Database Integration
- MySQL/PostgreSQL support via JDBC
- Persistent data storage
- Transaction history
-
Enhanced GUI
- JTable for tabular data display
- Custom icons and themes
- Dark mode support
- Responsive layouts
-
Advanced Features
- Book search functionality
- Due date tracking
- Fine calculation for late returns
- Email notifications
- Report generation (PDF/Excel)
-
Security Improvements
- Password encryption
- Session management
- Role-based permissions
-
Modern UI Framework
- JavaFX migration
- Material Design implementation
- Web-based interface (Spring Boot)
-
Additional Functionality
- Book reservations
- Rating and review system
- Recommendation engine
- Multi-library support
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated!
- π΄ Fork the Project
- πΏ Create your Feature Branch (
git checkout -b feature/AmazingFeature) - βοΈ Commit your Changes (
git commit -m 'Add some AmazingFeature') - π€ Push to the Branch (
git push origin feature/AmazingFeature) - π Open a Pull Request
- Follow Java naming conventions
- Comment your code appropriately
- Test thoroughly before submitting
- Update documentation as needed
- Maintain the existing code style
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2025 S.M. Mehedy Kawser
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction...
- Him
- β Oracle for Java and Swing documentation
- π Classic literature authors for default book data
- π‘ Open-source community for inspiration
- π Everyone who uses and contributes to this project
If you have any questions, issues, or suggestions:
- π Open an Issue
- π¬ Connect on LinkedIn
- π Message on Facebook
If you found this project helpful, please consider giving it a β on GitHub!
β Star this repository if you like it!