文末有福利领取哦~
👉一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉二、Python必备开发工具
👉三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉 四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
👉五、Python练习题
检查学习结果。
👉六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- [view.py](#viewpy_198)
- [结束语🏆](#_411)
学生成绩管理系统简介
一个带有登录界面具有增减改查功能的学生成绩管理系统(面向对象思想,利用tkinter库进行制作,利用.txt文件进行存储数据)
源代码🏆
✅仅供学习参考,最好还是自己多敲多练习(实践是检验真理的唯一标准)
students.txt
用于存储数据
main.py
from tkinter import \*
from Login import \*
import tkinter as tk
root = tk.Tk()
root.title('欢迎进入学生成绩管理系统')
LoginPage(root)
root.mainloop()
Login.py
from tkinter import \*
from tkinter.messagebox import \*
from MenuPage import \*
class LoginPage(object):
def \_\_init\_\_(self, master=None):
self.root = master # 定义内部变量root
self.root.geometry('%dx%d' % (300, 180)) # 设置窗口大小
self.username = StringVar()
self.password = StringVar()
self.createPage()
def createPage(self):
self.page = Frame(self.root) # 创建Frame
self.page.pack()
Label(self.page).grid(row=0, stick=W)
Label(self.page, text='账户: ').grid(row=1, stick=W, pady=10)
Entry(self.page, textvariable=self.username).grid(row=1, column=1, stick=E)
Label(self.page, text='密码: ').grid(row=2, stick=W, pady=10)
Entry(self.page, textvariable=self.password, show='\*').grid(row=2, column=1, stick=E)
Button(self.page, text='登陆', command=self.loginCheck).grid(row=3, stick=W, pady=10)
Button(self.page, text='退出', command=self.page.quit).grid(row=3, column=1, stick=E)
def loginCheck(self):
name = self.username.get()
password = self.password.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("")
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**