Python GUI 学籍管理系统:增删改查学生信息并保存到 TXT 文件
以下是一个使用 Python GUI 编写的学籍管理系统示例代码:
from tkinter import *
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 StudentManagementSystem:
def __init__(self, root):
self.root = root
self.root.title('学籍管理系统')
self.students = []
# 创建姓名标签和输入框
self.name_label = Label(root, text='姓名:')
self.name_label.grid(row=0, column=0)
self.name_entry = Entry(root)
self.name_entry.grid(row=0, column=1)
# 创建性别标签和输入框
self.gender_label = Label(root, text='性别:')
self.gender_label.grid(row=1, column=0)
self.gender_entry = Entry(root)
self.gender_entry.grid(row=1, column=1)
# 创建年龄标签和输入框
self.age_label = Label(root, text='年龄:')
self.age_label.grid(row=2, column=0)
self.age_entry = Entry(root)
self.age_entry.grid(row=2, column=1)
# 创建学号标签和输入框
self.student_id_label = Label(root, text='学号:')
self.student_id_label.grid(row=3, column=0)
self.student_id_entry = Entry(root)
self.student_id_entry.grid(row=3, column=1)
# 创建年级标签和输入框
self.grade_label = Label(root, text='年级:')
self.grade_label.grid(row=4, column=0)
self.grade_entry = Entry(root)
self.grade_entry.grid(row=4, column=1)
# 创建Python成绩标签和输入框
self.python_score_label = Label(root, text='Python成绩:')
self.python_score_label.grid(row=5, column=0)
self.python_score_entry = Entry(root)
self.python_score_entry.grid(row=5, column=1)
# 创建C语言成绩标签和输入框
self.c_score_label = Label(root, text='C语言成绩:')
self.c_score_label.grid(row=6, column=0)
self.c_score_entry = Entry(root)
self.c_score_entry.grid(row=6, column=1)
# 创建数据库成绩标签和输入框
self.db_score_label = Label(root, text='数据库成绩:')
self.db_score_label.grid(row=7, column=0)
self.db_score_entry = Entry(root)
self.db_score_entry.grid(row=7, column=1)
# 创建按钮
self.add_button = Button(root, text='添加', command=self.add_student)
self.add_button.grid(row=8, column=0)
self.delete_button = Button(root, text='删除', command=self.delete_student)
self.delete_button.grid(row=8, column=1)
self.update_button = Button(root, text='修改', command=self.update_student)
self.update_button.grid(row=8, column=2)
self.search_button = Button(root, text='查询', command=self.search_student)
self.search_button.grid(row=8, column=3)
# 创建显示框
self.textbox = Text(root)
self.textbox.grid(row=9, column=0, columnspan=4)
# 加载已保存的学生信息
self.load_students()
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.showerror('错误', '请填写完整的学生信息')
return
student = Student(name, gender, age, student_id, grade, python_score, c_score, db_score)
self.students.append(student)
self.update_textbox()
self.save_students()
self.clear_entries()
def delete_student(self):
student_id = self.student_id_entry.get()
for student in self.students:
if student.student_id == student_id:
self.students.remove(student)
self.update_textbox()
self.save_students()
self.clear_entries()
return
messagebox.showerror('错误', '未找到该学生')
def update_student(self):
student_id = self.student_id_entry.get()
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()
self.update_textbox()
self.save_students()
self.clear_entries()
return
messagebox.showerror('错误', '未找到该学生')
def search_student(self):
student_id = self.student_id_entry.get()
for student in self.students:
if student.student_id == student_id:
self.name_entry.delete(0, END)
self.name_entry.insert(END, student.name)
self.gender_entry.delete(0, END)
self.gender_entry.insert(END, student.gender)
self.age_entry.delete(0, END)
self.age_entry.insert(END, student.age)
self.grade_entry.delete(0, END)
self.grade_entry.insert(END, student.grade)
self.python_score_entry.delete(0, END)
self.python_score_entry.insert(END, student.python_score)
self.c_score_entry.delete(0, END)
self.c_score_entry.insert(END, student.c_score)
self.db_score_entry.delete(0, END)
self.db_score_entry.insert(END, student.db_score)
return
messagebox.showerror('错误', '未找到该学生')
def update_textbox(self):
self.textbox.delete(1.0, END)
for student in self.students:
self.textbox.insert(END, f'姓名:{student.name}
')
self.textbox.insert(END, f'性别:{student.gender}
')
self.textbox.insert(END, f'年龄:{student.age}
')
self.textbox.insert(END, f'学号:{student.student_id}
')
self.textbox.insert(END, f'年级:{student.grade}
')
self.textbox.insert(END, f'Python成绩:{student.python_score}
')
self.textbox.insert(END, f'C语言成绩:{student.c_score}
')
self.textbox.insert(END, f'数据库成绩:{student.db_score}
')
self.textbox.insert(END, '-' * 30 + '\n')
def clear_entries(self):
self.name_entry.delete(0, END)
self.gender_entry.delete(0, END)
self.age_entry.delete(0, END)
self.student_id_entry.delete(0, END)
self.grade_entry.delete(0, END)
self.python_score_entry.delete(0, END)
self.c_score_entry.delete(0, END)
self.db_score_entry.delete(0, END)
def load_students(self):
try:
with open('students.txt', 'r') as file:
for line in file:
data = line.strip().split(',')
student = Student(data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7])
self.students.append(student)
self.update_textbox()
except FileNotFoundError:
messagebox.showinfo('提示', '尚未保存学生信息')
def save_students(self):
with open('students.txt', 'w') as file:
for student in self.students:
file.write(f'{student.name},{student.gender},{student.age},{student.student_id},{student.grade},{student.python_score},{student.c_score},{student.db_score}\n')
root = Tk()
system = StudentManagementSystem(root)
root.mainloop()
运行以上代码,将会弹出一个学籍管理系统的窗口。你可以通过在对应的输入框中输入学生信息,然后点击相应的按钮来实现对学生信息的增删改查操作。所有的学生信息将会保存在一个名为'students.txt'的文本文件中。
原文地址: https://www.cveoy.top/t/topic/plKf 著作权归作者所有。请勿转载和采集!