Restaurant Management System Project in Python Source Code

This article about the Restaurant Management System Project in Python is ideal for students who want to learn how to build a management system in Python.

Or for shop owners who want to handle and run all restaurant-related functions on a computer using the Python programming language.

Talking about this Restaurant Management System Project in Python Using Tkinter, which can help you Save Time, Effort, and Complexity by reducing the amount of work you have to do.

However, it’s impossible to do all of the work manually in today’s restaurants because they’re so crowded.

This is why people must use this management system to improve their workflow and performance.

Restaurant Management System In Python: Project Information

Project Name:Restaurant Management System Project in Python with Source Code
Language/s Used:Python (GUI) Based
Python version (Recommended):2.x or 3.x
Database:None
Type:Python App
Developer:IT SOURCECODE
Updates:0
Restaurant Management System In Python – Project Information

A Python Project For a Restaurant Management System has a versatile menu as well as a price for each item.

The user enters the number of portions he wants to order, and the backend calculates the total amount, including service fees and tax.

The programmer must specify the service charges and tax rates.

The Workflow: Prepare a restaurant menu as well as a price list.

Moreover, Tkinter is used to build a graphical user interface for the management system.

Input boxes for the number of servings of various menu items.

Finally, in the Restaurant Management System Using Python, there are classes in the system’s backend that can perform functions including tax calculation, service charge calculation, and overall price of the meal including all taxes.

There are also button operations for total, price list, reset, and exit features.

To start creating a Restaurant Management System Project, make sure that you have PyCharm Professional IDE Installed on your computer.

Anyway, if you are new to Python programming and don’t know what Python IDE to use, I have here a list of Best Python IDE for Windows, Linux, and Mac OS that will suit you.

I also have here How to Download and Install Latest Version of Python on Windows.

This Restaurant Management System Project also includes a Download Source Code for free, just find the downloadable source code below and click download now.

Features of Restaurant Management System Project in Python

  • Adobong Manok, Lechon Baboy, Sinigang na Hapon, Kari-Kari, Isdang Paksiw, Drinks, and other restaurant items are available.
  • The ability for the user to enter tax costs.
  • Calculate the bill’s overall cost.
  • Tax and service fee are added together.
  • Each item’s price is set individually in the system.
  • All menus and orders should be reset.
  • A separate calculator may be used in conjunction with the software to perform additional calculations.
  • Add a quantity of each item in each menu available feature
  • Feature that allows the user to manually enter service charge costs.

Steps on How To Create a Restaurant Management System Project in Python

Time needed: 5 minutes

Here are the steps on how to create a Restaurant Management System Project in Python with Source Code

  • Step 1: Create a Project Name.

    First, open the PyCharm IDE and click “File” select “New Project” and then create a project name after that click the “Create” button.

  • Step 2: Create a Python File.

    next, create a project name, “right” click the project name and click “New” after that choose “Python File“.
    Create python file name for restaurant management system in python with source code

  • Step 3: Name the Python File.

    Last, choose Python File, name the file “main” and then click “Enter“.
    finish create python file name for restaurant management system in python with source code

  • Step 4: The actual code

    Finally, you can start coding, you are free to copy the code that is provided below.

Code Explanations

1. Project Name

Code:

lblinfo = Label(Tops, font=( 'aria' ,30, 'bold' ),text="Restaurant Management System",bg="darkblue",fg="white",bd=10,anchor='w')
lblinfo.grid(row=0,column=0)
lblinfo = Label(Tops, font=( 'aria' ,20, ),text=localtime,fg="black",anchor=W)
lblinfo.grid(row=1,column=0)

Explanation:

This code displayed the title of the system and the label design.

2. Calculator Function

Code:

text_Input=StringVar()
operator =""

txtdisplay = Entry(f2,font=('ariel' ,20,'bold'), textvariable=text_Input , bd=5 ,insertwidth=7 ,bg="white",justify='right')
txtdisplay.grid(columnspan=4)

def  btnclick(numbers):
    global operator
    operator=operator + str(numbers)
    text_Input.set(operator)

def clrdisplay():
    global operator
    operator=""
    text_Input.set("")

def eqals():
    global operator
    sumup=str(eval(operator))

    text_Input.set(sumup)
    operator = ""

3. Exit Function

Code:

btnexit=Button(f1,padx=16,pady=8, bd=10 ,fg="white",font=('ariel' ,16,'bold'),width=10, text="EXIT", bg="red",command=qexit)
btnexit.grid(row=7, column=3)

