学生信息管理系统源码

时间:2020-05-20
本文章向大家介绍学生信息管理系统源码,主要包括学生信息管理系统源码使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
  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()

数据库需要自己创建

原文地址:https://www.cnblogs.com/zhou2420032204/p/12924717.html