├── MiniProject_Backend.py ├── MiniProject_Frontend.py ├── README.md └── Screenshots ├── ER Diagram.PNG ├── OMTBS.PNG └── Schema.PNG /MiniProject_Backend.py: -------------------------------------------------------------------------------- 1 | #backend 2 | import sqlite3 3 | 4 | def MovieData(): 5 | con=sqlite3.connect("movie1.db") 6 | cur=con.cursor() 7 | cur.execute("CREATE TABLE IF NOT EXISTS book (id INTEGER PRIMARY KEY, Movie_ID text,Movie_Name text,Release_Date text,Director text,Cast text,Budget text,Duration text,Rating text") 8 | con.commit() 9 | con.close() 10 | 11 | def AddMovieRec(Movie_ID,Movie_Name,Release_Date,Director,Cast,Budget,Duration,Rating): 12 | con=sqlite3.connect("movie1.db") 13 | cur=con.cursor() 14 | cur.execute("INSERT INTO book VALUES (NULL, ?,?,?,?,?,?,?,?)", (Movie_ID,Movie_Name,Release_Date,Director,Cast,Budget,Duration,Rating)) 15 | con.commit() 16 | con.close() 17 | 18 | def ViewMovieData(): 19 | con=sqlite3.connect("movie1.db") 20 | cur=con.cursor() 21 | cur.execute("SELECT * FROM book") 22 | rows=cur.fetchall() 23 | con.close() 24 | return rows 25 | 26 | def DeleteMovieRec(id): 27 | con=sqlite3.connect("movie1.db") 28 | cur=con.cursor() 29 | cur.execute("DELETE FROM book WHERE id=?", (id,)) 30 | con.commit() 31 | con.close() 32 | 33 | def SearchMovieData(Movie_ID="",Movie_Name="",Release_Date="",Director="",Cast="",Budget="",Duration="",Rating=""): 34 | con=sqlite3.connect("movie1.db") 35 | cur=con.cursor() 36 | cur.execute("SELECT * FROM book WHERE Movie_ID=? OR Movie_Name=? OR Release_Date=? OR Director=? OR Cast=? OR Budget=? OR Duration=? OR Rating=?",(Movie_ID,Movie_Name,Release_Date,Director,Cast,Budget,Duration,Rating)) 37 | rows=cur.fetchall() 38 | con.close() 39 | return rows 40 | 41 | def UpdateMovieData(id,Movie_ID="",Movie_Name="",Release_Date="",Director="",Cast="",Budget="",Duration="",Rating=""): 42 | con=sqlite3.connect("movie1.db") 43 | cur=con.cursor() 44 | cur.execute("UPDATE book SET Movie_ID=?,Movie_Name=?,Release_Date=?,Director=?,Cast=?,Budget=?,Duration=?,Rating=?, WHERE id=?",(Movie_ID,Movie_Name,Release_Date,Director,Cast,Budget,Duration,Rating)) 45 | con.commit() 46 | con.close() 47 | 48 | -------------------------------------------------------------------------------- /MiniProject_Frontend.py: -------------------------------------------------------------------------------- 1 | #Frontend 2 | 3 | from tkinter import * 4 | import tkinter.messagebox 5 | import MiniProject_Backend 6 | 7 | class Movie: 8 | def __init__(self, root): 9 | self.root=root 10 | self.root.title("Online Movie Ticket Booking System") 11 | self.root.geometry("1350x750+0+0") 12 | self.root.config(bg="black") 13 | 14 | Movie_Name=StringVar() 15 | Movie_ID=StringVar() 16 | Release_Date=StringVar() 17 | Director=StringVar() 18 | Cast=StringVar() 19 | Budget=StringVar() 20 | Duration=StringVar() 21 | Rating=StringVar() 22 | 23 | #Fuctions 24 | def iExit(): 25 | iExit=tkinter.messagebox.askyesno("Online Movie Ticket Booking System", "Are you sure???") 26 | if iExit>0: 27 | root.destroy() 28 | return 29 | 30 | def clcdata(): 31 | self.txtMovie_ID.delete(0,END) 32 | self.txtMovie_Name.delete(0,END) 33 | self.txtRelease_Date.delete(0,END) 34 | self.txtDirector.delete(0,END) 35 | self.txtCast.delete(0,END) 36 | self.txtBudget.delete(0,END) 37 | self.txtRating.delete(0,END) 38 | self.txtDuration.delete(0,END) 39 | 40 | def adddata(): 41 | if(len(Movie_ID.get())!=0): 42 | MiniProject_Backend.AddMovieRec(Movie_ID.get(),Movie_Name.get(),Release_Date.get(),Director.get(),Cast.get(),Budget.get(),Duration.get(),Rating.get()) 43 | MovieList.delete(0,END) 44 | MovieList.insert(END,(Movie_ID.get(),Movie_Name.get(),Release_Date.get(),Director.get(),Cast.get(),Budget.get(),Duration.get(),Rating.get())) 45 | 46 | def disdata(): 47 | MovieList.delete(0,END) 48 | for row in MiniProject_Backend.ViewMovieData(): 49 | MovieList.insert(END, row, str("")) 50 | 51 | def movierec(event): 52 | global sd 53 | searchmovie=MovieList.curselection()[0] 54 | sd=MovieList.get(searchmovie) 55 | 56 | self.txtMovie_ID.delete(0,END) 57 | self.txtMovie_ID.insert(END,sd[1]) 58 | self.txtMovie_Name.delete(0,END) 59 | self.txtMovie_Name.insert(END,sd[2]) 60 | self.txtRelease_Date.delete(0,END) 61 | self.txtRelease_Date.insert(END,sd[3]) 62 | self.txtDirector.delete(0,END) 63 | self.txtDirector.insert(END,sd[4]) 64 | self.txtCast.delete(0,END) 65 | self.txtCast.insert(END,sd[5]) 66 | self.txtBudget.delete(0,END) 67 | self.txtBudget.insert(END,sd[6]) 68 | self.txtDuration.delete(0,END) 69 | self.txtDuration.insert(END,sd[7]) 70 | self.txtRating.delete(0,END) 71 | self.txtRating.insert(END,sd[8]) 72 | 73 | def deldata(): 74 | if(len(Movie_ID.get())!=0): 75 | MiniProject_Backend.DeleteMovieRec(sd[0]) 76 | clcdata() 77 | disdata() 78 | 79 | def searchdb(): 80 | MovieList.delete(0,END) 81 | for row in MiniProject_Backend.SearchMovieData(Movie_ID.get(),Movie_Name.get(),Release_Date.get(),Director.get(),Cast.get(),Budget.get(),Duration.get(),Rating.get()): 82 | MovieList.insert(END, row, str("")) 83 | 84 | def updata(): 85 | if(len(Movie_ID.get())!=0): 86 | MiniProject_Backend.DeleteMovieRec(sd[0]) 87 | if(len(Movie_ID.get())!=0): 88 | MiniProject_Backend.AddMovieRec(Movie_ID.get(),Movie_Name.get(),Release_Date.get(),Director.get(),Cast.get(),Budget.get(),Duration.get(),Rating.get()) 89 | MovieList.delete(0,END) 90 | MovieList.insert(END,(Movie_ID.get(),Movie_Name.get(),Release_Date.get(),Director.get(),Cast.get(),Budget.get(),Duration.get(),Rating.get())) 91 | 92 | #Frames 93 | MainFrame=Frame(self.root, bg="black") 94 | MainFrame.grid() 95 | 96 | TFrame=Frame(MainFrame, bd=5, padx=54, pady=8, bg="black", relief=RIDGE) 97 | TFrame.pack(side=TOP) 98 | 99 | self.TFrame=Label(TFrame, font=('Arial', 51, 'bold'), text="ONLINE MOVIE TICKET BOOKING SYSTEM", bg="black", fg="orange") 100 | self.TFrame.grid() 101 | 102 | BFrame=Frame(MainFrame, bd=2, width=1350, height=70, padx=18, pady=10, bg="black", relief=RIDGE) 103 | BFrame.pack(side=BOTTOM) 104 | 105 | DFrame=Frame(MainFrame, bd=2, width=1300, height=400, padx=20, pady=20, bg="black", relief=RIDGE) 106 | DFrame.pack(side=BOTTOM) 107 | 108 | DFrameL=LabelFrame(DFrame, bd=2, width=1000, height=600, padx=20, bg="black", relief=RIDGE, font=('Arial', 20, 'bold'), text="Movie Info_\n", fg="white") 109 | DFrameL.pack(side=LEFT) 110 | 111 | DFrameR=LabelFrame(DFrame, bd=2, width=450, height=300, padx=31, pady=3, bg="black", relief=RIDGE, font=('Arial', 20, 'bold'), text="Movie Details_\n", fg="white") 112 | DFrameR.pack(side=RIGHT) 113 | 114 | #Labels & Entry Box 115 | 116 | self.lblMovie_ID=Label(DFrameL, font=('Arial', 18, 'bold'), text="Movie ID:", padx=2, pady=2, bg="black", fg="orange") 117 | self.lblMovie_ID.grid(row=0, column=0, sticky=W) 118 | self.txtMovie_ID=Entry(DFrameL, font=('Arial', 18, 'bold'), textvariable=Movie_ID, width=39, bg="black", fg="white") 119 | self.txtMovie_ID.grid(row=0, column=1) 120 | 121 | self.lblMovie_Name=Label(DFrameL, font=('Arial', 18, 'bold'), text="Movie Name:", padx=2, pady=2, bg="black", fg="orange") 122 | self.lblMovie_Name.grid(row=1, column=0, sticky=W) 123 | self.txtMovie_Name=Entry(DFrameL, font=('Arial', 18, 'bold'), textvariable=Movie_Name, width=39, bg="black", fg="white") 124 | self.txtMovie_Name.grid(row=1, column=1) 125 | 126 | self.lblRelease_Date=Label(DFrameL, font=('Arial', 18, 'bold'), text="Release Date:", padx=2, pady=2, bg="black", fg="orange") 127 | self.lblRelease_Date.grid(row=2, column=0, sticky=W) 128 | self.txtRelease_Date=Entry(DFrameL, font=('Arial', 18, 'bold'), textvariable=Release_Date, width=39, bg="black", fg="white") 129 | self.txtRelease_Date.grid(row=2, column=1) 130 | 131 | self.lblDirector=Label(DFrameL, font=('Arial', 18, 'bold'), text="Director:", padx=2, pady=2, bg="black", fg="orange") 132 | self.lblDirector.grid(row=3, column=0, sticky=W) 133 | self.txtDirector=Entry(DFrameL, font=('Arial', 18, 'bold'), textvariable=Director, width=39, bg="black", fg="white") 134 | self.txtDirector.grid(row=3, column=1) 135 | 136 | self.lblCast=Label(DFrameL, font=('Arial', 18, 'bold'), text="Cast:", padx=2, pady=2, bg="black", fg="orange") 137 | self.lblCast.grid(row=4, column=0, sticky=W) 138 | self.txtCast=Entry(DFrameL, font=('Arial', 18, 'bold'), textvariable=Cast, width=39, bg="black", fg="white") 139 | self.txtCast.grid(row=4, column=1) 140 | 141 | self.lblBudget=Label(DFrameL, font=('Arial', 18, 'bold'), text="Budget (Crores INR):", padx=2, pady=2, bg="black", fg="orange") 142 | self.lblBudget.grid(row=5, column=0, sticky=W) 143 | self.txtBudget=Entry(DFrameL, font=('Arial', 18, 'bold'), textvariable=Budget, width=39, bg="black", fg="white") 144 | self.txtBudget.grid(row=5, column=1) 145 | 146 | self.lblDuration=Label(DFrameL, font=('Arial', 18, 'bold'), text="Duration (Hrs):", padx=2, pady=2, bg="black", fg="orange") 147 | self.lblDuration.grid(row=6, column=0, sticky=W) 148 | self.txtDuration=Entry(DFrameL, font=('Arial', 18, 'bold'), textvariable=Duration, width=39, bg="black", fg="white") 149 | self.txtDuration.grid(row=6, column=1) 150 | 151 | self.lblRating=Label(DFrameL, font=('Arial', 18, 'bold'), text="Rating (Out of 5):", padx=2, pady=2, bg="black", fg="orange") 152 | self.lblRating.grid(row=7, column=0, sticky=W) 153 | self.txtRating=Entry(DFrameL, font=('Arial', 18, 'bold'), textvariable=Rating, width=39, bg="black", fg="white") 154 | self.txtRating.grid(row=7, column=1) 155 | 156 | #ListBox & ScrollBar 157 | sb=Scrollbar(DFrameR) 158 | sb.grid(row=0, column=1, sticky='ns') 159 | 160 | MovieList=Listbox(DFrameR, width=41, height=16, font=('Arial', 12, 'bold'), bg="black", fg="white", yscrollcommand=sb.set) 161 | MovieList.bind('<>', movierec) 162 | MovieList.grid(row=0, column=0, padx=8) 163 | sb.config(command=MovieList.yview) 164 | 165 | #Buttons 166 | self.btnadd=Button(BFrame, text="Add New", font=('Arial', 20, 'bold'), width=10, height=1, bd=4, bg="orange", command=adddata) 167 | self.btnadd.grid(row=0, column=0) 168 | 169 | self.btndis=Button(BFrame, text="Display", font=('Arial', 20, 'bold'), width=10, height=1, bd=4, bg="orange", command=disdata) 170 | self.btndis.grid(row=0, column=1) 171 | 172 | self.btnclc=Button(BFrame, text="Clear", font=('Arial', 20, 'bold'), width=10, height=1, bd=4, bg="orange", command=clcdata) 173 | self.btnclc.grid(row=0, column=2) 174 | 175 | self.btnse=Button(BFrame, text="Search", font=('Arial', 20, 'bold'), width=10, height=1, bd=4, bg="orange", command=searchdb) 176 | self.btnse.grid(row=0, column=3) 177 | 178 | self.btndel=Button(BFrame, text="Delete", font=('Arial', 20, 'bold'), width=10, height=1, bd=4, bg="orange", command=deldata) 179 | self.btndel.grid(row=0, column=4) 180 | 181 | self.btnup=Button(BFrame, text="Update", font=('Arial', 20, 'bold'), width=10, height=1, bd=4, bg="orange", command=updata) 182 | self.btnup.grid(row=0, column=5) 183 | 184 | self.btnx=Button(BFrame, text="Exit", font=('Arial', 20, 'bold'), width=10, height=1, bd=4, bg="orange", command=iExit) 185 | self.btnx.grid(row=0, column=6) 186 | 187 | 188 | if __name__=='__main__': 189 | root=Tk() 190 | datbase=Movie(root) 191 | root.mainloop() -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DBMS-Movie-Ticket-Booking-System 2 | This repository contains the source code for Online Movie Ticket Booking System, which was a Mini Project for Database Management System (DBMS). 3 | 4 | ![UI](Screenshots/OMTBS.PNG) 5 | -------------------------------------------------------------------------------- /Screenshots/ER Diagram.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sid-149/DBMS-Movie-Ticket-Booking-System/25b00f281fdff042cd0407e515308749601c0389/Screenshots/ER Diagram.PNG -------------------------------------------------------------------------------- /Screenshots/OMTBS.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sid-149/DBMS-Movie-Ticket-Booking-System/25b00f281fdff042cd0407e515308749601c0389/Screenshots/OMTBS.PNG -------------------------------------------------------------------------------- /Screenshots/Schema.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sid-149/DBMS-Movie-Ticket-Booking-System/25b00f281fdff042cd0407e515308749601c0389/Screenshots/Schema.PNG --------------------------------------------------------------------------------