Python Code For Food Ordering System

Python Code For Food Ordering System

The Python Code For Food Ordering System is written in python programming language, We have develop this Python Program For Food Ordering. Talking about the features of this Food Ordering System Python Project, it contains only the admin section. All the order management, payments, and report are managed from the admin section. 

A Food Ordering System In Python is a Simple Python Project For Beginners, from which they can learn to develop a Python Food Ordering using console.

This article Python Code For Food Ordering System, also includes a downloadable Food Ordering System Project In Python With Source Code for free, just find the downloadable source code below and click to start downloading.

To start creating a Python Code For Food Ordering System, make sure that you have PyCharm IDE installed in your computer.

Steps on how to create a Python Code For Food Ordering System

Python Code For Food Ordering System

  • Step 1: Create a project name.

    First open Pycharm IDE and then create a “project name” after creating a project name click the “create” button.
    Python Code For Food Ordering System Project Name

  • Step 2: Create a python file.

    Second after creating a project name, “right click” your project name and then click “new” after that click the “python file“.
    Python Code For Food Ordering System Python File

  • Step 3: Name your python file.

    Third after creating a python file, Name your python file after that click “enter“.
    Python Code For Food Ordering System File Name

  • Step 4: The actual code.

    You are free to copy the code given below and download the full source code below.

The Code Given Below Is For Importing libraries

import datetime
import os

The code given which is importing the datetime and os libraries.

The Code Given Below Is For Declaring The Variables

list_foods = []                    #Variable List of foods, names + prices.
list_drinks = []                   #Variable List of drinks, names + prices.
list_services = []                 #Variable List of other services, names + prices.

list_item_price = [0] * 100        #Variable List of item prices. Index: 0-39 for foods, index: 40-79 for drinks,
                                   #Index: 80-99 for other services.
var_discount_1 = 200                      #First discount starts.
var_discount_2 = 1000                     #Second discount starts.
var_discount_3 = 5000                     #Third discount starts.
var_discount_1_rate = 0.05                #First discount rate.
var_discount_2_rate = 0.10                #Second discount rate.
var_discount_3_rate = 0.15                #Third discount rate.

The code given which is the assigned variables and its value.

The Code Given Below Is For the Navigator

navigator_symbol = "/" # This will make the program runnable on any unix based enviroument because it has differnet file system
if os.name == "nt":
    navigator_symbol = "\\" # This will make the program runnable on Windows

The code given which is the navigation of the system.

The Code Given Below Is For The Default Variables or Value

def def_default():
    global list_drinks, list_foods, list_services, list_item_order, list_item_price     
    list_item_order = [0] * 100                    #Create a list, length 100. Max index number is 99.
def_default()                                      #Index: 0-39 for foods, index: 40-79 for drinks,
                                                   #Index: 80-99 for other services. Global variables.

In this module which is the default value or variales that being display in a console.

The Code Given Below Is For The Main Module

def def_main():
    while True:                                            #Repeat Menu until stops.
        print("*" * 31 + "MAIN MENU" + "*" * 32 + "\n"     #Design for Main Menu.
              "\t(O) ORDER\n"                              #"*" * 31 means, write (*) 31 times.
              "\t(R) REPORT\n"
              "\t(P) PAYMENT\n"
              "\t(E) EXIT\n" +
              "_" * 72)

        input_1 = str(input("Please Select Your Operation: ")).upper()    #Input, have to choose operation. Make everything UPPER symbol.
        if (len(input_1) == 1):                                           #Checking input length.
            if (input_1 == 'O'):                                          #If input is "O".
                print("\n" * 10)                                         #Create 100 empty lines.
                def_order_menu()                                          #Start Order Menu function.
                break                                                     #Stop repeating Main Menu.
            elif (input_1 == 'R'):                                        #If input is "R".
                print("\n" * 10)                                         #Create 100 empty lines.
                def_report()                                              #Start Report function.
                break                                                     #Stop repeating Main Menu.
            elif (input_1 == 'P'):                                        #If input is "P".
                print("\n" * 10)                                         #Create 100 empty lines.
                def_payment()                                             #Start Payment function.
                break                                                     #Stop repeating Main Menu.
            elif (input_1 == 'E'):                                        #If input is "E".
                print("*" * 32 + "THANK YOU" + "*" * 31 + "\n")           #Good bye comment.
                break                                                     #Stop repeating Main Menu.
            else:                                                                                 #If O, R, P, E not inserted then...
                print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")     #Invalid input.
        else:                                                                                     #If input length not equal to 1...
            print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")         #Invalid input.

In this module which is the main module of the system.

The Code Given Below Is For The Ordering Module

