利用PyQt5编写一个学生管理系统学生的信息包括:姓名、年龄、班级、学号、各科成绩管理系统的主要功能包括:增加学生信息、删除学生信息、查找学生、按学生成绩排序。
以下是一个使用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类的对象表示,每个学生有姓名、年龄、班级、学号和成绩等属性。学生信息的增加、删除、查找和排序操作通过按钮的点击事件触发,并且会更新学生信息表格的显示
原文地址: https://www.cveoy.top/t/topic/iN3J 著作权归作者所有。请勿转载和采集!