python tkinter 学生信息管理系统

使用tkinter模块,python3.6,主要功能有添加,查询,删除,修改学生信息

下面贴出的是主界面和添加学生信息界面,剩下的就不贴出来了。。。。。。。。。

             

以下就是完整的代码:

  1 from tkinter import *
  2 import tkinter.font as tkFont
  3 import tkinter as tk
  4 from tkinter import ttk
  5 
  6 LARGE_FONT= ("Verdana", 20)
  7 
  8 #窗口每页内容更换
  9 class Application(tk.Tk):
 10     def __init__(self):
 11         
 12         super().__init__()
 13 
 14         self.wm_title("学生信息管理系统")
 15         
 16         container = tk.Frame(self)
 17         container.pack(side="top", fill="both", expand = True)
 18         container.grid_rowconfigure(0, weight=1)
 19         container.grid_columnconfigure(0, weight=1)
 20 
 21         self.frames = {}
 22         for F in (StartPage, PageOne, PageTwo, PageThree,PageFour):
 23             frame = F(container, self)
 24             self.frames[F] = frame
 25             frame.grid(row=0, column=0, sticky="nsew")  # 四个页面的位置都是 grid(row=0, column=0), 位置重叠,只有最上面的可见!!
 26 
 27         self.show_frame(StartPage)
 28 
 29         
 30     def show_frame(self, cont):
 31         frame = self.frames[cont]
 32         frame.tkraise() # 切换,提升当前 tk.Frame z轴顺序(使可见)!!此语句是本程序的点睛之处
 33 
 34         
 35 class StartPage(tk.Frame):
 36     '''主页'''
 37     def __init__(self, parent, root):
 38         super().__init__(parent)
 39         label = tk.Label(self, text="学生信息管理系统", font=LARGE_FONT)
 40         label.pack(pady=100)
 41         ft2=tkFont.Font(size=16)
 42         Button(self, text="添加学生信息",font=ft2,command=lambda: root.show_frame(PageOne),width=30,height=2,fg='white',bg='gray',activebackground='black',activeforeground='white').pack()
 43         Button(self, text="删除学生信息",font=ft2,command=lambda: root.show_frame(PageTwo),width=30,height=2).pack()
 44         Button(self, text="修改学生信息",font=ft2,command=lambda: root.show_frame(PageThree),width=30,height=2,fg='white',bg='gray',activebackground='black',activeforeground='white').pack()
 45         Button(self, text="查询学生信息",font=ft2,command=lambda: root.show_frame(PageFour),width=30,height=2).pack()
 46         Button(self,text='退出系统',height=2,font=ft2,width=30,command=root.destroy,fg='white',bg='gray',activebackground='black',activeforeground='white').pack()
 47 
 48 
 49 
 50 #添加学生信息
 51 class PageOne(tk.Frame):
 52     def __init__(self, parent, root):
 53         super().__init__(parent)
 54         label = tk.Label(self, text="添加学生信息", font=LARGE_FONT)
 55         label.pack(pady=100)
 56 
 57         ft3=tkFont.Font(size=14)
 58         ft4=tkFont.Font(size=12)
 59         Label(self,text='学生学号:',font=ft3).pack(side=TOP)
 60         global e1
 61         e1=StringVar()
 62         Entry(self,width=30,textvariable=e1,font=ft3,bg='Ivory').pack(side=TOP)
 63         Label(self,text='学生姓名:',font=ft3).pack(side=TOP)
 64         global e2
 65         e2=StringVar()
 66         Entry(self,width=30,textvariable=e2,font=ft3,bg='Ivory').pack(side=TOP)
 67         Label(self,text='学生成绩:',font=ft3).pack(side=TOP)
 68         global e3
 69         e3=StringVar()
 70         Entry(self,width=30,textvariable=e3,font=ft3,bg='Ivory').pack(side=TOP)
 71         Button(self, text="返回首页",width=8,font=ft4,command=lambda: root.show_frame(StartPage)).pack(pady=20)
 72         Button(self, text="确定保存",width=8,font=ft4,command=self.save).pack(side=TOP)
 73         
 74     def save(self):
 75         with open('student_infor.txt','a+') as student_infor:
 76             num=str(e1.get())
 77             name=str(e2.get())
 78             score=str(e3.get())
 79             student_infor.write(num+' '+name+' '+score+'\n')
 80 
 81 #删除学生信息
 82 class PageTwo(tk.Frame):
 83     def __init__(self, parent, root):
 84         super().__init__(parent)
 85         label = tk.Label(self, text="添加学生信息", font=LARGE_FONT)
 86         label.pack(pady=100)
 87 
 88         ft3=tkFont.Font(size=14)
 89         ft4=tkFont.Font(size=12)
 90         Label(self,text='请输入你要删除的学生学号:',font=ft3).pack(side=TOP)
 91         global e4
 92         e4=StringVar()
 93         Entry(self,width=30,textvariable=e4,font=ft3,bg='Ivory').pack(side=TOP)
 94         Button(self, text="确定删除",width=8,font=ft4,command=self.del1).pack(pady=20)
 95         Button(self, text="返回首页",width=8,font=ft4,command=lambda: root.show_frame(StartPage)).pack()
 96             def del1(self):
 97         num2=str(e4.get())
 98         with open('student_infor.txt','r') as f:
 99             lines=f.readlines()
