python编写学生信息管理系统的增删改查功能

纵饮孤独 提交于 2020-07-28 21:55:15

首先需要创建数据库

我这里是创建本地数据库

代码为

1 conn.execute ('''CREATE TABLE IF EXISTS StudentTable(
2    ID INTEGER PRIMARY KEY   AUTOINCREMENT,
3    StuId         INTEGER     NOT NULL,
4    NAME           TEXT      NOT NULL,
5    CLASS            INT       NOT NULL,
6    AGE           INTEGER     Not NULL);''')
7 print("Table created successfully");

对主页的设计,添加本地图片

 1 #打开本地数据库用于存储用户信息
 2 conn = sqlite3.connect('student1.db')
 3 #主界面
 4 root=Tk()
 5 root.title("学生信息管理系统")
 6 root.config(width=600)
 7 root.config(height=600)
 8 
 9 #添加窗口背景图片
10 canvas=tkinter.Canvas(root,
11                       width=600,            #指定Canvas组件的宽度
12                       height=600,           #指定Canvas组件的高度
13                       bg='white'            #指定Canvas组件的背景色
14                       #im=tkinter.PhotoImage(file='img.gif')    使用PhotoImage打开图片
15 
16 
17                       )
18 
19 
20 
21 """               记得在运行时修改文件所在位置。*********************************************************                                                                     """
22 
23 
24 image=Image.open("E:\pathon\实验\大作业\爱心.jpg")
25 im=ImageTk.PhotoImage(image)
26 
27 canvas.create_image(400,200,image=im)    #使用creat_image将图片添加到Canvas
28 canvas.pack()

主页

 1 #创建顶级菜单及其下拉菜单
 2 menubar=Menu(root)
 3 filemenu=Menu(menubar,tearoff=False)
 4 filemenu.add_command(label="增加",command=insert_stu)  
 5 filemenu.add_command(label="删除",command=delete_stu)#command接删除函数/下面接修改函数
 6 filemenu.add_command(label="修改",command=change_stu)
 7 filemenu.add_command(label="查询",command=sel_stu)
 8 
 9 filemenu.add_separator()
10 filemenu.add_command(label="退出",command=root.destroy)
11 menubar.add_cascade(label="菜单",menu=filemenu)  
12     
13 #显示菜单   
14 root.config(menu=menubar)
15 
16 buttoninsert_stu=Button(root,text="录入学生信息",font=("微软雅黑 -20"),command=insert_stu)
17 #buttoninsert_stu.grid(row=2,column=0)由下面的代码将该代码覆盖,显示的是在界面上的位置
18 buttoninsert_stu.place(x=50,y=50,height=40,width=200)
19 
20 buttondelete_stu=Button(root,text="删除学生信息",font=("微软雅黑 -20"),command=delete_stu)
21 #buttondelete_stu.grid(row=2,column=1)
22 buttondelete_stu.place(x=50,y=150,height=40,width=200)
23 
24 buttonchange_stu=Button(root,text="修改学生信息",font=("微软雅黑 -20"),command=change_stu)
25 #buttonchange_stu.grid(row=4,column=0)
26 buttonchange_stu.place(x=50,y=250,height=40,width=200)
27 
28 buttonsel_stu=Button(root,text="查询学生信息",font=("微软雅黑 -20"),command=sel_stu)
29 #buttonsel_stu.grid(row=4,column=1)
30 buttonsel_stu.place(x=50,y=350,height=40,width=200)

分批次操作