Explanation:

In this code displayed the exit button of the system.

4. Reset Function

Code:

def reset():
    ado.set("")
    adobongmanok.set("")
    lechonbaboys.set("")
    siniganghipon.set("")
    paksiws.set("")
    Subtotal.set("")
    Total.set("")
    Service_Charge.set("")
    mountaindew.set("")
    Tax.set("")
    cost.set("")
    karikaris.set("")
btnreset=Button(f1,padx=16,pady=8, bd=10 ,fg="white",font=('ariel' ,16,'bold'),width=10, text="RESET", bg="green",command=reset)
btnreset.grid(row=7, column=2)

Explanations:

This code displayed the reset button of the system. All menus and orders should be reset.

5. Price List Function

Code:

def price():
    roo = Tk()
    roo.geometry("600x220+0+0")
    roo.title("Price List")
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="Products", bg="darkblue", fg="white", bd=5)
    lblrestaurant.grid(row=0, column=0)
    lblrestaurant = Label(roo, font=('aria', 15,'bold'), text="_____________", fg="white", anchor=W)
    lblrestaurant.grid(row=0, column=2)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="PRICE",bg="darkblue", fg="white", anchor=W)
    lblrestaurant.grid(row=0, column=3)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="Adobong manok", fg="red", anchor=W)
    lblrestaurant.grid(row=1, column=0)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="50", fg="red", anchor=W)
    lblrestaurant.grid(row=1, column=3)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="Lechon Baboy", fg="red", anchor=W)
    lblrestaurant.grid(row=2, column=0)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="60", fg="red", anchor=W)
    lblrestaurant.grid(row=2, column=3)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="Sinigang na Hipon", fg="red", anchor=W)
    lblrestaurant.grid(row=3, column=0)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="250", fg="red", anchor=W)
    lblrestaurant.grid(row=3, column=3)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="kari-Kari", fg="red", anchor=W)
    lblrestaurant.grid(row=4, column=0)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="50", fg="red", anchor=W)
    lblrestaurant.grid(row=4, column=3)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="Isdang Paksiw", fg="red", anchor=W)
    lblrestaurant.grid(row=5, column=0)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="75", fg="red", anchor=W)
    lblrestaurant.grid(row=5, column=3)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="Drinks", fg="red", anchor=W)
    lblrestaurant.grid(row=6, column=0)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="45", fg="red", anchor=W)
    lblrestaurant.grid(row=6, column=3)

    roo.mainloop()

Explanation:

This code displayed the price button of the system. Each item’s price is set individually in the system.

Complete Source Code

from tkinter import*
import random
import time

root = Tk()
root.geometry("1600x700+0+0")
root.title("Restaurant Management System")

Tops = Frame(root,bg="white",width = 1600,height=50,relief=SUNKEN)
Tops.pack(side=TOP)

f1 = Frame(root,width = 900,height=700,relief=SUNKEN)
f1.pack(side=LEFT)

f2 = Frame(root ,width = 400,height=700,relief=SUNKEN)
f2.pack(side=RIGHT)
#------------------TIME--------------
localtime=time.asctime(time.localtime(time.time()))
#-----------------INFO TOP------------
lblinfo = Label(Tops, font=( 'aria' ,30, 'bold' ),text="Restaurant Management System",bg="darkblue",fg="white",bd=10,anchor='w')
lblinfo.grid(row=0,column=0)
lblinfo = Label(Tops, font=( 'aria' ,20, ),text=localtime,fg="black",anchor=W)
lblinfo.grid(row=1,column=0)

#---------------Calculator------------------
text_Input=StringVar()
operator =""

txtdisplay = Entry(f2,font=('ariel' ,20,'bold'), textvariable=text_Input , bd=5 ,insertwidth=7 ,bg="white",justify='right')
txtdisplay.grid(columnspan=4)

def  btnclick(numbers):
    global operator
    operator=operator + str(numbers)
    text_Input.set(operator)

def clrdisplay():
    global operator
    operator=""
    text_Input.set("")

def eqals():
    global operator
    sumup=str(eval(operator))

    text_Input.set(sumup)
    operator = ""

def Ref():
    x=random.randint(12980, 50876)
    randomRef = str(x)
    ado.set(randomRef)

    adobo =float(adobongmanok.get())
    adobongbaboy= float(lechonbaboys.get())
    hipon= float(siniganghipon.get())
    karikari= float(paksiws.get())
    paksiw= float(karikaris.get())
    drinkwine= float(mountaindew.get())

    adoboprice = adobo*50
    adobongbaboyprice = adobongbaboy*60
    hiponprice = hipon*250
    karikariprice = karikari*50
    paksiwprice = paksiw*75
    drinksprice = drinkwine*45

    dinnercost = "P",str('%.2f'% (adoboprice +  adobongbaboyprice + hiponprice + karikariprice + paksiwprice + drinksprice))
    PayTax=((adoboprice +  adobongbaboyprice + hiponprice + karikariprice +  paksiwprice + drinksprice)*0.33)
    Totalcost=(adoboprice +  adobongbaboyprice + hiponprice + karikariprice  + paksiwprice + drinksprice)
    Ser_Charge=((adoboprice +  adobongbaboyprice + hiponprice + karikariprice + paksiwprice + drinksprice)/99)
    Service="P",str('%.2f'% Ser_Charge)
    OverAllCost="P",str( PayTax + Totalcost + Ser_Charge)
    PaidTax="P",str('%.2f'% PayTax)

    Service_Charge.set(Service)
    cost.set(dinnercost)
    Tax.set(PaidTax)
    Subtotal.set(dinnercost)
    Total.set(OverAllCost)


def qexit():
    root.destroy()

def reset():
    ado.set("")
    adobongmanok.set("")
    lechonbaboys.set("")
    siniganghipon.set("")
    paksiws.set("")
    Subtotal.set("")
    Total.set("")
    Service_Charge.set("")
    mountaindew.set("")
    Tax.set("")
    cost.set("")
    karikaris.set("")


btn7=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text="7",bg="black", command=lambda: btnclick(7) )
btn7.grid(row=2,column=0)

btn8=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text="8",bg="black", command=lambda: btnclick(8) )
btn8.grid(row=2,column=1)

btn9=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text="9",bg="black", command=lambda: btnclick(9) )
btn9.grid(row=2,column=2)

Addition=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text="+",bg="black", command=lambda: btnclick("+") )
Addition.grid(row=2,column=3)
#---------------------------------------------------------------------------------------------
btn4=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text="4",bg="black", command=lambda: btnclick(4) )
btn4.grid(row=3,column=0)

btn5=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text="5",bg="black", command=lambda: btnclick(5) )
btn5.grid(row=3,column=1)

btn6=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text="6",bg="black", command=lambda: btnclick(6) )
btn6.grid(row=3,column=2)

Substraction=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text="-",bg="black", command=lambda: btnclick("-") )
Substraction.grid(row=3,column=3)
#-----------------------------------------------------------------------------------------------
btn1=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text="1",bg="black", command=lambda: btnclick(1) )
btn1.grid(row=4,column=0)

btn2=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text="2",bg="black", command=lambda: btnclick(2) )
btn2.grid(row=4,column=1)

btn3=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text="3",bg="black", command=lambda: btnclick(3) )
btn3.grid(row=4,column=2)

multiply=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text="*",bg="black", command=lambda: btnclick("*") )
multiply.grid(row=4,column=3)
#------------------------------------------------------------------------------------------------
btn0=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text="0",bg="black", command=lambda: btnclick(0) )
btn0.grid(row=5,column=0)

btnc=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text="c",bg="black", command=clrdisplay)
btnc.grid(row=5,column=1)

btnequal=Button(f2,padx=16,pady=16,bd=4,width = 16, fg="red", font=('ariel', 20 ,'bold'),text="=",bg="black",command=eqals)
btnequal.grid(columnspan=4)

Decimal=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text=".",bg="black", command=lambda: btnclick(".") )
Decimal.grid(row=5,column=2)

Division=Button(f2,padx=16,pady=16,bd=4, fg="red", font=('ariel', 20 ,'bold'),text="/",bg="black", command=lambda: btnclick("/") )
Division.grid(row=5,column=3)
status = Label(f2,font=('aria', 15, 'bold'),width = 16, text="By itsourcecode.com",bd=2,relief=SUNKEN)
status.grid(row=7,columnspan=3)

#---------------------------------------------------------------------------------------
ado = StringVar()
adobongmanok = StringVar()
lechonbaboys = StringVar()
siniganghipon = StringVar()
paksiws = StringVar()
Subtotal = StringVar()
Total = StringVar()
Service_Charge = StringVar()
mountaindew = StringVar()
Tax = StringVar()
cost = StringVar()
karikaris = StringVar()


