帮我写一个多页面的GUI学生信息管理系统的设计于实现 添加学生信息到文本文件中(姓名、学号、年龄、性别、班级等)。 从文本文件中查询学生信息(支持按学号、姓名等条件查询)。 删除文本文件中学生的信息。的Python代码
时间: 2024-09-13 18:12:51 浏览: 39
带UI的学生信息管理系统,分阶段,添加功能,类似于springboot结构,分层实现.zip
创建一个多页面的GUI学生信息管理系统涉及到多个步骤,包括界面设计、事件处理、数据存储和检索等。以下是一个简化的示例代码,使用Python的Tkinter库来创建GUI,以及内置的文件处理功能来实现学生信息的增删改查功能。请注意,这里只是一个基础的实现,实际应用中可能需要更复杂的数据验证和异常处理。
首先,安装Tkinter库(如果尚未安装):
```bash
pip install tk
```
然后,创建Python代码:
```python
import tkinter as tk
from tkinter import messagebox
# 学生信息存储结构
students = {}
# 将学生信息写入文本文件
def save_students_to_file():
with open('students.txt', 'w') as file:
for student_id, student_info in students.items():
file.write(f"{student_id},{student_info['姓名']},{student_info['年龄']},{student_info['性别']},{student_info['班级']}\n")
# 从文本文件中加载学生信息
def load_students_from_file():
global students
students = {}
try:
with open('students.txt', 'r') as file:
for line in file:
student_id, name, age, gender, class_ = line.strip().split(',')
students[student_id] = {'姓名': name, '年龄': age, '性别': gender, '班级': class_}
except FileNotFoundError:
messagebox.showinfo("提示", "学生信息文件不存在,将创建一个新文件。")
# 添加学生信息
def add_student():
student_id = entry_id.get()
name = entry_name.get()
age = entry_age.get()
gender = entry_gender.get()
class_ = entry_class.get()
if student_id in students:
messagebox.showerror("错误", "学号已存在,请输入不同的学号。")
else:
students[student_id] = {'姓名': name, '年龄': age, '性别': gender, '班级': class_}
messagebox.showinfo("成功", "学生信息添加成功!")
save_students_to_file()
# 查询学生信息
def query_student():
student_id = entry_query_id.get()
name = entry_query_name.get()
student = None
if student_id:
student = students.get(student_id)
elif name:
student = next((s for s in students.values() if s['姓名'] == name), None)
if student:
message = f"姓名: {student['姓名']}\n学号: {student['学号']}\n年龄: {student['年龄']}\n性别: {student['性别']}\n班级: {student['班级']}"
messagebox.showinfo("查询结果", message)
else:
messagebox.showerror("错误", "未找到相关学生信息。")
# 删除学生信息
def delete_student():
student_id = entry_id.get()
if student_id in students:
del students[student_id]
messagebox.showinfo("成功", "学生信息删除成功!")
save_students_to_file()
else:
messagebox.showerror("错误", "学号不存在。")
# 创建主窗口和GUI组件
root = tk.Tk()
root.title("学生信息管理系统")
frame = tk.Frame(root)
frame.pack(pady=20)
# 添加学生信息表单
tk.Label(frame, text="学号").grid(row=0, column=0)
entry_id = tk.Entry(frame)
entry_id.grid(row=0, column=1)
tk.Label(frame, text="姓名").grid(row=1, column=0)
entry_name = tk.Entry(frame)
entry_name.grid(row=1, column=1)
tk.Label(frame, text="年龄").grid(row=2, column=0)
entry_age = tk.Entry(frame)
entry_age.grid(row=2, column=1)
tk.Label(frame, text="性别").grid(row=3, column=0)
entry_gender = tk.Entry(frame)
entry_gender.grid(row=3, column=1)
tk.Label(frame, text="班级").grid(row=4, column=0)
entry_class = tk.Entry(frame)
entry_class.grid(row=4, column=1)
button_add = tk.Button(frame, text="添加学生信息", command=add_student)
button_add.grid(row=5, column=0, columnspan=2)
# 查询学生信息表单
tk.Label(frame, text="查询学号").grid(row=6, column=0)
entry_query_id = tk.Entry(frame)
entry_query_id.grid(row=6, column=1)
tk.Label(frame, text="查询姓名").grid(row=7, column=0)
entry_query_name = tk.Entry(frame)
entry_query_name.grid(row=7, column=1)
button_query = tk.Button(frame, text="查询学生信息", command=query_student)
button_query.grid(row=8, column=0, columnspan=2)
# 删除学生信息表单
button_delete = tk.Button(frame, text="删除学生信息", command=delete_student)
button_delete.grid(row=9, column=0, columnspan=2)
root.mainloop()
# 程序启动时加载学生信息
load_students_from_file()
```
上述代码实现了一个基本的多页面GUI学生信息管理系统,其中包含了添加、查询、删除学生信息的基本功能。程序启动时会尝试从`students.txt`文件中加载学生信息,并在退出时将当前学生信息保存到该文件。运行此程序将启动一个窗口,其中包含用于操作学生信息的输入框和按钮。
阅读全文