实现增加学生信息的功能

  1 #增加学生信息
  2 def insert_stu():  #录入学生信息
  3     root1=Tk()
  4     root1.title("录入学生信息")
  5     root1.config(width=600)
  6     root1.config(height=600)   
  7     
  8    
  9 
 10     
 11     
 12     
 13     #创建关联字符变量
 14     varName=StringVar(root1,value='')
 15     varId=StringVar(root1,value='')
 16     varClass=StringVar(root1,value='')
 17     varAge=StringVar(root1,value='') 
 18 
 19 
 20     
 21     #创建标签组件
 22     label=Label(root1,text="姓名:",font=("微软雅黑 -20"))
 23     #label.grid(row=0,sticky=E)
 24     label.place(x=30,y=60,height=40,width=80)
 25     
 26     label=Label(root1,text="学号:",font=("微软雅黑 -20"))
 27     #label.grid(row=1,sticky=E)
 28     label.place(x=30,y=110,height=40,width=80)
 29     
 30 
 31     label=Label(root1,text="班级:",font=("微软雅黑 -20"))
 32     #label.grid(row=2,sticky=E)
 33     label.place(x=30,y=160,height=40,width=80)
 34     
 35     
 36     label=Label(root1,text="年龄:",font=("微软雅黑 -20"))
 37     #label.grid(row=3,sticky=E)
 38     label.place(x=30,y=210,height=40,width=80)
 39     
 40     #创建文本框组件,同时设置关联的变量
 41     #    姓名entryName
 42     #    学号entryId
 43     #    班级entryClass
 44     #    年龄entryAge
 45 
 46     
 47     entryName=Entry((root1),textvariable=varName)
 48     #entryName.grid(row=0,column=1,sticky=W)
 49     entryName.place(x=120,y=60,height=40,width=200)
 50     
 51     entryId=Entry((root1),textvariable=varId)
 52     #entryId.grid(row=1,column=1,sticky=W)
 53     entryId.place(x=120,y=110,height=40,width=200)
 54     
 55     entryClass=Entry((root1),textvariable=varClass)
 56     #entryClass.grid(row=2,column=1,sticky=W)
 57     entryClass.place(x=120,y=160,height=40,width=200)
 58     
 59     entryAge=Entry((root1),textvariable=varAge)
 60     #entryAge.grid(row=3,column=1,sticky=W)
 61     entryAge.place(x=120,y=210,height=40,width=200)
 62     
 63     
 64     def buttonOK():
 65         i=0
 66 
 67         conn = sqlite3.connect('student1.db')
 68 
 69         stu_id = eval(entryId.get())#学号输入
 70         stu_name =str(entryName.get())#姓名录入
 71         stu_class =eval(entryClass.get())#班级录入
 72         stu_age=eval(entryAge.get())#年龄录入  
 73         
 74         cursor = conn.execute("SELECT * from StudentTable;")
 75         conn.commit()
 76         for row in cursor:#进行遍历查找是否有重复的学号
 77             if stu_id==row[0]:
 78                 i=1
 79                 break
 80             else:
 81                 i=0
 82                 #查找完成若有重复的学号,则警告。否则录入数据库
 83         if i==1:
 84             messagebox.showerror('警告',message='学号重复,请重新输入')
 85         else:
 86             try:
 87                 sql1 = "INSERT INTO StudentTable(StuId,NAME,CLA,AGE)"
 88                 sql1+="VALUES(%d,'%s',%d,%d)"%(stu_id,stu_name,stu_class,stu_age)
 89                 conn.execute(sql1)                               
 90                 conn.commit()
 91                 messagebox.showinfo(title='恭喜',message='录入成功!')
 92                 root1.destroy()
 93             except:
 94                 messagebox.showerror('警告',message='未录入成功')
 95 
 96            
 97     buttonbuttonOK=Button(root1,text="录入学生信息",font=("微软雅黑 -20"),command=buttonOK)
 98     buttonbuttonOK.place(x=150,y=300,height=40,width=200)
 99     def cancel():
100         varName.set('')
101         varId.set('')
102         varClass.set('')
103         varAge.set('')
104 
105         
106     #取消键
107     buttonCancel=Button(root1,text="取消",font=("微软雅黑 -20"),command=cancel)
108     buttonCancel.place(x=150,y=350,height=40,width=200)
109     
110     #退出键
111     buttondel=Button(root1,text="退出",font=("微软雅黑 -20"),command=root1.destroy)
112     buttondel.place(x=150,y=400,height=40,width=200)
113     root1.mainloop()

实现删除学生信息功能

 1 def delete_stu(): 
 2     root2=Tk()
 3     root2.title("删除学生信息")
 4     root2.config(width=600)
 5     root2.config(height=600)
 6     
 7     
 8     #添加窗口背景图片
 9     
10     
11     
12     #创建标签
13     label=Label(root2,text="学号:",font=("微软雅黑 -20"))
14     #label.grid(row=1,sticky=E)
15     label.place(x=30,y=20,height=40,width=80)
16     
17     entryId=Entry(root2)
18     entryId.place(x=120,y=20,height=40,width=200)
19     
20     def delete():
21 
22         conn = sqlite3.connect('student1.db')
23         stu_id = eval(entryId.get())#学号输入
24         conn.execute("DELETE from StudentTable where StuId = '%s';"%stu_id)
25         conn.commit()
26         messagebox.showinfo(title='恭喜',message='删除成功!')
27         root2.destroy()
28         
29         
30         
31         
32         
33     #删除键   
34     buttondelete=Button(root2,text="删除",font=("微软雅黑 -20"),command=delete)
35     buttondelete.place(x=150,y=160,height=40,width=200)
36     
37     #退出键
38     buttondel=Button(root2,text="退出",font=("微软雅黑 -20"),command=root2.destroy)
39     buttondel.place(x=150,y=210,height=40,width=200)
40 
41 
42     root2.mainloop()

