Python学生成绩管理,python教务系统学生成绩管理系统

  Python学生成绩管理,python教务系统学生成绩管理系统

  读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用爪哇实现一个完整版学生成绩管理系统,大家可以在过程中查缺补漏,提升水平

  

目录
学生成绩管理系统简介源代码学生。txt main。皮洛金。pydb。pymenupage。派维尤。巴拉圭

  

学生成绩管理系统简介

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

  

源代码

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

  

students.txt

  用于存储数据

  

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()

  定义创建页面(自身):

  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.passwo

  rd.get()

   if name == hacker707 and password == admin:

   self.page.destroy()

   MenuPage(self.root)

   else:

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

  

  

  

db.py

  

  import json

  class StudentDB(object):

   def __init__(self):

   self.students = []

   self._load_students_data()

   def insert(self, student):

   self.students.append(student)

   print(self.students)

   def all(self):

   return self.students

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

   for student in self.students:

   if name == student["name"]:

   self.students.remove(student)

   break

   else:

   return False

   return True

   # 查询

   def search_by_name(self, name):

   for student in self.students:

   if name == student["name"]:

   return student # 姓名+成绩

   else:

   return False

   # 修改

   def update(self, stu): # 修改数据

   name = stu["name"]

   for student in self.students:

   if name == student["name"]:

   student.update(stu)

   return True

   else:

   return False

   # 加载文件

   def _load_students_data(self):

   with open("students.txt", "r", encoding="utf-8") as f:

   text = f.read()

   if text:

   self.students = json.loads(text)

   # 保存数据

   def save_data(self):

   with open("students.txt", w, encoding="utf-8") as f:

   text = json.dumps(self.students, ensure_ascii=False)

   f.write(text)

  db = StudentDB()

  

  

  

MenuPage.py

  

  import tkinter as tk

  from view import *

  class MenuPage(object):

   def __init__(self, master=None):

   self.root = master

   self.root.geometry(%dx%d % (600, 400))

   self.create_page()

   self.input_page = InputFrame(self.root)

   self.query_page = QuerryFrame(self.root)

   self.delete_page = DeleteFrame(self.root)

   self.update_page = UpdateFrame(self.root)

   self.about_page = AboutFrame(self.root)

   self.input_page.pack()

   def create_page(self):

   # 创建菜单对象

   menubar = tk.Menu(self.root)

   # add_command 添加

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

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

   menubar.add_command(label="删除", command=self.delete_data) # label

   menubar.add_command(label="修改", command=self.update_data) # label

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

   # 设置菜单栏

   self.root.config(menu=menubar)

   # 切换界面

   def input_data(self):

   self.input_page.pack()

   self.update_page.pack_forget()

   self.delete_page.pack_forget()

   self.about_page.pack_forget()

   self.query_page.pack_forget()

   def query_data(self):

   self.input_page.pack_forget()

   self.query_page.pack()

   self.update_page.pack_forget()

   self.delete_page.pack_forget()

   self.about_page.pack_forget()

   def update_data(self):

   self.input_page.pack_forget()

   self.update_page.pack()

   self.delete_page.pack_forget()

   self.about_page.pack_forget()

   self.query_page.pack_forget()

   def delete_data(self):

   self.input_page.pack_forget()

   self.update_page.pack_forget()

   self.delete_page.pack()

   self.about_page.pack_forget()

   self.query_page.pack_forget()

   def about_data(self):

   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

  

  import tkinter as tk

  from db import db

  from tkinter import ttk

  # 录入类

  class InputFrame(tk.Frame):

   def __init__(self, master=None):

   super().__init__(master)

   self.root = master

   self.name = tk.StringVar()

   self.math = tk.StringVar()

   self.chinese = tk.StringVar()

   self.english = tk.StringVar()

   self.status = tk.StringVar()

   self.create_page()

   def create_page(self):

   tk.Label(self).grid(row=0, stick=tk.W, pady=10)

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

   # 单行文本框 entry,textvariable绑定变量

   tk.Entry(self, textvariable=self.name).grid(row=1, column=1, stick=tk.E)

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

   # 单行文本框 entry,textvariable绑定变量

   tk.Entry(self, textvariable=self.math).grid(row=2, column=1, stick=tk.E)

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

   # 单行文本框 entry,textvariable绑定变量

   tk.Entry(self, textvariable=self.chinese).grid(row=3, column=1, stick=tk.E)

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

   # 单行文本框 entry,textvariable绑定变量

   tk.Entry(self, textvariable=self.english).grid(row=4, column=1, stick=tk.E)

   tk.Button(self, text="录入", command=self.recode_student).grid(row=5, column=1, stick=tk.E, pady=10)

   tk.Label(self, textvariable=self.status).grid(row=6, column=1, stick=tk.E, pady=10)

   # 录入成绩

   def recode_student(self):

   student = {

   "name": self.name.get(),

   "math": self.math.get(),

   "chinese": self.chinese.get(),

   "english": self.english.get(),

   } # 一个学生的成绩

   db.insert(student)

   # get()得到值

   # set()设置值

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

   self._clear_data()

   db.save_data()

   # 清空文本数据

   def _clear_data(self):

   self.name.set("")

   self.math.set("")

   self.chinese.set("")

   self.english.set("")

  # 查询类

  class QuerryFrame(tk.Frame):

   def __init__(self, master=None):

   super().__init__(master)

   self.root = master

   self.create_page()

   # 创建查询界面

   def create_page(self):

   self.create_tree_view()

   self.show_data_frame()

   # grid()

   tk.Button(self, text="刷新数据", command=self.show_data_frame).pack(anchor=tk.E, pady=5)

   # Treeview

   def create_tree_view(self):

   # 表头

   columns = ("name", "chinese", "math", "english")

   self.tree_view = ttk.Treeview(self, show=headings, columns=columns)

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

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

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

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

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

   self.tree_view.heading("chinese", text=语文)

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

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

   self.tree_view.pack()

   # 显示数据

   def show_data_frame(self):

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

   for i in map(self.tree_view.delete, self.tree_view.get_children("")):

   pass

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

   students = db.all()

   # 同时拿到索引跟value值

   for index, stu in enumerate(students):

   self.tree_view.insert(, index, values=(stu["name"], stu["chinese"], stu

   ["math"], stu["english"]))

  class DeleteFrame(tk.Frame):

   def __init__(self, master=None):

   super().__init__(master)

   tk.Label(self, text=删除数据).pack()

   self.status = tk.StringVar()

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

   self.create_page()

   # 创建界面

   def create_page(self):

   tk.Label(self, text="根据姓名删除信息").pack(anchor=tk.W, padx=20)

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

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

   tk.Button(self, text=删除, command=self._delete).pack(side=tk.RIGHT)

   tk.Label(self, textvariable=self.status).pack()

   # 删除

   def _delete(self):

   name = self.de_name.get()

   print(name)

   result = db.delete_by_name(name)

   if result:

   self.status.set(f{name}已经被删)

   self.de_name.set("")

   else:

   self.status.set(f{name}不存在)

  class UpdateFrame(tk.Frame):

   def __init__(self, master=None):

   super().__init__(master)

   self.root = master

   tk.Label(self, text=修改界面).pack()

   self.change_frame = tk.Frame(self)

   self.change_frame.pack()

   self.name = tk.StringVar()

   self.math = tk.StringVar()

   self.chinese = tk.StringVar()

   self.english = tk.StringVar()

   self.status = tk.StringVar()

   self.create_page()

   def create_page(self):

   tk.Label(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)

   # 单行文本框 entry,textvariable绑定变量

   tk.Entry(self.change_frame, textvariable=self.name).grid(row=1, column=1, stick=tk.E)

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

   # 单行文本框 entry,textvariable绑定变量

   tk.Entry(self.change_frame, textvariable=self.math).grid(row=2, column=1, stick=tk.E)

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

   # 单行文本框 entry,textvariable绑定变量

   tk.Entry(self.change_frame, textvariable=self.chinese).grid(row=3, column=1, stick=tk.E)

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

   # 单行文本框 entry,textvariable绑定变量

   tk.Entry(self.change_frame, textvariable=self.english).grid(row=4, column=1, stick=tk.E)

   # 按钮

   tk.Button(self.change_frame, text=查询, command=self._search).grid(row=6, column=0, stick=tk.W, pady=10)

   tk.Button(self.change_frame, text=修改, command=self._change).grid(row=6, column=1, stick=tk.E, pady=10)

   tk.Label(self.change_frame, textvariable=self.status).grid(row=7, column=1, stick=tk.E, pady=10)

   # 查询

   def _search(self):

   name = self.name.get()

   student = db.search_by_name(name)

   if student:

   self.math.set(student["math"])

   self.chinese.set(student["chinese"])

   self.english.set(student["english"])

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

   else:

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

   # 更改成绩

   def _change(self):

   name = self.name.get()

   math = self.math.get()

   chinese = self.chinese.get()

   english = self.english.get()

   stu = {

   "name": name,

   "math": math,

   "chinese": chinese,

   "english": english,

   }

   r = db.update(stu)

   if r:

   self.status.set(f"{name}同学的信息更新完毕")

   else:

   self.status.set(f"{name}同学的信息更新失败")

  class AboutFrame(tk.Frame):

   def __init__(self, master=None):

   super().__init__(master)

   self.root = master

   self.create_page()

   def create_page(self):

   tk.Label(self, text="关于本作品(人生苦短,我用python)").pack(anchor=tk.W)

  

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

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