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

相关文章
|
26天前
|
Shell 开发者 Docker
Python文件打包:一站式指南
本文深入探讨Python文件打包的各种方法,从基础的zip和tar工具到高级的setuptools、PyInstaller、cx_Freeze等,涵盖Docker镜像、虚拟环境及自包含可执行文件的打包方式。通过示例代码与详细解析,帮助开发者根据项目需求选择合适的打包方案,提升代码分发与部署效率。内容全面,适合各水平读者学习参考。
|
1月前
|
前端开发 JavaScript 关系型数据库
基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行
该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。
60 6
|
1月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的美容预约管理系统源码+运行
基于Python+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的美容诊所预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
49 9
|
1月前
|
JavaScript 前端开发 关系型数据库
基于Python+Vue开发的体育场馆预约管理系统源码+运行
本项目为大学生课程设计作业,采用Python和Vue技术构建了一个体育场馆预约管理系统(实现前后端分离)。系统的主要目标在于帮助学生理解和掌握Python编程知识,同时培养其项目规划和开发能力。参与该项目的学习过程,学生能够在实际操作中锻炼技能,为未来的职业发展奠定良好的基础。
70 3
|
1月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的新闻管理系统源码+运行
基于Python+Vue开发的新闻管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的新闻管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
64 5
|
1月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的房产销售管理系统源码+运行
基于Python+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的房产销售管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
47 2
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)
|
2月前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。