學生信息管理系統源碼


  1 from tkinter import *
  2 from tkinter import messagebox
  3 from tkinter import filedialog
  4 from PIL import Image,ImageTk
  5 import tkinter
  6 import sqlite3
  7 #打開本地數據庫用於存儲用戶信息
  8 conn = sqlite3.connect('student1.db')
  9 #主界面
 10 root=Tk()
 11 root.title("學生信息管理系統")
 12 root.config(width=600)
 13 root.config(height=600)
 14 
 15 #添加窗口背景圖片
 16 canvas=tkinter.Canvas(root,
 17                       width=600,            #指定Canvas組件的寬度
 18                       height=600,           #指定Canvas組件的高度
 19                       bg='white'            #指定Canvas組件的背景色
 20                       #im=tkinter.PhotoImage(file='img.gif')    使用PhotoImage打開圖片
 21                       )
 22 image=Image.open("E:\圖片\python圖片素材\雙心.jpg")
 23 im=ImageTk.PhotoImage(image)
 24 
 25 canvas.create_image(400,200,image=im)    #使用creat_image將圖片添加到Canvas
 26 canvas.pack()
 27 
 28 
 29 
 30 """******************************************************************************************"""
 31 
 32 """************************       錄入信息部分      ********************************************"""
 33 
 34 
 35 
 36 
 37 #增加學生信息
 38 def insert_stu():  #錄入學生信息
 39     root1=Tk()
 40     root1.title("錄入學生信息")
 41     root1.config(width=600)
 42     root1.config(height=600)   
 43     
 44    
 45 
 46     
 47     
 48     
 49     #創建關聯字符變量
 50     varName=StringVar(root1,value='')
 51     varId=StringVar(root1,value='')
 52     varClass=StringVar(root1,value='')
 53     varAge=StringVar(root1,value='') 
 54     varNum=StringVar(root1,value='')
 55     
 56     label=Label(root1,text="編號",font=("微軟雅黑 -20"))
 57     label.place(x=30,y=10,height=40,width=80)
 58     
 59     #創建標簽組件
 60     label=Label(root1,text="姓名:",font=("微軟雅黑 -20"))
 61     #label.grid(row=0,sticky=E)
 62     label.place(x=30,y=60,height=40,width=80)
 63     
 64     label=Label(root1,text="學號:",font=("微軟雅黑 -20"))
 65     #label.grid(row=1,sticky=E)
 66     label.place(x=30,y=110,height=40,width=80)
 67     
 68 
 69     label=Label(root1,text="班級:",font=("微軟雅黑 -20"))
 70     #label.grid(row=2,sticky=E)
 71     label.place(x=30,y=160,height=40,width=80)
 72     
 73     
 74     label=Label(root1,text="年齡:",font=("微軟雅黑 -20"))
 75     #label.grid(row=3,sticky=E)
 76     label.place(x=30,y=210,height=40,width=80)
 77     
 78     #創建文本框組件,同時設置關聯的變量
 79     #    姓名entryName
 80     #    學號entryId
 81     #    班級entryClass
 82     #    年齡entryAge
 83     entryNum=Entry((root1),textvariable=varNum)
 84     entryNum.place(x=120,y=10,height=40,width=200)
 85     
 86     entryName=Entry((root1),textvariable=varName)
 87     #entryName.grid(row=0,column=1,sticky=W)
 88     entryName.place(x=120,y=60,height=40,width=200)
 89     
 90     entryId=Entry((root1),textvariable=varId)
 91     #entryId.grid(row=1,column=1,sticky=W)
 92     entryId.place(x=120,y=110,height=40,width=200)
 93     
 94     entryClass=Entry((root1),textvariable=varClass)
 95     #entryClass.grid(row=2,column=1,sticky=W)
 96     entryClass.place(x=120,y=160,height=40,width=200)
 97     
 98     entryAge=Entry((root1),textvariable=varAge)
 99     #entryAge.grid(row=3,column=1,sticky=W)
