Using the attached video as a guide, you will create a menu system that will mimic a self service kiosk at a restaurant. This program will do the following: Create a menu system that allows users to select an item from the below categories: Drink Appetizer Entree Dessert You will use 4 separate input files (one for each category above) where you read in an unknown number of items from each file Each input file will have the item name (string) and the item price (double) Use a generic function to check to see if the file was found User a generic function to get the data from each of the input files Display the subtotal on each menu screen so the customer knows exactly how much is already owed As the customer selects items for purchase, you will need to record the item name, price and the quantity desired inside of variables (vector or array) for output later The customer should be able to remain in a category menu until they are ready to return to the main menu When the customer is finished ordering, display the subtotal, tax, and total on the screen Ask for a tip (make a suggested tip amount with 18%, 20%, 25%), then update the total with the tip amount entered Get payment from the user and display change due to the customer If the customer does not pay enough money, then the program should continue to ask for money until the total is paid in full Assignment Notes: Make your all of variables as private in the class to show me you understand how to do this You may use vectors or array variables to store the employee data Use a 10% tax rate to make the math easy You may use functions inside of the class or outside or mixed. Your choice Be sure to add in error checking in case someone enters a value that will break your program! Example: Tip is -1000 which means your system would pay the customer! I expect to see functions, but I am not giving you a specific number. You should be able to determine this by yourself by now General Notes: Be sure to use comments in your program: Name, Program Description, Date and anywhere else in the program you deem necessary. If you are stuck, I will help you! Grading Rubric: If you do not include comments at the top of the program (name, program description, date), you will lose 15 points If your program is not object-oriented, you will lose up to 100 points (OOP is the goal of this assignment) If your program has no error checking, as mentioned above, you will lose up to 25 points If your program does not stay in a category menu until the customer wants to leave, you will lose 10 points If you do not use generic functions for checking to see if the file is open or for reading in the data from input files, you will lose up to 40 points If your program does not loop from insufficient payment, you will lose up to 25 points If your program does not use functions, you will lose up to 50 points If your program does not compile (run), then I will give a grade of 0/100. But will give you the change to repair for points back (some points are better than none) If your program is late (within 48 hours of the due date), you will lose 25 points If your program is late beyond the 48 hour due date, I will typically still accept it, but you will lose far more points. Depends on when you turn it in If you use global variables in your program, I will deduct 5 points for each used If your program is not formatted nicely (code all over the place, ugly), you will lose up to 25 points depending on the extent If your program stops working when I run it, you will lose points. The exact amount depends on the severity of the error If your program still has your friend's name on it, I will send you a message asking you to try harder while giving you a 0/100 If your program looks like a a professional programmer wrote it, I will write to you to ask if you want a job. Well, maybe not. But, I will ask about the code This is just a list of typical issues I run into when grading to give you some idea of where your points go. Points can be taken off for other reasons.