python中学生成绩管理系统,Python成绩管理

  python中学生成绩管理系统,Python成绩管理

  永远的神干货盘点

  作者简介:大家好我是黑客707,大家可以叫我黑客,新星计划第三季大蟒赛道Top1?

  ?个人主页:黑客707的世纪乐知博客

  ?系列专栏:python

  @TOC

  学生成绩管理系统简介

  一个带有登录界面具有增减改查功能的学生成绩管理系统(面向对象思想,利用图形界面库进行制作,利用。文本文件(文本文件)文件进行存储数据)

  源代码?

  仅供学习参考,最好还是自己多敲多练习(实践是检验真理的唯一标准)

  学生。文本文件(textfile)

  用于存储数据

  main.py

  来自tkinter导入*

  从登录导入*

  将图形界面作为坦克导入

  root=tk .Tk()

  root.title(欢迎进入学生成绩管理系统)

  登录页面(根)

  root.mainloop()

  Login.py

  来自tkinter导入*

  从tkinter.messagebox导入*

  从菜单页面导入*

  类登录页面(对象):

  def __init__(self,master=None):

  self.root=master #定义内部变量根

  自我。根。几何( % dx % d %(300,180)) #设置窗口大小

  self.username=StringVar()

  self.password=StringVar()

  self.createPage()

  def createPage(自身):

  self.page=Frame(self.root) #创建基本框架

  self.page.pack()

  标签(self.page).网格(row=0,stick=W)

  标签(self.page,text=账户: ).网格(row=1,stick=W,pady=10)

  Entry(self.page,textvariable=self.username).网格(行=1,列=1,棒=E)

  标签(self.page,text=密码: ).网格(row=2,stick=W,pady=10)

  Entry(self.page,textvariable=self.password,show=* ).网格(行=2,列=1,棒=E)

  按钮(self.page,text=登陆,command=self.loginCheck).网格(row=3,stick=W,pady=10)

  按钮(self.page,text=退出,command=self.page.quit).网格(行=3,列=1,棒=E)

  定义登录检查(自我):

  name=self.username.get()

  password=self.password.get()

  如果name==黑客707 和密码==admin :

  self.page.destroy()

  MenuPage(self.root)

  否则:

  showinfo(title=错误,消息=账号或密码错误!)

  db.py

  导入数据

  类学生数据库(对象):

  def __init__(self):

  self.students=[]

  自我. load _学生_数据()

  定义插入(自己,学生):

  self.students.append(student)

  打印(自学者)

  定义全部(自己):

  回归自我。学生

  def delete_by_name(self,name): #删除数据

  对于自学的学生,学生:

  if name==student[name]:

  self.students.remove(student)

  破裂

  否则:

  返回错误的

  返回真实的

  # 查询

  定义按姓名搜索(自己,姓名):

  对于自学的学生,学生:

  if name==student[name]:

  返校学生#姓名成绩

  否则:

  返回错误的

  # 修改

  定义更新(自己,学生):#修改数据

  name=stu[name]

  对于自学的学生,学生:

  if name==student[name]:

  学生更新(斯图)

  返回真实的

  否则:

  返回错误的

  # 加载文件

  定义_加载_学生_数据(自身):

  用打开( students.txt , r ,编码=utf-8 )作为女:

  text=f.read()

  如果文本:

  self.students=json.loads(文本)

  # 保存数据

  def保存数据(自身):

  用打开( students.txt , w ,编码=utf-8 )作为女:

  text=json.dumps(self.students,确保_ascii=False)

  f .写(文本)

  db=StudentDB()

  MenuPage.py

  将图形界面作为坦克导入

  从视图导入*

  类菜单页面(对象):

  def __init__(self,master=None):

  self.root=master

  自我。根。几何( % dx % d %(600,400))

  self.create_page()

  自我。input _ page=输入框(self。根)

  自我。query _ page=查询框架(self。根)

  自我。delete _ page=删除框架(自身。根)

  自我。update _ page=UpdateFrame(self。根)

  自我。about _ page=关于框架(self。根)

  self.input_page.pack()

  定义创建_页面(自身):

  # 创建菜单对象

  菜单栏=tk .菜单(self.root)

  #添加命令添加

  menubar.add_command(label=录入,command=self.input_data) # label

  menubar.add_command(label=查询,command=self.query_data) # label

  menubar.add_command(label=删除,命令=自我。delete _ data)#标签

  menubar.add_command(label=修改,命令=自我。更新数据)#标签

  menubar.add_command(label=关于,command=self.about_data) # label

  # 设置菜单栏

  自我。根。配置(菜单=菜单栏)

  # 切换界面

  定义输入数据(自身):

  self.input_page.pack()

  self.update_page.pack_forget()

  self.delete_page.pack_forget()

  self.about_page.pack_forget()

  self.query_page.pack_forget()

  定义查询_数据(自身):

  self.input_page.pack_forget()

  self.query_page.pack()

  self.update_page.pack_forget()

  self.delete_page.pack_forget()

  self.about_page.pack_forget()

  定义更新数据(自身):

  self.input_page.pack_forget()

  self.update_page.pack()

  self.delete_page.pack_forget()

  self.about_page.pack_forget()

  self.query_page.pack_forget()

  定义删除_数据(自身):

  self.input_page.pack_forget()

  self.update_page.pack_forget()

  self.delete_page.pack()

  self.about_page.pack_forget()

  self.query_page.pack_forget()

  定义关于数据(自身):

  self.input_page.pack_forget()

  self.update_page.pack_forget()

  self.delete_page.pack_forget()

  self.about_page.pack()

  self.query_page.pack_forget()

  view.py

  将图形界面作为坦克导入

  从数据库导入数据库

  从图形界面导入天天快递

  # 录入类

  类输入框架(tk .框架):

  def __init__(self,master=None):

  超级()。__init__(主)

  self.root=master

  self.name=tk .字符串变量()

  self.math=tk .字符串变量()

  self.chinese=tk .字符串变量()

  self.english=tk .字符串变量()

  self.status=tk .字符串变量()

  self.create_page()

  定义创建_页面(自身):

  tk .标签(自我)。grid(row=0,stick=tk .w,pady=10)

  tk .标签(self,text=姓名:).grid(row=1,stick=tk .w,pady=10)

  # 单行文本框条目,文本变量绑定变量

  tk .Entry(self,textvariable=self.name).网格(行=1,列=1,stick=tk .e)

  tk .标签(self,text=数学:).grid(row=2,stick=tk .w,pady=10)

  # 单行文本框条目,文本变量绑定变量

  tk .Entry(self,textvariable=self.math).网格(行=2,列=1,stick=tk .e)

  tk .标签(self,text=语文:).grid(row=3,stick=tk .w,pady=10)

  # 单行文本框条目,文本变量绑定变量

  tk .Entry(self,textvariable=self.chinese).网格(行=3,列=1,stick=tk .e)

  tk .标签(self,text=英语:).grid(row=4,stick=tk .w,pady=10)

  # 单行文本框条目,文本变量绑定变量

  tk .Entry(self,textvariable=self.english).网格(行=4,列=1,stick=tk .e)

  tk .按钮(self,text=录入,command=self.recode_student).网格(行=5,列=1,stick=tk .e,pady=10)

  tk .Label(self,textvariable=self.status).网格(行=6,列=1,stick=tk .e,pady=10)

  # 录入成绩

  定义记录_学生(自己):

  学生={

   name: self.name.get(),

   math: self.math.get(),

  中文:self . China . get(),

  英语:self.english.get(),

  } # 一个学生的成绩

  db.insert(学生)

  # get()得到值

  # set()设置值

  self.status.set(插入数据成功!)

  自我. clear_data()

  db.save_data()

  # 清空文本数据

  定义_清除_数据(自身):

  self.name.set( )

  self.math.set( )

  self.chinese.set( )

  self.english.set( )

  # 查询类

  类查询框架(tk .框架):

  def __init__(self,master=None):

  超级()。__init__(主)

  self.root=master

  self.create_page()

  # 创建查询界面

  定义创建_页面(自身):

  self.create_tree_view()

  self.show_data_frame()

  #网格()

  tk .按钮(self,text=刷新数据,command=self.show_data_frame).pack(anchor=tk .e,pady=5)

  #树形视图

  定义创建树视图(自身):

  # 表头

  列=(姓名,中文,数学,英文)

  self.tree_view=ttk .树形视图(self,show=标题,columns=列)

  self.tree_view.column(name ,width=80,anchor=center )

  self.tree_view.column(中文,宽度=80,锚点=中心)

  self.tree_view.column(math ,width=80,anchor=center )

  self.tree_view.column(英语,宽度=80,锚点=中心)

  self.tree_view.heading(name ,text=姓名)

  self.tree_view.heading(中文,text=语文)

  self.tree_view.heading(math ,text=数学)

  self.tree_view.heading(英语,text=英语)

  self.tree_view.pack()

  # 显示数据

  定义显示数据帧(自身):

  # 删除原节点map(int,值)

  对于地图中的我(自我。树形视图。delete,self.tree_view.get_children():

  及格

  # 拿到列表里面所有值、学生[]

  students=db.all()

  # 同时拿到索引跟价值值

  对于index,stu in枚举(学生):

  self.tree_view.insert( ),index,values=(stu[名称],stu[中文],stu

  [数学],斯图[英语]))

  类删除框架(tk .框架):

  def __init__(self,master=None):

  超级()。__init__(主)

  tk .标签(self,text=删除数据).包装()

  self.status=tk .字符串变量()

  self.de_name=tk .StringVar() #获取删除学生的姓名

  self.create_page()

  # 创建界面

  定义创建_页面(自身):

  tk .标签(self,text=根据姓名删除信息).pack(anchor=tk .w,padx=20)

  e1=tk .Entry(self,textvariable=self.de_name)

  e1.pack(side=tk .左,padx=20,pady=5)

  tk .按钮(self,text=删除,命令=自我。_删除)。包装(侧面=tk .右)

  tk .Label(self,textvariable=self.status).包装()

  # 删除

  定义_删除(自身):

  name=self.de_name.get()

  打印(姓名)

  result=db.delete_by_name(name)

  如果结果:

  自我。状态。集合(f"{ name }已经被删)

  self.de_name.set( )

  否则:

  自我。状态。集合(f"{ name }不存在)

  类UpdateFrame(tk .框架):

  def __init__(self,master=None):

  超级()。__init__(主)

  self.root=master

  tk .标签(self,text=修改界面).包装()

  self.change_frame=tk .框架(自身)

  self.change_frame.pack()

  self.name=tk .字符串变量()

  self.math=tk .字符串变量()

  self.chinese=tk .字符串变量()

  self.english=tk .字符串变量()

  self.status=tk .字符串变量()

  self.create_page()

  定义创建_页面(自身):

  tk .标签(self.change_frame).grid(row=0,stick=tk .w,pady=10)

  tk .Label(self.change_frame,text=姓名:).grid(row=1,stick=tk .w,pady=10)

  # 单行文本框条目,文本变量绑定变量

  tk .Entry(self.change_frame,textvariable=self.name).网格(行=1,列=1,stick=tk .e)

  tk .Label(self.change_frame,text=数学:).grid(row=2,stick=tk .w,pady=10)

  # 单行文本框条目,文本变量绑定变量

  tk .Entry(self.change_frame,textvariable=self.math).网格(行=2,列=1,stick=tk .e)

  tk .Label(self.change_frame,text=语文:).grid(row=3,stick=tk .w,pady=10)

  # 单行文本框条目,文本变量绑定变量

  tk .Entry(self.change_frame,textvariable=self.chinese).网格(行=3,列=1,stick=tk .e)

  tk .Label(self.change_frame,text=英语:).grid(row=4,stick=tk .w,pady=10)

  # 单行文本框条目,文本变量绑定变量

  tk .Entry(self.change_frame,textvariable=self.english).网格(行=4,列=1,stick=tk .e)

  # 按钮

  tk .Button(self.change_frame,text=查询,命令=自我.搜索)。网格(行=6,列=0,stick=tk .w,pady=10)

  tk .Button(self.change_frame,text=修改,命令=自我。_改变)。网格(行=6,列=1,stick=tk .e,pady=10)

  tk .Label(self.change_frame,textvariable=self.status).网格(行=7,列=1,stick=tk .e,pady=10)

  # 查询

  定义_搜索(自身):

  name=self.name.get()

  student=db.search_by_name(name)

  如果学生:

  self.math.set(学生[数学])

  self.chinese.set(学生[中文])

  self.english.set(学生[英语])

  self.status.set(f 查询到{姓名}同学的信息)

  否则:

  self.status.set(f 没有查询到{姓名}同学的信息)

  # 更改成绩

  定义_更改(自身):

  name=self.name.get()

  math=self.math.get()

  chinese=self.chinese.get()

  english=self.english.get()

  stu={

  姓名:姓名,

  数学:数学,

  中国人:中国人,

  英语:英语,

  }

  r=数据库更新(斯图)

  如果r:

  自我。状态。集合(f"{ name }同学的信息更新完毕)

  否则:

  自我。状态。集合(f"{ name }同学的信息更新失败)

  类关于框架(tk .框架):

  def __init__(self,master=None):

  超级()。__init__(主)

  self.root=master

  self.create_page()

  定义创建_页面(自身):

  tk .标签(self,text=关于本作品(人生苦短,我用python)).pack(anchor=tk .w)

  结束语

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: