In this episode, they show hundreds of people lining up on a Saturday morning to order food at Snow's BBQ. To help the situation, the owner gives everybody a raffle ticket when they add their name to the wait line and then periodically he calls out a ticket number and that person may choose from:

1. Go to the front of the line, or

2. Have a free t-shirt.

For this assignment, we require a menu-driven program that utilizes a FIFO dynamic queue and recursion to simulate the Snow's BBQ wait line. Note: you may not utilize the C++ STL to implement the queue or the queue operations.

There is some (partial) sample output in this Canvas module to help you visualize.

Your menu must include:

1. Add a Name (input the name from the user and assign them a unique raffle ticket number between 1 and 500 and then add them to the end of the line )

2. Make an order (allow-front-of-line name to place their order - display their name and a message that they can order and then delete from the front of the line. )

3. Count names in line (display the total number of names in the line). **you must use recursion to accomplish this item.

4. Draw Raffle Winner (randomly pick raffle number from those previously assigned. Locate the person who has that number.) **you must use recursion to accomplish this. If that person is no longer in the line, display a message.

Winner gets to choose from the 2 options as described above. If they choose go to front of the line then move them to the front. If they choose free t-shirt then display that information.

5. Display the Line, including name, raffle ticket number and position in the queue.

6. Help your BFF (input and search for a specific name and if it exists, move them to the front of the line; if no friend in line display message.) **you must use recursion to accomplish this item.

Member data for each node must include:

1. name ( <20 char's and must not be empty)

2. raffle ticket number (unique number between 1 and 500 assigned by the program)

Programming Rules:

Implement this queue with a FIFO linked list (nodes and pointers). Both high and low level validation must be present in your program. Structured code, good documentation, good use of functions will be graded. A program that throws exceptions will cost you points - make sure to test your code. Professional I/O is expected - columns should be aligned on output, etc. No use of the queue from the C++ STL.

If you don't use recursion or a dynamic queue as indicated above, you will earn 0 points for this assignment. Similarly, your code must meet this specific set of requirements, else the dreaded 0 points. Please also add a comment to your Canvas submission that tells us where in your code we will find the recursive calls. (Provide the names of the functions that use recursion.)

SAMPLE (partial) OUTPUT

Chapter 20 Sample Output (User input is in bold). This is a partial list of what could happen, just to help you visualize the output.

Snow’s BBQ Menu
1. Add a Name
2. Make an Order
3. Count Names
4. Draw Raffle Winner
5. Display Line 6
. Help your BFF
7. Exit Menu

Choose your Option: 1
Enter your name: Roxy
Welcome to Snow’s - your raffle number is 10 *

*Display Menu
Choose your Option: 1
Enter your name: Billie
Welcome to Snow’s - your raffle number is 20

**Display Menu
Choose your Option: 1
Enter your name: Joe
Welcome to Snow’s - your raffle number is 30

**Display Menu
Choose your Option: 1
Enter your name: Juan
Welcome to Snow’s - your raffle number is 40

**Display Menu
Choose your Option: 1
Enter your name: Carlota
Welcome to Snow’s - your raffle number is 50

**Display Menu Choose your Option: 5
(0) Roxy 10
(1) Billie 20
(2) Joe 30
(3) Juan 40
(4) Carlota 50

**Display Menu
Choose your Option: 2
Roxy, you can order now!

**Display Menu
Choose your Option: 5
(0) Billie 20
(1) Joe 30
(2) Juan 40
(3) Carlota 50

**Display Menu
Choose your Option: 3
Number of people in the line: 4

**Display Menu
Choose your Option: 4
The winning raffle number is 30.

Joe, do you want:
1. To move to the front of the line, or
2. A free t-shirt
Choose your option: 1
Joe, you are being moved to the front of the line!

**Display Menu
Choose your Option: 5
(0) Joe 30
(1) Billie 20
(2) Juan 40
(3) Carlota 50

**Display Menu
Choose your Option: 6
Please input the name of your BFF: Roger
Nobody named Roger is in the line at this time.

**Display Menu Choose your Option: 6
Please input the name of your BFF: Carlota
Carlota, you are being moved to the front of the line!
Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.