实现查询功能

  1 def sel_stu():
  2     root3=Tk()
  3     root3.title("查询学生信息")
  4     root3.config(width=600)
  5     root3.config(height=600) 
  6     
  7     
  8    
  9     
 10     #创建关联变量
 11     sId=StringVar(root3,value='')
 12     
 13     #创建文本组件框\标签组件
 14     label=Label(root3,text="学号",font=("微软雅黑 -20"))
 15     label.place(x=30,y=10,height=40,width=80)
 16     
 17     selId=Entry((root3),textvariable=sId)
 18     selId.place(x=120,y=10,height=40,width=200)
 19     
 20 
 21     
 22     def select():
 23         
 24         #创建关联字符变量
 25         varName=StringVar(root3,value='')
 26         varId=StringVar(root3,value='')
 27         varClass=StringVar(root3,value='')
 28         varAge=StringVar(root3,value='')         
 29         
 30         
 31         conn = sqlite3.connect('student1.db')
 32         stu_id = eval(selId.get())#学号输入
 33         cursor = conn.execute("SELECT * from StudentTable where StuId = '%d';"%stu_id)
 34         conn.commit()
 35         for row in cursor:
 36              if stu_id == row[0]:
 37                  stu_name=row[1]
 38                  stu_class=row[2]
 39                  stu_age=row[3]
 40 
 41 
 42 
 43 
 44         #创建标签组件
 45         label=Label(root3,text="姓名:",font=("微软雅黑 -20"))
 46         #label.grid(row=0,sticky=E)
 47         label.place(x=30,y=110,height=40,width=80)
 48     
 49         label=Label(root3,text="学号:",font=("微软雅黑 -20"))
 50         #label.grid(row=1,sticky=E)
 51         label.place(x=30,y=160,height=40,width=80)
 52     
 53 
 54         label=Label(root3,text="班级:",font=("微软雅黑 -20"))
 55         #label.grid(row=2,sticky=E)
 56         label.place(x=30,y=210,height=40,width=80)
 57     
 58     
 59         label=Label(root3,text="年龄:",font=("微软雅黑 -20"))
 60         #label.grid(row=3,sticky=E)
 61         label.place(x=30,y=260,height=40,width=80)
 62     
 63         #创建文本框组件,同时设置关联的变量
 64         #    姓名entryName
 65         #    学号entryId
 66         #    班级entryClass
 67         #    年龄entryAge
 68     
 69         entryName=Entry((root3),textvariable=varName)
 70         #entryName.grid(row=0,column=1,sticky=W)
 71         entryName.place(x=120,y=110,height=40,width=200)
 72     
 73         entryId=Entry((root3),textvariable=varId)
 74         #entryId.grid(row=1,column=1,sticky=W)
 75         entryId.place(x=120,y=160,height=40,width=200)
 76      
 77         entryClass=Entry((root3),textvariable=varClass)
 78         #entryClass.grid(row=2,column=1,sticky=W)
 79         entryClass.place(x=120,y=210,height=40,width=200)
 80     
 81         entryAge=Entry((root3),textvariable=varAge)
 82         #entryAge.grid(row=3,column=1,sticky=W)
 83         entryAge.place(x=120,y=260,height=40,width=200)
 84         
 85         varName.set(stu_name)
 86         varId.set(stu_id)
 87         varClass.set(stu_class)
 88         varAge.set(stu_age)
 89     
 90     #查询键
 91     buttonselect=Button(root3,text="查询",font=("微软雅黑 -20"),command=select)
 92     buttonselect.place(x=200,y=60,height=40,width=100) 
 93     
 94     #取消键
 95     def cancel():
 96         sId.set('')
 97     
 98     buttoncancel=Button(root3,text="取消",font="微软雅黑 -20",command=cancel)
 99     buttoncancel.place(x=50,y=60,height=40,width=100)
100     
101     #退出键
102     buttondel=Button(root3,text="退出",font="微软雅黑 -20",command=root3.destroy)
103     buttondel.place(x=350,y=60,height=40,width=100)
104     root3.mainloop()

