- July 28, 2020
I211: Information Infrastructure II Mastery Project 2 Always backup your work to a system that you don’t control, such as OneDrive or GoogleDrive, in case something goes wrong with Canvas. These put a timestamp on your work that can be used to prove when it was done. We cannot accept timestamps from your local machine. You are responsible for making sure your work is submitted by the due date on Canvas, so it is strongly advised that you verify the submission once you’ve turned it in. We accept Mastery Projects up to 24 hours late, for a 20% penalty. As a reminder, you may use anything on the Canvas section for THIS CLASS or for I210, as well as any book listed as a reference for this course or I210. You may use any notes (physical or online) taken for THIS CLASS or for I210. Using code you found online from outside of this class or code that you did not write that is not from our Canvas section is likely to constitute academic misconduct. If you are unsure, ask first. If you have questions about what we want you to do in this Mastery Project, ask in Piazza. If you get stuck writing your code and need help, come to an Office Hour. You want to get started early so that there’s as much time as possible to get help! For this project you will create a website to help a local pizza place take online orders. Specifically, you will create a website that will allow the user to choose size, crust, and toppings for a pie. Once the user has made their selections, the page should calculate the cost, and display it to the user. When you are finished your pages should look like http://cgi.soic.indiana.edu/~dpierz/mp2/pizzanet.html (including bonus) Section 1 – HTML (20 points): Instructions: Write an HTML page that displays the pizza image and message as seen on pizzanet.html, and allows the user to select a size and crust for a pie, and advance to the next (CGI) page. This page should send its information to a CGI page called pizza1.cgi. Section 2 – First CGI page (35 points): Instructions: The CGI page pizza1.cgi should get the information from the form about size and crust, and pass them on to the next CGI page (pizza2.cgi) via a new form on pizza1.cgi. This new form should also get any toppings that the customer wants to choose. Pizza2.cgi should display a summary message of the user’s order, along with the calculated cost. Section 3 – Second CGI page (35 points) : Instructions: Pizza2.cgi should display a summary message of the user’s order, along with the calculated cost. BONUS – Section 4 – (10 points): Instructions: Add a textbox to pizza1.cgi for discount codes. If the user enters the code PYTHON, they should receive a 10% discount when you calculate the final cost on pizza2.cgi. GOOD LUCK! If you have any questions or comments, please don’t hesitate to ask. In each section, functionality will account for about 75% of the grade. The remaining 25% of points will be for observation of programming conventions, good naming, correct use of advanced structures such as list comprehensions to reduce overall code size, not duplicating code, correctly handling errors, proper use of return values, etc. We expect you, as students who have completed I210, to produce well-written, well-organized code, not just code that functions. The last 10% is for completing the turn-in sheet on the next page, which you should submit along with your Python program, named MP2-YourLastName-YourFirstName.py I211 Turn-In Sheet: Mastery Project 2 Fill in the sheet anywhere there is a yellow arrow! This is IN ADDITION to your HTML and CGI files. → Your name: General (2 pts) → Is there any part of the Project that you didn’t complete? → Are there any errors when your Project runs? If so, do you know why? Section 1 (3 pts) → What type of input did you use for your pizza sizes? → What method did you choose to send your form data to your cgi page and why did you choose it? Section 2 (3 pts) → How many placeholders did you use in your HTML template and why did you choose to set up your template that way? → How many different types of input did you use in your form on this page? Section 3 (2 pts) → What method did you use to retrieve all of the toppings from the form? → How did you change up your message to adapt to differing numbers of toppings?