Personal project · 2025

University Library System

A university library system built in Java, with different borrowing rules for each type of user and no database behind it.

Java · OOP · JUnit · File I/O

The problem

The module asked for a full library system with different rules for each type of user, students, children, and adults, built without a database.

What I built

I designed it as a Java MVC app where books and users share common base classes, borrowing limits are enforced per role, and everything saves to CSV files through a loader I wrote myself.

What it does

Gallery

University Library System screenshot

Class Hierarchy

Base ClassSubclassesKey Responsibilities
Product (Abstract)Book, CD, DVD, AudiobookStores metadata (ISBN, Title), manages loan status
User (Abstract)Student, ChildUser, AdultUserManages personal info, active loans, and permissions
LoanN/ALinks Users to Products, tracks due dates and fines

Testing Verification

Test TypeScopeKey Scenarios Verified
FunctionalEnd-to-End User FlowsLogin, Product Visibility (DVDs hidden for Students), Error Handling
Unit (JUnit)Core Business LogicBorrowing Limits (10/5/3), Guardian Assignment, ID Uniqueness
RegressionBug Fix VerificationLoan state consistency between Controller and User classes

The full engineering is on GitHub.