Skip to content

JonnoGG/Library-Management-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My Bookshelf

Your personal library management system.

My Bookshelf acts as a personal library management system, hosted locally on your computer.

Key Features:

  • add and remove books from your collection with details (title, author, release year, genre, summary)
  • lend out your books to others
  • keep track of lenders due dates
  • collect reader ratings when books are returned

Why I created it?

As a reader with an ever growing collection of books, I needed a way to track and organize them. My Bookshelf aims to help you manage your personal library. Additionally, this project will provide an excellent opportunity to practice my Java programming skills.

User Stories:

  • As a user, I want to be able to add a book to my bookshelf and specify the title, author, release year, and genre
  • As a user, I want to be able to remove a book from my bookshelf
  • As a user, I want to be able to add a short summary to a book in my bookshelf
  • As a user, I want to be able to view all the books in my bookshelf
  • As a user, I want to be able to sort the books in my bookshelf by date added, alphabetical order, release year, or rating
  • As a user, I want to be able to filter the books in my bookshelf by lent out status and genre
  • As a user, I want to be able to lend out books to others, and keep track of who I lent it to and when it is due back
  • As a user, I want to be able to collect ratings when a book is returned from a lender
  • As a user, I want to be able to see the average rating for a book of all the lenders who have rated it
  • As a user, I want to be able to save my bookshelf to file (if I so choose)
  • As a user, I want to be able to be able to load my bookshelf from file (if I so choose)

Instructions for End User

  • To add a book to the bookshelf, press the "+ Add Book" button in the top right
  • You can generate the first required action related to the user story "remove a book from my bookshelf" by pressing the "X" button on the right of the book entry
  • You can generate the second required action related to the user story "sort the books in my bookshelf" by pressing the sort dropdown in the top right and selecting a sort method
  • The visual component of this application is the book image/logo next the the "My Bookshelf" title
  • To save the current state of the bookshelf, press the "Save" button in the bottom right
  • To load the saved state of the bookshelf, press the "Load Saved Data" button in the bottom right

Phase 4: Task 2

Sample event log:
Thu Nov 28 21:16:33 PST 2024
Book added to bookshelf.
Thu Nov 28 21:16:33 PST 2024
Sorted and displayed books.
Thu Nov 28 21:16:36 PST 2024
Book removed from bookshelf.
Thu Nov 28 21:16:36 PST 2024
Sorted and displayed books.

Phase 4: Task 3

Given more time, I would implement the observer pattern on the BookshelfGrid and Bookshelf class so that any time a change is made to the bookshelf, the BookshelfGrid class can be updated and the grid can refresh. By incorporating this change, it would allow for less coupling and more cohesion. To do this, I would have an Observer inteface, that is implemented by BookshelfGrid, and an abstract Subject class that is extended by Bookshelf. This way the bookshelf would know when to update rather than have other coupled classes that manually instruct BookshelfGrid to update.
Additionally, it may make sense for the Bookshelf class to implement the singleton pattern. The entire purpose of the app is to maintain one single master bookshelf that contains all the books. Having this be only a single instance, that is globally accessible would make it much easier for other classes to access and modify it.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages