Student Management System with database connectivity using tkinter














































Student Management System with database connectivity using tkinter



Student Management System 
with database connectivity using tkinter.



Introduction -


1. In this article we will develop a Student Management System project using python%u2019s tkinter module along with database connectivity.


2. We will use the tkinter module to design our Graphical User Interface(GUI) and pymysql to establish connectivity with the database.


Description -


1. Student Management System is an efficient way to organize data of students in a manageable manner for an institution. Along with students the system can also be used to manage data of  employees in an institute and also the different departments the institute offers.


2. The system offers the option to view data of students, employees and department, add new data of the above mentioned parameters, update, delete and also search any particular data.


3. The system is controlled by the admin and has to login when trying to access the data, the system also provides an option to update the password of the admin in order to keep the security of data intact.



Database Structure -


1. The database includes 4 tables namely the admin, employee, department and the student table.


2. The ER diagram of the database and the snippet of the database tables is given below-



ER Diagram-







Student Table -                                           


               



Department Table -



Admin Table-




Employee Table -






Code -


1.Class Password(Password Window)-



#Import Modules
from tkinter import *
from tkinter import ttk
import pymysql
from tkinter import messagebox


class Password:

    def __init__(self,root):

        self.root = root
        self.root.title("CPP Secrets Student Management System")
        self.root.geometry("1350x700+0+0")

        title = Label(self.root,text="CPP Secrets Student Management System",bd = 10,
relief=GROOVE,font=("Arial",43,"bold"),bg="#00A1E4",fg="#FFFCF9")
        title.pack(side=TOP,fill=X)

        
        #Variables
        self.username = StringVar()
        self.old_password = StringVar()
        self.new_password = StringVar()


        #DashBoard Frame
        Dash_Frame = Frame(self.root,bd=4,relief=RIDGE,bg="#F0EDEE")
        Dash_Frame.place(x=2,y=95,width=98,height=600)

        manage_student_btn = Button(Dash_Frame,bg="#00A1E4",text="Student",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.student_btn).
grid(row=0,column=0,padx=2,pady=0,sticky="w")

        manage_employee_btn = Button(Dash_Frame,bg="#00A1E4",fg="#F0EDEE",text="Employee",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.employee_btn).
grid(row=1,column=0,padx=2,pady=2,sticky="w")

        department_btn = Button(Dash_Frame,text="Department",bg="#00A1E4",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.dept_btn).
grid(row=2,column=0,padx=2,pady=2,sticky="w")

        password_btn = Button(Dash_Frame,text="Password",bg="#00A1E4",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20).
grid(row=3,column=0,padx=2,pady=2,sticky="w")

        exit_btn = Button(Dash_Frame,text="Exit",bg="#00A1E4",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.logout).
grid(row=4,column=0,padx=2,pady=2,sticky="w")

                           

        #Manage Frame
        Manage_Frame = Frame(self.root,bd=4,relief=RIDGE,bg="#F0EDEE")
Manage_Frame.place(x=100,y=95,width=1250,height=600)

               
        m_title = Label(Manage_Frame,text="Change Password",bg="#F0EDEE",fg="#0A090C",
font=("Arial",30,"bold","italic"))

        m_title.grid(row = 0,columnspan=2,pady=20,padx=450)

        
        lbl_username = Label(Manage_Frame,text="Username -",bg="#F0EDEE",fg="#0A090C",
font=("Arial",15,"bold"))
        lbl_username.grid(row = 1,column=0,pady=10,padx=500)

    

        txt_dept_id = Entry(Manage_Frame,textvariable=self.username,
font=("Arial",15,"bold"),bd=5,relief=GROOVE)
        txt_dept_id.grid(row = 2,column=0,pady=10,padx=500)

        

        lbl_name = Label(Manage_Frame,text="Old Password -",bg="#F0EDEE",fg="#0A090C",
font=("Arial",15,"bold"))
        lbl_name.grid(row = 3,column=0,pady=10,padx=500)

    

        txt_name = Entry(Manage_Frame,show="*",textvariable=self.old_password,
font=("Arial",15,"bold"),bd=5,relief=GROOVE)
        txt_name.grid(row = 4,column=0,pady=10,padx=500)

        

        lbl_name = Label(Manage_Frame,text="New Password -",bg="#F0EDEE",fg="#0A090C",
font=("Arial",15,"bold"))
        lbl_name.grid(row = 5,column=0,pady=10,padx=500)

    

        txt_name = Entry(Manage_Frame,show="*",textvariable=self.new_password,
font=("Arial",15,"bold"),bd=5,relief=GROOVE)
        txt_name.grid(row = 6,column=0,pady=10,padx=500)
        

        #Button Frame
        btn_frame = Frame(Manage_Frame,bg="#F0EDEE")
        btn_frame.place(x=400,y=420,width=410) 

        
        chg_btn = Button(btn_frame,text="Change Password",bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),relief=GROOVE,width=30,command=self.change_pass)
