A multithreaded, JavaFX-based library management system designed for a campus environment.
The application manages student records, book catalogs, rentals and returns, and per-student log histories using binary file I/O.
This project demonstrates object-oriented design, binary persistence, thread-safe operations, and a responsive JavaFX interface.
- Add, search, and list students
- Records stored in
students.datusing binary serialization - Uses in-memory indexing for efficient lookups
- Add books and view all books
- Tracks available and checked-out copies
- Persisted to
catalog.dat
- Students rent books through threaded record matching
- Logs stored per student in
logs/<studentId>.dat - Each log entry includes:
- timestamp
- event type (
RENTorRETURN) - ISBN
- book title
- Uses
ExecutorServicefor concurrent lookups - JavaFX
Taskkeeps the UI responsive ReentrantReadWriteLockensures thread-safe file access
- Menu bar: Students, Books, Rentals, Exit
TabPanecontaining:- Student Records
- Book Catalog
- Student Logs
- Split pane: Students on the left, logs on the right
- UI updates automatically after rent/return actions
PersonStudentItemBook(implementsRentable)- Optional:
ReferenceBookEBook
BinaryStudentRegistryLibraryCatalogStudentFileLogRecordMatcherLibraryService
All data uses binary formats with proper framing and thread-safe locking.
- Java 17+
- JavaFX 17+
- ExecutorService
- ReentrantReadWriteLock
- Binary File I/O
(ObjectOutputStream,RandomAccessFile,DataOutputStream)
