Skip to content
Amy edited this page Oct 16, 2023 · 15 revisions

Welcome to the Pizzeria Simulator wiki!

Functional requirements

Simulator of the pizzeria.

  1. 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.

  2. 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.

  3. 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.

  4. The program must record the beginning and end of the execution of each pizza.

  5. There should also be a technical ability to pause of one or more cooks.

Entities

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, cooking stage, 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

Order Processing Modes

  • First mode (with non-specialized cooks):
    A cook makes the entire order - from start to finish
    One cook — 1 thread, different runnables (different stages for preparing one order) are transferred to it
  • Second mode (with specialized cooks):
    A cook specializes in one task and can do only it (for example, making a dough or applying toppings)
    One cook — 1 thread, different runnables (the same one stage for preparing different orders) are passed to it

Class Diagram Draft: image_2023-10-16_00-35-08