.grid(row=0,column=0,padx=90,pady=10,ipady=4)

       
                         

    def change_pass(self):

        if self.username.get() == "" or self.old_password.get() == "" 
 or self.new_password.get() == "":
            messagebox.showerror("Error","Fields Missing")

        else:
            connect = pymysql.connect("localhost","root","","Student Management")
            curr = connect.cursor()

            
            curr.execute("SELECT * from admin")
            rows = curr.fetchall()

            
            for row in rows:
                if row[1] == self.username.get() and row[2] == self.old_password.get():
                    connect = pymysql.connect("localhost","root","","Student Management")  
                    curr = connect.cursor()

                    

                    curr.execute("UPDATE ADMIN SET password=%s where username=%s",
(self.new_password.get(),self.username.get()))

                    connect.commit()
                    connect.close()
                    messagebox.showinfo("Success","Password Updated Successsfully")
                else:
                    messagebox.showerror("Error","Please Make Sure That the Details 
are Correct")

         

    def logout(self):

        self.root.destroy() 
        st_root = Tk()
        st = Login(st_root)
        st_root.mainloop()

       
    def student_btn(self):
        self.root.destroy() 
        st_root = Tk()
        st = Student(st_root)
        st_root.mainloop()

       
    def employee_btn(self):
        self.root.destroy() 
        st_root = Tk()
        st = Employee(st_root)
        st_root.mainloop()

      
    def dept_btn(self):
        self.root.destroy()
        st_root = Tk()
        st = Department(st_root)
        st_root.mainloop()

              



2.Class Department(Department Window)-




class Department:

    def __init__(self,root):
        self.root = root
        self.root.title("CPP Secrets Student Management System")
        self.root.geometry("1350x700+0+0")

       
        title = Label(self.root,text="CPP Secrets Student Management System",bd = 10,
relief=GROOVE,font=("Arial",43,"bold"),bg="#00A1E4",fg="#FFFCF9")
        title.pack(side=TOP,fill=X)

        

        #Variables
        self.dept_id = StringVar()
        self.dept_name = StringVar()


        #DashBoard Frame
        Dash_Frame = Frame(self.root,bd=4,relief=RIDGE,bg="#F0EDEE")
        Dash_Frame.place(x=2,y=95,width=98,height=600)

       
        manage_student_btn = Button(Dash_Frame,bg="#00A1E4",text="Student",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.student_btn)
.grid(row=0,column=0,padx=2,pady=0,sticky="w")

        manage_employee_btn = Button(Dash_Frame,bg="#00A1E4",fg="#F0EDEE",text="Employee",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.employee_btn)
.grid(row=1,column=0,padx=2,pady=2,sticky="w")

        department_btn = Button(Dash_Frame,text="Department",bg="#00A1E4",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20)
.grid(row=2,column=0,padx=2,pady=2,sticky="w")

        password_btn = Button(Dash_Frame,text="Password",bg="#00A1E4",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.pass_btn)
.grid(row=3,column=0,padx=2,pady=2,sticky="w")

        exit_btn = Button(Dash_Frame,text="Exit",bg="#00A1E4",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.logout)
.grid(row=4,column=0,padx=2,pady=2,sticky="w")

                           

        #Manage Frame
        Manage_Frame = Frame(self.root,bd=4,relief=RIDGE,bg="#F0EDEE")
        Manage_Frame.place(x=100,y=95,width=450,height=600)

                

        m_title = Label(Manage_Frame,text="Manage Department",bg="#F0EDEE",fg="#0A090C",
font=("Arial",30,"bold","italic"))
        m_title.grid(row = 0,columnspan=2,pady=20)

        

        lbl_dept_id = Label(Manage_Frame,text="Department ID -",bg="#F0EDEE",fg="#0A090C",
font=("Arial",15,"bold"))
        lbl_dept_id.grid(row = 1,column=0,pady=30,padx=100)

    

        txt_dept_id = Entry(Manage_Frame,textvariable=self.dept_id,
font=("Arial",15,"bold"),bd=5,relief=GROOVE)
        txt_dept_id.grid(row = 2,column=0,pady=10,padx=100)

        

        lbl_name = Label(Manage_Frame,text="Department Name -",bg="#F0EDEE",fg="#0A090C",
font=("Arial",15,"bold"))
        lbl_name.grid(row = 3,column=0,pady=30,padx=100)

    
        txt_name = Entry(Manage_Frame,textvariable=self.dept_name,
font=("Arial",15,"bold"),bd=5,relief=GROOVE)
        txt_name.grid(row = 4,column=0,pady=10,padx=100)

        
        #Button Frame
        btn_frame = Frame(Manage_Frame,bg="#F0EDEE")
        btn_frame.place(x=12,y=420,width=410) 

        

        add_btn = Button(btn_frame,text="Add",width=10,bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),command=self.add_department)
.grid(row=0,column=0,padx=5,pady=10)

        update_btn = Button(btn_frame,text="Update",width=10,bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),command=self.update).grid(row=0,column=1,padx=5,pady=10)

        delete_btn = Button(btn_frame,text="Delete",width=10,bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),command=self.delete).grid(row=0,column=2,padx=5,pady=10)

        clear_btn = Button(btn_frame,text="Clear",width=10,bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),command=self.clear_field)
.grid(row=0,column=3,padx=5,pady=10)

        
        #Detail Frame
        Detail_Frame = Frame(self.root,bd=4,relief=RIDGE,bg="#FFFCF9")
        Detail_Frame.place(x=550,y=95,width=800,height=600)

       
        logout_btn = Button(Detail_Frame,text="Log Out",bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),relief=GROOVE,width=10,pady=5,command=self.logout)
.grid(row=0,column=7,padx=690,pady=10)

        

        #Table Frame
        Table_Frame = Frame(Detail_Frame,bg="#0A090C")
        Table_Frame.place(x=10,y=60,width=760,height=505)

        

        X_scroll = Scrollbar(Table_Frame,orient=HORIZONTAL)

        Y_scroll = Scrollbar(Table_Frame,orient=VERTICAL)

        self.Table = ttk.Treeview(Table_Frame,columns=("DEPT-ID","Department Name")
,xscrollcommand=X_scroll.set,yscrollcommand=Y_scroll.set)

        X_scroll.pack(side=BOTTOM,fill=X)

        Y_scroll.pack(side=RIGHT,fill=Y)

        X_scroll.config(command=self.Table.xview)

        Y_scroll.config(command=self.Table.yview)

        self.Table.heading("DEPT-ID",text="DEPT-ID")

        self.Table.heading("Department Name",text="Department Name")

            

        

        self.Table['show']="headings"

        self.Table.column("DEPT-ID",width=100)

        self.Table.column("Department Name",width=100)



        self.Table.pack(fill=BOTH,expand=1)

        self.Table.bind('<ButtonRelease 1>',self.get_fields)

        self.show_data()

        

    def add_department(self):
        if self.dept_id.get() == "" or self.dept_name.get() == "":
            messagebox.showerror("Error","All Fields are Required")
        else:
            connect = pymysql.connect("localhost","root","","Student Management")
            curr = connect.cursor()

 
            curr.execute("INSERT INTO DEPARTMENT VALUES(%s,%s)",(self.dept_id.get(),

                                                                 self.dept_name.get(),

                                                                ))

            connect.commit()
            self.show_data()
            self.clear_field()
            connect.close()
            messagebox.showinfo("Success","Record Successfully Added")

        

    def show_data(self):
        connect = pymysql.connect("localhost","root","","Student Management")
        curr = connect.cursor()

        

        curr.execute("SELECT * from department")
        rows = curr.fetchall()

        if(len(rows)!=0):
            self.Table.delete(*self.Table.get_children())
            for row in rows:
                self.Table.insert('',END,values=row)
            connect.commit()
        connect.close()

        

    def clear_field(self):

        if self.dept_id.get() == "" or self.dept_name.get() == "":
            messagebox.showerror("Error","All Fields are Required")
        else:
            self.dept_id.set("")
            self.dept_name.set("")


    def get_fields(self,event):

        cursor_row = self.Table.focus()
        content = self.Table.item(cursor_row)
        row = content['values']

        self.dept_id.set(row[0])
        self.dept_name.set(row[1])
   

    def update(self):

        if self.dept_id.get() == "" or self.dept_name.get() == "":
            messagebox.showerror("Error","All Fields are Required")
        else:
            connect = pymysql.connect("localhost","root","","Student Management")
            curr = connect.cursor()

            

            curr.execute("UPDATE Department SET name=%s where dept_id=%s",
(self.dept_name.get(),self.dept_id.get()))

            connect.commit()
            self.show_data()
            self.clear_field()
            connect.close()
            messagebox.showinfo("Succes","Record Successfully Updated")

        
    def delete(self):

        if self.dept_id.get() == "" or self.dept_name.get() == "":
            messagebox.showerror("Error","All Fields are Required")
        else:
            connect = pymysql.connect("localhost","root","","Student Management")
            curr = connect.cursor()

            

            curr.execute("DELETE from DEPARTMENT where dept_id=%s",(self.dept_id.get()))


            connect.commit()
            self.show_data()
            self.clear_field()
            connect.close()
            messagebox.showinfo("Succes","Record Successfully Deleted")
      

    def logout(self):

        self.root.destroy() 
        st_root = Tk()
        st = Login(st_root)
        st_root.mainloop()

        

    def student_btn(self):

        self.root.destroy() 
        st_root = Tk()
        st = Student(st_root)
        st_root.mainloop()
   

    def employee_btn(self):

        self.root.destroy() 
        st_root = Tk()
        st = Employee(st_root)
        st_root.mainloop()

        

    def pass_btn(self):

        self.root.destroy() 
        st_root = Tk()
        st = Password(st_root)
        st_root.mainloop()





3.Class Employee(Employee Window)-



class Employee:

    def __init__(self,root):
        self.root = root
        self.root.title("CPP Secrets Student Management System")
        self.root.geometry("1350x700+0+0")

        

        title = Label(self.root,text="CPP Secrets Student Management System",bd = 10,
relief=GROOVE,font=("Arial",43,"bold"),bg="#00A1E4",fg="#FFFCF9")
        title.pack(side=TOP,fill=X)

      
        #Variables
        self.emp_id = StringVar()
        self.dept_id = StringVar()
        self.ename = StringVar()
        self.email_id = StringVar()
        self.contact = StringVar()
        self.dept = StringVar()
        self.address = StringVar()
        self.position = StringVar()

        

        self.search_combo = StringVar()
        self.search_field = StringVar()

        

        #DashBoard Frame
        Dash_Frame = Frame(self.root,bd=4,relief=RIDGE,bg="#F0EDEE")
        Dash_Frame.place(x=2,y=95,width=98,height=600)

        

        manage_student_btn = Button(Dash_Frame,bg="#00A1E4",text="Student",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.student_btn)
.grid(row=0,column=0,padx=2,pady=0,sticky="w")

        manage_employee_btn = Button(Dash_Frame,bg="#00A1E4",fg="#F0EDEE",text="Employee",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20)
.grid(row=1,column=0,padx=2,pady=2,sticky="w")

        department_btn = Button(Dash_Frame,text="Department",bg="#00A1E4",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.dept_btn)
.grid(row=2,column=0,padx=2,pady=2,sticky="w")

        password_btn = Button(Dash_Frame,text="Password",bg="#00A1E4",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.pass_btn)
.grid(row=3,column=0,padx=2,pady=2,sticky="w")

        exit_btn = Button(Dash_Frame,text="Exit",bg="#00A1E4",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.logout)
.grid(row=4,column=0,padx=2,pady=2,sticky="w")

                           

        #Manage Frame
        Manage_Frame = Frame(self.root,bd=4,relief=RIDGE,bg="#F0EDEE")
        Manage_Frame.place(x=100,y=95,width=450,height=600)

                

        m_title = Label(Manage_Frame,text="Manage Employees",bg="#F0EDEE",fg="#0A090C",
font=("Arial",30,"bold","italic"))
        m_title.grid(row = 0,columnspan=2,pady=20)

        

        lbl_roll = Label(Manage_Frame,text="Emp ID.",bg="#F0EDEE",fg="black",
font=("Arial",15,"bold"))
        lbl_roll.grid(row = 1,column=0,pady=10,padx=20,sticky="w")

    

        txt_Roll = Entry(Manage_Frame,textvariable=self.emp_id,font=("Arial",15,"bold"),
bd=5,relief=GROOVE)
        txt_Roll.grid(row = 1,column=1,pady=10,padx=20,sticky="w")

        

        lbl_name = Label(Manage_Frame,text="Name.",bg="#F0EDEE",fg="black",
font=("Arial",15,"bold"))
        lbl_name.grid(row = 2,column=0,pady=10,padx=20,sticky="w")

    

        txt_name = Entry(Manage_Frame,textvariable=self.ename,font=("Arial",15,"bold")
,bd=5,relief=GROOVE)
        txt_name.grid(row = 2,column=1,pady=10,padx=20,sticky="w")

        

        lbl_email = Label(Manage_Frame,text="Email-ID.",bg="#F0EDEE",fg="black",
font=("Arial",15,"bold"))
        lbl_email.grid(row = 3,column=0,pady=10,padx=20,sticky="w")

    

        txt_email = Entry(Manage_Frame,textvariable=self.email_id,
font=("Arial",15,"bold"),bd=5,relief=GROOVE)
        txt_email.grid(row = 3,column=1,pady=10,padx=20,sticky="w")

        

        lbl_contact = Label(Manage_Frame,text="Contact",bg="#F0EDEE",fg="black",
font=("Arial",15,"bold"))
        lbl_contact.grid(row = 4,column=0,pady=10,padx=20,sticky="w")

    

        txt_contact = Entry(Manage_Frame,textvariable=self.contact,
font=("Arial",15,"bold"),bd=5,relief=GROOVE)
        txt_contact.grid(row = 4,column=1,pady=10,padx=20,sticky="w")

        

        lbl_Dept = Label(Manage_Frame,text="Dept No",bg="#F0EDEE",fg="black",
font=("Arial",15,"bold"))
        lbl_Dept.grid(row = 5,column=0,pady=10,padx=20,sticky="w")

    

        txt_dept = Entry(Manage_Frame,textvariable=self.dept,font=("Arial",15,"bold")
,bd=5,relief=GROOVE)
        txt_dept.grid(row = 5,column=1,pady=10,padx=20,sticky="w")


        lbl_position = Label(Manage_Frame,text="Position",bg="#F0EDEE",fg="black",
font=("Arial",15,"bold"))
        lbl_position.grid(row = 6,column=0,pady=10,padx=20,sticky="w")

    

        txt_dept = Entry(Manage_Frame,textvariable=self.position,
font=("Arial",15,"bold"),bd=5,relief=GROOVE)
        txt_dept.grid(row = 6,column=1,pady=10,padx=20,sticky="w")        

        

        lbl_address = Label(Manage_Frame,text="Address",bg="#F0EDEE",fg="black",
font=("Arial",15,"bold"))
        lbl_address.grid(row = 7,column=0,pady=10,padx=20,sticky="w")

    

        self.txt_address = Text(Manage_Frame,bd=2,relief=RIDGE,width =30,height=4)
        self.txt_address.grid(row = 7,column=1,pady=10,padx=20,sticky="w")

        

        #Button Frame
        btn_frame = Frame(Manage_Frame,bg="#F0EDEE")
        btn_frame.place(x=12,y=520,width=410) 

        

        add_btn = Button(btn_frame,text="Add",width=10,bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),command=self.add_employee)
