This is a Java practice project that simulates a library management system using Object-Oriented Programming (OOP). It is intended to be completed in ~120 minutes as a practice assessment.
Target Time: 120 minutes
Focus Areas: Classes, Inheritance, Abstraction, Encapsulation, Polymorphism
Build a console-based library system that allows users to:
- Add books to the system
- Register members
- Borrow and return books
- Track available and borrowed books
- Display member borrowing history
- Use
ArrayListto store books and members in memory - Use
Scannerfor CLI input - Focus on clean class design and object interaction
- Fields:
String idString titleboolean isAvailable
- Abstract Method:
void displayInfo() - Methods:
getId(),getTitle(),isAvailable(),setAvailable(boolean)
- Extra Field:
String author - Implements
displayInfo()to print book info
- Fields:
String memberIdString nameArrayList<LibraryItem> borrowedItems
- Methods:
borrowItem(LibraryItem item)returnItem(LibraryItem item)displayBorrowedItems()
- Stores
ArrayList<Book> booksandArrayList<Member> members - Methods:
addBook(Book book)registerMember(Member member)borrowBook(String memberId, String bookId)returnBook(String memberId, String bookId)listAvailableBooks()listBorrowedBooksByMember(String memberId)
Console menu to interact with the system:
===== Library Menu =====
1. Add Book
2. Register Member
3. Borrow Book
4. Return Book
5. View Available Books
6. View Borrowed Books by Member
7. Exit
Add Book Enter title: Java 101 Enter author: Jane Doe
Register Member Enter name: Alex
Borrow Book Enter member ID: M001 Enter book ID: B001
View Available Books [Shows remaining books only]
src/
├── Main.java
├── model/
│ ├── LibraryItem.java
│ ├── Book.java
│ └── Member.java
├── service/
│ └── LibraryService.java