【python】python基于tkinter的学生成绩管理系统(源码+数据文件)【独一无二】(一)

简介: 【python】python基于tkinter的学生成绩管理系统(源码+数据文件)【独一无二】(一)

一、设计要求

1. 数据文件初始化模块

负责检查是否存在用于存储学生信息的文件。如果文件不存在,则创建一个新的CSV文件并写入标题行,确保数据文件的初始状态正确。

2. 界面创建模块

负责创建图形用户界面,包括输入框、按钮和表格控件等。为用户提供输入和操作学生信息的界面布局,并定义控件的摆放位置和交互行为。


3. 数据加载模块

负责从CSV文件中读取学生数据,并将数据加载到表格控件中显示。确保每次操作后,表格显示的内容与CSV文件中的数据保持一致。


4. 添加学生信息模块

负责从用户输入框获取学生信息,验证所有字段是否填写完整。如果填写完整,将学生信息追加写入CSV文件,并更新表格显示。


5. 删除学生信息模块

负责从表格中获取用户选择的学生记录,通过学号识别要删除的学生,并从CSV文件中删除相应记录,然后更新表格显示。


6. 修改学生信息模块

负责从表格中获取用户选择的学生记录,通过学号识别要修改的学生。根据用户输入的新信息更新文件中的相应记录,并刷新表格显示。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学生界面 ” 获取。👈👈👈


7. 按姓名查询学生信息模块

负责根据用户输入的姓名,在文件中查找匹配的学生记录。如果找到匹配记录,将结果显示在表格中;否则,提示用户未找到学生。


8. 按学号查询学生信息模块

负责根据用户输入的学号,在CSV文件中查找匹配的学生记录。如果找到匹配记录,将结果显示在表格中;否则,提示用户未找到学生。


9. 统计分数段模块

负责根据用户输入的课程名和分数段,在文件中查找符合条件的学生记录,并将这些记录显示在表格中。帮助用户统计某课程在指定分数段内的学生情况。


10. 按成绩排序模块

负责根据用户输入的课程名,对学生的该课程成绩进行排序。可以选择升序或降序排序,并将排序结果显示在表格中,帮助用户了解学生成绩的分布情况。


二、设计思路

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学生界面 ” 获取。👈👈👈

1. 总体设计

该代码设计了一个学生信息管理系统,基于Tkinter实现图形用户界面(GUI),通过CSV文件来存储和管理学生信息。系统支持添加、删除、修改、查询学生信息,以及对学生成绩进行统计和排序。

2. 类的定义与初始化
class StudentInfoSystem:
    def __init__(self, root):
        self.root = root
        # 略

定义了StudentInfoSystem类,其中包含初始化方法__init__,初始化根窗口、数据文件和界面控件。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学生界面 ” 获取。👈👈👈

3. 数据文件初始化
def init_data_file(self):
    if not os.path.exists(self.filename):
        with open(self.filename, "w", newline="") as file:
            writer = csv.writer(file)
            writer.writerow(["姓名", "学号", "语文", "数学", "英语"])

检查数据文件是否存在,如果不存在则创建一个包含标题行的CSV文件。

4. 界面控件创建
def create_widgets(self):
    frame = tk.Frame(self.root)
    frame.pack(padx=10, pady=10)

    # 添加学生信息的控件
    tk.Label(frame, text="姓名:").grid(row=0, column=0, padx=5, pady=5)
    # 略。。。。
    # 略。。。。
    # 略。。。。
    # 略。。。。
    # 略。。。。
    self.name_entry.grid(row=0, column=1, padx=5, pady=5)

    # 其他控件略

    # 显示表格
    # 略。。。。
    # > 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学生界面 ” 获取。👈👈👈

    self.tree.heading("英语", text="英语")
    self.tree.pack(fill=tk.BOTH, expand=True)

    self.load_data()

创建用于输入学生信息、查询、统计和排序的各种控件,并将控件排列在窗口中。创建一个表格控件用于显示学生信息,并加载现有数据。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学生界面 ” 获取。👈👈👈

5. 数据加载
def load_data(self):
    for row in self.tree.get_children():
        self.tree.delete(row)
    with open(self.filename, "r") as file:
  # 略。。。。
  # 略。。。。
  # 略。。。。
  # 略。。。。
  # 略。。。。> 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学生界面 ” 获取。👈👈👈

  # 略。。。。
  # 略。。。。
    self.tree.insert("", tk.END, values=row)

读取CSV文件中的数据并显示在表格中,先清空表格中的旧数据,然后插入新数据。

6. 添加学生信息
def add_student(self):
    name = self.name_entry.get()
    student_id = self.id_entry.get()
  # 略。。。。
  # 略。。。。
  # 略。。。。> 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学生界面 ” 获取。👈👈👈

  # 略。。。。
  # 略。。。。
  # 略。。。。
  # 略。。。。
            writer.writerow([name, student_id, chinese, math, english])
        self.load_data()
    else:
        messagebox.showwarning("警告", "请填写所有字段")

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学生界面 ” 获取。👈👈👈

获取输入框中的信息,检查所有字段是否已填写,若已填写则将新学生信息写入CSV文件,并重新加载数据以更新表格。

7. 删除学生信息
def delete_student(self):
    selected_item = self.tree.selection()
    if selected_item:
        # 略。。。。
        # 略。。。。
        # 略。。。。> 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学生界面 ” 获取。👈👈👈

        # 略。。。。
        # 略。。。。
        # 略。。。。
                if row[1] != student[1]:  # Identify student by student ID
                    writer.writerow(row)
        self.load_data()
    else:
        messagebox.showwarning("警告", "请选择要删除的学生")

通过学号识别并删除选中的学生信息,然后更新CSV文件并重新加载数据。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学生界面 ” 获取。👈👈👈

8. 修改学生信息
def modify_student(self):
    selected_item = self.tree.selection()
    if selected_item:
        student = self.tree.item(selected_item)["values"]
        name = self.name_entry.get()
        student_id = self.id_entry.get()
        chinese = self.chinese_entry.get()
        # 略。。。。
        # 略。。。。
        # 略。。。。
        # 略。。。。> 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学生界面 ” 获取。👈👈👈

        # 略。。。。
        
                    else:
                        students.append(row)
            with open(self.filename, "w", newline="") as file:
                writer = csv.writer(file)
                writer.writerows(students)
            self.load_data()
        else:
            messagebox.showwarning("警告", "请填写所有字段")
    else:
        messagebox.showwarning("警告", "请选择要修改的学生")

通过学号识别并修改选中的学生信息,然后更新CSV文件并重新加载数据。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 学生界面 ” 获取。👈👈👈


【python】python基于tkinter的学生成绩管理系统(源码+数据文件)【独一无二】(二):

相关文章
|
21天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
20天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
27天前
|
JSON 开发工具 git
基于Python和pygame的植物大战僵尸游戏设计源码
本项目是基于Python和pygame开发的植物大战僵尸游戏,包含125个文件,如PNG图像、Python源码等,提供丰富的游戏开发学习素材。游戏设计源码可从提供的链接下载。关键词:Python游戏开发、pygame、植物大战僵尸、源码分享。
|
1月前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
48 3
|
1月前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
80 0
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Button展示图片事件)
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Button展示图片事件)
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Button展示图片事件)
|
存储 区块链 数据安全/隐私保护
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Listbox/Scrollbar)
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Listbox/Scrollbar)
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Listbox/Scrollbar)
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Entry/Entry的Command)
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Entry/Entry的Command)
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Entry/Entry的Command)
|
20天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
18天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。