以下是一个使用 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录