The Open University of Sri Lanka Bachelor of Software Engineering, Bachelor of Technology, Diploma in Information Systems and Technology – Academic Year – 2019/2020 EEI3372 - Programing with Python Due Date : 20/03/2020, Fri (Elearn OR Hardcopy) Task 01 : Python Program You are to write a program using Python to manage an automatic coffee maker. Different types of coffee could be brewed from the machine and details about the coffee type, price and their country of origin should be stored in your program along with the availability levels of the raw materials. (Assume each type of coffee requires only one unique raw material such as a mixed power) Users can request for a coffee by inserting money into the machine. (you may get this as a CLI input from the user). Check relevant conditions and issue the requested coffee to the user and update the records accordingly. The operator may use your program to add new coffee type, modify item details such as the price, delete a type of coffee or to update the raw material stock (+/- quantity). The raw material level is measured using different units such as packets and kilograms representing the number of coffees that could be brewed and at one time the raw material for a particular type of coffee may not exceed 20. Additionally it should be possible to to view the value of all coffees brewed and the total number of coffees that could be brewed from the raw materials available at a given time. Abstraction : Use classes to model options of coffee, use object oriented concepts such as inheritance to model real world objects. Use functions with suitable parameters to abstract out the program logic. Testing and Profiling : Program should be well tested using suitable tools and be documented. Use profiling tools and monitor the performance of your program. Task 02 : Documentation The documentation should describe your implementation covering the following areas. 1. Problem(s) - subproblems, constraints 2. Solution Approach - How you plan to solve the identified sub problems 3. Flowchart OR Pseudocode for one(1) functionality involving complex logic 4. Used programming constructs with examples - Classes, Functions etc. 5. Test Results (test cases with screenshots and descriptions) 6. Profiling Results (including screenshots and descriptions) 7. Conclusion