引言
通过使用Python,我们可以利用其简洁和功能强大的特性,结合Tkinter提供的GUI开发能力,快速构建一个直观且易于使用的学生管理系统。
准备工作
在开始之前,确保你的开发环境中已经安装了
- Python
- Tkinter库
安装完成后,打开你的Python开发环境(IDE)或pycharm,我们将从头开始构建这个学生管理系统。
设计学生管理系统界面
我们的学生管理系统将包括以下主要组件:
- 姓名、年龄、课程输入框: 用于输入新学生的基本信息。
- 添加学生按钮: 将输入的学生信息添加到系统中。
- 显示学生按钮: 弹出窗口显示当前所有学生的信息。
- 编辑和删除学生按钮: 可以编辑和删除已有学生的信息。
import tkinter as tk
from tkinter import messageboxclass StudentManagementSystem:def __init__(self, root):self.root = rootself.root.title("学生管理系统")# 学生信息列表self.students = []# 创建界面元素self.label_name = tk.Label(root, text="姓名:")self.label_name.grid(row=0, column=0, padx=10, pady=10)self.entry_name = tk.Entry(root)self.entry_name.grid(row=0, column=1, padx=10, pady=10)self.label_age = tk.Label(root, text="年龄:")self.label_age.grid(row=1, column=0, padx=10, pady=10)self.entry_age = tk.Entry(root)self.entry_age.grid(row=1, column=1, padx=10, pady=10)self.label_course = tk.Label(root, text="课程:")self.label_course.grid(row=2, column=0, padx=10, pady=10)self.entry_course = tk.Entry(root)self.entry_course.grid(row=2, column=1, padx=10, pady=10)# 按钮:添加学生、显示学生、编辑学生、删除学生self.button_add = tk.Button(root, text="添加学生", command=self.add_student)self.button_add.grid(row=3, column=0, columnspan=2, padx=10, pady=10)self.button_show = tk.Button(root, text="显示学生", command=self.show_students)self.button_show.grid(row=4, column=0, columnspan=2, padx=10, pady=10)self.button_edit = tk.Button(root, text="编辑学生", command=self.edit_student)self.button_edit.grid(row=5, column=0, columnspan=2, padx=10, pady=10)self.button_delete = tk.Button(root, text="删除学生", command=self.delete_student)self.button_delete.grid(row=6, column=0, columnspan=2, padx=10, pady=10)def add_student(self):name = self.entry_name.get()age = self.entry_age.get()course = self.entry_course.get()if name and age and course:student = {"姓名": name, "年龄": age, "课程": course}self.students.append(student)self.save_students_to_file() # 保存到文件messagebox.showinfo("成功", "学生信息已添加!")self.clear_entries()else:messagebox.showerror("错误", "请填写完整的学生信息!")def show_students(self):# 弹出窗口显示学生信息show_window = tk.Toplevel(self.root)show_window.title("学生信息")if not self.students:tk.Label(show_window, text="暂无学生信息").pack(padx=20, pady=20)else:for student in self.students:tk.Label(show_window, text=f"姓名: {student['姓名']}, 年龄: {student['年龄']}, 课程: {student['课程']}").pack(padx=20, pady=5)def edit_student(self):# 编辑学生信息name_to_edit = self.entry_name.get()found = Falsefor student in self.students:if student['姓名'] == name_to_edit:student['年龄'] = self.entry_age.get()student['课程'] = self.entry_course.get()found = Trueself.save_students_to_file() # 保存到文件messagebox.showinfo("成功", "学生信息已更新!")self.clear_entries()breakif not found:messagebox.showerror("错误", "未找到该学生信息!")def delete_student(self):# 删除学生信息name_to_delete = self.entry_name.get()found = Falsefor student in self.students:if student['姓名'] == name_to_delete:self.students.remove(student)found = Trueself.save_students_to_file() # 保存到文件messagebox.showinfo("成功", "学生信息已删除!")self.clear_entries()breakif not found:messagebox.showerror("错误", "未找到该学生信息!")def save_students_to_file(self):# 将学生信息保存到文件with open("students.txt", "w") as file:for student in self.students:file.write(f"{student['姓名']}, {student['年龄']}, {student['课程']}\n")def clear_entries(self):# 清空输入框内容self.entry_name.delete(0, tk.END)self.entry_age.delete(0, tk.END)self.entry_course.delete(0, tk.END)if __name__ == "__main__":root = tk.Tk()app = StudentManagementSystem(root)root.mainloop()
运行结果