Programming Project #1: ----------------------- DUE: Saturday, March 10, by 11:50 pm, via WebCT6. SUBMIT: Source Code, input data file(s) and test results, via WebCT6. Your task for this project is to design a program to help a video rental store operator record clients' transactions. The Menu would look like this: =========================== Select one of the following 1: To check if a particular video is in store 2: To check out a video 3: To check in a video 4: To print the titles of all videos 5: To print a list of all videos 6: To exit =========================== Your project has to provide the underlying software to support the functions given in the menu above. You can use any packages available, provided you acknowledge the sources suitably and prominently. Feel free to use WebCT chat forums to facilitate discussions amongst yourselves for exchanging databases/ideas/questions etc. BUT THE PROGRAMMING FOR THE PROJECT SHOULD BE COMPLETELY YOUR OWN. The project (process) is outlined below: 1. Pick your favorite store (car dealer, jewelry dealer etc). NOTE: You may use the video store example shown above. Pick a single-product store to make your task simpler. The store must need to store transactions (therefore rental stores are more germane than stores that sell). 2. Design a primitive database indicating a. what you want to store (vidoes, customers etc), b. what processes you want to allow on it (update, add, delete etc) and c. what transactions you want it to perform (rent, return, etc). Populate the databases (one each for the store objects and the customers). You may share databases. If you select the video store, database elements are readily available at imdb.com. Acknowledge any source in the code. 3. Design classes based on your analysis in step 2 above, using LINKED LISTS for the database elements read into the main memory. 4. Implement your design from step 3 above, together with a main program, that performs all the functions shown in the menu above (may do more). 5. Generate inputs and test the program you have written. 6. Now add a QUEUE to process customers. Pretend that there are several customers waiting to be processed, by randomly generating a number n, picking some n customers from the database to put into this queue and then processing the queue members with a randomly generated task that they "request" (instead of just looping through the main menu till flagged for a finish, as was done above). 7. For EXTRA CREDIT: Think of a suitable application for the STACK datastructure for this project, implement, and show results; also document this step, together with the rationale, in the design report. 8. Now design a BINARY SEARCH TREE data structure to bring the video database into the main memory and document any improvement in performance over the flat linked list used earlier. 9. Finally, process the customers by putting them in a PRIORITY QUEUE, as opposed to the regular queue used above. Assign priorities either randomly or by some other mechanism suitable to the task at hand. 10. For BONUS points, make the BST be a balanced tree (AVL) tree, and document performance improvements.