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:
- sqlite3
- tkinter
- datetime
- pandas
- matplotlib
- functools (for the decorator)
- winsound (for the custom message boxes)
- 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.
- 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.
- Editing the menu (Adding, updating or removing products)
- Checking the current, canceled, or completed orders.
- Checking, and analyzing daily, weekly, monthly, or yearly reports.
- Checking the Menu.
- Taking orders.
- Cancelling orders.
- Pinging the taken orders to the chef.
- Checking the Menu.
- Checking the taken orders.
- Pinging the prepared orders to the waiter.
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
After logging in, the related menu appears on the screen. (Manager menu for example)
- 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.
- 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:
- 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!
- 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!
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:
- 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.
- 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.
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.
Like the waiter, chef also can check the whole menu;
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)
- 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.)
Let's get back to the manager menu for the analysis feature:
Oops! Looks like the user entered an invalid password!
The related graph appears on the right frame as the user selects the anaylsis type and clicks Show Analysis
button:
The project will have notices as it progresses in the future.