.grid(row=0,column=0,padx=5,pady=10)

        update_btn = Button(btn_frame,text="Update",width=10,bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),command=self.update)
.grid(row=0,column=1,padx=5,pady=10)

        delete_btn = Button(btn_frame,text="Delete",width=10,bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),command=self.delete)
.grid(row=0,column=2,padx=5,pady=10)

        clear_btn = Button(btn_frame,text="Clear",width=10,bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),command=self.clear_field)
.grid(row=0,column=3,padx=5,pady=10)

        

        

        #Detail Frame
        Detail_Frame = Frame(self.root,bd=4,relief=RIDGE,bg="#FFFCF9")
        Detail_Frame.place(x=550,y=95,width=800,height=600)

        

        lbl_search = Label(Detail_Frame,text="Search-",bg="#FFFCF9",fg="#0A090C",
font=("Arial",18,"bold"))
        lbl_search.grid(row = 0,column=0,pady=10,padx=15,sticky="w")

        

        search_box = ttk.Combobox(Detail_Frame,width=10,textvariable=self.search_combo,
font=("Arial",13,"bold"),state="readonly")

        search_box['values'] = ("Emp_ID","Dept_ID","Position","Email_ID")
        search_box.grid(row=0,column=1,pady=10,padx=10,ipady=4,sticky="w")

        

        

        txt_search = Entry(Detail_Frame,width=20,textvariable=self.search_field,
font=("Arial",10,"bold"),bd=5,relief=GROOVE)
        txt_search.grid(row = 0,column=2,pady=10,padx=20,ipady=4,sticky="w")

        

        search_btn = Button(Detail_Frame,text="Search",bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),relief=GROOVE,width=10,pady=5,command=self.search_data)
.grid(row=0,column=5,padx=10,pady=10)

        show_all_btn = Button(Detail_Frame,text="Show All",bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),relief=GROOVE,width=10,pady=5,command=self.show_data)
.grid(row=0,column=6,padx=10,pady=10)

        logout_btn = Button(Detail_Frame,text="Log Out",bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),relief=GROOVE,width=10,pady=5,command=self.logout)
.grid(row=0,column=7,padx=10,pady=10)

        

        #Table Frame
        Table_Frame = Frame(Detail_Frame,bg="#0A090C")
        Table_Frame.place(x=10,y=60,width=760,height=505)

        

        X_scroll = Scrollbar(Table_Frame,orient=HORIZONTAL)

        Y_scroll = Scrollbar(Table_Frame,orient=VERTICAL)

        self.Table = ttk.Treeview(Table_Frame,columns=("Emp-ID","Department","Name",
"Email-ID","Address","Contact No","Position"),xscrollcommand=X_scroll.set,
yscrollcommand=Y_scroll.set)


        X_scroll.pack(side=BOTTOM,fill=X)
        Y_scroll.pack(side=RIGHT,fill=Y)
        X_scroll.config(command=self.Table.xview)
        Y_scroll.config(command=self.Table.yview)
        self.Table.heading("Emp-ID",text="Emp-ID")
        self.Table.heading("Department",text="Dept")
        self.Table.heading("Name",text="Name")
        self.Table.heading("Email-ID",text="Email-ID")
        self.Table.heading("Address",text="Address")
        self.Table.heading("Contact No",text="Contact")
        self.Table.heading("Position",text="Position")

            

        
        self.Table['show']="headings"
        self.Table.column("Emp-ID",width=100)
        self.Table.column("Department",width=100)
        self.Table.column("Name",width=100)
        self.Table.column("Email-ID",width=100)
        self.Table.column("Address",width=150)
        self.Table.column("Contact No",width=100)
        self.Table.column("Position",width=100)

       
        self.Table.pack(fill=BOTH,expand=1)
        self.Table.bind('<ButtonRelease 1>',self.get_fields)
        self.show_data()

        

    def add_employee(self):

        if self.emp_id.get() == "" or self.ename.get() == "" or self.email_id.get() == ""
  or self.position.get()== "" or self.dept.get()== ""or self.contact.get() == ""
or self.txt_address.get('1.0',END) == "":

            messagebox.showerror("Error","All Fields are Required")

        else:
            connect = pymysql.connect("localhost","root","","Student Management")
            curr = connect.cursor()

            

            curr.execute("INSERT INTO EMPLOYEE VALUES(%s,%s,%s,%s,%s,%s,%s)",
(self.emp_id.get(), self.dept.get(), self.ename.get(), self.email_id.get(),
self.txt_address.get('1.0',END), self.contact.get(), self.position.get() ))

            connect.commit()
            self.show_data()
            self.clear_field()
            connect.close()

            messagebox.showinfo("Success","Record Successfully Added")

        

    def show_data(self):

        connect = pymysql.connect("localhost","root","","Student Management")
        curr = connect.cursor()

        
        curr.execute("SELECT * from employee")
        rows = curr.fetchall()

        if(len(rows)!=0):

            self.Table.delete(*self.Table.get_children())
            for row in rows:

                self.Table.insert('',END,values=row)

            connect.commit()
        connect.close()

        

    def clear_field(self):

        if self.emp_id.get() == "" or self.ename.get() == "" or self.email_id.get() == ""
  or self.position.get()== "" or self.dept.get()== ""or self.contact.get() == "" 
