Transport Management System project in Python with source code

Transport Management System project in Python:

File: passenger.py

from tkinter import *
import tkinter.messagebox
import pasDatabase

class Passenger:

    def __init__(self, root):
        self.root = root
        self.root.title("Transport Management System")
        self.root.geometry("1366x768+0+0")
        self.root.config(bg="indigo")

        Pno = StringVar()
        Pname = StringVar()
        PAddress = StringVar()
        Pmobile = StringVar()
        Bno = StringVar()
        Rname = StringVar()

        def iExit():
            iExit = tkinter.messagebox.askyesno("Transport Management System","Confirm if you want to exit")
            if iExit > 0:
                root.destroy()
                return

        def clearData():
            self.txtPno.delete(0,END)
            self.txtPname.delete(0,END)
            self.txtPAddress.delete(0,END)
            self.txtPMobile.delete(0,END)
            self.txtBno.delete(0,END)
            self.txtRname.delete(0,END)

        def addData():
            if(len(Pno.get())!=0):
                pasDatabase.addPas(Pno.get(),Pname.get(),PAddress.get(),Pmobile.get(),Bno.get(),Rname.get())
                passengerList.delete(0,END)
                passengerList.insert(END,(Pno.get(),Pname.get(),PAddress.get(),Pmobile.get(),Bno.get(),Rname.get()))

        def displayData():
            passengerList.delete(0,END)
            for row in pasDatabase.viewDat():
                passengerList.insert(END,row,str(""))

        def pasRec(event):
            global sd
            searchpas = passengerList.curselection()[0]
            sd = passengerList.get(searchpas)
            self.txtPno.delete(0,END)
            self.txtPno.insert(END,sd[1])
            self.txtPname.delete(0,END)
            self.txtPname.insert(END,sd[2])
            self.txtPAddress.delete(0,END)
            self.txtPAddress.insert(END,sd[3])
            self.txtPMobile.delete(0,END)
            self.txtPMobile.insert(END,sd[4])
            self.txtBno.delete(0,END)
            self.txtBno.insert(END,sd[5])
            self.txtRname.delete(0,END)
            self.txtRname.insert(END,sd[6])
            
        def deleteData():
            if(len(Pno.get())!=0):
                pasDatabase.deleteDat(sd[0])
                clearData()
                displayData()

        def searchData():
            passengerList.delete(0,END)
            for row in pasDatabase.searchDat(Pno.get(),Pname.get(),PAddress.get(),Pmobile.get(),Bno.get(),Rname.get()):
                passengerList.insert(END,row,str(""))

        def update():
            if(len(Pno.get())!=0):
                pasDatabase.deleteDat(sd[0])
            if(len(Pno.get())!=0):
                pasDatabase.addPas(Pno.get(),Pname.get(),PAddress.get(),Pmobile.get(),Bno.get(),Rname.get())
                passengerList.delete(0,END)
                passengerList.insert(END,(Pno.get(),Pname.get(),PAddress.get(),Pmobile.get(),Bno.get(),Rname.get()))



        MainFrame = Frame(self.root, bg='blue4')
        MainFrame.grid()

        TitFrame = Frame(MainFrame, bd=2,  bg='Ghost White', relief= RIDGE)
        TitFrame.pack(side = TOP)

        self.lblTit = Label(TitFrame, font=('arial', 30, 'bold'),text="Webeduclick Transport Management System",bg="Ghost White")
        self.lblTit.grid(sticky=W)

        ButtonFrame = Frame(MainFrame, bd=2, width=1350,padx=20, height=70,pady=14, bg='blue4', relief= RIDGE)
        ButtonFrame.pack(side = BOTTOM)

        DataFrame = Frame(MainFrame, bd=1, width=1300, height=400, padx=23, pady=20, bg='indigo', relief= RIDGE)
        DataFrame.pack(side = BOTTOM)

        DataFrameLEFT = LabelFrame(DataFrame, bd=1, width =600, height=1000, padx=20,pady=73, bg='Ghost White', relief= RIDGE, 
                                    font=('arial', 20, 'bold'), text="Passenger Information\n")
        DataFrameLEFT.pack(side = LEFT)

        DataFrameRIGHT = LabelFrame(DataFrame, bd=1, width=450, height=300, pady=31, bg='Ghost White', relief= RIDGE,
                                    font=('arial', 20, 'bold'),text = "Passenger Details\n")
        DataFrameRIGHT.pack(side = RIGHT)

        self.lblPno = Label(DataFrameLEFT, font=('arial', 20, 'bold'),text="Passenger Number : ",padx=2,pady=2,bg="Ghost White")
        self.lblPno.grid(row=0,column=0,sticky=W)

        self.txtPno = Entry(DataFrameLEFT, font=('arial', 20, 'bold'),textvariable=Pno, width=39)
        self.txtPno.grid(row=0,column=1)

        self.lblPname = Label(DataFrameLEFT, font=('arial', 20, 'bold'),text="Passenger Name : ",padx=2,pady=2,bg="Ghost White")
        self.lblPname.grid(row=1,column=0,sticky=W)

        self.txtPname = Entry(DataFrameLEFT, font=('arial', 20, 'bold'),textvariable=Pname, width=39)
        self.txtPname.grid(row=1,column=1)

        self.lblPAddress = Label(DataFrameLEFT, font=('arial', 20, 'bold'),text="Passenger Address : ",padx=2,pady=2,bg="Ghost White")
        self.lblPAddress.grid(row=2,column=0,sticky=W)

        self.txtPAddress = Entry(DataFrameLEFT, font=('arial', 20, 'bold'),textvariable=PAddress, width=39)
        self.txtPAddress.grid(row=2,column=1)

        self.lblPMobile = Label(DataFrameLEFT, font=('arial', 20, 'bold'),text="Passenger Mobile : ",padx=2,pady=2,bg="Ghost White")
        self.lblPMobile.grid(row=3,column=0,sticky=W)

        self.txtPMobile = Entry(DataFrameLEFT, font=('arial', 20, 'bold'),textvariable=Pmobile, width=39)
        self.txtPMobile.grid(row=3,column=1)

        self.lblBno = Label(DataFrameLEFT, font=('arial', 20, 'bold'),text="Bus Number : ",padx=2,pady=2,bg="Ghost White")
        self.lblBno.grid(row=4,column=0,sticky=W)

        self.txtBno = Entry(DataFrameLEFT, font=('arial', 20, 'bold'),textvariable=Bno, width=39)
        self.txtBno.grid(row=4,column=1)

        self.lblRname = Label(DataFrameLEFT, font=('arial', 20, 'bold'),text="Route Name : ",padx=2,pady=2,bg="Ghost White")
        self.lblRname.grid(row=5,column=0,sticky=W)

        self.txtRname = Entry(DataFrameLEFT, font=('arial', 20, 'bold'),textvariable=Rname, width=39)
        self.txtRname.grid(row=5,column=1)

        scrollbar = Scrollbar(DataFrameRIGHT)
        scrollbar.grid(row=0,column=1,sticky='ns')
        
        passengerList = Listbox(DataFrameRIGHT, width=41,height=16,font=('arial',12,'bold'),yscrollcommand=scrollbar.set)
        passengerList.bind('<<ListboxSelect>>',pasRec)
        passengerList.grid(row=0,column=0,padx=8)
        scrollbar.config(command  = passengerList.yview)

        self.btnAddDate = Button(ButtonFrame,text="Add New",font=('arial', 20, 'bold'),height=1,width=10,bd=4,command=addData)
        self.btnAddDate.grid(row=0,column=0)
        
        self.btnDisplayDate = Button(ButtonFrame,text="Display",font=('arial', 20, 'bold'),height=1,width=10,bd=4,command=displayData)
        self.btnDisplayDate.grid(row=0,column=1)
        
        self.btnClearDate = Button(ButtonFrame,text="Clear",font=('arial', 20, 'bold'),height=1,width=10,bd=4,command=clearData)
        self.btnClearDate.grid(row=0,column=2)

        self.btnDeleteDate = Button(ButtonFrame,text="Delete",font=('arial', 20, 'bold'),height=1,width=10,bd=4,command=deleteData)
        self.btnDeleteDate.grid(row=0,column=3)

        self.btnSearchDate = Button(ButtonFrame,text="Search",font=('arial', 20, 'bold'),height=1,width=10,bd=4,command=searchData)
        self.btnSearchDate.grid(row=0,column=4)

        self.btnUpdateDate = Button(ButtonFrame,text="Update",font=('arial', 20, 'bold'),height=1,width=10,bd=4,command=update)
        self.btnUpdateDate.grid(row=0,column=5)

        self.btnExit = Button(ButtonFrame,text="Exit",font=('arial', 20, 'bold'),height=1,width=10,bd=4,command=iExit)
        self.btnExit.grid(row=0,column=6)


