以下是一个使用PyQt5编写的学生管理系统的示例代码:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton, QMessageBox, QTableWidget, QTableWidgetItem, QHeaderView


class Student:
    def __init__(self, name, age, class_name, student_id, scores):
        self.name = name
        self.age = age
        self.class_name = class_name
        self.student_id = student_id
        self.scores = scores


class StudentManagementSystem(QWidget):
    def __init__(self):
        super().__init__()

        self.students = []
        self.init_ui()

    def init_ui(self):
        self.setWindowTitle('学生管理系统')
        self.setGeometry(100, 100, 600, 400)

        self.name_label = QLabel('姓名:')
        self.name_input = QLineEdit()
        self.age_label = QLabel('年龄:')
        self.age_input = QLineEdit()
        self.class_label = QLabel('班级:')
        self.class_input = QLineEdit()
        self.id_label = QLabel('学号:')
        self.id_input = QLineEdit()
        self.scores_label = QLabel('成绩:')
        self.scores_input = QLineEdit()

        self.add_button = QPushButton('增加')
        self.delete_button = QPushButton('删除')
        self.search_button = QPushButton('查找')
        self.sort_button = QPushButton('排序')

        self.table = QTableWidget()
        self.table.setColumnCount(5)
        self.table.setHorizontalHeaderLabels(['姓名', '年龄', '班级', '学号', '成绩'])
        self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

        self.add_button.clicked.connect(self.add_student)
        self.delete_button.clicked.connect(self.delete_student)
        self.search_button.clicked.connect(self.search_student)
        self.sort_button.clicked.connect(self.sort_students)

        layout = QVBoxLayout()
        layout.addWidget(self.name_label)
        layout.addWidget(self.name_input)
        layout.addWidget(self.age_label)
        layout.addWidget(self.age_input)
        layout.addWidget(self.class_label)
        layout.addWidget(self.class_input)
        layout.addWidget(self.id_label)
        layout.addWidget(self.id_input)
        layout.addWidget(self.scores_label)
        layout.addWidget(self.scores_input)

        button_layout = QHBoxLayout()
        button_layout.addWidget(self.add_button)
        button_layout.addWidget(self.delete_button)
        button_layout.addWidget(self.search_button)
        button_layout.addWidget(self.sort_button)

        layout.addLayout(button_layout)
        layout.addWidget(self.table)

        self.setLayout(layout)

    def add_student(self):
        name = self.name_input.text()
        age = self.age_input.text()
        class_name = self.class_input.text()
        student_id = self.id_input.text()
        scores = self.scores_input.text()

        student = Student(name, age, class_name, student_id, scores)
        self.students.append(student)

        self.update_table()

    def delete_student(self):
        name = self.name_input.text()

        for student in self.students:
            if student.name == name:
                self.students.remove(student)
                self.update_table()
                return

        QMessageBox.warning(self, '错误', '找不到该学生')

    def search_student(self):
        name = self.name_input.text()

        for student in self.students:
            if student.name == name:
                self.age_input.setText(student.age)
                self.class_input.setText(student.class_name)
                self.id_input.setText(student.student_id)
                self.scores_input.setText(student.scores)
                return

        QMessageBox.warning(self, '错误', '找不到该学生')

    def sort_students(self):
        self.students.sort(key=lambda x: x.scores, reverse=True)
        self.update_table()

    def update_table(self):
        self.table.setRowCount(len(self.students))

        for i, student in enumerate(self.students):
            self.table.setItem(i, 0, QTableWidgetItem(student.name))
            self.table.setItem(i, 1, QTableWidgetItem(student.age))
            self.table.setItem(i, 2, QTableWidgetItem(student.class_name))
            self.table.setItem(i, 3, QTableWidgetItem(student.student_id))
            self.table.setItem(i, 4, QTableWidgetItem(student.scores))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = StudentManagementSystem()
    window.show()
    sys.exit(app.exec_())

这个学生管理系统使用了PyQt5的各种组件,包括QApplication、QWidget、QVBoxLayout、QHBoxLayout、QLabel、QLineEdit、QPushButton、QMessageBox、QTableWidget、QTableWidgetItem、QHeaderView等。其中,QTableWidget被用来显示学生信息的表格,QPushButton被用来触发各种操作。学生信息以Student类的对象表示,每个学生有姓名、年龄、班级、学号和成绩等属性。学生信息的增加、删除、查找和排序操作通过按钮的点击事件触发,并且会更新学生信息表格的显示

利用PyQt5编写一个学生管理系统学生的信息包括:姓名、年龄、班级、学号、各科成绩管理系统的主要功能包括:增加学生信息、删除学生信息、查找学生、按学生成绩排序。

原文地址: https://www.cveoy.top/t/topic/iN3J 著作权归作者所有。请勿转载和采集!

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