【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的学生成绩管理系统(源码+数据文件)【独一无二】(二):

相关文章
|
2天前
|
机器学习/深度学习 传感器 存储
使用 Python 实现智能地震预警系统
使用 Python 实现智能地震预警系统
88 61
|
4天前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
2天前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
|
3天前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
6天前
|
机器学习/深度学习 API 计算机视觉
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
14 2
|
6天前
|
机器学习/深度学习 存储 算法
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
16 1
|
6天前
|
Python
Python实现系统基础信息
Python实现系统基础信息
19 0
|
2月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的电影订票管理系统
该项目是基于Python+Vue开发的电影订票管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的电影订票管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
23 1
|
2月前
|
数据采集 数据可视化 关系型数据库
【优秀python web设计】基于Python flask的猫眼电影可视化系统,可视化用echart,前端Layui,数据库用MySQL,包括爬虫
本文介绍了一个基于Python Flask框架、MySQL数据库和Layui前端框架的猫眼电影数据采集分析与可视化系统,该系统通过爬虫技术采集电影数据,利用数据分析库进行处理,并使用Echart进行数据的可视化展示,以提供全面、准确的电影市场分析结果。
|
2月前
|
存储 数据采集 数据可视化
基于Python flask+MySQL+echart的电影数据分析可视化系统
该博客文章介绍了一个基于Python Flask框架、MySQL数据库和ECharts库构建的电影数据分析可视化系统,系统功能包括猫眼电影数据的爬取、存储、展示以及电影评价词云图的生成。