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

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