CS637 Programming Assignment 1:  Pizza Shop, version 1

We will implement the Pizza Shop web app, following the structure of the provided ch05_guitar_shop project.

See PizzaProject for a description of the project, and the supplied pizza1_setup for a supplied starting-point project with all directories and most files started. You may keep the same main.css, or modify it, but don’t go crazy with changes.

First do hw3, especially the pizza page flow and communications diagram problems, so you know what this app does, and the last two, which outline first steps in doing the project.

How to proceed?  Here are some ideas.

1.  (in hw3) Install and run the supplied pizza1_setup project and copy it to pizza1, for your first delivery. Set up Netbeans projects for both. Note the instructions in pizza1_setup/README.

2.  (in hw3) Use pizza1-setup’s database/dev_setup.sql and then database/createdb.sql to load you own mysql pizzadb and create a mysql user named pizza_user for the app.

3.  (in hw3) In pizza1, edit database.php and view/header.php to replace xxxx with your cs.umb.edu username.  Install pizza1 on your own Apache server at htdocs/cs637/username/pizza1 and browse to localhost/cs637/username/pizza1 to try it out. Here "username" should be replaced by your cs.umb.edu username. It should be able to list the toppings and allow navigation among the top pages, but not much else.

4.  (in hw3) Set up Netbeans projects for pizza1_setup and pizza1. Run the project from Netbeans: it should run the same as in step 3.

5. (described in hw3, problem 7, but separately graded) pizza1_setup has a partially-implemented toppings manager.  Implement add-topping for it. Follow the pattern of adding a product in ch05_guitar_shop: add a function add_topping to topping_db.php.  See product_db.php, listed on pg. 171. Then call add_topping from topping/index.php, just as add_product is called from product_manager/index.php, shown on pg. 173.

When you finish these 5 steps, put this version in your subdirectory of /var/www/html/cs637 on topcat.cs.umb.edu, i.e., /var/www/html/cs637/username, and try running it by browsing to http://topcat.cs.umb.edu/cs637/username/pizza1, where username is your cs.umb.edu username. Load the pizza tables into your mysql database on topcat. Note that database.php needs your cs.umb.edu username coded in it to know what database to use on topcat.  This part is due Tuesday, Oct. 16 by midnight in your /var/www/html/cs637/username/pizza1 directory on topcat. Also see homework 3.

7.  Implement the student order form, so you have some orders to work with.

8   Implement the order manager, so you can get some pizzas baked

9.  Implement student order status

10. Finish up: implement the user and day managers, anything else needed.

Implementation Notes.

Due Sunday, Oct. 28 by midnight, in /var/www/html/cs637/username/pizza1, full project, where username is your topcat username. This directory is student-private. The delivered file model/database.php specifies your username and password for your mysql database on topcat, loaded for this project.

grading run (what I will do to test your project): Approximate list

Run your web app as you have deployed it, after checking that it is set up to run on your own database:

Add a topping
Add a user
Order a pizza
Make sure ordered pizza shows
Order a second pizza
Admin make one pizza ready
Make sure order status changes for student
Admin: get list of in-progress orders
Student acknowledges receipt of first pizza
Make sure order status changes for student
Admin: get list of in-progress orders
Admin: advance day
Admin: get list of in-progress orders (should be empty)
Admin: delete a topping or size.

Late Days
Each student has 3 late days to apply to the two project deliveries (project 1 and project 2), to cover ordinary problems like business trips, other deadlines, etc. You can use them in any pattern, but not all 3 for one project--I will record the number of late days used on each project along with the score. To use late days, simply put a README in your project directory ( /var/www/html/cs637/username/pizza1) saying how many days you are using.