cs445 - Spring 2010

Project - "The foo() Bar"

1. Introduction

The purpose of the project is to give you the opportunity to practice the concepts discussed in this class. The requirements are purposely somewhat vague such that you can interact with the client (that's your instructor) to figure out the detailed requirements.

Before we get into the functionality detail, I want to remind you that detail about the programming language, the platform on which the project will be tested, unit-testing, and how to submit your work is available in the syllabus.

Sections 2 and 3 in this document cover acceptance criteria for the project, and Q&A. Section 4 details the project requirements.

2. Acceptance Criteria

Here is the minimal set of actions that will be used to test your application and the expected results. To be sure, the person testing your work will be using a much expanded set of tests.

3. Questions and Answers

Some answers to questions asked by students in relation to this project.

4. Project Description

I'm opening on campus a bar named The foo() Bar that will hopefully improve the social landscape for our students.

I need a simple software that will allow me to manage my business. The bar will have a menu from which clients can order. I will add menu items to this menu; For example I could add an entree named "Fix My Hangover" that's made of 3 Egg, 2 Bread -- meaning two slices of bread --, 1 Bacon, 2 Coffee, 1 OJ. I could also have the "Non-Polynomial Burger" the "Carbon Neutral For 2" etc., you got the idea. The price of the entree is the sum of retail prices for its individual components.

BTW, shoot me an email if you have ideas for things I should have on my menu and I may even give you extra credit in class.

Once a menu entry is created it cannot be changed, or else all my accounting will be a mess.

I work with a food suplier that has good parts and bad parts. The good is that their wholesale prices never change -- which makes my accounting very simple. Whether a shipment contains 1 Bacon or 1000, the price for one Bacon is the same, 16 pennies. This means that once I entered a food in the software, I won't have to change its price. The bad is that I have to pay cash whenever I get a shipment; if I have enough cash-on-hand, then I take the shipment and adjust my available inventory, if not, then the shipment is returned. The other (kind of) bad thing is that all prices are in pennies for reasons that escape me.

I was tempted to list the prices for my menu items in pennies, such as 512 for the "Fix My Hangover" etc. but in the end I decided that would scare customers away, so I'll stick with the old-fashioned $5.12.

I'd like to know how much cash-on-hand I have and how much food of any kind I have in inventory such that I can re-order if needed.

To keep it simple for my employees, there will be no substitutions, half-orders, etc. Also, if an order requires more foods that are available in the inventory, then the entire order will be rejected. For example, if Bob orders one "Fix My Hangover" and the inventory only has 2 Egg, then the order will be rejected since this Entree requires 3 Egg to be made.

I'll need a GUI for this software, I'm really tired of doing stuff from the command line. But I haven't decided yet the look and feel, which means you'll have to come back here soon to get the specifics.

That's all folks, let me know if you have any questions; if you don't ask, then I'll assume it's all crystal clear.

$Id: project.html,v 1.2 2010/02/09 05:59:48 virgil Exp $