· 4 years ago · Aug 18, 2021, 03:12 AM
1from tkinter import *
2import tkinter.ttk as ttk
3import tkinter.messagebox as tkMessageBox
4import sqlite3
5
6
7
8def Database():
9 global conn, cursor
10
11 conn = sqlite3.connect("student.db")
12 cursor = conn.cursor()
13
14 cursor.execute(
15 "CREATE TABLE IF NOT EXISTS STUD_REGISTRATION (STU_ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, STU_NAME TEXT, STU_CONTACT TEXT, STU_EMAIL TEXT, STU_ROLLNO TEXT, STU_BRANCH TEXT)")
16
17
18
19def DisplayForm():
20
21 display_screen = Tk()
22
23 display_screen.geometry("1000x600")
24
25 display_screen.title("Student Management System")
26 global tree
27 global SEARCH
28 global name, contact, email, roll, branch
29 SEARCH = StringVar()
30 name = StringVar()
31 contact = StringVar()
32 email = StringVar()
33 roll = StringVar()
34 branch = StringVar()
35
36
37 TopViewForm = Frame(display_screen, width=600, bd=1, relief=SOLID)
38 TopViewForm.pack(side=TOP, fill=X)
39
40 LFrom = Frame(display_screen, width="350")
41 LFrom.pack(side=LEFT, fill=Y)
42
43 LeftViewForm = Frame(display_screen, width=500, bg="gray")
44 LeftViewForm.pack(side=LEFT, fill=Y)
45
46 MidViewForm = Frame(display_screen, width=600)
47 MidViewForm.pack(side=RIGHT)
48
49 lbl_text = Label(TopViewForm, text="Student Management System", font=('verdana', 18), width=600, bg="#1C2833",
50 fg="white")
51 lbl_text.pack(fill=X)
52
53 Label(LFrom, text="Name ", font=("Arial", 12)).pack(side=TOP)
54 Entry(LFrom, font=("Arial", 10, "bold"), textvariable=name).pack(side=TOP, padx=10, fill=X)
55 Label(LFrom, text="Contact ", font=("Arial", 12)).pack(side=TOP)
56 Entry(LFrom, font=("Arial", 10, "bold"), textvariable=contact).pack(side=TOP, padx=10, fill=X)
57 Label(LFrom, text="Email ", font=("Arial", 12)).pack(side=TOP)
58 Entry(LFrom, font=("Arial", 10, "bold"), textvariable=email).pack(side=TOP, padx=10, fill=X)
59 Label(LFrom, text="ID ", font=("Arial", 12)).pack(side=TOP)
60 Entry(LFrom, font=("Arial", 10, "bold"), textvariable=roll).pack(side=TOP, padx=10, fill=X)
61 Label(LFrom, text="Branch ", font=("Arial", 12)).pack(side=TOP)
62 Entry(LFrom, font=("Arial", 10, "bold"), textvariable=branch).pack(side=TOP, padx=10, fill=X)
63 Button(LFrom, text="Submit", font=("Arial", 10, "bold"), command=register).pack(side=TOP, padx=10, pady=5, fill=X)
64
65
66 lbl_txtsearch = Label(LeftViewForm, text="Enter name to Search", font=('verdana', 10), bg="gray")
67 lbl_txtsearch.pack()
68
69 search = Entry(LeftViewForm, textvariable=SEARCH, font=('verdana', 15), width=10)
70 search.pack(side=TOP, padx=10, fill=X)
71
72 btn_search = Button(LeftViewForm, text="Search", command=SearchRecord)
73 btn_search.pack(side=TOP, padx=10, pady=10, fill=X)
74
75 btn_view = Button(LeftViewForm, text="View All", command=DisplayData)
76 btn_view.pack(side=TOP, padx=10, pady=10, fill=X)
77
78 btn_reset = Button(LeftViewForm, text="Reset", command=Reset)
79 btn_reset.pack(side=TOP, padx=10, pady=10, fill=X)
80
81 btn_delete = Button(LeftViewForm, text="Delete", command=Delete)
82 btn_delete.pack(side=TOP, padx=10, pady=10, fill=X)
83
84 scrollbarx = Scrollbar(MidViewForm, orient=HORIZONTAL)
85 scrollbary = Scrollbar(MidViewForm, orient=VERTICAL)
86 tree = ttk.Treeview(MidViewForm, columns=("Student Id", "Name", "Contact", "Email", "Roll", "Branch"),
87 selectmode="extended", height=100, yscrollcommand=scrollbary.set, xscrollcommand=scrollbarx.set)
88 scrollbary.config(command=tree.yview)
89 scrollbary.pack(side=RIGHT, fill=Y)
90 scrollbarx.config(command=tree.xview)
91 scrollbarx.pack(side=BOTTOM, fill=X)
92
93 tree.heading('Student Id', text="Student Id", anchor=W)
94 tree.heading('Name', text="Name", anchor=W)
95 tree.heading('Contact', text="Contact", anchor=W)
96 tree.heading('Email', text="Email", anchor=W)
97 tree.heading('Roll', text="Roll", anchor=W)
98 tree.heading('Branch', text="Branch", anchor=W)
99
100 tree.column('#0', stretch=NO, minwidth=0, width=0)
101 tree.column('#1', stretch=NO, minwidth=0, width=100)
102 tree.column('#2', stretch=NO, minwidth=0, width=150)
103 tree.column('#3', stretch=NO, minwidth=0, width=80)
104 tree.column('#4', stretch=NO, minwidth=0, width=120)
105 tree.pack()
106 DisplayData()
107
108
109
110def register():
111 Database()
112
113 name1 = name.get()
114 con1 = contact.get()
115 email1 = email.get()
116 rol1 = roll.get()
117 branch1 = branch.get()
118
119 if name1 == '' or con1 == '' or email1 == '' or rol1 == '' or branch1 == '':
120 tkMessageBox.showinfo("Warning", "fill the empty field!!!")
121 else:
122
123 conn.execute('INSERT INTO STUD_REGISTRATION (STU_NAME,STU_CONTACT,STU_EMAIL,STU_ROLLNO,STU_BRANCH) \
124 VALUES (?,?,?,?,?)', (name1, con1, email1, rol1, branch1));
125 conn.commit()
126 tkMessageBox.showinfo("Message", "Stored successfully")
127
128 DisplayData()
129 conn.close()
130
131
132def Reset():
133
134 tree.delete(*tree.get_children())
135
136 DisplayData()
137
138 SEARCH.set("")
139 name.set("")
140 contact.set("")
141 email.set("")
142 roll.set("")
143 branch.set("")
144
145
146def Delete():
147
148 Database()
149 if not tree.selection():
150 tkMessageBox.showwarning("Warning", "Select data to delete")
151 else:
152 result = tkMessageBox.askquestion('Confirm', 'Are you sure you want to delete this record?',
153 icon="warning")
154 if result == 'yes':
155 curItem = tree.focus()
156 contents = (tree.item(curItem))
157 selecteditem = contents['values']
158 tree.delete(curItem)
159 cursor = conn.execute("DELETE FROM STUD_REGISTRATION WHERE STU_ID = %d" % selecteditem[0])
160 conn.commit()
161 cursor.close()
162 conn.close()
163
164
165
166def SearchRecord():
167
168 Database()
169
170 if SEARCH.get() != "":
171
172 tree.delete(*tree.get_children())
173
174 cursor = conn.execute("SELECT * FROM STUD_REGISTRATION WHERE STU_NAME LIKE ?", ('%' + str(SEARCH.get()) + '%',))
175
176 fetch = cursor.fetchall()
177
178 for data in fetch:
179 tree.insert('', 'end', values=(data))
180 cursor.close()
181 conn.close()
182
183
184
185def DisplayData():
186 # open database
187 Database()
188
189 tree.delete(*tree.get_children())
190
191 cursor = conn.execute("SELECT * FROM STUD_REGISTRATION")
192
193 fetch = cursor.fetchall()
194
195 for data in fetch:
196 tree.insert('', 'end', values=(data))
197 cursor.close()
198 conn.close()
199
200
201
202DisplayForm()
203if __name__ == '__main__':
204
205 mainloop()