def def_order_menu():                                                                               #yousef
    while True:                                             # While looping to keep menu alive
        print("*" * 31 + "ORDER PAGE" + "*" * 31 + "\n"     # Mail Menu
              "\t(F) FOODS AND DRINKS\n"
              "\t(O) OTHER SERVICES\n"
              "\t(M) MAIN MENU\n"
              "\t(E) EXIT\n" +
              "_" * 72)

        input_1 = str(input("Please Select Your Operation: ")).upper() # Options Handling : F-O-M-E.
        if len(input_1) == 1:
            if (input_1 == 'F'):  #Easy Access Checking Logic
                print("\n" * 10)
                def_food_drink_order() # Show Food/Drinks Menu
                break
            elif (input_1 == 'O'):
                print("\n" * 10)
                def_other_services() # Show Services Menu
                break
            elif (input_1 == 'M'):
                print("\n" * 10)
                def_main() # Show Main Menu
                break
            elif (input_1 == 'E'):
                print("*" * 32 + "THANK YOU" + "*" * 31 + "\n")
                break
            else:
                print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!") # Handling Bad Inputs
        else:
            print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")

In this module which is the ordering module of the system.

The Code Given Below Is For The File Reader Module

def def_full_file_reader():                                                                         #mustafa
    file_foods = open('files'+navigator_symbol+'list_foods.fsd', 'r') # Reading Food List
    for i in file_foods: # Line by line reading
        list_foods.append(str(i.strip())) # Adding each line (Food) into an array after applying Strip function to remove out extra spaces in front and back
    file_foods.close()

    file_drinks = open('files'+navigator_symbol+'list_drinks.fsd', 'r') # Reading Drinks List
    for i in file_drinks:
        list_drinks.append(str(i.strip()))
    file_drinks.close()

    file_services = open('files'+navigator_symbol+'list_services.fsd', 'r') # Reading Services
    for i in file_services:
        list_services.append(str(i.strip()))
    file_services.close()

    i = 0
    while i <= (len(list_foods) - 1): #Enumarte through food list to filter out prices and setup print Formatting by replacing spaces with count difference of string length and align Prices to the most left of the terminal
        if 'RM' in list_foods[i]:
            list_foods[i] = str(list_foods[i][:list_foods[i].index('RM') - 1]) + ' ' * (20 - (list_foods[i].index('RM') - 1)) + str(list_foods[i][list_foods[i].index('RM'):])
        i += 1

    i = 0
    while i <= (len(list_drinks) - 1):
        if 'RM' in list_drinks[i]:
            list_drinks[i] = str(list_drinks[i][:list_drinks[i].index('RM') - 1]) + ' ' * (20 - (list_drinks[i].index('RM') - 1)) + str(list_drinks[i][list_drinks[i].index('RM'):])
        i += 1

    i = 0
    while i <= (len(list_services) - 1):
        if 'RM' in list_services[i]:
            list_services[i] = str(list_services[i][:list_services[i].index('RM') - 1]) + ' ' * (20 - (list_services[i].index('RM') - 1)) + str(list_services[i][list_services[i].index('RM'):])
        i += 1
def_full_file_reader()

In this module which is the file reader module of the system.

The Code Given Below Is For The File Sorter Module

def def_file_sorter(): # Applying Sorting to the array to be sorted from A-Z ASC ((AND)) Extracting out prices after sorting and appending them to a prices array accordingly to a parrallel indexes
    global list_foods, list_drinks, list_services
    list_foods = sorted(list_foods)
    list_drinks = sorted(list_drinks)
    list_services = sorted(list_services)

    i = 0
    while i < len(list_foods):
        list_item_price[i] = float(list_foods[i][int(list_foods[i].index("RM") + 3):]) # Extracting Out "RM" + [SPACE] from and cast out the string into an integer
        i += 1

    i = 0
    while i < len(list_drinks):
        list_item_price[40 + i] = float(list_drinks[i][int(list_drinks[i].index("RM") + 3):]) # Applying extraction on 40 and above items which are the drinks
        i += 1

    i = 0
    while i < len(list_services):
        list_item_price[80 + i] = float(list_services[i][int(list_services[i].index("RM") + 3):]) # Applying extraction on 80 and above items wich are Services
        i += 1
def_file_sorter()

In this module which is the file sorter module of the system.

The Code Given Below Is For The Ordering Module For Drinks

def def_food_drink_order():
    while True:
            print("*" * 26 + "ORDER FOODS & DRINKS" + "*" * 26)
            print(" |NO| |FOOD NAME|         |PRICE|   |  |NO| |DRINK NAME|        |PRICE|")

            i = 0
            while i < len(list_foods) or i < len(list_drinks):
                var_space = 1
                if i <= 8:                      # To fix up to space indention in console or terminal by applying detection rule to figure out spacing for TWO DIGITS numbers
                    var_space = 2

                if i < len(list_foods):
                    food = " (" + str(i + 1) + ")" + " " * var_space + str(list_foods[i]) + "  | " # Styling out the index number for the food or item and starting out from 1 for better human readability
                else:
                    food = " " * 36 + "| " # 36 is a constant for indention in console to fixup list in print
                if i < len(list_drinks):
                    drink = "(" + str(41 + i) + ")" + " " + str(list_drinks[i])
                else:
                    drink = ""
                print(food, drink)
                i += 1

            print("\n (M) MAIN MENU                   (P) PAYMENT                   (E) EXIT\n" + "_" * 72)

            input_1 = input("Please Select Your Operation: ").upper() #Handling Menu Selection
            if (input_1 == 'M'):
                print("\n" * 10)
                def_main() # Return to main menu by calling it out
                break
            if (input_1 == 'E'):
                print("*" * 32 + "THANK YOU" + "*" * 31 + "\n") # Handling Exit and print out thank you
                break
            if (input_1 == 'P'):
                print("\n" * 10)
                def_payment() # Handling payment || More details below
                break
            try:        #Cautions Error Handling to prevent program crashing and hand out exceptions as a readable error to notify user
                int(input_1)
                if ((int(input_1) <= len(list_foods) and int(input_1) > 0) or (int(input_1) <= len(list_drinks) + 40 and int(input_1) > 40)):
                     try:
                        print("\n" + "_" * 72 + "\n" + str(list_foods[int(input_1) - 1])) # Handling Food Selection / The try/Execpt to handle out of index error as if it  not exists in the array
                     except:
                        pass
                     try:
                         print("\n" + "_" * 72 + "\n" + str(list_drinks[int(input_1) - 41])) # Handling Drinks Selection / The try/Execpt to handle out of index error as if it  not exists in the array
                     except:
                        pass

                     input_2 = input("How Many You Want to Order?: ").upper() # Handling Quantity input
                     if int(input_2) > 0:
                        list_item_order[int(input_1) - 1] += int(input_2) # adding item to Orders Array
                        print("\n" * 10)
                        print("Successfully Ordered!")
                        def_food_drink_order() # Return food/drinks Menu
                        break
                     else:
                        print("\n" * 10 + "ERROR: Invalid Input (" + str(input_2) + "). Try again!")
            except:
                print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")

In this module which is the ordering module of the system for drinks that display the list of drinks.

The Code Given Below Is For The Other Services Module

def def_other_services():
    while True:
        print("*" * 29 + "OTHER SERVICES" + "*" * 29)
        print(" |NO| |SERVICE NAME|      |PRICE|")  # Services Menu Structure

        i = 0
        while i < len(list_services):
            print(" (" + str(81+ i) + ")" + " " + str(list_services[i])) # Services starts from 81 + and now it is being enumarated into a list.

            i += 1

        print("\n (M) MAIN MENU                   (P) PAYMENT                   (E) EXIT\n" + "_" * 72)

        input_1 = input("Please Select Your Operation: ").upper()
        if (input_1 == 'M'):
            print("\n" * 10)
            def_main() # Navigate Back to main menu
            break
        if (input_1 == 'E'):
            print("*" * 32 + "THANK YOU" + "*" * 31 + "\n")
            break
        if (input_1 == 'P'):
            print("\n" * 10)
            def_payment() # navigate to payment
            break
        try:
            int(input_1)
            if (int(input_1) > 80) and (int(input_1) < 100):
                print("\n" * 10)
                print("Successfully Ordered: " + str(list_services[int(input_1) - 81])) # Adding services to orders array (AND) encapsulate errors  with try/except
                list_item_order[int(input_1) - 1] = 1
                def_other_services()
                break
            else:
                print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")
        except:
            print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")

In this module which is the module for the other services.

The Code Given Below Is For The Report Module

def def_report():
    while True:
        print("*" * 33 + "REPORT" + "*" * 33 + "\n")
        file_report = open('files'+navigator_symbol+'report.fsd', 'r').read() # Reading out reports from report.fsd
        print(file_report)
        print("\n(M) MAIN MENU          (E) EXIT\n" + "_" * 72)
        input_1 = str(input("Please Select Your Operation: ")).upper()
        if (input_1 == 'M'):
            print("\n" * 10)
            def_main() # Navigate back to menu
            break
        elif (input_1 == 'E'):
            print("*" * 32 + "THANK YOU" + "*" * 31 + "\n") # Exit and break up the loop
            break
        else:
            print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")

In this module which is the module for generating the report.

The Code Given Below Is For The Payment Module

def def_payment():
    while True:
        print("*" * 32 + "PAYMENT" + "*" * 33 + "\n") # Header & Styling
        total_price = 0 # alloc/init a variable to handle total_price

        report_new = "\n\n\n" + " " * 17 + "*" * 35 + "\n" + " " * 17 + "DATE: " + str(datetime.datetime.now())[:19] + "\n" + " " * 17 + "-" * 35 #building up report string header
        i = 0
        while i < len(list_item_order): #Enumarating order array items and summing up its prices * quantities
            if(list_item_order[i] != 0):
                if (i >= 0) and (i < 40):
                    report_new += "\n" + " " * 17 + str(list_foods[i]) + "  x  " + str(list_item_order[i]) # string appending the formated food name and formated order structure from quantity and final price
                    print(" " * 17 + str(list_foods[i]) + "  x  " + str(list_item_order[i])) #print it out
                    total_price += list_item_price[i] * list_item_order[i] # Calculating the total price for food
                if (i >= 40) and (i < 80):
                    report_new += "\n" + " " * 17 + str(list_drinks[i - 40]) + "  x  " + str(list_item_order[i])
                    print(" " * 17 + str(list_drinks[i - 40]) + "   x  " + str(list_item_order[i]))
                    total_price += list_item_price[i] * list_item_order[i] # Calculating the total price for drinks
                if (i >= 80) and (i < 100):
                    report_new += "\n" + " " * 17 + str(list_services[i - 80])
                    print(" " * 17 + str(list_services[i - 80]))
                    total_price += list_item_price[i] * list_item_order[i] # Calculating the total price for services
                i += 1
            else:
                i += 1
        ### Applying Discounts Ruless
        if total_price > var_discount_3: ### price > 5000
            total_price -= total_price * var_discount_3_rate # Discount fees from the total_price by 0.15 or 15%
            report_new += "\n" + " " * 17 + "-" * 35 + "\n" \
                "" + " " * 17 + "DISCOUNT RATES:      % " + str(var_discount_3_rate * 100) + "\n" \
                "" + " " * 17 + "DISCOUNT AMOUNTS:   RM " + str(round(total_price * var_discount_3_rate, 2)) + "\n" + " " * 17 + "_" * 35 + "\n" \
                "" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)) + "\n" + " " * 17 + "*" * 35 # Round() to flour the float into an interger
            print(" " * 17 + "-" * 35 + "\n"
                "" + " " * 17 + "DISCOUNT RATES:      % " + str(var_discount_3_rate * 100) + "\n"
                "" + " " * 17 + "DISCOUNT AMOUNTS:   RM " + str(round(total_price * var_discount_3_rate, 2)) + "\n" + " " * 17 + "_" * 35 + "\n"
                "" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)))
        elif total_price > var_discount_2: ### price > 3000
            total_price -= total_price * var_discount_2_rate # Discount fees from the total_price by 0.10 or 10%
            report_new += "\n" + " " * 17 + "-" * 35 + "\n" \
                "" + " " * 17 + "DISCOUNT RATES:      % " + str(var_discount_2_rate * 100) + "\n" \
                "" + " " * 17 + "DISCOUNT AMOUNTS:   RM " + str(round(total_price * var_discount_2_rate, 2)) + "\n" + " " * 17 + "_" * 35 + "\n" \
                "" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)) + "\n" + " " * 17 + "*" * 35 # Round() to flour the float into an interger
            print(" " * 17 + "-" * 35 + "\n"
                "" + " " * 17 + "DISCOUNT RATES:      % " + str(var_discount_2_rate * 100) + "\n"
                "" + " " * 17 + "DISCOUNT AMOUNTS:   RM " + str(round(total_price * var_discount_2_rate, 2)) + "\n" + " " * 17 + "_" * 35 + "\n"
                "" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)))
        elif total_price > var_discount_1: ### price > 200
            total_price -= total_price * var_discount_1_rate # Discount fees from the total_price by 0.05 or 5%
            report_new += "\n" + " " * 17 + "-" * 35 + "\n" \
                "" + " " * 17 + "DISCOUNT RATES:      % " + str(var_discount_1_rate * 100) + "\n" \
                "" + " " * 17 + "DISCOUNT AMOUNTS:   RM " + str(round(total_price * var_discount_1_rate, 2)) + "\n" + " " * 17 + "_" * 35 + "\n" \
                "" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)) + "\n" + " " * 17 + "*" * 35 # Round() to flour the float into an interger
            print(" " * 17 + "-" * 35 + "\n"
                "" + " " * 17 + "DISCOUNT RATES:      % " + str(var_discount_1_rate * 100) + "\n"
                "" + " " * 17 + "DISCOUNT AMOUNTS:   RM " + str(round(total_price * var_discount_1_rate, 2)) + "\n" + " " * 17 + "_" * 35 + "\n"
                "" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)))
        else:
            report_new += "\n" + " " * 17 + "-" * 35 + "\n" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)) + "\n" + " " * 17 + "*" * 35
            print(" " * 17 + "_" * 35 + "\n" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)))

        print("\n (P) PAY           (M) MAIN MENU           (R) REPORT          (E) EXIT\n" + "_" * 72)
        input_1 = str(input("Please Select Your Operation: ")).upper()
        if (input_1 == 'P'):
            print("\n" * 10)
            print("Successfully Paid!")
            file_report = open('files'+navigator_symbol+'report.fsd', 'a') # Save it into a file
            file_report.write(report_new)
            file_report.close()
            def_default() #Reset the program for the name order
        elif (input_1 == 'M'):
            print("\n" * 10)
            def_main() #Navigate back to the main menu
            break
        elif (input_1 == 'R'):
            print("\n" * 10)
            def_report() # Navigate to the reports
            break
        elif ('E' in input_1) or ('e' in input_1):
            print("*" * 32 + "THANK YOU" + "*" * 31 + "\n")
            break
        else:
            print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")

In this module which is the module for the payment.

Complete Source Code

print("\n" * 5)                  #Starting after 5x empty lines.

import datetime                    #Deltatime library, to get Real Date information.
import os                          #OS (Operating system) , To provide cross-platform compatibility

list_foods = []                    #Variable List of foods, names + prices.
list_drinks = []                   #Variable List of drinks, names + prices.
list_services = []                 #Variable List of other services, names + prices.

list_item_price = [0] * 100        #Variable List of item prices. Index: 0-39 for foods, index: 40-79 for drinks,
                                   #Index: 80-99 for other services.
var_discount_1 = 200                      #First discount starts.
var_discount_2 = 1000                     #Second discount starts.
var_discount_3 = 5000                     #Third discount starts.
var_discount_1_rate = 0.05                #First discount rate.
var_discount_2_rate = 0.10                #Second discount rate.
var_discount_3_rate = 0.15                #Third discount rate.


navigator_symbol = "/" # This will make the program runnable on any unix based enviroument because it has differnet file system
if os.name == "nt":
    navigator_symbol = "\\" # This will make the program runnable on Windows


def def_default():
    global list_drinks, list_foods, list_services, list_item_order, list_item_price     
    list_item_order = [0] * 100                    #Create a list, length 100. Max index number is 99.
def_default()                                      #Index: 0-39 for foods, index: 40-79 for drinks,
                                                   #Index: 80-99 for other services. Global variables.


def def_main():
    while True:                                            #Repeat Menu until stops.
        print("*" * 31 + "MAIN MENU" + "*" * 32 + "\n"     #Design for Main Menu.
              "\t(O) ORDER\n"                              #"*" * 31 means, write (*) 31 times.
              "\t(R) REPORT\n"
              "\t(P) PAYMENT\n"
              "\t(E) EXIT\n" +
              "_" * 72)

        input_1 = str(input("Please Select Your Operation: ")).upper()    #Input, have to choose operation. Make everything UPPER symbol.
        if (len(input_1) == 1):                                           #Checking input length.
            if (input_1 == 'O'):                                          #If input is "O".
                print("\n" * 10)                                         #Create 100 empty lines.
                def_order_menu()                                          #Start Order Menu function.
                break                                                     #Stop repeating Main Menu.
            elif (input_1 == 'R'):                                        #If input is "R".
                print("\n" * 10)                                         #Create 100 empty lines.
                def_report()                                              #Start Report function.
                break                                                     #Stop repeating Main Menu.
            elif (input_1 == 'P'):                                        #If input is "P".
                print("\n" * 10)                                         #Create 100 empty lines.
                def_payment()                                             #Start Payment function.
                break                                                     #Stop repeating Main Menu.
            elif (input_1 == 'E'):                                        #If input is "E".
                print("*" * 32 + "THANK YOU" + "*" * 31 + "\n")           #Good bye comment.
                break                                                     #Stop repeating Main Menu.
            else:                                                                                 #If O, R, P, E not inserted then...
                print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")     #Invalid input.
        else:                                                                                     #If input length not equal to 1...
            print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")         #Invalid input.

def def_order_menu():                                                                               #yousef
    while True:                                             # While looping to keep menu alive
        print("*" * 31 + "ORDER PAGE" + "*" * 31 + "\n"     # Mail Menu
              "\t(F) FOODS AND DRINKS\n"
              "\t(O) OTHER SERVICES\n"
              "\t(M) MAIN MENU\n"
              "\t(E) EXIT\n" +
              "_" * 72)

        input_1 = str(input("Please Select Your Operation: ")).upper() # Options Handling : F-O-M-E.
        if len(input_1) == 1:
            if (input_1 == 'F'):  #Easy Access Checking Logic
                print("\n" * 10)
                def_food_drink_order() # Show Food/Drinks Menu
                break
            elif (input_1 == 'O'):
                print("\n" * 10)
                def_other_services() # Show Services Menu
                break
            elif (input_1 == 'M'):
                print("\n" * 10)
                def_main() # Show Main Menu
                break
            elif (input_1 == 'E'):
                print("*" * 32 + "THANK YOU" + "*" * 31 + "\n")
                break
            else:
                print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!") # Handling Bad Inputs
        else:
            print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")

def def_full_file_reader():                                                                         #mustafa
    file_foods = open('files'+navigator_symbol+'list_foods.fsd', 'r') # Reading Food List
    for i in file_foods: # Line by line reading
        list_foods.append(str(i.strip())) # Adding each line (Food) into an array after applying Strip function to remove out extra spaces in front and back
    file_foods.close()

    file_drinks = open('files'+navigator_symbol+'list_drinks.fsd', 'r') # Reading Drinks List
    for i in file_drinks:
        list_drinks.append(str(i.strip()))
    file_drinks.close()

    file_services = open('files'+navigator_symbol+'list_services.fsd', 'r') # Reading Services
    for i in file_services:
        list_services.append(str(i.strip()))
    file_services.close()

    i = 0
    while i <= (len(list_foods) - 1): #Enumarte through food list to filter out prices and setup print Formatting by replacing spaces with count difference of string length and align Prices to the most left of the terminal
        if 'RM' in list_foods[i]:
            list_foods[i] = str(list_foods[i][:list_foods[i].index('RM') - 1]) + ' ' * (20 - (list_foods[i].index('RM') - 1)) + str(list_foods[i][list_foods[i].index('RM'):])
        i += 1

    i = 0
    while i <= (len(list_drinks) - 1):
        if 'RM' in list_drinks[i]:
            list_drinks[i] = str(list_drinks[i][:list_drinks[i].index('RM') - 1]) + ' ' * (20 - (list_drinks[i].index('RM') - 1)) + str(list_drinks[i][list_drinks[i].index('RM'):])
        i += 1

    i = 0
    while i <= (len(list_services) - 1):
        if 'RM' in list_services[i]:
            list_services[i] = str(list_services[i][:list_services[i].index('RM') - 1]) + ' ' * (20 - (list_services[i].index('RM') - 1)) + str(list_services[i][list_services[i].index('RM'):])
        i += 1
def_full_file_reader()

def def_file_sorter(): # Applying Sorting to the array to be sorted from A-Z ASC ((AND)) Extracting out prices after sorting and appending them to a prices array accordingly to a parrallel indexes
    global list_foods, list_drinks, list_services
    list_foods = sorted(list_foods)
    list_drinks = sorted(list_drinks)
    list_services = sorted(list_services)

    i = 0
    while i < len(list_foods):
        list_item_price[i] = float(list_foods[i][int(list_foods[i].index("RM") + 3):]) # Extracting Out "RM" + [SPACE] from and cast out the string into an integer
        i += 1

    i = 0
    while i < len(list_drinks):
        list_item_price[40 + i] = float(list_drinks[i][int(list_drinks[i].index("RM") + 3):]) # Applying extraction on 40 and above items which are the drinks
        i += 1

    i = 0
    while i < len(list_services):
        list_item_price[80 + i] = float(list_services[i][int(list_services[i].index("RM") + 3):]) # Applying extraction on 80 and above items wich are Services
        i += 1
def_file_sorter()

def def_food_drink_order():
    while True:
            print("*" * 26 + "ORDER FOODS & DRINKS" + "*" * 26)
            print(" |NO| |FOOD NAME|         |PRICE|   |  |NO| |DRINK NAME|        |PRICE|")

            i = 0
            while i < len(list_foods) or i < len(list_drinks):
                var_space = 1
                if i <= 8:                      # To fix up to space indention in console or terminal by applying detection rule to figure out spacing for TWO DIGITS numbers
                    var_space = 2

                if i < len(list_foods):
                    food = " (" + str(i + 1) + ")" + " " * var_space + str(list_foods[i]) + "  | " # Styling out the index number for the food or item and starting out from 1 for better human readability
                else:
                    food = " " * 36 + "| " # 36 is a constant for indention in console to fixup list in print
                if i < len(list_drinks):
                    drink = "(" + str(41 + i) + ")" + " " + str(list_drinks[i])
                else:
                    drink = ""
                print(food, drink)
                i += 1

            print("\n (M) MAIN MENU                   (P) PAYMENT                   (E) EXIT\n" + "_" * 72)

            input_1 = input("Please Select Your Operation: ").upper() #Handling Menu Selection
            if (input_1 == 'M'):
                print("\n" * 10)
                def_main() # Return to main menu by calling it out
                break
            if (input_1 == 'E'):
                print("*" * 32 + "THANK YOU" + "*" * 31 + "\n") # Handling Exit and print out thank you
                break
            if (input_1 == 'P'):
                print("\n" * 10)
                def_payment() # Handling payment || More details below
                break
            try:        #Cautions Error Handling to prevent program crashing and hand out exceptions as a readable error to notify user
                int(input_1)
                if ((int(input_1) <= len(list_foods) and int(input_1) > 0) or (int(input_1) <= len(list_drinks) + 40 and int(input_1) > 40)):
                     try:
                        print("\n" + "_" * 72 + "\n" + str(list_foods[int(input_1) - 1])) # Handling Food Selection / The try/Execpt to handle out of index error as if it  not exists in the array
                     except:
                        pass
                     try:
                         print("\n" + "_" * 72 + "\n" + str(list_drinks[int(input_1) - 41])) # Handling Drinks Selection / The try/Execpt to handle out of index error as if it  not exists in the array
                     except:
                        pass

                     input_2 = input("How Many You Want to Order?: ").upper() # Handling Quantity input
                     if int(input_2) > 0:
                        list_item_order[int(input_1) - 1] += int(input_2) # adding item to Orders Array
                        print("\n" * 10)
                        print("Successfully Ordered!")
                        def_food_drink_order() # Return food/drinks Menu
                        break
                     else:
                        print("\n" * 10 + "ERROR: Invalid Input (" + str(input_2) + "). Try again!")
            except:
                print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")

def def_other_services():
    while True:
        print("*" * 29 + "OTHER SERVICES" + "*" * 29)
        print(" |NO| |SERVICE NAME|      |PRICE|")  # Services Menu Structure

        i = 0
        while i < len(list_services):
            print(" (" + str(81+ i) + ")" + " " + str(list_services[i])) # Services starts from 81 + and now it is being enumarated into a list.

            i += 1

        print("\n (M) MAIN MENU                   (P) PAYMENT                   (E) EXIT\n" + "_" * 72)

        input_1 = input("Please Select Your Operation: ").upper()
        if (input_1 == 'M'):
            print("\n" * 10)
            def_main() # Navigate Back to main menu
            break
        if (input_1 == 'E'):
            print("*" * 32 + "THANK YOU" + "*" * 31 + "\n")
            break
        if (input_1 == 'P'):
            print("\n" * 10)
            def_payment() # navigate to payment
            break
        try:
            int(input_1)
            if (int(input_1) > 80) and (int(input_1) < 100):
                print("\n" * 10)
                print("Successfully Ordered: " + str(list_services[int(input_1) - 81])) # Adding services to orders array (AND) encapsulate errors  with try/except
                list_item_order[int(input_1) - 1] = 1
                def_other_services()
                break
            else:
                print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")
        except:
            print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")

def def_report():
    while True:
        print("*" * 33 + "REPORT" + "*" * 33 + "\n")
        file_report = open('files'+navigator_symbol+'report.fsd', 'r').read() # Reading out reports from report.fsd
        print(file_report)
        print("\n(M) MAIN MENU          (E) EXIT\n" + "_" * 72)
        input_1 = str(input("Please Select Your Operation: ")).upper()
        if (input_1 == 'M'):
            print("\n" * 10)
            def_main() # Navigate back to menu
            break
        elif (input_1 == 'E'):
            print("*" * 32 + "THANK YOU" + "*" * 31 + "\n") # Exit and break up the loop
            break
        else:
            print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")

def def_payment():
    while True:
        print("*" * 32 + "PAYMENT" + "*" * 33 + "\n") # Header & Styling
        total_price = 0 # alloc/init a variable to handle total_price

        report_new = "\n\n\n" + " " * 17 + "*" * 35 + "\n" + " " * 17 + "DATE: " + str(datetime.datetime.now())[:19] + "\n" + " " * 17 + "-" * 35 #building up report string header
        i = 0
        while i < len(list_item_order): #Enumarating order array items and summing up its prices * quantities
            if(list_item_order[i] != 0):
                if (i >= 0) and (i < 40):
                    report_new += "\n" + " " * 17 + str(list_foods[i]) + "  x  " + str(list_item_order[i]) # string appending the formated food name and formated order structure from quantity and final price
                    print(" " * 17 + str(list_foods[i]) + "  x  " + str(list_item_order[i])) #print it out
                    total_price += list_item_price[i] * list_item_order[i] # Calculating the total price for food
                if (i >= 40) and (i < 80):
                    report_new += "\n" + " " * 17 + str(list_drinks[i - 40]) + "  x  " + str(list_item_order[i])
                    print(" " * 17 + str(list_drinks[i - 40]) + "   x  " + str(list_item_order[i]))
                    total_price += list_item_price[i] * list_item_order[i] # Calculating the total price for drinks
                if (i >= 80) and (i < 100):
                    report_new += "\n" + " " * 17 + str(list_services[i - 80])
                    print(" " * 17 + str(list_services[i - 80]))
                    total_price += list_item_price[i] * list_item_order[i] # Calculating the total price for services
                i += 1
            else:
                i += 1
        ### Applying Discounts Ruless
        if total_price > var_discount_3: ### price > 5000
            total_price -= total_price * var_discount_3_rate # Discount fees from the total_price by 0.15 or 15%
            report_new += "\n" + " " * 17 + "-" * 35 + "\n" \
                "" + " " * 17 + "DISCOUNT RATES:      % " + str(var_discount_3_rate * 100) + "\n" \
                "" + " " * 17 + "DISCOUNT AMOUNTS:   RM " + str(round(total_price * var_discount_3_rate, 2)) + "\n" + " " * 17 + "_" * 35 + "\n" \
                "" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)) + "\n" + " " * 17 + "*" * 35 # Round() to flour the float into an interger
            print(" " * 17 + "-" * 35 + "\n"
                "" + " " * 17 + "DISCOUNT RATES:      % " + str(var_discount_3_rate * 100) + "\n"
                "" + " " * 17 + "DISCOUNT AMOUNTS:   RM " + str(round(total_price * var_discount_3_rate, 2)) + "\n" + " " * 17 + "_" * 35 + "\n"
                "" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)))
        elif total_price > var_discount_2: ### price > 3000
            total_price -= total_price * var_discount_2_rate # Discount fees from the total_price by 0.10 or 10%
            report_new += "\n" + " " * 17 + "-" * 35 + "\n" \
                "" + " " * 17 + "DISCOUNT RATES:      % " + str(var_discount_2_rate * 100) + "\n" \
                "" + " " * 17 + "DISCOUNT AMOUNTS:   RM " + str(round(total_price * var_discount_2_rate, 2)) + "\n" + " " * 17 + "_" * 35 + "\n" \
                "" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)) + "\n" + " " * 17 + "*" * 35 # Round() to flour the float into an interger
            print(" " * 17 + "-" * 35 + "\n"
                "" + " " * 17 + "DISCOUNT RATES:      % " + str(var_discount_2_rate * 100) + "\n"
                "" + " " * 17 + "DISCOUNT AMOUNTS:   RM " + str(round(total_price * var_discount_2_rate, 2)) + "\n" + " " * 17 + "_" * 35 + "\n"
                "" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)))
        elif total_price > var_discount_1: ### price > 200
            total_price -= total_price * var_discount_1_rate # Discount fees from the total_price by 0.05 or 5%
            report_new += "\n" + " " * 17 + "-" * 35 + "\n" \
                "" + " " * 17 + "DISCOUNT RATES:      % " + str(var_discount_1_rate * 100) + "\n" \
                "" + " " * 17 + "DISCOUNT AMOUNTS:   RM " + str(round(total_price * var_discount_1_rate, 2)) + "\n" + " " * 17 + "_" * 35 + "\n" \
                "" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)) + "\n" + " " * 17 + "*" * 35 # Round() to flour the float into an interger
            print(" " * 17 + "-" * 35 + "\n"
                "" + " " * 17 + "DISCOUNT RATES:      % " + str(var_discount_1_rate * 100) + "\n"
                "" + " " * 17 + "DISCOUNT AMOUNTS:   RM " + str(round(total_price * var_discount_1_rate, 2)) + "\n" + " " * 17 + "_" * 35 + "\n"
                "" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)))
        else:
            report_new += "\n" + " " * 17 + "-" * 35 + "\n" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)) + "\n" + " " * 17 + "*" * 35
            print(" " * 17 + "_" * 35 + "\n" + " " * 17 + "TOTAL PRICES:       RM " + str(round(total_price, 2)))

        print("\n (P) PAY           (M) MAIN MENU           (R) REPORT          (E) EXIT\n" + "_" * 72)
        input_1 = str(input("Please Select Your Operation: ")).upper()
        if (input_1 == 'P'):
            print("\n" * 10)
            print("Successfully Paid!")
            file_report = open('files'+navigator_symbol+'report.fsd', 'a') # Save it into a file
            file_report.write(report_new)
            file_report.close()
            def_default() #Reset the program for the name order
        elif (input_1 == 'M'):
            print("\n" * 10)
            def_main() #Navigate back to the main menu
            break
        elif (input_1 == 'R'):
            print("\n" * 10)
            def_report() # Navigate to the reports
            break
        elif ('E' in input_1) or ('e' in input_1):
            print("*" * 32 + "THANK YOU" + "*" * 31 + "\n")
            break
        else:
            print("\n" * 10 + "ERROR: Invalid Input (" + str(input_1) + "). Try again!")
def_main() # Execute Main menu Loop

Food Ordering System In Python : Project Information

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

Run Quick Virus Scan for secure Download

Run Quick Scan for secure Download

Downloadable Source Code

I have here the list of Best Python Project with Source code free to download for free, I hope this can help you a lot.

Summary

The Python Code For Food Ordering System is written in Python programming language, Python is very smooth to research the syntax emphasizes readability and it is able to reduces time ingesting in developing.

Also in this tutorial is the simplest way for the beginners or the student to enhance their logical skills in programming. and also in this System project is the way for the students or beginners in designing and developing the system’s.

Related Articles

Inquiries

If you have any questions or suggestions about Python Code For Food Ordering System , please feel free to leave a comment below.

1 thought on “Python Code For Food Ordering System”

  1. I am getting error over here :- “list_foods = []” as from & hash is starting it is getting commented please can anyone help.

    Reply

Leave a Comment