修改功能

  1 def change_stu():
  2     root4=Tk()
  3     root4.title("修改学生信息")
  4     root4.config(width=600)
  5     root4.config(height=600) 
  6     
  7     #创建关联变量
  8     sId=StringVar(root4,value='')
  9     
 10     #创建文本组件框\标签组件
 11     label=Label(root4,text="学号",font=("微软雅黑 -20"))
 12     label.place(x=30,y=10,height=40,width=80)
 13     
 14     selId=Entry((root4),textvariable=sId)
 15     selId.place(x=120,y=10,height=40,width=200)
 16     
 17     #创建关联字符变量
 18     varName=StringVar(root4,value='')
 19     varId=StringVar(root4,value='')
 20     varClass=StringVar(root4,value='')
 21     varAge=StringVar(root4,value='')
 22     
 23     #创建标签组件
 24     
 25     label=Label(root4,text="姓名:",font=("微软雅黑 -20"))
 26     #label.grid(row=0,sticky=E)
 27     label.place(x=30,y=110,height=40,width=80)
 28     
 29     label=Label(root4,text="学号:",font=("微软雅黑 -20"))
 30     #label.grid(row=1,sticky=E)
 31     label.place(x=30,y=160,height=40,width=80)
 32     
 33 
 34     label=Label(root4,text="班级:",font=("微软雅黑 -20"))
 35     #label.grid(row=2,sticky=E)
 36     label.place(x=30,y=210,height=40,width=80)
 37     
 38     
 39     label=Label(root4,text="年龄:",font=("微软雅黑 -20"))
 40     #label.grid(row=3,sticky=E)
 41     label.place(x=30,y=260,height=40,width=80)
 42     
 43         #创建文本框组件,同时设置关联的变量
 44         #    姓名entryName
 45         #    学号entryId
 46         #    班级entryClass
 47         #    年龄entryAge
 48     entryName=Entry((root4),textvariable=varName)
 49         #entryName.grid(row=0,column=1,sticky=W)
 50     entryName.place(x=120,y=110,height=40,width=200)
 51     
 52     entryId=Entry((root4),textvariable=varId)
 53         #entryId.grid(row=1,column=1,sticky=W)
 54     entryId.place(x=120,y=160,height=40,width=200)
 55      
 56     entryClass=Entry((root4),textvariable=varClass)
 57         #entryClass.grid(row=2,column=1,sticky=W)
 58     entryClass.place(x=120,y=210,height=40,width=200)
 59     
 60     entryAge=Entry((root4),textvariable=varAge)
 61         #entryAge.grid(row=3,column=1,sticky=W)
 62     entryAge.place(x=120,y=260,height=40,width=200)
 63       
 64     def select():
 65    
 66         conn = sqlite3.connect('student1.db')
 67         stu_id = eval(selId.get())#学号输入
 68         cursor = conn.execute("SELECT * from StudentTable where StuId = %d;"%stu_id)
 69         conn.commit()
 70         for row in cursor:
 71              if stu_id == row[0]:
 72                  stu_name=row[1]
 73                  stu_class=row[2]
 74                  stu_age=row[3]
 75  
 76         varName.set(stu_name)
 77         varId.set(stu_id)
 78         varClass.set(stu_class)
 79         varAge.set(stu_age)
 80       
 81     def saveName():
 82         name=entryName.get()
 83         conn=sqlite3.connect('student1.db')
 84         sql="UPDATE StudentTable SET NAME='%s' WHERE StuId=%d;"%(name,eval(selId.get()))
 85         conn.execute(sql)
 86         conn.commit()  
 87 
 88         messagebox.showinfo(title='恭喜',message='保存成功!')
 89     
 90     def saveCla():
 91         cla=eval(entryClass.get())
 92         conn=sqlite3.connect('student1.db')
 93         sql="UPDATE StudentTable SET CLA=%d WHERE StuId=%d;"%(cla,eval(selId.get()))
 94         conn.execute(sql)
 95         conn.commit()
 96 
 97         messagebox.showinfo(title='恭喜',message='保存成功!')
 98 
 99     def saveAge():
100         age=eval(entryAge.get())
101         conn=sqlite3.connect('student1.db')
102         sql="UPDATE StudentTable SET AGE=%d WHERE StuId=%d;"%(age,eval(selId.get()))
103         conn.execute(sql)
104         conn.commit()
105 
106         messagebox.showinfo(title='恭喜',message='保存成功!') 
107     
108     
109     #保存键
110     buttonname=Button(root4,text="保存",font=("微软雅黑 -20"),command=saveName)
111     buttonname.place(x=330,y=110,height=40,width=60)
112     
113     buttoncla=Button(root4,text="保存",font=("微软雅黑 -20"),command=saveCla)
114     buttoncla.place(x=330,y=210,height=40,width=60)
115     
116     buttonage=Button(root4,text="保存",font=("微软雅黑 -20"),command=saveAge)
117     buttonage.place(x=330,y=260,height=40,width=60)
118 
119     def cancel():
120         sId.set('')        
121 
122     #取消键    
123     buttoncancel=Button(root4,text="取消",font=("微软雅黑 -20"),command=cancel)
124     buttoncancel.place(x=20,y=60,height=40,width=60)
125     
126     #查询键
127     buttonselect=Button(root4,text="查询",font=("微软雅黑 -20"),command=select)
128     buttonselect.place(x=100,y=60,height=40,width=60)    
129    
130     #退出键
131     buttondel=Button(root4,text="退出",font="微软雅黑 -20",command=root4.destroy)
132     buttondel.place(x=260,y=60,height=40,width=60)
133    
134     root4.mainloop()

完整代码

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

适用于初学python的学者。能够了解python的界面设计和对数据库的操作。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!