or self.txt_address.get('1.0',END) == "":

            messagebox.showerror("Error","All Fields are Required")

        else:

            self.emp_id.set("")
            self.dept.set("")
            self.email_id.set("")
            self.ename.set("")
            self.contact.set("")
            self.position.set("")
            self.txt_address.delete("1.0",END)

        

    def get_fields(self,event):

        cursor_row = self.Table.focus()
        content = self.Table.item(cursor_row)
        row = content['values']

        

        self.emp_id.set(row[0])
        self.dept.set(row[1])
        self.ename.set(row[2])
        self.email_id.set(row[3])
        self.txt_address.delete("1.0",END)
        self.txt_address.insert(END,row[4])
        self.contact.set(row[5])
        self.position.set(row[6])


        

    def update(self):

        if self.emp_id.get() == "" or self.ename.get() == "" or self.email_id.get() == ""
  or self.position.get()== "" or self.dept.get()== ""or self.contact.get() == "" 
or self.txt_address.get('1.0',END) == "":

            messagebox.showerror("Error","All Fields are Required")

        else:
            connect = pymysql.connect("localhost","root","","Student Management")
            curr = connect.cursor()

            
            curr.execute("UPDATE EMPLOYEE SET dept_id=%s,ename=%s,email_id=%s,address=%s,
contact_no=%s,position=%s where emp_id=%s",(
self.dept.get(), self.ename.get(),
self.email_id.get(), self.txt_address.get('1.0',END), self.contact.get(),
self.position.get(),  self.emp_id.get()                                                                                                                           ))

            connect.commit()
            self.show_data()
            self.clear_field()
            connect.close()

            messagebox.showinfo("Succes","Record Successfully Updated")

        

    def delete(self):

        if self.emp_id.get() == "" or self.ename.get() == "" or self.email_id.get() == ""
  or self.position.get()== "" or self.dept.get()== ""or self.contact.get() == "" 
or self.txt_address.get('1.0',END) == "":

            messagebox.showerror("Error","All Fields are Required")

        else:
            connect = pymysql.connect("localhost","root","","Student Management")
            curr = connect.cursor()

           
            curr.execute("DELETE from EMPLOYEE where emp_id=%s",(self.emp_id.get()))

                                                                           
            connect.commit()
            self.show_data()
            self.clear_field()
            connect.close()
            messagebox.showinfo("Succes","Record Successfully Deleted")

        

    def search_data(self):

        if self.search_combo.get() == "" or self.search_field.get() == "":
            messagebox.showerror("Error","Some Fields might be Empty")

        else:
            connect = pymysql.connect("localhost","root","","Student Management")
            curr = connect.cursor()

            

            curr.execute("SELECT * from employee where "+str(self.search_combo.get())+
" LIKE '%"+str(self.search_field.get())+"%'")

            rows = curr.fetchall()
            if(len(rows)!=0):

                self.Table.delete(*self.Table.get_children())
                for row in rows:

                    self.Table.insert('',END,values=row)

                connect.commit()
            connect.close()

            

    def logout(self):

        self.root.destroy() 
        st_root = Tk()
        st Login(st_root)
        st_root.mainloop()

        

    def student_btn(self):

        self.root.destroy() 
        st_root = Tk()
        st = Student(st_root)
        st_root.mainloop()

        

    def dept_btn(self):

        self.root.destroy()
        em_root = Tk()
        em = Department(em_root)
        em_root.mainloop()

        

    def pass_btn(self):

        self.root.destroy() 
        ps_root = Tk()
        ps = Password(ps_root)
        ps_root.mainloop()



4.Class Student(Student Window)-



class Student:

    def __init__(self,root):
        self.root = root
        self.root.title("CPP Secrets Student Management System")
        self.root.geometry("1350x700+0+0")

        

        title = Label(self.root,text="CPP Secrets Student Management System"
,bd = 10,relief=GROOVE,font=("Arial",43,"bold"),bg="#00A1E4",fg="#FFFCF9")

        title.pack(side=TOP,fill=X)

        

        #Variables
        self.roll_no = StringVar()
        self.name = StringVar()
        self.email_id = StringVar()
        self.gender = StringVar()
        self.contact = StringVar()
        self.dob = StringVar()
        self.address = StringVar()

        

        self.search_combo = StringVar()
        self.search_field = StringVar()

        
        #DashBoard Frame
        Dash_Frame = Frame(self.root,bd=4,relief=RIDGE,bg="#F0EDEE")
        Dash_Frame.place(x=2,y=95,width=98,height=600)

        

        manage_student_btn = Button(Dash_Frame,bg="#00A1E4",text="Student",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20)
.grid(row=0,column=0,padx=2,pady=0,sticky="w")

        manage_employee_btn = Button(Dash_Frame,bg="#00A1E4",fg="#F0EDEE",text="Employee",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.employee_btn)
.grid(row=1,column=0,padx=2,pady=2,sticky="w")

        department_btn = Button(Dash_Frame,text="Department",bg="#00A1E4",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.dept_btn)
.grid(row=2,column=0,padx=2,pady=2,sticky="w")

        password_btn = Button(Dash_Frame,text="Password",bg="#00A1E4",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.pass_btn)