100     entryAge.place(x=120,y=210,height=40,width=200)
101     
102     
103     def buttonOK():
104         conn = sqlite3.connect('student1.db')
105         stu_num=eval(entryNum.get())
106         stu_id = eval(entryId.get())#學號輸入
107         stu_name =str(entryName.get())#姓名錄入
108         stu_class =eval(entryClass.get())#班級錄入
109         stu_age=eval(entryAge.get())#年齡錄入  
110         
111         cursor = conn.execute("SELECT * from StudentTable where StuId = '%s';"%stu_id)
112         conn.commit()
113         for row in cursor:
114             if stu_id == row[1]:
115                 messagebox.showerror('警告',message='學號重復,請重新輸入')
116                 break
117             else:
118                 try:
119                     
120                     sql1 = "INSERT INTO StudentTable(ID,StuId,NAME,CLASS,AGE)"
121                     sql1+="VALUES(%d,%d,'%s',%d,%d)"%(stu_num,stu_id,stu_name,stu_class,stu_age)
122                     conn.execute(sql1)                               
123                     conn.commit()
124                     messagebox.showinfo(title='恭喜',message='錄入成功!')
125                 except:
126                     messagebox.showerror('警告',message='未錄入成功')
127         
128             
129                 
130                 
131                 
132     buttonbuttonOK=Button(root1,text="錄入學生信息",font=("微軟雅黑 -20"),command=buttonOK)
133     buttonbuttonOK.place(x=150,y=300,height=40,width=200)
134     def cancel():
135         varName.set('')
136         varId.set('')
137         varClass.set('')
138         varAge.set('')
139         varNum.set('')
140         
141     #取消鍵
142     buttonCancel=Button(root1,text="取消",font=("微軟雅黑 -20"),command=cancel)
143     buttonCancel.place(x=150,y=350,height=40,width=200)
144     
145     #退出鍵
146     buttondel=Button(root1,text="退出",font=("微軟雅黑 -20"),command=root1.destroy)
147     buttondel.place(x=150,y=400,height=40,width=200)
148     root1.mainloop()
149 
150 
151 
152 #錄入完成
153 """******************************************************************************************"""
154 
155 """************************       刪除的部分      ********************************************"""
156 #刪除學生信息
157 
158 
159  
160 def delete_stu(): 
161     root2=Tk()
162     root2.title("刪除學生信息")
163     root2.config(width=600)
164     root2.config(height=600)
165     
166     
167     #添加窗口背景圖片
168     
169     
170     
171     #創建標簽
172     label=Label(root2,text="學號:",font=("微軟雅黑 -20"))
173     #label.grid(row=1,sticky=E)
174     label.place(x=30,y=20,height=40,width=80)
175     
176     entryId=Entry(root2)
177     entryId.place(x=120,y=20,height=40,width=200)
178     
179     def delete():
180 
181         conn = sqlite3.connect('student1.db')
182         stu_id = eval(entryId.get())#學號輸入
183         cursor = conn.execute("SELECT * from StudentTable where StuId = '%s';"%stu_id)
184         conn.commit()
185         
186         for row in cursor:
187              if stu_id == row[0]:     
188                 sql1 = "DELETE INTO StudentTable(StuId,NAME,CLASS,AGE)"
189                 sql1 += " VALUES(%d,'%s',%d,%d);"%('','','','')
190                 conn.execute(sql1)
191                 conn.commit()
192         
193         
194         
195         
196         
197     #刪除鍵   
198     buttondelete=Button(root2,text="刪除",font=("微軟雅黑 -20"),command=delete)
199     buttondelete.place(x=150,y=160,height=40,width=200)
200     
201     #退出鍵
202     buttondel=Button(root2,text="退出",font=("微軟雅黑 -20"),command=root2.destroy)
203     buttondel.place(x=150,y=210,height=40,width=200)
204 
205 
206     root2.mainloop()
207 #刪除完成
208 """******************************************************************************************"""
209 
210 """************************       查詢的部分      ********************************************"""
211 
212 
213 
214 #查詢學生信息
215 def sel_stu():
216     root3=Tk()
217     root3.title("查詢學生信息")
218     root3.config(width=600)
219     root3.config(height=600) 
220     
221     
222    
223     
224     #創建關聯變量
225     sId=StringVar(root3,value='')
226     
227     #創建文本組件框\標簽組件
228     label=Label(root3,text="學號",font=("微軟雅黑 -20"))
229     label.place(x=30,y=10,height=40,width=80)
230     
231     selId=Entry((root3),textvariable=sId)
232     selId.place(x=120,y=10,height=40,width=200)
233     
234 
235     
236     def select():
237         
238         #創建關聯字符變量
239         varName=StringVar(root3,value='')
240         varId=StringVar(root3,value='')
241         varClass=StringVar(root3,value='')
242         varAge=StringVar(root3,value='')         
243         
244         
245         conn = sqlite3.connect('student1.db')
246         stu_id = eval(selId.get())#學號輸入
247         cursor = conn.execute("SELECT * from StudentTable where StuId = '%d';"%stu_id)
248         conn.commit()
249         for row in cursor:
250              if stu_id == row[1]:
251                  stu_name=row[2]
252                  stu_class=row[3]
253                  stu_age=row[4]
254 
255 
256 
257 
258         #創建標簽組件
259         label=Label(root3,text="姓名:",font=("微軟雅黑 -20"))
260         #label.grid(row=0,sticky=E)
261         label.place(x=30,y=110,height=40,width=80)
262     
263         label=Label(root3,text="學號:",font=("微軟雅黑 -20"))
264         #label.grid(row=1,sticky=E)
265         label.place(x=30,y=160,height=40,width=80)
266     
267 
268         label=Label(root3,text="班級:",font=("微軟雅黑 -20"))
269         #label.grid(row=2,sticky=E)
270         label.place(x=30,y=210,height=40,width=80)
271     
272     
273         label=Label(root3,text="年齡:",font=("微軟雅黑 -20"))
274         #label.grid(row=3,sticky=E)
275         label.place(x=30,y=260,height=40,width=80)
276     
277         #創建文本框組件,同時設置關聯的變量
278         #    姓名entryName
279         #    學號entryId
280         #    班級entryClass
281         #    年齡entryAge
282     
283         entryName=Entry((root3),textvariable=varName)
284         #entryName.grid(row=0,column=1,sticky=W)
285         entryName.place(x=120,y=110,height=40,width=200)
286     
287         entryId=Entry((root3),textvariable=varId)
288         #entryId.grid(row=1,column=1,sticky=W)
289         entryId.place(x=120,y=160,height=40,width=200)
290      
291         entryClass=Entry((root3),textvariable=varClass)
292         #entryClass.grid(row=2,column=1,sticky=W)
293         entryClass.place(x=120,y=210,height=40,width=200)
294     
295         entryAge=Entry((root3),textvariable=varAge)
296         #entryAge.grid(row=3,column=1,sticky=W)
297         entryAge.place(x=120,y=260,height=40,width=200)
298         
299         varName.set(stu_name)
300         varId.set(stu_id)
301         varClass.set(stu_class)
302         varAge.set(stu_age)
303     
304     #查詢鍵
305     buttonselect=Button(root3,text="查詢",font=("微軟雅黑 -20"),command=select)
306     buttonselect.place(x=200,y=60,height=40,width=100) 
307     
308     #取消鍵
309     def cancel():
310         sId.set('')
311     
312     buttoncancel=Button(root3,text="取消",font="微軟雅黑 -20",command=cancel)
313     buttoncancel.place(x=50,y=60,height=40,width=100)
314     
315     #退出鍵
316     buttondel=Button(root3,text="退出",font="微軟雅黑 -20",command=root3.destroy)
317     buttondel.place(x=350,y=60,height=40,width=100)
318     root3.mainloop()
319 
320 
321 #查詢完成
322 """******************************************************************************************"""
323 
324 """************************       修改的部分      ********************************************"""
325 
326 
327 #修改學生信息
328 def change_stu():
329     root4=Tk()
330     root4.title("修改學生信息")
331     root4.config(width=600)
332     root4.config(height=600) 
333     
334     #創建關聯變量
335     sId=StringVar(root4,value='')
336     
337     #創建文本組件框\標簽組件
338     label=Label(root4,text="學號",font=("微軟雅黑 -20"))
339     label.place(x=30,y=10,height=40,width=80)
340     
341     selId=Entry((root4),textvariable=sId)
342     selId.place(x=120,y=10,height=40,width=200)
343     
344 
345     
346     def select():
347         
348         #創建關聯字符變量
349         varName=StringVar(root4,value='')
350         varId=StringVar(root4,value='')
351         varClass=StringVar(root4,value='')
352         varAge=StringVar(root4,value='')         
353         
354         
355         conn = sqlite3.connect('student1.db')
356         stu_id = eval(selId.get())#學號輸入
357         cursor = conn.execute("SELECT * from StudentTable where StuId = '%s';"%stu_id)
358         conn.commit()
359         for row in cursor:
360              if stu_id == row[1]:
361                  
362                  stu_name=row[2]
363                  stu_class=row[3]
364                  stu_age=row[4]
365 
366 
367 
368 
369         #創建標簽組件
370         label=Label(root4,text="姓名:",font=("微軟雅黑 -20"))
371         #label.grid(row=0,sticky=E)
372         label.place(x=30,y=110,height=40,width=80)
373     
374         label=Label(root4,text="學號:",font=("微軟雅黑 -20"))
375         #label.grid(row=1,sticky=E)
376         label.place(x=30,y=160,height=40,width=80)
377     
378 
379         label=Label(root4,text="班級:",font=("微軟雅黑 -20"))
380         #label.grid(row=2,sticky=E)
381         label.place(x=30,y=210,height=40,width=80)
382     
383     
384         label=Label(root4,text="年齡:",font=("微軟雅黑 -20"))
385         #label.grid(row=3,sticky=E)
386         label.place(x=30,y=260,height=40,width=80)
387     
388         #創建文本框組件,同時設置關聯的變量
389         #    姓名entryName
390         #    學號entryId
391         #    班級entryClass
392         #    年齡entryAge
393     
394         entryName=Entry((root4),textvariable=varName)
395         #entryName.grid(row=0,column=1,sticky=W)
396         entryName.place(x=120,y=110,height=40,width=200)
397     
398         entryId=Entry((root4),textvariable=varId)
399         #entryId.grid(row=1,column=1,sticky=W)
400         entryId.place(x=120,y=160,height=40,width=200)
401      
402         entryClass=Entry((root4),textvariable=varClass)
403         #entryClass.grid(row=2,column=1,sticky=W)
404         entryClass.place(x=120,y=210,height=40,width=200)
405     
406         entryAge=Entry((root4),textvariable=varAge)
407         #entryAge.grid(row=3,column=1,sticky=W)
408         entryAge.place(x=120,y=260,height=40,width=200)
409         
410         varName.set(stu_name)
411         varId.set(stu_id)
412         varClass.set(stu_class)
413         varAge.set(stu_age)
414     
415     def save():
416         
417         conn = sqlite3.connect('student1.db')
418       
419         stu_id=eval(entryId.get())
420         stu_name = entryName.get()#姓名錄入
421         stu_class = entryClass.get()#班級錄入
422         stu_age=entryAge.get()#年齡錄入
423        
424         sql1 = "UPDATE INTO StudentTable(StuId,NAME,CLASS,AGE)"
425         sql1 += "SET NAME=%s CLASS=%d AGE=%d WHERE StuId=%d"
426         arge=(stu_name,stu_class,stu_age,selId)
427         update(sql1,args)
428         conn.commit()
429         messagebox.showinfo(title='恭喜',message='錄入成功!')       
430  
431     
432 
433     def cancel():
434         sId.set('')        
435 
436     #取消鍵    
437     buttoncancel=Button(root4,text="取消",font="微軟雅黑 -20",command=cancel)
438     buttoncancel.place(x=20,y=60,height=40,width=60)
439     
440     #查詢鍵
441     buttonselect=Button(root4,text="查詢",font=("微軟雅黑 -20"),command=select)
442     buttonselect.place(x=100,y=60,height=40,width=60)    
443 
444    
445     #保存鍵
446     buttonsave=Button(root4,text="保存",font="微軟雅黑 -20",command=save)
447     buttonsave.place(x=180,y=60,height=40,width=60)
448     
449     #退出鍵
450     buttondel=Button(root4,text="退出",font="微軟雅黑 -20",command=root4.destroy)
451     buttondel.place(x=260,y=60,height=40,width=60)
452     root3.mainloop()    
453     
454     
455     root4.mainloop()
456     
457     
458 
459     
460 #創建頂級菜單及其下拉菜單
461 menubar=Menu(root)
462 filemenu=Menu(menubar,tearoff=False)
463 filemenu.add_command(label="增加",command=insert_stu)  
464 filemenu.add_command(label="刪除",command=delete_stu)#command接刪除函數/下面接修改函數
465 filemenu.add_command(label="修改",command=change_stu)
466 filemenu.add_command(label="查詢",command=sel_stu)
467 
468 filemenu.add_separator()
469 filemenu.add_command(label="退出",command=root.destroy)
470 menubar.add_cascade(label="菜單",menu=filemenu)  
471     
472 #顯示菜單   
473 root.config(menu=menubar)
474 
475 buttoninsert_stu=Button(root,text="錄入學生信息",font=("微軟雅黑 -20"),command=insert_stu)
476 #buttoninsert_stu.grid(row=2,column=0)由下面的代碼將該代碼覆蓋,顯示的是在界面上的位置
477 buttoninsert_stu.place(x=50,y=50,height=40,width=200)
478 
479 buttondelete_stu=Button(root,text="刪除學生信息",font=("微軟雅黑 -20"),command=delete_stu)
480 #buttondelete_stu.grid(row=2,column=1)
481 buttondelete_stu.place(x=50,y=150,height=40,width=200)
482 
483 buttonchange_stu=Button(root,text="修改學生信息",font=("微軟雅黑 -20"),command=change_stu)
484 #buttonchange_stu.grid(row=4,column=0)
485 buttonchange_stu.place(x=50,y=250,height=40,width=200)
486 
487 buttonsel_stu=Button(root,text="查詢學生信息",font=("微軟雅黑 -20"),command=sel_stu)
488 #buttonsel_stu.grid(row=4,column=1)
489 buttonsel_stu.place(x=50,y=350,height=40,width=200)
490 root.mainloop()

數據庫需要自己創建


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM