By: Gara Tahir
Project: Inventarie Pro
Overview
se a desktop app for managing inventory*. More importantly, Inventarie Pro is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Inventarie Pro can get your inventory management tasks done faster than traditional GUI apps.
Summary of contribution
Main feature implemented:
-
I have changed the whole foundation of the code. I changed the class person to product. The attributes and their constrains where changed accordingly.
The class Product now consists of the attributes:
-
I integrated Paras feature "Transaction" with my attribute Remaining items. Now when a transaction is made the program subtracts the remaining items. It also first checks if the products exist in the inventory. It then sees if there is enough products in the inventory to make the transaction.
Other contributions:
-
The user can search for a product with both name and Serialnumber (The primary key)
-
I have adapted existing tests to work with the new program.
-
I increased the test coverage from 42% to 48%.
-
I assigned all the issues that we got during practical exam to the correct team member(s)
Community:
Reported bugs and suggestions to team W13-1.
Contribution to the User Guide
I created and added the first design of the UI to the User Guide so the team could visualize our end-product.
-
I added a picture of the new UI to the User Guide.
Contribution to the Developper guide
Deleting a product
-
Deleting a product while all products are listed
-
Prerequisites: There should be multiple products in the list.
-
Test case:
deleteproduct 1
Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. -
Test case:
deleteproduct 0
Expected: No product is deleted. Error details shown in the status message. Status bar remains the same. -
Other incorrect delete commands to try:
deleteproduct
,deleteproduct x
(where x is larger than the list size) {give more}
Expected: Similar to previous.
-
{ more test cases … }
Editing an existing product
-
Deleting a distributor while all distributors are listed
-
Prerequisites: There should be a at least 2 products to edit. The second one has Serial Number = 123.
-
Test case:
editproduct 1 inv/12
Expected: First product from the list is edited. The current inventory should now be 12, and a success message is shown in the result display panel. -
Test case:
editproduct 1 s/123
Expected: No product is updated. Error details of invalid serialnumber because a product with serial number = 123 already exists is shown in the result display panel. Status bar remains the same. -
Other incorrect edit commands to try:
deleteproduct x n/y
(where x is larger than the list size and y does not exist)
Expected: Error details of invalid command format is shown in the result display panel.
-
{ more test cases … }
Listing all products
-
Listing all products
-
Prerequisites: There is more then two products and the user has filtred the list by searching for a product.
-
Test case:
listproducts
Expected: All products should be visible again and a message saying that all products are listed should appear in the result display panel.
-
Product Scope
Target user profile: Small business owners
-
has a need to manage a significant number of contacts
-
prefer desktop apps over other types
-
can type fast
-
prefers typing over mouse input
-
is reasonably comfortable using CLI apps
Value proposition: tracks inventory faster than a typical mouse/GUI driven app
Appendix A: User Stories
Priorities: High (must have) - * * *
, Medium (nice to have) - * *
, Low (unlikely to have) - *
Priority | As a … | I want to … | So that I can… |
---|---|---|---|
|
self-employed provision shop owner |
see usage instructions |
refer to instructions when I forget how to use the App |
|
self-employed provision shop owner |
add a new product to my record of products |
keep track of all the products that my shop owns |
|
self-employed provision shop owner |
delete a product from my record of products |
stop tracking products I no longer want to sell in my store |
|
self-employed provision shop owner |
find a product by name |
locate details of products without having to go through the entire list |
|
self-employed provision shop owner |
find a product by relevant tags |
retrieve a list of products that are of a certain type |
|
self-employed provision shop owner |
add a distributor to my record of distributors |
keep track of who supplies my products to me |
|
self-employed provision shop owner |
delete a distributor from my record of distributors |
declutter the distributors I keep in contact with if I choose to stop business with a certain distributor |
|
self-employed provision shop owner |
edit a distributor in my record of distributors |
change the name or phone number of a distributor in case their details change, and keep up to date with their contacts |
|
self-employed provision shop owner |
find a distributor by name |
retrieve contact details of distributors without having to go through the entire list |
|
self-employed provision shop owner |
find a distributor by relevant tags |
retrieve a list of distributors who supply a certain type of products |
|
self-employed provision shop owner |
view what products a distributor supplies |
retrieve a list of all the products that a distributor supplies at one go, in case I need to make an order |
|
self-employed provision shop owner |
hide private contact details by default |
minimize chance of someone else seeing them by accident |
|
user with many products in the productInfo book |
sort products by name |
locate a product easily |
{More to be added}
Appendix B: Use Cases
(For all use cases below, the System is the AddressBook
and the Actor is the user
, unless specified otherwise)
Use case: Delete product
MSS
-
User requests to list products
-
Inventarie PRO shows a list of products
-
User requests to delete a specific product in the list
-
Inventarie PRO deletes the product
Use case ends.
Use case: Add distributor
MSS
-
User requests to add distributors
-
Inventarie PRO adds the distributor into the list of distributors
Use case ends.
Use case: List distributor
MSS
-
User requests to list all distributors
-
Inventarie PRO shows the entire list of distributors
Use case ends.
Use case: Edit distributor
MSS
-
User requests to list all distributors
-
Inventarie PRO shows the entire list of distributors
-
User requests to edit a specific distributor by index
-
Inventarie PRO edits the specific distributor in the list of distributors
Use case ends.
Use case: Find distributor by name
MSS
-
User requests to find the distributor or distributors that have a certain name
-
Inventarie PRO shows the list of distributors with names that match the keyword given
Use case ends.
Use case: Find distributor by tag
MSS
-
User requests to find the distributor or distributors that have a certain tag
-
Inventarie PRO shows the list of distributors with tags that match the keyword given
Use case ends.
Use case: List products supplied by a distributor
MSS
-
User requests to list all distributors
-
Inventarie PRO shows the entire list of distributors
-
User requests to view the products supplied by a specific distributor by index
-
Inventarie PRO lists the products supplied by the specific distributor in the list of distributors
Use case ends.
Use case: Delete distributor
MSS
-
User requests to list distributors
-
Inventarie PRO shows a list of distributors
-
User requests to delete a specific distributor in the list
-
Inventarie PRO deletes the product
Use case ends.
Extensions
-
2a. The list is empty.
Use case ends.
-
3a. The given index is invalid.
-
3a1. AddressBook shows an error message.
Use case resumes at step 2.
-
{More to be added}
Appendix C: Non Functional Requirements
-
Should work on any mainstream OS as long as it has Java
9
or higher installed. -
Should be able to hold up to 1000 products without a noticeable sluggishness in performance for typical usage.
-
A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.