最全python学生成绩管理系统【完整版】_学生成绩管理系统python,2024年最新阿里巴巴面试算法题

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

查询类

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)

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 20
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值