引言
通过使用Python,我们可以利用其简洁和功能强大的特性,结合Tkinter提供的GUI开发能力,快速构建一个直观且易于使用的学生管理系统。
准备工作
在开始之前,确保你的开发环境中已经安装了
- Python
- Tkinter库
安装完成后,打开你的Python开发环境(IDE)或pycharm,我们将从头开始构建这个学生管理系统。
设计学生管理系统界面
我们的学生管理系统将包括以下主要组件:
- 姓名、年龄、课程输入框: 用于输入新学生的基本信息。
- 添加学生按钮: 将输入的学生信息添加到系统中。
- 显示学生按钮: 弹出窗口显示当前所有学生的信息。
- 编辑和删除学生按钮: 可以编辑和删除已有学生的信息。
import tkinter as tk
from tkinter import messagebox
class StudentManagementSystem:
def __init__(self, root):
self.root = root
self.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 = False
for student in self.students:
if student['姓名'] == name_to_edit:
student['年龄'] = self.entry_age.get()
student['课程'] = self.entry_course.get()
found = True
self.save_students_to_file() # 保存到文件
messagebox.showinfo("成功", "学生信息已更新!")
self.clear_entries()
break
if not found:
messagebox.showerror("错误", "未找到该学生信息!")
def delete_student(self):
# 删除学生信息
name_to_delete = self.entry_name.get()
found = False
for student in self.students:
if student['姓名'] == name_to_delete:
self.students.remove(student)
found = True
self.save_students_to_file() # 保存到文件
messagebox.showinfo("成功", "学生信息已删除!")
self.clear_entries()
break
if 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()
运行结果