lblreference = Label(f1, font=( 'aria' ,16, 'bold' ),text="Order No.",fg="red",bd=10,anchor='w')
lblreference.grid(row=0,column=0)
txtreference = Entry(f1, font=('ariel' ,16,'bold'), textvariable=ado, bd=6, insertwidth=4, bg="white", justify='right')
txtreference.grid(row=0,column=1)

lblmanok = Label(f1, font=('aria' , 16, 'bold'), text="Adobong Manok", fg="green", bd=10, anchor='w')
lblmanok.grid(row=1, column=0)
txtmanok = Entry(f1, font=('ariel' , 16, 'bold'), textvariable=adobongmanok, bd=6, insertwidth=4, bg="white", justify='right')
txtmanok.grid(row=1, column=1)

lblbaboy = Label(f1, font=('aria' , 16, 'bold'), text="Letchon Baboy", fg="green", bd=10, anchor='w')
lblbaboy.grid(row=2, column=0)
txtbaboy = Entry(f1, font=('ariel' , 16, 'bold'), textvariable=lechonbaboys, bd=6, insertwidth=4, bg="white", justify='right')
txtbaboy.grid(row=2, column=1)


lblhipon = Label(f1, font=('aria' , 16, 'bold'), text="Sinigang na Hipon", fg="green", bd=10, anchor='w')
lblhipon.grid(row=3, column=0)
txthipon = Entry(f1, font=('ariel' , 16, 'bold'), textvariable=siniganghipon, bd=6, insertwidth=4, bg="white", justify='right')
txthipon.grid(row=3, column=1)

lblkarikari = Label(f1, font=('aria' , 16, 'bold'), text="Kari-Kari", fg="green", bd=10, anchor='w')
lblkarikari.grid(row=4, column=0)
txtkarikari = Entry(f1, font=('ariel' , 16, 'bold'), textvariable=paksiws, bd=6, insertwidth=4, bg="white", justify='right')
txtkarikari.grid(row=4, column=1)

lblpaksiw = Label(f1, font=('aria' , 16, 'bold'), text="Isdang Paksiw", fg="green", bd=10, anchor='w')
lblpaksiw.grid(row=5, column=0)
txtpaksiw = Entry(f1, font=('ariel' , 16, 'bold'), textvariable=karikaris, bd=6, insertwidth=4, bg="white", justify='right')
txtpaksiw.grid(row=5, column=1)

#--------------------------------------------------------------------------------------
lblmountaindew = Label(f1, font=('aria' , 16, 'bold'), text="Drinks", fg="green", bd=10, anchor='w')
lblmountaindew.grid(row=0, column=2)
txtmountaindew = Entry(f1, font=('ariel' , 16, 'bold'), textvariable=mountaindew, bd=6, insertwidth=4, bg="white", justify='right')
txtmountaindew.grid(row=0, column=3)

lblcost = Label(f1, font=( 'aria' ,16, 'bold' ),text="cost",fg="red",bd=10,anchor='w')
lblcost.grid(row=1,column=2)
txtcost = Entry(f1,font=('ariel' ,16,'bold'), textvariable=cost , bd=6,insertwidth=4,bg="white" ,justify='right')
txtcost.grid(row=1,column=3)

lblService_Charge = Label(f1, font=( 'aria' ,16, 'bold' ),text="Service Charge",fg="red",bd=10,anchor='w')
lblService_Charge.grid(row=2,column=2)
txtService_Charge = Entry(f1,font=('ariel' ,16,'bold'), textvariable=Service_Charge , bd=6,insertwidth=4,bg="white" ,justify='right')
txtService_Charge.grid(row=2,column=3)

lblTax = Label(f1, font=( 'aria' ,16, 'bold' ),text="Tax",fg="red",bd=10,anchor='w')
lblTax.grid(row=3,column=2)
txtTax = Entry(f1,font=('ariel' ,16,'bold'), textvariable=Tax , bd=6,insertwidth=4,bg="white" ,justify='right')
txtTax.grid(row=3,column=3)

lblSubtotal = Label(f1, font=( 'aria' ,16, 'bold' ),text="Subtotal",fg="red",bd=10,anchor='w')
lblSubtotal.grid(row=4,column=2)
txtSubtotal = Entry(f1,font=('ariel' ,16,'bold'), textvariable=Subtotal , bd=6,insertwidth=4,bg="white" ,justify='right')
txtSubtotal.grid(row=4,column=3)

