Computer Science 160

Spring 2006

Lab 7

Queues – Motor Vehicle Department Simulation

Page 419 – Problem 10

This lab is due at the beginning of the lab March 29, 2006.

The people that run the Motor Vehicle Department (MVD) have a problem. They are concerned that people do not spend enough time waiting in lines to appreciate the privilege of owning and driving an automobile. The current arrangement is as follows:

  • When people walk in the door, they must wait in a line to sign in.
  • Once they have signed in, they are told either to stand in line for registration renewal or to wait until they are called for license renewal.
  • Once they have completed their desired transaction, they must go and wait in line for the cashier.
  • When they finally get to the front of the cashier’s line, if they expect to pay by check, they are told that all checks must get approved. To do this, it is necessary to go to the check-approver’s table and then reenter the cashier’s line at the end.

Write an event-driven simulation to help the Motor Vehicle Department gather statistics.

Each input line will contain:

  • A desired transaction code (L for license renewal, R for registration renewal)
  • A method-of-payment code ($ for cash, C for check)
  • An arrival time (integer)
  • A name

Write out the specifics of each event (when, who, what, and so on). Then display these final statistics:

  • The total number of license renewals and the average time spent in MVD (arrival until completion of payment) to renew a license.
  • The total number of registration renewals and the average time spent in MVD (arrival until completion of payment) to renew a registration.

Incorporate the following details into your program:

  • Define the following events: arrive, sign in, renew license, renew registration, and cope with the cashier (make a payment or find out about check approval).
  • In the case of a tie, let the order of events be determined by the list of events just given – that is, arrivals have the highest priority.
  • Assume that the various transactions take the following amounts of time:

Sign in10 seconds

Renew license90 seconds

Register automobile60 seconds

See cashier (payment)30 seconds

See cashier (check not approved)10 seconds

  • As ridiculous as it may seem, the people waiting for license renewal are called in alphabetical order. Note, however, that people are not pushed back once their transactions have started.
  • For the sake of this simulation, you can assume that checks are approved instantly; therefore, the rule for arriving at the front of the cashier’s line with a check that has not been approved is to go to the back of the cashier’s line with a check that has been approved.

Demonstrate your program to either the instructor or lab assistant. Email your source code to your lab assistant and instructor. Take successful screen shots of the demo. Hand in your lab report which should contain the successful demo screen.