actor: Librarian (A1), Member (A2) ; action: Add a new book (UC1), Search for books (UC2), Borrow a book (UC3), Remove a book (UC4), Return a borrowed book (UC5), Issue a new book (UC6), Renew a borrowed book (UC7), Categorize books (UC8), Reserve a book (UC9), Manage inventory (UC10), Inquire about book availability (UC11), Review book requests (UC12) ; relationships: Librarian (A1) → Add a new book (UC1) → Association, Member (A2) → Search for books (UC2) → Association, Member (A2) → Borrow a book (UC3) → Association, Librarian (A1) → Remove a book (UC4) → Association, Member (A2) → Return a borrowed book (UC5) → Association, Librarian (A1) → Issue a new book (UC6) → Association, Member (A2) → Renew a borrowed book (UC7) → Association, Librarian (A1) → Categorize books (UC8) → Association, Member (A2) → Reserve a book (UC9) → Association, Extends Borrow a book (UC3), Librarian (A1) → Manage inventory (UC10) → Association, Includes Add a new book (UC1) & Remove a book (UC4), Member (A2) → Inquire about book availability (UC11) → Association, Librarian (A1) → Review book requests (UC12) → Association ; plantuml:
@startuml
actor "Librarian" as A1
actor "Member" as A2

usecase "Add a new book" as UC1
usecase "Search for books" as UC2
usecase "Borrow a book" as UC3
usecase "Remove a book" as UC4
usecase "Return a borrowed book" as UC5
usecase "Issue a new book" as UC6
usecase "Renew a borrowed book" as UC7
usecase "Categorize books" as UC8
usecase "Reserve a book" as UC9
usecase "Manage inventory" as UC10
usecase "Inquire about book availability" as UC11
usecase "Review book requests" as UC12

A1 -- UC1
A2 -- UC2
A2 -- UC3
A1 -- UC4
A2 -- UC5
A1 -- UC6
A2 -- UC7
A1 -- UC8
A2 -- UC9
A1 -- UC10
A2 -- UC11
A1 -- UC12

UC10 ..> UC1 : <<include>>
UC10 ..> UC4 : <<include>>
UC9 ..> UC3 : <<extend>>
@enduml ; class: LibrarySystem, Book, Member, Librarian, Inventory, Transaction ; methods: LibrarySystem: addBook, removeBook, searchBooks, registerMember ; Book: isAvailable, borrow, returnBook ; Member: borrowBook, returnBook, reserveBook, renewBook ; Librarian: issueBook, categorizeBook, manageInventory, reviewBookRequests ; Inventory: checkInventory, updateInventory ; Transaction: processTransaction, refundTransaction ; classDiagram: @startuml
class LibrarySystem {
  - libraryName: String
  - location: String
  - books[]: Book
  - members[]: Member
  + addBook(): void
  + removeBook(): void
  + searchBooks(): Book[]
  + registerMember(): void
}

class Book {
  - title: String
  - author: String
  - isbn: String
  - category: String
  - availability: Boolean
  + isAvailable(): Boolean
  + borrow(): void
  + returnBook(): void
}

class Member {
  - memberID: String
  - name: String
  - address: String
  - email: String
  - borrowedBooks[]: Book
  + borrowBook(): void
  + returnBook(): void
  + reserveBook(): void
  + renewBook(): void
}

class Librarian {
  - employeeID: String
  - name: String
  - contactInfo: String
  + issueBook(): void
  + categorizeBook(): void
  + manageInventory(): void
  + reviewBookRequests(): void
}

class Inventory {
  - books[]: Book
  - totalBooks: Integer
  + checkInventory(): void
  + updateInventory(): void
}

class Transaction {
  - transactionID: String
  - member: Member
  - book: Book
  - transactionDate: Date
  - type: String
  + processTransaction(): void
  + refundTransaction(): void
}

LibrarySystem --* Book : Manages
LibrarySystem --* Member : Registers
LibrarySystem --* Inventory : Contains
LibrarySystem --* Transaction : Logs
Member --* Book : Borrows
Librarian --* Transaction : Reviews
Inventory --* Book : Contains
@enduml