A Java-based library management system that handles user registrations, work cataloging (books, DVDs), borrowing requests, returns, fines, and notifications.
The project consists of three main components (keeping a facade pattern):
-
053/bci-core: Core business logic and domain models- Library management (users, works, requests)
- User categories and behaviors (Dutiful, Defaulter, Active)
- Work types (Books, DVDs)
- Borrowing rules and fine calculations
- Data persistence and import/export functionality
-
053/bci-app: User interface and application layer- Interactive menu-driven interface
- Commands for all library operations
- File management (open, save)
- Date management and work inventory control
-
po-uilib: UI library providing forms, dialogs, and interaction components
- User Management: Register users with different categories and statuses
- Work Catalog: Manage books and DVDs with creators, categories, and stock
- Borrowing System: Request and return works with automatic fine calculation
- Notifications: Alert users when requested works become available
- Search: Find works by title, creator, or search terms
- Date Simulation: Advance system date to test time-based features
- Persistence: Save and load library state
- Java Development Kit (JDK) 8 or higher
- GNU Make
-
Build the UI library:
cd po-uilib make cd ..
-
Build the core and application:
cd 053 make cd ..
This will compile all Java source files and create JAR files:
po-uilib/po-uilib.jar053/bci-core/bci-core.jar053/bci-app/bci-app.jar
export CLASSPATH=053/bci-app/bci-app.jar:053/bci-core/bci-core.jar:po-uilib/po-uilib.jarWithout importing data:
java bci.app.AppWith data import (if you have an import file):
java -Dimport=path/to/import-file.txt bci.app.App# From the project root directory
export CLASSPATH=053/bci-app/bci-app.jar:053/bci-core/bci-core.jar:po-uilib/po-uilib.jar
java bci.app.AppTo remove all compiled files:
cd 053
make clean
cd ../po-uilib
make clean
cd ..PO-Proj/
├── 053/
│ ├── bci-core/ # Core domain logic
│ ├── bci-app/ # Application layer
│ └── Makefile # Build orchestration
├── po-uilib/ # UI library
│ └── Makefile
└── README.md