Home | How it works | Projects archive | Contact Us
Air Compressor Bot
 
The Career Path of Freelance Programming Jobs 

   Barbershop

Bidding Time:
11/03/2007 00:00 - 12/03/2007 00:00
Budget:
N/A
Status:
Closed

Job Type:
Java
Description:



A barbershop has a cutting room with at least one (up to n) chair(s) and a
waiting room with at least five (up to n) chairs.
A limitless number of customers enter the waiting room one at a time if space
is available, otherwise they go to another shop.
Each time the barber finishes a haircut, the customer must pay at the cash
register. Only one customer may pay at a time. Additional customers who want to
pay must wait while the one at the counter completes the payment transaction and
leaves. If the cashier is asleep, the paying customer must wake the cashier up.
After paying, the customer leaves the shop. If the cashier has no waiting
customers, the cashier falls asleep.

A waiting customer, if there is one, enters the cutting room and has a haircut.
Customers may enter the waiting room one at a time so long as there is a chair
for him/her to sit, or waiting customer may enter the cutting room one at a
time, so long as there are available cutting chairs.

If the barber(s) discovers that the waiting room is empty after completing hair
cut for customer in the cutting room, the barber(s) fall(s) asleep in the
waiting room.

An arriving customer, finding the barber(s) asleep, wakes the barber(s) and has
a haircut, otherwise the arriving customer waits.

You must use java's semaphore class to coordinate the operations of the
barbers, clients and the cash registers (ie., acquire & release.)

The barber shop is located in Florida and power failures are common. Your
solution will simulate a power loss during the running of the barber shop.
During a power failure, stop all threads at a specific randomly selected time.
After power returns, resume the barber shop simulation.



All threads representative of customers, barbers, cashiers, etc exist within a
single instance of the Barber Shop Application.

Your solution will display a Graphical User Interface with basic containers and
a set of controls to Start the Barber Shop simulation, simulate Power Failure,
Resume from Power Failure, and Stop the Simulation.

The GUI will also provide a set up screen on which the user can fine tune the
simulation by specifying the following parameters:

1) Number of chairs in cutting room. Default is one(1).

2) Number of Barbers. Default is one(1). This should not exceed the number
of cutting chairs specified above.

3) Number of chairs in waiting room. Default is five(5).

4) Number of Cash Register Counters, Default is one(1).

5) Number of Cashiers. Default is one(1). This should not exceed the number
of Cash Registers define above. Each register counter is operated by a cashier.
Weekends are peak days, therefore the shop must operate at full capacity and
must be full staffed. Since there are more barbers cutting hair and more
customers walking it, more cashiers need to be available to allow serviced
customers to leave the shop as soon as possible so that new ones can walk in and
be served.

As the simulation is in progress, the UI (user interface) will display:

1) The number of customers in waiting room. Identify each customer with a
unique sequence number.

2) The chair status of all chairs in the waiting room

3) The number of Barbers. Uniquely identify each barber with a name or a
number.

4) The number of Cash Register Counters and their assigned Cashiers.
Identify each cashier with a name or a number.

5) The number of customers waiting to pay.

6) The state and status of each active entity in the simulation (barber,
client, cashier) when any changes occur. For example, Cust-10(waiting for
barber), Barber-2(sleeping), Barber-1(Cutting Cust-3), Cust-3(waiting for
cashier 2), Cashier-1(charging cust-2), Cashier-2(sleeping)?

7) When the barber(s) is/are asleep/awake

8) When cashier(s) is/are asleep/awake

9) Log of power interrupts and the status of all threads at the point of
power failure.



In addition to displaying the simulation activities to the GUI, your solution
must write all events, thread statuses, etc., to a (text) log file using a
common interface with which all threads and event handlers can log their status
changes. You should consider implementing a common interface to allow the
various active entities to report their status and write messages to the GUI
without requiring them to know to which container they must display their
output. You may use Java's logging API or log4J. Each entry in the log file
should be preceded with a time stamp (date and time).



Use timers, semaphores, and threads as necessary.





Additional Details:
The time it takes a barber to cut hair for a customer is random
between 1 and 5 seconds.

The simulation must run for at least 5 minutes.

Customers enter the barber shop at random intervals of between 1
and 5 seconds.

Cashier takes between 1 and 3 seconds cashing out a customer.

Seconds are in whole numbers. (1,2 or 3)

Power loss period should be between 1 and 3 seconds

STOPzilla! Anti-Spyware Software

Related Projects:
Classified website in french and English
Simple Dnn skin
Video Game Trade In For Ebay
Need A New Team For Completion
Database Tables For Php Game.

This project is the proprietary information of . Click here to remove this project from OUR database.
Operating System:
N/A
Database System:
N/A
<<< back

Recent Projects Archive:

Wednesday - Tuesday - Monday - Sunday - Saturday - Friday - Thursday

View all freelance web projects

 
Home | Projects archive | RSS | Resources | Links | Contact Us © 2004-2009 ProjectsList.biz /0.04