完整代码如下:

import tkinter as tk
from tkinter import ttk
from tkinter import filedialog
import pandas as pd
import matplotlib.pyplot as plt


class ScoreManagementSystem:
    def __init__(self, master):
        self.master = master
        self.master.title("成绩管理系统")
        self.master.geometry("800x600")
        
        # 初始化数据
        self.data = pd.DataFrame(columns=["班级", "学号", "姓名", "成绩"])
        
        # 创建菜单栏
        menubar = tk.Menu(self.master)
        filemenu = tk.Menu(menubar, tearoff=0)
        filemenu.add_command(label="打开", command=self.open_file)
        filemenu.add_command(label="保存", command=self.save_file)
        filemenu.add_separator()
        filemenu.add_command(label="退出", command=self.master.quit)
        menubar.add_cascade(label="文件", menu=filemenu)
        self.master.config(menu=menubar)
        
        # 创建工具栏
        toolbar = ttk.Frame(self.master)
        ttk.Button(toolbar, text="新增", command=self.add_score).pack(side=tk.LEFT, padx=5, pady=5)
        ttk.Button(toolbar, text="修改", command=self.modify_score).pack(side=tk.LEFT, padx=5, pady=5)
        ttk.Button(toolbar, text="删除", command=self.delete_score).pack(side=tk.LEFT, padx=5, pady=5)
        ttk.Button(toolbar, text="排序", command=self.sort_score).pack(side=tk.LEFT, padx=5, pady=5)
        ttk.Button(toolbar, text="查找", command=self.find_score).pack(side=tk.LEFT, padx=5, pady=5)
        ttk.Button(toolbar, text="图表", command=self.plot_score).pack(side=tk.LEFT, padx=5, pady=5)
        ttk.Button(toolbar, text="导出", command=self.export_score).pack(side=tk.LEFT, padx=5, pady=5)
        toolbar.pack(side=tk.TOP, fill=tk.X)

        # 创建表格
        self.table = ttk.Treeview(self.master, columns=["班级", "学号", "姓名", "成绩"], show="headings")
        self.table.column("班级", width=100)
        self.table.column("学号", width=100)
        self.table.column("姓名", width=100)
        self.table.column("成绩", width=100)
        self.table.heading("班级", text="班级")
        self.table.heading("学号", text="学号")
        self.table.heading("姓名", text="姓名")
        self.table.heading("成绩", text="成绩")
        self.table.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
        
        # 绑定事件
        self.table.bind("<Double-1>", self.modify_score)

    def open_file(self):
        filename = filedialog.askopenfilename(filetypes=[("Excel文件", "*.xlsx"), ("CSV文件", "*.csv")])
        if filename:
            try:
                self.data = pd.read_excel(filename)
                self.show_data()
            except Exception as e:
                tk.messagebox.showerror("错误", str(e))

    def save_file(self):
        filename = filedialog.asksaveasfilename(filetypes=[("Excel文件", "*.xlsx"), ("CSV文件", "*.csv")])
        if filename:
            try:
                self.data.to_excel(filename, index=False)
            except Exception as e:
                tk.messagebox.showerror("错误", str(e))

    def add_score(self):
        # 创建对话框
        dialog = tk.Toplevel(self.master)
        dialog.title("新增成绩")
        dialog.geometry("300x200")

        # 创建表单
        ttk.Label(dialog, text="班级").grid(row=0, column=0, padx=5, pady=5)
        ttk.Entry(dialog, textvariable=tk.StringVar()).grid(row=0, column=1, padx=5, pady=5)
        ttk.Label(dialog, text="学号").grid(row=1, column=0, padx=5, pady=5)
        ttk.Entry(dialog, textvariable=tk.StringVar()).grid(row=1, column=1, padx=5, pady=5)
        ttk.Label(dialog, text="姓名").grid(row=2, column=0, padx=5, pady=5)
        ttk.Entry(dialog, textvariable=tk.StringVar()).grid(row=2, column=1, padx=5, pady=5)
        ttk.Label(dialog, text="成绩").grid(row=3, column=0, padx=5, pady=5)
        ttk.Entry(dialog, textvariable=tk.StringVar()).grid(row=3, column=1, padx=5, pady=5)

        # 创建按钮
        ttk.Button(dialog, text="确定", command=lambda: self.add_score_confirm(dialog)).grid(row=4, column=0, columnspan=2, padx=5, pady=5)

    def add_score_confirm(self, dialog):
        # 获取表单数据
        class_name = dialog.winfo_children()[1].get()
        student_id = dialog.winfo_children()[3].get()
        student_name = dialog.winfo_children()[5].get()
        score = dialog.winfo_childre
import tkinter as tkfrom tkinter import ttkfrom tkinter import filedialogimport pandas as pdimport matplotlibpyplot as pltclass ScoreManagementSystem def __init__self master selfmaster = mas

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

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