.grid(row=3,column=0,padx=2,pady=2,sticky="w")

        exit_btn = Button(Dash_Frame,text="Exit",bg="#00A1E4",fg="#F0EDEE",
font=("Arial",9,"bold"),relief=GROOVE,width=11,pady=20,command=self.logout)
.grid(row=4,column=0,padx=2,pady=2,sticky="w")

                           

        #Manage Frame

        Manage_Frame = Frame(self.root,bd=4,relief=RIDGE,bg="#F0EDEE")
        Manage_Frame.place(x=100,y=95,width=450,height=600)

                

        m_title = Label(Manage_Frame,text="Manage Student",bg="#F0EDEE",fg="#0A090C",
font=("Arial",30,"bold","italic"))
        m_title.grid(row = 0,columnspan=2,pady=20)

        

        lbl_roll = Label(Manage_Frame,text="Roll No.",bg="#F0EDEE",fg="black",
font=("Arial",15,"bold"))
        lbl_roll.grid(row = 1,column=0,pady=10,padx=20,sticky="w")

    

        txt_Roll = Entry(Manage_Frame,textvariable=self.roll_no,font=("Arial",15,"bold"),
bd=5,relief=GROOVE)
        txt_Roll.grid(row = 1,column=1,pady=10,padx=20,sticky="w")

        

        lbl_name = Label(Manage_Frame,text="Name.",bg="#F0EDEE",fg="black",
font=("Arial",15,"bold"))
        lbl_name.grid(row = 2,column=0,pady=10,padx=20,sticky="w")

    

        txt_name = Entry(Manage_Frame,textvariable=self.name,font=("Arial",15,"bold"),
bd=5,relief=GROOVE)
        txt_name.grid(row = 2,column=1,pady=10,padx=20,sticky="w")

        

        lbl_email = Label(Manage_Frame,text="Email-ID.",bg="#F0EDEE",fg="black",
font=("Arial",15,"bold"))
        lbl_email.grid(row = 3,column=0,pady=10,padx=20,sticky="w")

    

        txt_email = Entry(Manage_Frame,textvariable=self.email_id,
font=("Arial",15,"bold"),bd=5,relief=GROOVE)
        txt_email.grid(row = 3,column=1,pady=10,padx=20,sticky="w")

        

        lbl_gender = Label(Manage_Frame,text="Gender",bg="#F0EDEE",fg="black",
font=("Arial",15,"bold"))
        lbl_gender.grid(row = 4,column=0,pady=10,padx=20,sticky="w")

        

        gender_box = ttk.Combobox(Manage_Frame,textvariable=self.gender,
font=("Arial",13,"bold"),state="readonly")

        gender_box['values'] = ("Male","Female","Other")
        gender_box.grid(row=4,column=1,pady=10,padx=20,sticky="w")

        

        lbl_contact = Label(Manage_Frame,text="Contact",bg="#F0EDEE",fg="black",
font=("Arial",15,"bold"))
        lbl_contact.grid(row = 5,column=0,pady=10,padx=20,sticky="w")

    

        txt_contact = Entry(Manage_Frame,textvariable=self.contact,
font=("Arial",15,"bold"),bd=5,relief=GROOVE)
        txt_contact.grid(row = 5,column=1,pady=10,padx=20,sticky="w")

        

        lbl_DOB = Label(Manage_Frame,text="D.O.B",bg="#F0EDEE",fg="black",
font=("Arial",15,"bold"))
        lbl_DOB.grid(row = 6,column=0,pady=10,padx=20,sticky="w")

    

        self.txt_DOB = Entry(Manage_Frame,textvariable=self.dob,font=("Arial",15,"bold")
,bd=5,relief=GROOVE)
        self.txt_DOB.grid(row = 6,column=1,pady=10,padx=20,sticky="w")

        

        

        lbl_address = Label(Manage_Frame,text="Address",bg="#F0EDEE",fg="black",
font=("Arial",15,"bold"))
        lbl_address.grid(row = 7,column=0,pady=10,padx=20,sticky="w")

    

        self.txt_address = Text(Manage_Frame,bd=2,relief=RIDGE,width =30,height=4)
        self.txt_address.grid(row = 7,column=1,pady=10,padx=20,sticky="w")

        

        #Button Frame
        btn_frame = Frame(Manage_Frame,bg="#F0EDEE")
        btn_frame.place(x=12,y=520,width=410) 

        

        add_btn = Button(btn_frame,text="Add",width=10,bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),command=self.add_student)
.grid(row=0,column=0,padx=5,pady=10)

        update_btn = Button(btn_frame,text="Update",width=10,bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),command=self.update).grid(row=0,column=1,padx=5,pady=10)

        delete_btn = Button(btn_frame,text="Delete",width=10,bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),command=self.delete).grid(row=0,column=2,padx=5,pady=10)

        clear_btn = Button(btn_frame,text="Clear",width=10,bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),command=self.clear_field)
.grid(row=0,column=3,padx=5,pady=10)

        

        

        #Detail Frame
        Detail_Frame = Frame(self.root,bd=4,relief=RIDGE,bg="#FFFCF9")
        Detail_Frame.place(x=550,y=95,width=800,height=600)

        

        lbl_search = Label(Detail_Frame,text="Search-",bg="#FFFCF9",fg="#0A090C",
font=("Arial",18,"bold"))
        lbl_search.grid(row = 0,column=0,pady=10,padx=15,sticky="w")

        

        search_box = ttk.Combobox(Detail_Frame,width=12,textvariable=self.search_combo,
font=("Arial",13,"bold"),state="readonly")

        search_box['values'] = ("Roll_No","SName","Contact_No")
        search_box.grid(row=0,column=1,pady=10,padx=10,ipady=4,sticky="w")

        

        

        txt_search = Entry(Detail_Frame,width=20,textvariable=self.search_field,
font=("Arial",10,"bold"),bd=5,relief=GROOVE)
        txt_search.grid(row = 0,column=2,pady=10,padx=20,ipady=4,sticky="w")

        

        search_btn = Button(Detail_Frame,text="Search",bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),relief=GROOVE,width=10,pady=5,command=self.search_data)
.grid(row=0,column=5,padx=10,pady=10)

        show_all_btn = Button(Detail_Frame,text="Show All",bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),relief=GROOVE,width=10,pady=5,command=self.show_data)