if __name__=='__main__':

    root = Tk()
    application = Passenger(root)
    root.mainloop()

File: pasDatabase.py

import sqlite3

def passengerData():
    con=sqlite3.connect("passenger.db")
    cur=con.cursor()
    cur.execute("CREATE TABLE IF NOT EXISTS passenger(id INTEGER PRIMARY KEY,Pno text,Pname text,PAddress text,Pmobile text,Bno text,Rname text)")
    con.commit()
    con.close()

def addPas(Pno,Pname,PAddress,Pmobile,Bno,Rname):
    con=sqlite3.connect("passenger.db")
    cur = con.cursor()
    cur.execute("INSERT INTO passenger VALUES(NULL,?,?,?,?,?,?)",(Pno,Pname,PAddress,Pmobile,Bno,Rname))
    con.commit()
    con.close()

def viewDat():
    con=sqlite3.connect("passenger.db")
    cur = con.cursor()
    cur.execute("SELECT * FROM passenger")
    rows = cur.fetchall()
    con.close()
    return rows

def deleteDat(id):
    con=sqlite3.connect("passenger.db")
    cur = con.cursor()
    cur.execute("DELETE FROM passenger WHERE id=?", (id,))
    con.commit()
    con.close()

def searchDat(Pno="",Pname="",PAddress="",Pmobile="",Bno="",Rname=""):
    con=sqlite3.connect("passenger.db")
    cur = con.cursor()
    cur.execute("SELECT * FROM passenger WHERE Pno=? OR Pname=? OR PAddress=? OR Pmobile=? OR Bno=? OR Rname=?",(Pno,Pname,PAddress,Pmobile,Bno,Rname))
    rows=cur.fetchall()
    con.close()
    return rows

def datUpdate(id,Pno="",Pname="",PAddress="",Pmobile="",Bno="",Rname=""):
    con=sqlite3.connect("passenger.db")
    cur = con.cursor()
    cur.execute("UPDATE passenger SET Pno=?, Pname=?, PAddress=?, Pmobile=?, Bno=?, Rname=? WHERE id=?",(Pno,Pname,PAddress,Pmobile,Bno,Rname,id))
    con.commit()
    con.close()

Output:

Transport Management System project in Python with source code

Leave a Reply

Your email address will not be published. Required fields are marked *