广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python如何实现完整学生成绩管理系统
  • 101
分享到

python如何实现完整学生成绩管理系统

2023-06-29 13:06:52 101人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python如何实现完整学生成绩管理系统”,在日常操作中,相信很多人在Python如何实现完整学生成绩管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python如何实现完整学生成绩管

这篇文章主要介绍“python如何实现完整学生成绩管理系统”,在日常操作中,相信很多人在Python如何实现完整学生成绩管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python如何实现完整学生成绩管理系统”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

学生成绩管理系统简介

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

python如何实现完整学生成绩管理系统

python如何实现完整学生成绩管理系统

python如何实现完整学生成绩管理系统

python如何实现完整学生成绩管理系统

python如何实现完整学生成绩管理系统

python如何实现完整学生成绩管理系统

源代码

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

students.txt

用于存储数据

main.py

from tkinter import *from Login import *import tkinter as tkroot = 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 JSONclass 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 tkfrom 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 tkfrom db import dbfrom 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)

到此,关于“python如何实现完整学生成绩管理系统”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: python如何实现完整学生成绩管理系统

本文链接: https://www.lsjlt.com/news/324995.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python如何实现完整学生成绩管理系统
    这篇文章主要介绍“python如何实现完整学生成绩管理系统”,在日常操作中,相信很多人在python如何实现完整学生成绩管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python如何实现完整学生成绩管...
    99+
    2023-06-29
  • python超详细实现完整学生成绩管理系统
    目录学生成绩管理系统简介源代码students.txtmain.pyLogin.pydb.pyMenuPage.pyview.py学生成绩管理系统简介 一个带有登录界面具有增减改查功...
    99+
    2022-11-13
  • python mysql实现学生成绩管理系统
    这学期在学python,感觉想写一个东西来巩固自己的基础,因为大二的时候我看过python,所以还是一共花了几个小时写了一个基于mysql的成绩管理系统,这个东西其实拿不出手,不过就...
    99+
    2022-11-12
  • Java实现学生成绩管理系统
    本文实例为大家分享了Java实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 新手练手小项目,主要练习面向对象、循环、数组、排序等等。 本人也是自学练手,代码有不正确的或不完...
    99+
    2022-11-12
  • C#实现学生成绩管理系统
    本文实例为大家分享了C#实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 使用链表写学生成绩管理系统 链表可以灵活的展示增删改查 下面是结果演示 这是登录及部分添加 继续添...
    99+
    2022-11-13
    C#学生成绩管理系统 C#成绩管理系统 C#学生管理系统
  • shell如何实现学生成绩管理系统
    这篇文章主要介绍了shell如何实现学生成绩管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下基本的操作增加删除查询展示全部学生信息vim编辑保存信息的文件遇...
    99+
    2023-06-09
  • python实现简单的学生成绩管理系统
    本文实例为大家分享了python实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 需求: 代码: import os filename = 'student.txt' d...
    99+
    2022-11-13
  • Python实现一个完整学生管理系统
    目录前言创建入口函数新增学生insert展示学生show查找学生find删除学生delete加入存档读档存档读档打包成exe程序发布代码前言 功能 新增学生显示学生查找学生删除学生存...
    99+
    2023-01-29
    Python学生管理系统 Python学生管理系统设计
  • 如何用python实现简单的学生成绩管理系统
    这篇文章主要介绍了如何用python实现简单的学生成绩管理系统的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用python实现简单的学生成绩管理系统文章都会有所收获,下面我们一起来看看吧。需求:代码:imp...
    99+
    2023-06-29
  • shell编程如何实现学生成绩管理系统
    小编给大家分享一下shell编程如何实现学生成绩管理系统,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下主要函数:colour ()    设置界面颜色search () ...
    99+
    2023-06-09
  • java实现简单学生成绩管理系统
    本文实例为大家分享了java实现学生成绩管理系统的具体代码,供大家参考,具体内容如下   import java.util.Scanner; import java.lang.*;...
    99+
    2022-11-13
  • C++实现简单学生成绩管理系统
    本文实例为大家分享了C++实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 一、问题描述 设计一个学生成绩管理程序,实现按班级完成对学生成绩信息的录入和修改,并用文件保存。实...
    99+
    2022-11-13
  • C#实现简单学生成绩管理系统
    本文实例为大家分享了C#实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 C#作业 用循环结构/数组实现 进入启动页面 管理员身份登入 用户名:师晓峰密码:88481234...
    99+
    2022-11-13
    C#学生成绩管理系统 C#学生管理系统 C#成绩管理系统
  • java实现学生成绩档案管理系统
    本文实例为大家分享了java实现学生成绩档案管理系统的具体代码,供大家参考,具体内容如下 实验要求 • 学生信息录入,信息包括学号、姓名、专业、四门课成绩、总分、名次; ...
    99+
    2022-11-12
  • 使用Python实现简单的学生成绩管理系统
    目录基本功能:实现效果:制作技巧  1.定义变量2.读取学生成绩信息3.循环等待操作指令并执行4.编写操作指令执行函数(1)显示学生成绩信息函数(2)新建学生成绩...
    99+
    2022-11-13
  • 基于PHP和MySql的学生成绩管理系统(附完整版代码)
    系统开发运行环境 操作系统:win10 软件:AppServ(php+apache+mysql),nginx(代理) 2.2 功能要求 2.2.1 教职工 对学生成绩有一个整体的了解,在今后的教学中能有所改进。同时可 以对自己教...
    99+
    2023-09-05
    php mysql apache Powered by 金山文档
  • C++如何实现简单的学生成绩管理系统
    这篇文章主要介绍了C++如何实现简单的学生成绩管理系统的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++如何实现简单的学生成绩管理系统文章都会有所收获,下面我们一起来看看吧。manage.h#include&...
    99+
    2023-06-29
  • C++实现学生成绩管理系统最新版
    学生成绩管理系统,供大家参考,具体内容如下 一、问题描述及功能要求 (1)输入同学的学号,姓名,三门科成绩(应用数学、大学英语、计算机应用基础) (2)可以计算出每个学生三门课的...
    99+
    2022-11-12
  • C++实现简单的学生成绩管理系统
    本文实例为大家分享了C++实现简单学生成绩管理系统的具体代码,供大家参考,具体内容如下 manage.h #include <iostream> #include <...
    99+
    2022-11-13
  • C语言实现学生成绩管理系统项目
    本文实例为大家分享了C语言实现学生成绩管理系统项目,供大家参考,具体内容如下 1、数据结构:学生信息:学号、姓名、年龄、性别、3课成绩 2、功能: (1)  增加学生记录(...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作