在ScoreManagementSystem类中的search_data方法中添加以下代码即可支持按照学号和姓名查找成绩:

def search_data(self, keywords):
    if self.data is not None:
        try:
            result = self.data.copy()
            for key, value in keywords.items():
                if key == '学号' or key == '姓名':
                    result = result[result[key] == value]
                else:
                    result = result[result[key].str.contains(value, case=False, regex=False)]
            return result
        except Exception as e:
            messagebox.showerror("错误", str(e))
    return None

然后在ScoreManagementGUI类中的search_data方法中添加学号和姓名的输入框,代码如下:

def search_data(self):
    top = tk.Toplevel()
    top.title("Search Data")

    class_label = tk.Label(top, text="Class:")
    class_label.pack()
    class_entry = tk.Entry(top)
    class_entry.pack()

    student_id_label = tk.Label(top, text="Student ID:")
    student_id_label.pack()
    student_id_entry = tk.Entry(top)
    student_id_entry.pack()

    score_label = tk.Label(top, text="Score:")
    score_label.pack()
    score_entry = tk.Entry(top)
    score_entry.pack()

    name_label = tk.Label(top, text="Name:")
    name_label.pack()
    name_entry = tk.Entry(top)
    name_entry.pack()

    search_button = tk.Button(top, text="Search", command=lambda: self.handle_search_data(top, class_entry.get(), student_id_entry.get(), score_entry.get(), name_entry.get()))
    search_button.pack()

然后在handle_search_data方法中将学号和姓名添加到keywords字典中,代码如下:

def handle_search_data(self, top, class_value, student_id, score, name):
    keywords = {'姓名': name, '班级': class_value, '成绩': score}
    if student_id:
        keywords['学号'] = student_id
    result = self.system.search_data(keywords)
    top.destroy()

    if result is not None:
        top = tk.Toplevel()
        top.title("查询结果")

        result_text = tk.Text(top)
        result_text.pack()

        result_text.insert(tk.END, result.to_string(index=False))
    else:
        messagebox.showinfo("查询结果", "没有数据匹配")
``
import tkinter as tkfrom tkinter import filedialog messageboximport pandas as pdimport matplotlibpyplot as pltfrom matplotlibbackendsbackend_tkagg import FigureCanvasTkAggclass ScoreManagementSystem

原文地址: https://www.cveoy.top/t/topic/hoV8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录