100             with open('student_infor.txt','w') as f_w:
101                 for line in lines:
102                     if num2 in line:
103                         continue
104                     f_w.write(line)
105 
106 #修改学生信息
107 class PageThree(tk.Frame):
108     def __init__(self, parent, root):
109         super().__init__(parent)
110         tk.Label(self, text="修改学生信息", font=LARGE_FONT).pack(pady=100)
111 
112         ft3=tkFont.Font(size=14)
113         ft4=tkFont.Font(size=12)
114         Label(self,text='请输入你要修改的学生学号:',font=ft3).pack(side=TOP)
115         self.e5=StringVar()
116         Entry(self,width=30,textvariable=self.e5,font=ft3,bg='Ivory').pack(side=TOP)
117         Label(self,text='学生姓名:',font=ft3).pack(side=TOP)
118         self.e6=StringVar()
119         Entry(self,width=30,textvariable=self.e6,font=ft3,bg='Ivory').pack(side=TOP)
120         Label(self,text='学生成绩:',font=ft3).pack(side=TOP)
121         self.e7=StringVar()
122         Entry(self,width=30,textvariable=self.e7,font=ft3,bg='Ivory').pack(side=TOP)
123         Button(self, text="确定修改",width=8,font=ft4,command=self.modify).pack(pady=20)
124         Button(self, text="返回首页",width=8,font=ft4,command=lambda: root.show_frame(StartPage)).pack()
125     def modify(self):
126         num3=str(self.e5.get())
127         name3=str(self.e6.get())
128         score3=str(self.e7.get())
129         with open('student_infor.txt','r') as r_w:
130             lines1=r_w.readlines()
131             with open('student_infor.txt','w') as rr_w:
132                 for line1 in lines1:
133                     if num3 in line1:
134                         rr_w.write(num3+' '+name3+' '+score3+'\n')
135                         continue
136                     rr_w.write(line1)
137 
138 #查询学生成绩
139 class PageFour(tk.Frame):
140     def __init__(self, parent, root):
141         super().__init__(parent)
142         label = tk.Label(self, text="查询学生成绩", font=LARGE_FONT)
143         label.pack(pady=100)
144         tree_data=ttk.Treeview()
145         ft4=tkFont.Font(size=12)
146        #滚动条
147 
148         scro=Scrollbar(self)
149 
150         scro.pack(side=RIGHT,fill=Y)
151         lista=Listbox(self,yscrollcommand=scro.set,width=50)
152 
153         f=open('student_infor.txt','r')
154         text=("                 %-16s%-16s%-16s"%("学号","姓名","成绩"))
155 
156         li=[]
157         for i in f.readlines():
158             j=i.split(' ')
159             j[2]=j[2].replace('\n','')
160             li.append(j)
161             li.sort(key=lambda x:x[2],reverse=False)
162         for i in li:
163             text1=("                %-16s%-16s%-16s"%(i[0],i[1],i[2]))
164             lista.insert(0,text1)
165         f.close()
166         lista.insert(0,text)
167         lista.pack()
168         Button(self, text="返回首页",width=8,font=ft4,command=lambda: root.show_frame(StartPage)).pack(pady=40)
169 
170 
171 if __name__ == '__main__':
172     # 实例化Application
173     app = Application()
174     
175     # 主消息循环:
176     app.mainloop()

2018-06-22

猜你喜欢

转载自www.cnblogs.com/xy-ju24/p/9212855.html