Money Matters. Create a Budget Planner.
Tracking expenses is an essential component of developing healthy financial skills, especially when budgets are limited! Many students do not track expenses because it is time consuming. They may end up spending too much money on unnecessary purchases.For this assignment, you will use Python to solve this problem. You will build a tool that can help you plan your budget.
Algorithm Description
Devise an algorithm that takes your monthly budget, the amount of money you wish to save, and a list of the prices of all the items you might need to buy during the month with a priority value (for example, from 1 to 10, with 10 being the highest priority item) to describe how much you need that item. The algorithm then should give you a plan of what to buy and what not to buy based on your priority. The algorithm can divide the items list into sections to make prioritizing more efficient. For example, the algorithm can have a list of needs and a list of wants, and the list of needs can be divided into more sections (education, food, medicine, etc) and the same for the list of wants (trips, desserts, parties, etc).
Describe your algorithmic approach
Describe the input(s), output(s) and the process of the algorithm.
Draw a flowchart to show the process of the algorithm.
Explain how this process is an “algorithm”.
You will be graded on #algorithmicstrategies and** #computationaltools**
Using an appropriate data structure (Lists or any other data structure that you are familiar with) build a user-friendly Python program that practically implements your algorithm. The program should at minimum ask the user to input:
The monthly budget
The amount of money to be saved
A list of the “needs” for the month (including the price of each item)
A list of the “wants” for the month (including the price of each item)
A priority value for each item to help the program understands the priorities of the user
Using sorting, the program should return an ordered list of the items that you should buy to fit your budget and have the required savings. Provide a well-commented Python code that follows the above instructions. Make sure to include few test-cases to make sure your code works
Be sure to comment thoroughly so that it is clear that you understand what every line of the code is intended to accomplish.
Include your test cases in your submission. Explain how you used these test cases in your comments.
You should use the following Python skills at a minimum, but you are free to use additional skills:
User input
Challenge questions:
This application uses a data-structure to save data and then a sorting algorithm to sort the data. A very good data structure that can do both functions is called “Binary Tree Data Structure”. You can read more about it in this resource. Save the data that the user inputs in one or more trees and then use a tree in order traversal to sort the data.
The greedy algorithm is a well-known algorithm in computer science. Research greedy algorithms (this might be a helpful resource, but there are many others you can choose from) and then describe how they can be used to make the budget planning application more efficient (Hint: Read about the knapsack problem, how is it similar to the budget planner application?)
Attempting the challenge problems can never cause you to receive a low mark (0, or 1), but high marks will only be given for exceptional work.
Your assignment submission needs to include the following resources:
A PDF file must be the first resource and it will include all the answers to the questions above, including all the python code you produce. Make sure that you submit a neat, clearly presented, and easy-to-read PDF. The PDF should be submitted under the name file “student_name.pdf”.
Your second resource must be the Python codes collected in a single Python/Jupyter Notebook as a zip file, just like Assignment 1. Before you zip, rename your Python/Jupyter Notebook with “”/“student_name.ipynb”.
Important note: Feel free to download the template notebook from this gist to use in your own submission.
Assignment Information
Learning Outcomes Added
computationaltools: Apply the computational terminology and tools appropriately in different quantitative contexts.
algorithmicstrategies: Demonstrate the ability to think logically and systematically about problems, breaking them down into a clear, ordered set of concrete steps that could be implemented by a machine.
compprogramdesign: Generate working programs in a computer language that can solve computational problems; find and fix bugs that appear in them.
quantcommunication: Communicate with a clear and precise style that is suited to an appropriate audience. Produce code that can be easily read and understood by others.
refer to the link