-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Simulator of the pizzeria.
-
Ability to configure the system by defining:
- number of cash registers;
- the number of cooks working in the pizzeria;
- the choice of pizzas from a predefined list of all possible recipes for the menu;
- how often and how many diners come at a time;
- the simulation mode. If the simulation mode is with specialized cooks, the ability to select the number of cooks per specialization (stage);
The duration of the simulation is not set by the user at the moment.
-
The program must generate a specified number of clients in a specified period of time. The created client has a formed order, which includes an arbitrary number of pizzas of any type offered in the menu.
-
The customer chooses the cash desk (with the smallest number of customers). The received order can be processed in two. The program should display each step of the order execution and all events that occur.
-
The program must record the beginning and end of the execution of each pizza.
-
There should also be a technical ability to pause of one or more cooks.
Diner
:
- Can order a pizza (or several different ones) from the list
- Chooses the cashier with the shortest queue
Cook
:
- Prepares the order depending on the selected mode
User
:
- Configures the system
- Can pause cooks (individually)
Other entities:
- Pizza
recipe
(what ingredients should be, how much time minimum to cook) -
Pizza
(actual ingredients, real cooking time, cookingstage
, cook) -
Order
(many pizzas) - Event log
- Name in the event log (event name, start/end time)
- Kitchen
configuration
(order processing mode, number of cash registers, number of cooks, actual list of cooks, menu, diner generation strategy etc.)
Program:
- Logs actions, their start and end
- Generates
diners
- Provides ability to monitor the status of
orders
and processes
- First mode (with
non-specialized cooks
):
Acook
makes the entire order - from start to finish
Onecook
— 1 thread, different runnables (differentstages
for preparing oneorder
) are transferred to it - Second mode (with
specialized cooks
):
Acook
specializes in one task and can do only it (for example, making a dough or applying toppings)
Onecook
— 1 thread, different runnables (the same onestage
for preparing differentorders
) are passed to it
Class Diagram Draft: