Skip to content
175 changes: 175 additions & 0 deletions Airways Management System
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
Make Sure You've Installed Python Text to speech i.e. pyttsx3
If not then Open Command Prompt and type : pip install pyttsx3
Source Code :


# Airways Management System

import pickle # we are using pickle bec it operates binary files (will increase performance of program).
import os # we are using os to handle some operation with file like renaming and deleting.
import pyttsx3 # this is Python text-to-speech which gives a voice to our Airways Management System.

flight_det = {}

def speak(line):
'''it will give a female voice to Every line given as argument(parameter)'''
voice_id = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0"
voice = pyttsx3.init()
voice.setProperty('voice', voice_id)
voice.say(line)
voice.runAndWait()

def say(line):
'''it is Same as speak() but dude it speaks in Male voice'''
voice_id = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_DAVID_11.0"
voice = pyttsx3.init()
voice.setProperty('voice', voice_id)
voice.say(line)
voice.runAndWait()


def write_data():
''' It will add flight details(data) in flight.dat '''
with open("flight.dat", "ab") as fdata:
say('Helloo, Please Write the Number of Flights you want write in file')
No_Of_flight = int(input("Enter the Number of Flights : "))
for num in range(No_Of_flight):
speak(f'Please Write, {num+1} flight Number')
flight_det["flightNo"] = int(input(f"\nPlease Enter {num + 1} Flight Number : "))
speak(f'Please Write Name of Flight-{flight_det["flightNo"]}')
flight_det["fname"] = input(f'Enter Name of Flight-{flight_det["flightNo"]} : ')
speak(f'Please Write Fare of {flight_det["fname"]}-{flight_det["flightNo"]}')
flight_det["fare"] = int(input(f'Enter Fare of {flight_det["fname"]}-{flight_det["flightNo"]} : '))
pickle.dump(flight_det, fdata)


def show_data():
''' it will Display all the Flights Data inside flight.dat file'''
say("Showing Flight Details")
with open('flight.dat', 'rb') as file:
try:
while True:
data = pickle.load(file)
print(data)
except EOFError:
pass


def del_data():
speak('Please Enter Flight Number to delete its DATA')
flightNo = int(input("\nPlease Enter Flight Number to delete its DATA : "))
fdata1 = open("flight.dat", "rb")
fdata2 = open("temp.dat", "ab")
try:
while True:
data = pickle.load(fdata1)
if data["flightNo"] == flightNo:
print(f"Flight-{flightNo} Deleted Successfully.")
say(f"Flight-{flightNo} Deleted Successfully.")
pass
else:
pickle.dump(data, fdata2)
except EOFError:
pass
fdata1.close()
fdata2.close()
os.remove("flight.dat")
os.rename("temp.dat", "flight.dat")

try:
with open("flight.dat", "rb") as fdata:
speak("Here's the Record of Flights after Deletion\n")
print('Record of Flights after Deletion :\n')
while True:
print(f' {pickle.load(fdata)}')
except Exception:
pass


def search():
with open('flight.dat', 'rb') as fdata:
speak(" Please Enter Flight Number to Search its Details")
fsearch = int(input("\nEnter Flight Number to Search : "))
datafound = 0
try:
while True:
data = pickle.load(fdata)
if data['flightNo'] == fsearch:
datafound = 1
speak("Here's the Search Details")
print(f'Search Result : \n {data}')
say(data)
break
except Exception:
print("Error : There is no Data in flight.dat")
if datafound == 0:
speak(f'Details of flight-{fsearch} was NOT FOUND')
print(f"\n ! Details of flight-{fsearch} was NOT FOUND !")


def update_data():
data1 = open("flight.dat", "rb")
data2 = open("temp.dat", "ab")
speak("Enter Flight Number to Update it")
flightNo = int(input("Enter Flight Number to Update : "))
try:
while True:
data = pickle.load(data1)
if data["flightNo"] == flightNo:
speak(f"Enter New Details of Flight-{flightNo}")
print(f"\nEnter New Details of Flight-{flightNo} : ")
data["flightNo"] = int(input("Enter Flight Number : "))
data["fname"] = input("Enter Flight's Name : ")
data["fare"] = int(input("Enter the Fare : "))
pickle.dump(data, data2)
speak(f"Data of flight-{flightNo} Updated Successfully.")
print("Data Updated Successfully.")
else:
pickle.dump(data, data2)
except EOFError:
pass
data1.close()
data2.close()
os.remove("flight.dat")
os.rename("temp.dat", "flight.dat")

speak_one_time = 0
speak_one = 0
while True:
if speak_one == 0:
say("Enter Number to choose specific operation you want to perform")
speak_one = 1
print('\nOperations :\n 1 - Add Flight Details.\n 2 - Show Flight Details\n 3 - Update Flight Details. ')
print(' 4 - Delete Flight Detail.\n 5 - Search Flights.\n 6 - Clock.\n 7 - EXIT.')
if speak_one_time == 0:
speak("1 for Adding Flight Details, 2 for Displaying flight details, 3 to Update flight details"
",4 for Deleting flight details, 5 to Search Flights, 6 to know current timings, and 7 for Exit")
speak_one_time = 1
op = int(input("\nEnter Number to Choose Operation : "))
if op == 1:
write_data()
elif op == 2:
print(f"\nFlights Details : ")
show_data()
elif op == 3:
update_data()
elif op == 4:
del_data()
elif op == 5:
search()
elif op == 6:
import time
live_time = time.strftime("%H:%M:%S")
speak(f"The Current timings are : {live_time}")
print(f"\n| The Current timings are : {live_time} |")
elif op == 7:
say("Thanks for Using Airways Management System")
print("Thanks for Using Airways Management System")
say("Creators of this, Airways Management System are |Akash kumar Singh |")
print("Creators of Airways Management System :\n | Akash kumar Singh|")
speak("See You Again! Bye Dear")
break
else:
speak("Hey, Please Choose the Correct Operations!")
print("Please Choose CORRECT Operation!")

174 changes: 174 additions & 0 deletions AirwaysManagementSystem.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
# Airways Management System

'''
Make Sure you have installed two modules :
1. Python text-to-speech - pip install pyttsx3
2. Python My SQL Connector - pip install mysql-connector
'''

import mysql.connector # it'll connect python to MySQL RDMS by which we can access our Databases.
import pyttsx3 # this is Python text-to-speech which gives a voice to our Airways Management System.


def speak(line):
'''it will give a female voice to Every line given as argument(parameter)'''
voice_id = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0"
voice = pyttsx3.init()
voice.setProperty('voice', voice_id)
voice.say(line)
voice.runAndWait()


speak("Enter Sql USER Password to get Started & if you don't know the password just press Enter")
sqlpswd = input("Enter SQL USER Password : ")

try:
''' Since the User name of most SQL users are same i.e. 'root' we'll also it'''
flightDB = mysql.connector.connect(host='localhost', user='root', passwd=sqlpswd)
except Exception:
speak("You've entered wrong sql password try again")
print("Wrong Password try again ->")
pswd = input(" Enter SQL USER Password : ")
try:
flightDB = mysql.connector.connect(host='localhost', user='root', passwd=pswd)
except Exception:
speak("You've Again entered wrong SQL password please remember it and Try agail Later!")
print("Brother Focus and Try Later! Go Relax ;)")
quit()

# Fetching the Databases in our Program
cursor = flightDB.cursor()

# Will Create Database Flight If it's not created before
try:
cursor.execute('CREATE DATABASE flight')
except:
pass

# Using Database flight
cursor.execute('USE flight')

# Creating Table of Flight's Data
try:
cursor.execute('CREATE TABLE flightData(flightNo INT, fName VARCHAR(20), fare INT)')
except:
pass

line = "----------------------------------------------------------------"

def write_data():
''' It will add New Details of Flights in table flightData'''
speak('Enter the Number of Flights you want to insert in Database')
No_Of_flight = int(input(f"\n{line}\nEnter the Number of Flights you want to insert : "))
for num in range(No_Of_flight):
speak(f'Enter the Details of {num+1}-Flight')
print(f'{line}\nEnter the Details of {num+1}-Flight : \n')
flightNo = int(input(f'Enter flight Number : '))
fName = input(f'Enter Name of flight-{flightNo} : ')
fare = input(f'Enter Fare of {fName}-{flightNo} : ')
cursor.execute(f"INSERT INTO flightData VALUES ({flightNo}, '{fName}', {fare})")
flightDB.commit()
print(line)


def show():
''' It will show all the Contents in table flightData'''
try:
speak('Showing the Details of Flights')
cursor.execute('SELECT * FROM flightData')
data = cursor.fetchall()
print(f"\n{line}\nDetails of Flight : ")
for flights in data:
print(' ', flights)
print(line)
except Exception:
print("Empty Database! Please Insert Details of Flight using 1st Operation.")


def delete():
'''To delete some details of particular flight'''
speak('Please Enter Flight Number to delete its Data : ')
flightNo = int(input(f"\n{line}\nPlease Enter Flight Number to delete its Data : "))
try:
cursor.execute(f'DELETE FROM flightData WHERE flightNo={flightNo}')
speak(f'Details of Flight-{flightNo}, deleted Successfully')
print(f'{line}\nDetails of Flight-{flightNo}, deleted Successfully.')
flightDB.commit()
print(line)
except Exception:
print(f'Details of Flight-{flightNo} was Not Found!')


def search():
'''It'll Search and return a particular Flight details '''
speak("Please Enter Flight Number to Search : ")
flightNo = int(input(f"\n{line}\nPlease Enter Flight Number to Search : "))
try:
cursor.execute(f'SELECT * FROM flightData WHERE flightNo={flightNo}')
data = cursor.fetchall()
print(f'\n{line}\nDetails of Flight-{flightNo} :\n {data} \n{line}')
except Exception:
print(f'Details of Flight-{flightNo} was Not Found!')


def updateData():
'''It'll Update the details of particular flight'''
speak('Enter Flight Number to Update its detail :')
oldfNo = int(input(f"\n{line}\nEnter Flight Number to Update its detail : "))
try:
speak(f'Enter the New Details of Flight-{oldfNo} :')
print(f'{line}\nEnter the New Details of Flight-{oldfNo} : ')
flightNo = int(input(f'Enter flight Number :'))
cursor.execute(f'UPDATE flightData SET flightNo={flightNo} WHERE flightNo={oldfNo}')
fName = input(f'Enter Name of flight-{flightNo} : ')
cursor.execute(f'UPDATE flightData SET fName="{fName}" WHERE flightNo={flightNo}')
fare = input(f'Enter Fare of {fName}-{flightNo} : ')
cursor.execute(f'UPDATE flightData SET fare={fare} WHERE flightNo={flightNo}')
flightDB.commit()
speak(f'Details of {fName}-{flightNo} Updated Successfully.')
print(f'{line}\nDetails of {fName}-{flightNo} Updated Successfully.\n{line}')
except Exception:
print(f'Details of Flight-{oldfNo} was Not Found!')


if __name__=="__main__":
speak_one_time = 0
speak_one = 0
while True:
if speak_one == 0:
speak("Enter Number to choose specific operation you want to perform")
speak_one = 1
print('\nOperations :\n 1 - Add Flight Details.\n 2 - Show Flight Details\n 3 - Update Flight Details. ')
print(' 4 - Delete Flight Detail.\n 5 - Search Flights.\n 6 - Clock.\n 7 - EXIT.')
if speak_one_time == 0:
speak("1 for Adding Flight Details, 2 for Displaying flight details, 3 to Update flight details"
"4 for Deleting flight details, 5 to Search Flights, 6 to know current timings, and 7 for Exit")
speak_one_time = 1

op = int(input("\nEnter Number to Choose Operation : "))
if op == 1:
write_data()
elif op == 2:
show()
elif op == 3:
updateData()
elif op == 4:
delete()
elif op == 5:
search()
elif op == 6:
import time
live_time = time.strftime("%H:%M:%S")
speak(f"The Current timings are : {live_time}")
print(f"\n{line}\nThe Current timings are : {live_time} \n{line}\n")
elif op == 7:
speak('Thanks for Using Airways Management System')
print(f"\n{line}\nThanks for Using Airways Management System.\n")
speak("Creators of this, Airways Management System are Akash kumar Singh, Rohit Kumar and Pawan Meena ")
print(f"Creators of Airways Management System :\n | Akash kumar Singh | Rohit kumar | Pawan Meena | \n{line}")
break
else:
speak("Please Choose CORRECT Operation!")
print("Please Choose CORRECT Operation!")

flightDB.close()
Loading