Python GUI 学籍管理系统:添加、删除、更新和查找学生信息
下面是一个使用 Python GUI 编写的学籍管理系统的例子:
import tkinter as tk
from tkinter import messagebox
class Student:
def __init__(self, name, gender, age, student_id, grade, python_score, c_score, db_score):
self.name = name
self.gender = gender
self.age = age
self.student_id = student_id
self.grade = grade
self.python_score = python_score
self.c_score = c_score
self.db_score = db_score
class StudentManagementSystemGUI:
def __init__(self, root):
self.root = root
self.root.title('学籍管理系统')
self.students = []
self.name_label = tk.Label(root, text='姓名')
self.name_label.grid(row=0, column=0)
self.name_entry = tk.Entry(root)
self.name_entry.grid(row=0, column=1)
self.gender_label = tk.Label(root, text='性别')
self.gender_label.grid(row=1, column=0)
self.gender_entry = tk.Entry(root)
self.gender_entry.grid(row=1, column=1)
self.age_label = tk.Label(root, text='年龄')
self.age_label.grid(row=2, column=0)
self.age_entry = tk.Entry(root)
self.age_entry.grid(row=2, column=1)
self.student_id_label = tk.Label(root, text='学号')
self.student_id_label.grid(row=3, column=0)
self.student_id_entry = tk.Entry(root)
self.student_id_entry.grid(row=3, column=1)
self.grade_label = tk.Label(root, text='年级')
self.grade_label.grid(row=4, column=0)
self.grade_entry = tk.Entry(root)
self.grade_entry.grid(row=4, column=1)
self.python_score_label = tk.Label(root, text='Python成绩')
self.python_score_label.grid(row=5, column=0)
self.python_score_entry = tk.Entry(root)
self.python_score_entry.grid(row=5, column=1)
self.c_score_label = tk.Label(root, text='C语言成绩')
self.c_score_label.grid(row=6, column=0)
self.c_score_entry = tk.Entry(root)
self.c_score_entry.grid(row=6, column=1)
self.db_score_label = tk.Label(root, text='数据库成绩')
self.db_score_label.grid(row=7, column=0)
self.db_score_entry = tk.Entry(root)
self.db_score_entry.grid(row=7, column=1)
self.add_button = tk.Button(root, text='添加学生', command=self.add_student)
self.add_button.grid(row=8, column=0)
self.delete_button = tk.Button(root, text='删除学生', command=self.delete_student)
self.delete_button.grid(row=8, column=1)
self.update_button = tk.Button(root, text='更新学生信息', command=self.update_student)
self.update_button.grid(row=9, column=0)
self.search_button = tk.Button(root, text='查找学生', command=self.search_student)
self.search_button.grid(row=9, column=1)
self.export_button = tk.Button(root, text='导出学生信息', command=self.export_students)
self.export_button.grid(row=10, column=0, columnspan=2)
def add_student(self):
name = self.name_entry.get()
gender = self.gender_entry.get()
age = self.age_entry.get()
student_id = self.student_id_entry.get()
grade = self.grade_entry.get()
python_score = self.python_score_entry.get()
c_score = self.c_score_entry.get()
db_score = self.db_score_entry.get()
if not name or not gender or not age or not student_id or not grade or not python_score or not c_score or not db_score:
messagebox.showwarning('错误', '请填写完整的学生信息')
return
student = Student(name, gender, age, student_id, grade, python_score, c_score, db_score)
self.students.append(student)
messagebox.showinfo('成功', '学生信息添加成功')
self.clear_entries()
def delete_student(self):
student_id = self.student_id_entry.get()
if not student_id:
messagebox.showwarning('错误', '请输入要删除的学生学号')
return
for student in self.students:
if student.student_id == student_id:
self.students.remove(student)
messagebox.showinfo('成功', '学生信息删除成功')
self.clear_entries()
return
messagebox.showwarning('错误', '未找到该学号的学生')
def update_student(self):
student_id = self.student_id_entry.get()
if not student_id:
messagebox.showwarning('错误', '请输入要更新的学生学号')
return
for student in self.students:
if student.student_id == student_id:
student.name = self.name_entry.get()
student.gender = self.gender_entry.get()
student.age = self.age_entry.get()
student.grade = self.grade_entry.get()
student.python_score = self.python_score_entry.get()
student.c_score = self.c_score_entry.get()
student.db_score = self.db_score_entry.get()
messagebox.showinfo('成功', '学生信息更新成功')
self.clear_entries()
return
messagebox.showwarning('错误', '未找到该学号的学生')
def search_student(self):
student_id = self.student_id_entry.get()
if not student_id:
messagebox.showwarning('错误', '请输入要查找的学生学号')
return
for student in self.students:
if student.student_id == student_id:
self.name_entry.delete(0, tk.END)
self.name_entry.insert(0, student.name)
self.gender_entry.delete(0, tk.END)
self.gender_entry.insert(0, student.gender)
self.age_entry.delete(0, tk.END)
self.age_entry.insert(0, student.age)
self.grade_entry.delete(0, tk.END)
self.grade_entry.insert(0, student.grade)
self.python_score_entry.delete(0, tk.END)
self.python_score_entry.insert(0, student.python_score)
self.c_score_entry.delete(0, tk.END)
self.c_score_entry.insert(0, student.c_score)
self.db_score_entry.delete(0, tk.END)
self.db_score_entry.insert(0, student.db_score)
return
messagebox.showwarning('错误', '未找到该学号的学生')
def export_students(self):
filename = 'students.txt'
with open(filename, 'w') as f:
for student in self.students:
f.write(f'姓名: {student.name}, 性别: {student.gender}, 年龄: {student.age}, 学号: {student.student_id}, 年级: {student.grade}, Python成绩: {student.python_score}, C语言成绩: {student.c_score}, 数据库成绩: {student.db_score}\n')
messagebox.showinfo('成功', f'学生信息已导出到{filename}')
def clear_entries(self):
self.name_entry.delete(0, tk.END)
self.gender_entry.delete(0, tk.END)
self.age_entry.delete(0, tk.END)
self.student_id_entry.delete(0, tk.END)
self.grade_entry.delete(0, tk.END)
self.python_score_entry.delete(0, tk.END)
self.c_score_entry.delete(0, tk.END)
self.db_score_entry.delete(0, tk.END)
root = tk.Tk()
app = StudentManagementSystemGUI(root)
root.mainloop()
该学籍管理系统使用了tkinter库来构建GUI界面。通过在文本框中输入学生信息,可以添加、删除、更新和查找学生信息,并且可以将学生信息导出到txt文档中。
原文地址: https://www.cveoy.top/t/topic/pkMl 著作权归作者所有。请勿转载和采集!