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

原文地址:https://www.cnblogs.com/xy-ju24/p/9212855.html

时间: 2024-10-07 13:40:04

python tkinter 学生信息管理系统的相关文章

python 04 学生信息管理系统

今天任务不多,做了学生信息管理系统1.0,使用字典存储学生个体信息,列表存储学生字典.注意dict定义要在循环体内,若定义成全局变量或循环体外,则旧数据会被新数据覆盖.dict属于可变类型数据,内容改变时引用不会变.dict = {},给dict赋新值(直接换内容了),字典的地址会发生改变:dict.clear(),将字典的内容清空(对内容修改),引用不变. 1 def log2(): 2 # info_dict = {} # 不能定义在循环体外 3 info_list = [] 4 num =

使用python实现一个简单的学生信息管理系统

最近公司搬办公室,杂七杂八的事情比较多,又碰上业务要上线了...很多事情堆到一起来做,导致最近没什么时间学习,写博客.前两天胜利日放假,把以前用java写的学生信息管理系统用python重新写了一遍,以便于帮助python的学习. 好了,废话不多说,首先进行需求分析,下面是我根据需求画的系统结构图: 纯手工制图.....画的不好敬请谅解.从上图来看,整个系统分为main,add,delete,change,select,sort,io,print共八个模块,实现了对学生信息的增删改查排的功能,将

Python学生信息管理系统的开发

# 第一题:设计一个全局变量,来保存很多个学生信息:学生(学号, 姓名,年龄):思考要用怎样的结构来保存:# 第二题:在第一题基础上,完成:让用户输入一个新的学生信息(学号,姓名,年龄):你将其保存在全局变量中:并提供给用户查看当前有多少个学生的功能:# 第三题:向用户提供根据学号查看指定学员具体信息,指定学号删除学员功能 # 用来保存学生的所有信息stuInfos = []# 全局变量sno = ""sName = ""sAge = "" #

python3 简陋的学生信息管理系统

# 编写一个“学生信息管理系统”# 输入序号:1. 输入学生信息,学生信息包括:id,name,age,gender(用什么数据类型保存?)# 2. 查询:输入学生姓名和id,显示学生个人信息# 3. 修改:输入学生姓名或者id,可以对学生信息进行修改# 4. 删除:输入学生姓名或者id,删除对应学生信息 代码如下::: def increase(): student = [input("学号:"), input("姓名:"), input("年龄:&qu

学生信息管理系统修改

北京工业大学耿丹学院 c语言设计课程报告   课程设计名称:高级语言程序设计 专业班级:计算机科学与技术1 姓名:吴双 学号:150809201   2016年5月10日 一 对c语言指针链表的体会 ------------------------ 二 修改学生信息管理系统 ------------------------ 三 体会 ------------------------ 一 对c语言指针链表的体会 1.指针 简单来说,指针是一个存储计算机内存地址的变量. 用 int *ptr 这种形

用基本数据结构修改后的学生信息管理系统(增删改查)

package com.xt.student.system; //创建学生类存放信息 public class Student {//声明变量private String stuNo; private String stuName; private String gender; private int age; private int score; //对变量进行封装 public String getStuNo() {return stuNo;} public void setStuNo(St

基于数据库MySQL的简易学生信息管理系统

通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生信息: 4.可以删除学生信息: 5.可以通过学生姓名或学号显示学生所有信息: 还可以修改学生信息,添加学生表格属性等等,,,这些实现都基本类似上述的(这些不想写了,最简易的学生信息管理系统): 二:步骤 1.写一个sql脚本,包括创建数据库,使用数据库,创建学生信息表格,插入大部分学生信息. stu

学生信息管理系统

根据资料显示,那么,如果写一个字符串到一个文件中,是什么方式呢?显示到屏幕上是默认的输出文件,如果是硬盘中的一个文件,首先要打开一个文件,然后才能往里写,那么就要告诉程序这个文件在什么地方,按照什么样的方式打开(读.写.读和写.添加.覆盖等),然后打开后要给这个打开的文件一个符号(指针变量),表示后续的读和写都是针对这个文件的,而不是到屏幕的,这个指针变量以后就代表了文件自身了. 在学生信息管理系统中,需要同时保存一个学生的姓名,性别,年龄等信息,那么设置变量保存很多同学的这些信息就有点不太方便

【学生信息管理系统】EOF 和 BOF

敲完学生信息管理系统时,在删除信息的时候,经常会出现下图这样的错误,遇到问题就要解决问题.经过查阅理解了记录集Recordset的EOF和BOF属性,用这两个属性可以知道记录集中是否有信息存在. EOF和BOF属性 BOF 指示当前记录位置位于 Recordset 对象的第一个记录之前. EOF 指示当前记录位置位于 Recordset 对象的最后一个记录之后. 返回值:BOF 和 EOF 属性返回布尔型值. 使用 BOF 和 EOF 属性可确定Recordset 对象是否包含记录,或者从一个记