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.
Sections 2 through 4 in this document cover acceptance criteria for the project, Q&A, and a description of how you
can earn extra credit for the project.
Your executable will read from standard input and write to standard output.
The main purpose of this project is to practice object-oriented analysis, design and programming, not to teach
you web development frameworks or relational databases. As such, you do not have to develop a web interface for
this project, nor do you have to interface with a real relational database.
However, you can get extra credit for doing development work that's not required by the project, as follows:
You may not claim any extra credit if your project doesn't work from the command line flawlessly.
The web interface will be tested using Firefox 3+. SWING applications or similar will not be accepted.
5. Project Description
I am the owner of a web site where I get a fair amount of traffic on a daily basis. One way I generate
revenue from the web site is to sell ad-banner impressions on my web site's pages.
I have multiple sales people selling the inventory. Since they use spreadsheets to keep track of what they're selling
and what they think is available to sell, we find ourselves very often in a situation where we sell too much and then
cannot deliver the impressions sold. Other times we have inventory that goes wasted because nobody knew
it was available to sell. All these problems are mostly due to the fact that keeping spreadsheets in sync is
too difficult and error prone.
The time has come for me to commission the creation of a web-based system that helps me, my sales people, my
ad operation employee and my accounting employee manage the web site inventory in a centralized fashion.
My web site has the front page and then sections (e.g. news, weather, sports, business, entertainment, classifieds, etc.)
and sub-sections (local news, nationa news, world news, currency, personal finance, portfolio, baseball, NBA,
football, soccer, movies, concerts, jobs, cars, etc.)
All site pages have real-estate reserved for standard IAB ad banners.
See the Interactive Advertising Bureau's web site for more detail. Currently each
page on my site can display a 728x90 unit at the top (leaderboard), a 300x250 medium rectangle on the left hand side and a
wide skyscraper on the right hand side; the front page also allows for two other placements, two 180x150 rectangles.
On a regular basis my employee in charge with ad operations will need to update the system with the projected number
of page views for each section and sub-section of the site. She will use the web interface to select a section, sub-section and
a date (today or in the future) and then she will enter the projected number which is a positive integer. I should
be able to perform the exact same function.
Sales people should be able to view projected and available inventory for any section, sub-section, placement and date,
book a portion or all available inventory, cancel a booking. The booking will include the name of the client and the CPM.
They should be able to see their own bookings but not bookings created by other sales people.
My VP of Sales should be able to view projected and available inventory for any section,
sub-section, placement and date, book a portion or all available inventory, view all bookings made by sales people,
cancel her own bookings, cancel a booking made by a sales person, cancel committed inventory if the value
of the deal being canceled is less than $5000. When a booking is canceled, then the sales person that
created the booking must be notified. When committed inventory is canceled, then the sales person, accounting and the site owner
must be notified.
I, the owner of the site, should be able to do all the things my VP of Sales can do except that there is no limit
to the value of a deal being canceled.
Accounting should be able to turn a booking into commited inventory upon receipt of payment or for clients
that have a good credit rating. When a booking is approved and becomes commited inventory then the sales person
that created the booking and the VP of sales must be notified.