.grid(row=0,column=6,padx=10,pady=10)

        logout_btn = Button(Detail_Frame,text="Log Out",bg="#00A1E4",fg="#FFFCF9",
font=("Arial",10,"bold"),relief=GROOVE,width=10,pady=5,command=self.logout)
.grid(row=0,column=7,padx=10,pady=10)

        

        #Table Frame

        Table_Frame = Frame(Detail_Frame,bg="#0A090C")
        Table_Frame.place(x=10,y=60,width=760,height=505)

        

        X_scroll = Scrollbar(Table_Frame,orient=HORIZONTAL)
        Y_scroll = Scrollbar(Table_Frame,orient=VERTICAL)
        self.Table = ttk.Treeview(Table_Frame,columns=("Roll-No","Name","Email-ID",
"Gender","D.O.B","Address","Contact No"),xscrollcommand=X_scroll.set,
yscrollcommand=Y_scroll.set)

        X_scroll.pack(side=BOTTOM,fill=X)
        Y_scroll.pack(side=RIGHT,fill=Y)
        X_scroll.config(command=self.Table.xview)
        Y_scroll.config(command=self.Table.yview)

        self.Table.heading("Roll-No",text="Roll-No")
        self.Table.heading("Name",text="Name")
        self.Table.heading("Email-ID",text="Email-ID")
        self.Table.heading("Gender",text="Gender")
        self.Table.heading("Contact No",text="Contact No")
        self.Table.heading("D.O.B",text="D.O.B")
        self.Table.heading("Address",text="Address")

        

        self.Table['show']="headings"
        self.Table.column("Roll-No",width=100)
        self.Table.column("Name",width=100)
        self.Table.column("Email-ID",width=100)
        self.Table.column("Gender",width=100)
        self.Table.column("Contact No",width=100)
        self.Table.column("D.O.B",width=100)
        self.Table.column("Address",width=150)

        

        self.Table.pack(fill=BOTH,expand=1)
        self.Table.bind('<ButtonRelease 1>',self.get_fields)
        self.txt_DOB.bind("<FocusIn>", self.foc_in)
        self.txt_DOB.bind("<FocusOut>", self.foc_out)


        self.put_placeholder()
        self.show_data()

        

    def add_student(self):

        if self.roll_no.get() == "" or self.name.get() == "" or self.email_id.get() == ""
  or self.gender.get()== "" or self.dob.get()== ""or self.contact.get() == ""
  or self.txt_address.get('1.0',END) == "":

            messagebox.showerror("Error","All Fields are Required")

        else:
            connect = pymysql.connect("localhost","root","","Student Management")
            curr = connect.cursor()

            

            curr.execute("INSERT INTO STUDENT VALUES(%s,%s,%s,%s,%s,%s,%s)",
(self.roll_no.get(), self.name.get(), self.email_id.get(), self.gender.get(),
self.dob.get(), self.txt_address.get('1.0',END), self.contact.get() ))

            connect.commit()

            self.show_data()
            self.clear_field()
            connect.close()

            messagebox.showinfo("Succes","Record Successfully Added")

        

    def show_data(self):

        connect = pymysql.connect("localhost","root","","Student Management")
        curr = connect.cursor()

        

        curr.execute("SELECT * from student")
        rows = curr.fetchall()

        if(len(rows)!=0):

            self.Table.delete(*self.Table.get_children())
            for row in rows:

                self.Table.insert('',END,values=row)

            connect.commit()
        connect.close()

        

    def clear_field(self):

        if self.roll_no.get() == "" or self.name.get() == "" or self.email_id.get() == ""
  or self.gender.get()== "" or self.dob.get()== ""or self.contact.get() == "" 
or self.txt_address.get('1.0',END) == "":

            messagebox.showerror("Error","Fields Empty")

        else:

            self.roll_no.set("")
            self.name.set("")
            self.email_id.set("")
            self.gender.set("")
            self.contact.set("")
            self.dob.set("")
            self.txt_address.delete("1.0",END)

        

    def get_fields(self,event):

        cursor_row = self.Table.focus()
        content = self.Table.item(cursor_row)
        row = content['values']

        

        self.roll_no.set(row[0])
        self.name.set(row[1])
        self.email_id.set(row[2])
        self.gender.set(row[3])
        self.contact.set(row[6])
        self.dob.set(row[4])

        self.txt_address.delete("1.0",END)
        self.txt_address.insert(END,row[5])

        

    def update(self):

        if self.roll_no.get() == "" or self.name.get() == "" or self.email_id.get() == ""
  or self.gender.get()== "" or self.dob.get()== ""or self.contact.get() == "" 
or self.txt_address.get('1.0',END) == "":

            messagebox.showerror("Error","Fields are Empty")

        else:

            connect = pymysql.connect("localhost","root","","Student Management")
            curr = connect.cursor()

            

            curr.execute("UPDATE STUDENT SET Sname=%s,email_id=%s,gender=%s,dob=%s,
address=%s,contact_no=%s where roll_no=%s",(self.name.get(),

                                                         self.email_id.get(),

                                                         self.gender.get(),

                                                         self.dob.get(),

                                                         self.txt_address.get('1.0',END),

                                                         self.contact.get(),

                                                         self.roll_no.get()

                                                        ))

            connect.commit()

            self.show_data()
            self.clear_field()
            connect.close()

            messagebox.showinfo("Succes","Record Successfully Updated")

        

    def delete(self):

        if self.roll_no.get() == "" or self.name.get() == "" or self.email_id.get() == ""
  or self.gender.get()== "" or self.dob.get()== ""or self.contact.get() == "" 
or self.txt_address.get('1.0',END) == "":

            messagebox.showerror("Error","Fields are Empty")

        else:

            connect = pymysql.connect("localhost","root","","Student Management")
            curr = connect.cursor()

            

            curr.execute("DELETE from STUDENT where roll_no=%s",(self.roll_no.get()))

                                                                             

            

            connect.commit()

            self.show_data()
            self.clear_field()
            connect.close()

            messagebox.showinfo("Succes","Record Successfully Deleted")

        

    def search_data(self):

        if self.search_combo.get() == "" or self.search_field.get() == "":

            messagebox.showerror("Error","Some Fields might be Empty")

        else:

            connect = pymysql.connect("localhost","root","","Student Management")
            curr = connect.cursor()

            

            curr.execute("SELECT * from student where "+str(self.search_combo.get())+
" LIKE '%"+str(self.search_field.get())+"%'")

            rows = curr.fetchall()

            if(len(rows)!=0):

                self.Table.delete(*self.Table.get_children())

                for row in rows:

                    self.Table.insert('',END,values=row)

                connect.commit()
            connect.close()

            

    def put_placeholder(self):

        self.txt_DOB.insert(0,"DD-MM-YYYY")

        self.txt_DOB['fg'] = "grey"


    def foc_in(self,event):

        if self.txt_DOB['fg'] == "grey":

            self.txt_DOB.delete('0', 'end')
            self['fg'] = "grey"


    def foc_out(self, event):

        if not self.get():
            self.txt_DOB.put_placeholder()

            

    def logout(self):

        self.root.destroy() 

        st_root = Tk()
        st = Login(st_root)
        st_root.mainloop()        

        

    def employee_btn(self):

        self.root.destroy() 

        st_root = Tk()
        st = Employee(st_root)
        st_root.mainloop()

        

    def dept_btn(self):

        self.root.destroy()

        st_root = Tk()
        st = Department(st_root)
        st_root.mainloop()

        

    def pass_btn(self):

        self.root.destroy() 

        st_root = Tk()
        st = Password(st_root)
        st_root.mainloop()



        

          5.Class Login(Login Window)-   




