cs445 - Spring 2013

Project - Questions And Answers


Many thanks to the following students who have contributed questions for this section:

  • Michael Dougherty
  • Sathyanarayanan Srinivasan

Q: What roles should there be?

A: Depends on how complex the project is:
  • Basic project: only one role, the shop owner.
  • Extra credit project: two roles, shop owner and customer.
  • Real life: shop owner, customer, customer service, accounting and maybe others.

Q: Do you want an admin type page where you can add and remove instructors??

A: No need either the basic project or the extra credit project.

Q: What info does the customer need to provide? The requirements state an email address and info to process a payment, but what info do you need to process that payment? Is there any other info needed??

A: Think about online payment on your favorite e-commerce site: CC#, expiration date (MM/YY), name on card, card security code (3-digit for Visa and MC on the back of the card, 4-digit for AmEx on the front of the card), billing address (name, address, state, zip)..

Q: What information is needed to setup a tour?

A: Here's the info:
  • Tour name
  • Location
  • Description
  • Start time
  • Duration
  • Seats available
  • Price per person

Q: What is the minimum and maximum number of people per tour?

A: The min and max will be read from the configuration file (XML, YAML, JSON, etc.) when the application starts, however the owner can change them when setting up a tour.

Q: How should customers be notified of a cancelled class?

A: Email is sufficient for purposes of this project.

Q: Can you have multiple tours per day?

A: Yes.

Q: Regarding price of a tour per person, is it fixed/flat price or you'll consider discounts if a group of people register rather than an individual? Will the price vary based on how early they register v. close to the tour starting date??

A: There are no discounts of any kind. Though you should be able to add the functionality later because tour operators will want it.

Q: Can the price of a tour be changed after it's been created?

A: Yes. If the price is increased, none of the existing bookings for the tour will be affected, only new bookings will be done with the new price. If a customer cancels their booking, then they get refunded the amount they paid for the tour, not the list price at the time of the booking.

Q: How should we maintain state between sessions?

A: The easiest way is to serialize all objects that matter and save them to file(s) on exit. When you start the application you can test for the existence of that file and restore objects from it. If you're going to use a database for persistence, then you can use the database to persist information that's relevant to session(s).

Q: Can the owner modify the number of seats available after the tour has been created?

A: Yes.

Q: Do we need to validate the input data?

A: Aren't you tired of crappy applications? Yes, you have to do it. It's not enough to do it on the client side, you must (also) do it on the server side: this is called "complete mediation" in information security and prevents attackers from sending bad data directly to the server.

Q: How many days before the tour can a customer cancel and receive a full refund?

A: This is a global value that will be read from the configuration file when the application starts-up. If the customer cancels after the deadline for the tour, then no refunds will be issued.

Q: How many days before the tour can the owner cancel the tour?

A: The owner can cancel a tour whenever (s)he wants: when the tour is cancelled, all people who have booked the tour will be notified and they will receive a full refund.

Q: What happens if we search for a booking and there are multiple by the same customer?

A: There is nothing special about this case: all bookings and past orders will be displayed, starting with the most recent one first..

$Id: QandA.html,v 1.1 2013/03/26 22:36:09 virgil Exp $