Saung Naychi Min - Project Portfolio Page
Project: CafeCRTL
Overview - CaféCTRL is a software engineering project for CS2113. The user interacts with the application through CLI. It has around 6 kLoC, and it is done in a team of 5.
Value Proposition - CaféCRTL aims to optimize managing of inventory and cash flow in a restaurant. Our CLI platform empowers Café proprietors to streamline inventory and menu management.
Target User - Café proprietors who prefer typing on CLI than any other interaction method and are seeking for a software solution to optimize the management of their café’s operations.
Summary of Contributions
Code Contribution
Click here to see my code contribution!
Enhancements implemented
Feature
- List Ingredient
- Function: Allow the user to view the ingredients of the desired dish from the menu.
- Command Format:
list_ingredient dish/INDEX_OF_DISH_TO_LIST
- Error Handling: If the specified index is out of range, of a wrong argument type or is empty.
- List Total Sales
- Function: Allow the user to view the sale for each day across every day since the cafe has operated.
- Command Format:
list_total_sales
- Error Handling: If the command has unnecessary arguments after the command.
- Show Sale By Day
- Function: Allow the user to view the sale for the desired day.
- Command Format:
list_sale day/DAY_TO_LIST
- Error Handling: If the specified index is out of range, of a wrong argument type, is empty or the argument tag is missing.
- Function: Allow the user to view the sale for the desired day.
- Data processing of ‘add_order’
- My group mate (Cazh1) did the parsing of the command, along with the implementation of needed classes such as Order, OrderList and Chef.
- My role was to seamlessly handle the logic of the data being processed after an order was added to an orderList for the following purposes:
- Order completion determination and Restocking ingredient identification
Enhancements
- Pantry Class
- Collaborated with my group mate (ShaniceTang) to develop the Pantry class.
- ShaniceTang focused on the buying and restocking of pantry ingredients, as detailed in her PPP.
- My role, outlined in point 4 above, involved implementing key functions, including:
isDishCooked
:- Implemented to determine the success of an order.
- The accurate execution of this function is crucial for the overall success of order processing as it affects other operations of the cafe, such as the amount of total sales to be displayed to users.
calculateDishAvailability
:- Informs the user of the available quantity for each dish in the menu after each order.
- Provides essential insights into the real-time status of dish availability, alerting users of the availability of each dish in the menu.
calculateMaxDishes
:- Handles the logic for calculating the number of dishes made.
- Manages the complex logic for determining restocked ingredients and their required quantities.
- The implementations as stated above served as the link between the add_order and buy_ingredients commands unified the data(ingredients) processing aspect of order management.
- Order Processing: Seamlessly integrating logic for order success determination and the need for Pantry’s ingredient stock management.
- Pantry Stock Management: My active contribution to the Pantry class connected the use of add_order command with subsequent use of the buy_ingredients command, making it a central hub for order processing, dish availability checks, and ingredient restocking prompts.
- Encoding of Sales
- Implemented encoding for the Sales object, involving:
- Parsing through various attributes of the Sales object using the delimiter
|
. - Storing the data in a text file.
- Parsing through various attributes of the Sales object using the delimiter
- Implemented encoding for the Sales object, involving:
- Decoding of Sales
- Executed decoding for the Sales object, encompassing:
- Parsing through the text file and separating contents using the delimiter
|
. - Using parsed attributes to instantiate the Sales object for use in other command classes.
- Parsing through the text file and separating contents using the delimiter
- Implemented error handling during decoding: lines with missing delimiters or incorrect formatting in the text file are filtered out (collaboration with Cazh1).
- Executed decoding for the Sales object, encompassing:
- Parser
- Implemented parsing and error handling for the commands listed in the section above.
Contributions to UG
Contributions to DG
- Worked with ShaniceTang on the following:
- Architecture diagram and overall description of the architecture.
- Drafting
Data
Component class diagram and description
- List Ingredient
- List Sale By Day
- Pantry - isDishCooked()
- Pantry - calculateMaxDish()
Other Contributions to Team-based Task
- Maintaining the issue tracker
- Testing of application and reporting bugs found. Example shown below:
Review / Mentoring Contributions
- Reviewed and merged some PRs such as #313, …
- Consulting the group when clarification is needed and actively participating in weekly meetings.