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+ or Chrome.
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 website has has the home page, and then various sections and sub-sections. For example "News",
"Weather", "Entertainment" are sections, whereby "News Local",
"News National", and "News World" are subsections of the "News" section.
Each page on the site belongs to a specific section / sub-section. This is important because the way advertising
is typically sold on the website is not by page, instead by section and placement. For example an advertiser such as
"ACME Computer Security" may want to buy 1.5 million impressions of the wide skyscraper
in the "Business" section, whereby an advertiser such as "Buy Best" could buy 5 millions
impressions on the home page header banner and 3 million impressions of the same placement (header banner) on the
rest of the site (this is called ROS - Run Of Site).
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 / sub-section of the site. She will select a section / sub-section
and a date (today or in the future) and then she will enter the projected page views number which is
a positive or negative integer.
Sales people should be able to view projected and available inventory for any section / sub-section, placement
and date, book a portion of or all available inventory, cancel a booking. The booking will include the name of
the client, the name of the sales person, and the CPM (Cost Per Mille aka cost per thousand impressions).
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.