用python写一个学生管理系统,功能包括添加学生信息,删除学生信息,修改学生信息,查看所有学生信息,查看单个学生信息,使用grid布局来写
时间: 2023-08-23 15:04:56 浏览: 74
好的,我可以为您提供一个简单的学生管理系统,并使用 Python 和 Tkinter GUI 库实现。该系统包含以下功能:
- 添加学生信息
- 删除学生信息
- 修改学生信息
- 查看所有学生信息
- 查看单个学生信息
以下是代码实现:
```python
from tkinter import *
# 创建窗口
root = Tk()
root.title("学生管理系统")
# 添加一个标签
Label(root, text="学生信息管理系统", font=("Helvetica", 16), padx=10, pady=10).grid(row=0, column=0, columnspan=2)
# 添加标签和文本框
Label(root, text="姓名").grid(row=1, column=0)
name_entry = Entry(root)
name_entry.grid(row=1, column=1)
Label(root, text="年龄").grid(row=2, column=0)
age_entry = Entry(root)
age_entry.grid(row=2, column=1)
Label(root, text="性别").grid(row=3, column=0)
gender_entry = Entry(root)
gender_entry.grid(row=3, column=1)
Label(root, text="班级").grid(row=4, column=0)
class_entry = Entry(root)
class_entry.grid(row=4, column=1)
# 添加一个空行
Label(root, text="").grid(row=5, column=0)
# 添加按钮
def add_student():
# 获取输入的学生信息
name = name_entry.get()
age = age_entry.get()
gender = gender_entry.get()
class_name = class_entry.get()
# 添加到列表中
students.append({"name": name, "age": age, "gender": gender, "class": class_name})
# 清空输入框
name_entry.delete(0, END)
age_entry.delete(0, END)
gender_entry.delete(0, END)
class_entry.delete(0, END)
def delete_student():
# 获取选中的学生
selected = student_listbox.curselection()
# 从列表中删除
students.pop(selected[0])
# 刷新列表
refresh_students()
def edit_student():
# 获取选中的学生
selected = student_listbox.curselection()
# 获取输入的学生信息
name = name_entry.get()
age = age_entry.get()
gender = gender_entry.get()
class_name = class_entry.get()
# 更新选中的学生信息
students[selected[0]] = {"name": name, "age": age, "gender": gender, "class": class_name}
# 清空输入框
name_entry.delete(0, END)
age_entry.delete(0, END)
gender_entry.delete(0, END)
class_entry.delete(0, END)
# 刷新列表
refresh_students()
def view_student():
# 获取选中的学生
selected = student_listbox.curselection()[0]
# 获取学生信息
name = students[selected]["name"]
age = students[selected]["age"]
gender = students[selected]["gender"]
class_name = students[selected]["class"]
# 显示学生信息
messagebox.showinfo("学生信息", f"姓名:{name}\n年龄:{age}\n性别:{gender}\n班级:{class_name}")
def view_all_students():
# 显示所有学生信息
info = ""
for student in students:
info += f"姓名:{student['name']}\t年龄:{student['age']}\t性别:{student['gender']}\t班级:{student['class']}\n"
messagebox.showinfo("所有学生信息", info)
Button(root, text="添加学生", command=add_student).grid(row=6, column=0)
Button(root, text="删除学生", command=delete_student).grid(row=6, column=1)
Button(root, text="修改学生", command=edit_student).grid(row=7, column=0)
Button(root, text="查看单个学生信息", command=view_student).grid(row=7, column=1)
Button(root, text="查看所有学生信息", command=view_all_students).grid(row=8, column=0, columnspan=2)
# 添加一个空行
Label(root, text="").grid(row=9, column=0)
# 添加列表框
students = []
student_listbox = Listbox(root)
student_listbox.grid(row=10, column=0, columnspan=2)
def refresh_students():
# 清空列表框
student_listbox.delete(0, END)
# 添加学生到列表框中
for student in students:
student_listbox.insert(END, student["name"])
# 刷新列表
refresh_students()
# 使用 grid 布局
for i in range(11):
root.grid_rowconfigure(i, weight=1)
for i in range(2):
root.grid_columnconfigure(i, weight=1)
# 运行窗口
root.mainloop()
```
这段代码使用 `Tkinter` 构建了一个简单的 GUI 窗口,使用了 `Listbox` 来显示学生列表,并使用 `grid` 布局来布置控件。同时,按钮的点击事件实现了添加、删除、修改、查看单个和查看所有学生信息等功能。
阅读全文