lblTotal = Label(f1, font=( 'aria' ,16, 'bold' ),text="Total",fg="red",bd=10,anchor='w')
lblTotal.grid(row=5,column=2)
txtTotal = Entry(f1,font=('ariel' ,16,'bold'), textvariable=Total , bd=6,insertwidth=4,bg="white" ,justify='right')
txtTotal.grid(row=5,column=3)

#-----------------------------------------buttons------------------------------------------
lblTotal = Label(f1,text="---------------------",fg="white")
lblTotal.grid(row=6,columnspan=3)

btnTotal=Button(f1,padx=16,pady=8, bd=10 ,fg="white",font=('ariel' ,16,'bold'),width=10, text="TOTAL", bg="blue",command=Ref)
btnTotal.grid(row=7, column=1)

btnreset=Button(f1,padx=16,pady=8, bd=10 ,fg="white",font=('ariel' ,16,'bold'),width=10, text="RESET", bg="green",command=reset)
btnreset.grid(row=7, column=2)

btnexit=Button(f1,padx=16,pady=8, bd=10 ,fg="white",font=('ariel' ,16,'bold'),width=10, text="EXIT", bg="red",command=qexit)
btnexit.grid(row=7, column=3)

def price():
    roo = Tk()
    roo.geometry("600x220+0+0")
    roo.title("Price List")
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="Products", bg="darkblue", fg="white", bd=5)
    lblrestaurant.grid(row=0, column=0)
    lblrestaurant = Label(roo, font=('aria', 15,'bold'), text="_____________", fg="white", anchor=W)
    lblrestaurant.grid(row=0, column=2)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="PRICE",bg="darkblue", fg="white", anchor=W)
    lblrestaurant.grid(row=0, column=3)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="Adobong manok", fg="red", anchor=W)
    lblrestaurant.grid(row=1, column=0)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="50", fg="red", anchor=W)
    lblrestaurant.grid(row=1, column=3)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="Lechon Baboy", fg="red", anchor=W)
    lblrestaurant.grid(row=2, column=0)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="60", fg="red", anchor=W)
    lblrestaurant.grid(row=2, column=3)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="Sinigang na Hipon", fg="red", anchor=W)
    lblrestaurant.grid(row=3, column=0)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="250", fg="red", anchor=W)
    lblrestaurant.grid(row=3, column=3)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="kari-Kari", fg="red", anchor=W)
    lblrestaurant.grid(row=4, column=0)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="50", fg="red", anchor=W)
    lblrestaurant.grid(row=4, column=3)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="Isdang Paksiw", fg="red", anchor=W)
    lblrestaurant.grid(row=5, column=0)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="75", fg="red", anchor=W)
    lblrestaurant.grid(row=5, column=3)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="Drinks", fg="red", anchor=W)
    lblrestaurant.grid(row=6, column=0)
    lblrestaurant = Label(roo, font=('aria', 15, 'bold'), text="45", fg="red", anchor=W)
    lblrestaurant.grid(row=6, column=3)

    roo.mainloop()

btnprice=Button(f1,padx=16,pady=8, bd=10 ,fg="white",font=('ariel' ,16,'bold'),width=10, text="PRICE", bg="green",command=price)
btnprice.grid(row=7, column=0)

root.mainloop()

Output:

Downloadable Source Code

Anyway, if you want to level up your programming knowledge, especially Python, try this new article I’ve made for you Best Python Projects with source code for Beginners.

But If you’re going to focus on web development using Django, you can download here from our list of Best Django Projects with source code based on real-world projects.

How To Run The Project?

To run this project, you must have installed a PyCharm on your PC (for Windows). This Restaurant Management System is free to download and use for educational purposes only!

After downloading the project you must follow the steps below:

1st Step: Unzip the file or Extract the file

2nd Step: Double-click the main.py

3rd Step: The project is ready to run

Conclusion

This Restaurant Management System Project in Python with Source Code is the way to enhance and broaden our competencies and logic ideas which is essential in training the Python programming language which is maximum well-known and most usable programming language in lots of companies.

Also, this Restaurant Management System is an easy GUI primarily based application that is very smooth to recognize and use. It makes use of the Tkinter module for the GUI.

Inquiries

If you have any questions or suggestions about the Restaurant Management System Project in Python with Source Code, please feel free to leave a comment below.

Leave a Comment