读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)实现一个完整版学生成绩管理系统,大家可以在过程中查缺补漏,提升水平
目录
学生成绩管理系统简介源代码学生。txt main。皮洛金。pydb。pymenupage。派维尤。巴拉圭
学生成绩管理系统简介
一个带有登录界面具有增减改查功能的学生成绩管理系统(面向对象思想,利用tkinter库进行制作,利用。文本文件(文本文件)文件进行存储数据)
源代码
仅供学习参考,最好还是自己多敲多练习(实践是检验真理的唯一标准)
students.txt
用于存储数据
main.py
来自tkinter导入*
从登录导入*
将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
导入json
类学生数据库(对象):
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
将tkinter作为坦克导入
从视图导入*
类菜单页面(对象):
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
将tkinter作为坦克导入
从数据库导入数据库
从tkinter导入ttk
# 录入类
类输入框架(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)
以上就是使用大蟒实现学生成绩管理系统,如果有改进的建议,欢迎在评论区留言奥~
这篇文章参加了csdn的活动,还请大家多多三连支持一下博主,你们的支持就是我创作的动力
到此这篇关于大蟒超详细实现完整学生成绩管理系统的文章就介绍到这了,更多相关大蟒学生成绩管理系统内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。