/pizza-restaurant-management-system

Restaurant management system that stores the products and the orders in a database that contains CRUD operations and has the main features of a Restaurant Management System.

Primary LanguagePythonMIT LicenseMIT

🍕 Pizza Restaurant Management System

In this project; we focus on a Restaurant Management, specifically a made-up restaurant called Crazy Pizza Restaurant. The restaurant management system has a menu stored in a database that contains CRUD operations and has a system in which any item can be ordered. Also, orders are part of the database structure to analyze the current situation of the restaurant. The main features of the system are as shown with the help of the referred modules and libraries:

📌 Required Modules:

  • sqlite3
  • tkinter
  • datetime
  • pandas
  • matplotlib
  • functools (for the decorator)
  • winsound (for the custom message boxes)

❓ Abbreviations:

  • EF: Some of the features that are signed as EF means extra features which can be excluded in the final version of the project.
  • WIP: Headlines signed as WIP means work in progress which are not fully completed yet.

📌 Main Features:

  • login system for the user to see the related menu on their screen.
  • 3 main menus refer to roles respectively: Manager, Waiter, Chef
  • It is planned that the system will have custom message boxes other than default ones in the tkinter. (WIP) (EF)
  • Different roles have different functionalities to do that are responsive to each other.

👩‍💼 Features of the Manager:

  • Editing the menu (Adding, updating or removing products)
  • Checking the current, canceled, or completed orders.
  • Checking, and analyzing daily, weekly, monthly, or yearly reports.

🤵‍♀️ Features of the Waiter:

  • Checking the Menu.
  • Taking orders.
  • Cancelling orders.
  • Pinging the taken orders to the chef.

👩‍🍳 Features of the Chef:

  • Checking the Menu.
  • Checking the taken orders.
  • Pinging the prepared orders to the waiter.

How Does It Work?

The application starts with a login screen that expects the user to log in from one of the three roles:

  • 1️⃣ First the user chooses the role
  • 2️⃣ Then enters the password (Only for the manager)
  • 3️⃣ Lastly, clicks the login button

pizza1

Manager Menu

After logging in, the related menu appears on the screen. (Manager menu for example)

Show Menu

  • There are four different tabs for different functionalities in the manager menu.
  • 1️⃣ As the user clicks Show Menu button, 2️⃣ whole products appear on the right frame.

pizza2

New Product

  • 1️⃣ The user clicks the New Product button,
  • 2️⃣ A new window appears to be filled in,
  • 3️⃣ The user clicks the Add Product button to add the product to the menu and the database:

pizza3 pizza4 pizza5

Remove Product

  • 1️⃣ The user selects a product from the menu,
  • 2️⃣ Clicks Remove Product button,
  • 3️⃣ The application asks again to the user to be sure about the process,
  • 4️⃣ The selected product is deleted from the menu and the database!

pizza6 pizza7

Update Product

  • 1️⃣ The user selects a product from the menu,
  • 2️⃣ Clicks the Update Product button,
  • 3️⃣ Enters new information about the product,
  • 4️⃣ Clicks the Update Product button in the new window,
  • 5️⃣ The application asks again to the user to be sure about the process,
  • 6️⃣ The selected product is updated in the menu and the database!

pizza8 pizza9


Waiter Menu

When the user logs in as the waiter, another window appears with the same layout but different buttons and tabs.

The waiter can check the menu whenever he/she chooses the product type from the left frame:

pizza10

Take Order

  • 1️⃣ Firstly, the user chooses the product type.
  • 2️⃣ Then, chooses product name.
  • 3️⃣ After that, chooses the quantity of the current product.
  • 4️⃣ Lastly, the user clicks Add to Order button to see the total order and the total price.

pizza11

  • 5️⃣ When the order is ready to complete, the user clicks Complete Order button.
  • 6️⃣ Then, the user chooses customer type,
  • 7️⃣ And writes down the customer information.
  • 8️⃣Finally the user clicks Submit Order button to add the order in the active orders tab and the database.

pizza12

Active Orders

Whenever the user clicks Show Active Orders button in the Active Orders tab, he/she can see the details of the orders which are currently active.

pizza13


Chef Menu

Like the waiter, chef also can check the whole menu;

pizza14

Preparing Order

Chef's specific function in the menu is finishing active orders.

  • 1️⃣ Firstly, the user selects one of the active orders,
  • 2️⃣ Then clicks Order Ready button,
  • 3️⃣ And an information window appears as the message says that the order is transferred from the active order to finished order. (Both in GUI and in the database)

pizza15

Finished Orders

  • 1️⃣ The user clicks Finished Orders tab.
  • 2️⃣ Then clicks Show Finished Orders button.
  • 3️⃣ And the finished orders appears on the right frame with their details. (Prepared hour is also added to the finished orders.)

Manager Menu (Analysis)

Let's get back to the manager menu for the analysis feature:

Oops! Looks like the user entered an invalid password!

pizza17

Analysis

The related graph appears on the right frame as the user selects the anaylsis type and clicks Show Analysis button:

pizza18 pizza19


The project will have notices as it progresses in the future.