class Login:

    def __init__(self,root):

        self.root = root
        self.root.title("Login")
        self.root.geometry("350x350+450+200")
        self.root.resizable(0,0)

        

        self.username = StringVar()
        self.password = StringVar()

        

        title = Label(self.root,text="Login",bd = 5,relief=GROOVE,
font=("Arial",30,"bold"),bg="#FFFCF9",fg="#0A090C")

        title.pack(side=TOP,fill=X)

        

        Main_Frame = Frame(self.root,bd=4,relief=RIDGE,bg="#F0EDEE")
        Main_Frame.place(x=0,y=60,width=350,height=290)

        

        lbl_username = Label(Main_Frame,text="Username :-",bg="#F0EDEE",fg="#0A090C",
font=("Arial",10,"bold"))

        lbl_username.grid(row = 1,column=0,pady=45,padx=30,sticky="w")

    

        txt_username = Entry(Main_Frame,textvariable=self.username,width = 12,
font=("Arial",15,"bold"),bd=5,relief=GROOVE)

        txt_username.grid(row = 1,column=1,pady=45,padx=5,sticky="w")

        

        lbl_password = Label(Main_Frame,text="Password :-",bg="#F0EDEE",fg="#0A090C"
,font=("Arial",10,"bold"))

        lbl_password.grid(row = 2,column=0,pady=5,padx=30,sticky="w")

    

        txt_password = Entry(Main_Frame,show="*",textvariable=self.password,width = 12,
font=("Arial",15,"bold"),bd=5,relief=GROOVE)

        txt_password.grid(row = 2,column=1,pady=5,padx=5,sticky="w")

        

        btn_frame = Frame(Main_Frame,bg="#F0EDEE")

        btn_frame.place(x=100,y=200,width=170)

        

        login_btn = Button(btn_frame,text="Login",width=20,relief=GROOVE,bg="#00A1E4",
font=("Arial",10,"bold"),command=self.validate_user)
.grid(row=0,column=0,padx=0,pady=10)

        

    def validate_user(self):

        if self.username.get() == "" or self.password.get() == "":

            messagebox.showerror("Error","Fields Missing")

        else:

            connect = pymysql.connect("localhost","root","","Student Management")
            curr = connect.cursor()

            

            curr.execute("SELECT * from admin")
            rows = curr.fetchall()


            for row in rows:

                if row[1] == self.username.get() and row[2] == self.password.get():

                    self.root.destroy() 
                    st_root = Tk()
                    st = Student(st_root)
                    st_root.mainloop()  

                else:

                    messagebox.showerror("Error","Please Make Sure That the Details are
 Correct")

              

             

root = Tk()
st = Login(root)
root.mainloop()





Graphical User Interface -



Login Page-




Manage Student Window -





Manage Employees Window -






Manage Department Window -






Manage Password Window -






Hope you liked this project using tkinter and pymysql. Please like and share this article.
Happy Pythoning!!!.


More Articles of Siddhesh Borkar:

Name Views Likes
Python MySQLdb - Creating Triggers using Python 3654 2
Python MySQLdb - Writing Dynamic SQL Query 2159 2
Python MySQLdb Introduction 392 2
Python UrlLib - How to access the Web using proxies in Python 1393 2
Python How to Set and Get Environment Variables 568 2
Python UrlLib - How to Log-in to a website using urllib 1843 2
Python MySQLdb - Retrieving images from a MySQL table. 751 2
Python UrlLib :- Parse a website using re and urllib 439 2
Python How to Upgrade PIP 291 2
Python Set Environment Variables 393 2
Python MySQLdb - Creating a database table using MySQLdb. 422 2
Python UrlLib:- urllib.parse Module 637 2
Python UrlLib - How to scrape images from a Website 997 2
Python UrlLib Introduction 370 2
Python MySQLdb - Deleting data using MySQLdb 356 2
Python MySQLdb - Updating data into a database. 402 2
Python UrlLib - How to deal with 403 Forbidden Error 3120 2
Python - PIP Remove Package 498 2
Student Management System with database connectivity using tkinter 7078 3
Python UrlLib - urllib.robotparser Module 479 2
Python MySQLdb - Dropping table using MySQLdb 364 2
Python UrlLib :- urlencode Method 429 2
Python UrlLib Module- How to scrap links from a Webpage 501 2
Python MySQLdb - Storing Images in MySQL as a Blob 2195 2
Python UrlLib :- How to download files from the Internet 960 2
Python How to Upgrade PIP3 1664 2
Python UrlLib-urllib.error Module 412 2
Python MySQLdb - Orderby and Limit Clause 442 2
Python Get Environment Variable 442 2
Python UrlLib- Downloading Images as JPG from URL. 871 2
Python MySQLdb - Read Operation using MySQLdb 362 2
Python MySQLdb - Inserting data into a database table using MySQLdb. 386 2
Python Reading Environment Variables 575 2
Python MySQLdb - SQL Joins 554 2
Python How and When to use __str__ 510 2
Python MySQLdb - Performing Transactions & Handling Errors. 510 3
Python UrlLib- urllib.requests Module 498 2

Comments

  • tue
    27-Dec-2022 03:07:04 PM
    The picture seems to be unable to line up, can you re-share the ER chart
  • Ausborn
    27-Nov-2021 04:53:30 PM
    Would you please help with the database. the project is beautiful, infarct l tried to run it but its not going through.
  • Delwyn
    16-Oct-2021 11:12:26 PM
    Upload the database also bro the project is so amazing 
  • jigyasa
    3-Apr-2021 12:35:52 AM
    Can you please share the database of this project? I need it for college. It will be really helpful.