利用PyQt5编写一个学生管理系统学生的信息包括:姓名、年龄、班级、学号、各科成绩管理系统的主要功能包括:增加学生信息、删除学生信息、查找学生、按学生成绩排序系统界面布局为:左侧为系统功能栏点击功能栏的功能可实现相应操操作右侧为学生信息显示界面。
以下是一个使用PyQt5编写的学生管理系统的示例代码:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton, QTableWidget, QTableWidgetItem, QMessageBox
class StudentManagementSystem(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('学生管理系统')
self.setGeometry(100, 100, 800, 600)
self.init_ui()
def init_ui(self):
# 创建左侧功能栏
self.left_panel = QWidget(self)
self.left_panel.setStyleSheet("background-color: lightgray;")
self.add_btn = QPushButton('添加学生', self.left_panel)
self.add_btn.clicked.connect(self.add_student)
self.delete_btn = QPushButton('删除学生', self.left_panel)
self.delete_btn.clicked.connect(self.delete_student)
self.search_btn = QPushButton('查找学生', self.left_panel)
self.search_btn.clicked.connect(self.search_student)
self.sort_btn = QPushButton('按成绩排序', self.left_panel)
self.sort_btn.clicked.connect(self.sort_students)
self.left_layout = QVBoxLayout()
self.left_layout.addWidget(self.add_btn)
self.left_layout.addWidget(self.delete_btn)
self.left_layout.addWidget(self.search_btn)
self.left_layout.addWidget(self.sort_btn)
self.left_panel.setLayout(self.left_layout)
# 创建右侧学生信息显示界面
self.right_panel = QWidget(self)
self.right_layout = QVBoxLayout()
self.student_table = QTableWidget(self.right_panel)
self.student_table.setColumnCount(5)
self.student_table.setHorizontalHeaderLabels(['姓名', '年龄', '班级', '学号', '成绩'])
self.right_layout.addWidget(self.student_table)
self.right_panel.setLayout(self.right_layout)
# 设置主窗口布局
self.main_layout = QHBoxLayout()
self.main_layout.addWidget(self.left_panel)
self.main_layout.addWidget(self.right_panel)
self.central_widget = QWidget()
self.central_widget.setLayout(self.main_layout)
self.setCentralWidget(self.central_widget)
def add_student(self):
dialog = AddStudentDialog()
if dialog.exec_() == QDialog.Accepted:
student_info = dialog.get_student_info()
row_count = self.student_table.rowCount()
self.student_table.setRowCount(row_count + 1)
for col, info in enumerate(student_info):
item = QTableWidgetItem(str(info))
self.student_table.setItem(row_count, col, item)
def delete_student(self):
selected_rows = self.student_table.selectedItems()
if selected_rows:
row = selected_rows[0].row()
confirm = QMessageBox.question(self, '删除学生', '确定要删除选中学生吗?', QMessageBox.Yes | QMessageBox.No)
if confirm == QMessageBox.Yes:
self.student_table.removeRow(row)
def search_student(self):
search_text, ok = QInputDialog.getText(self, '查找学生', '请输入要查找的学生姓名:')
if ok:
for row in range(self.student_table.rowCount()):
name_item = self.student_table.item(row, 0)
if name_item.text() == search_text:
self.student_table.selectRow(row)
return
QMessageBox.information(self, '查找学生', '未找到该学生!')
def sort_students(self):
self.student_table.sortItems(4)
class AddStudentDialog(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle('添加学生')
self.setFixedSize(300, 200)
self.init_ui()
def init_ui(self):
self.name_label = QLabel('姓名', self)
self.name_input = QLineEdit(self)
self.age_label = QLabel('年龄', self)
self.age_input = QLineEdit(self)
self.class_label = QLabel('班级', self)
self.class_input = QLineEdit(self)
self.id_label = QLabel('学号', self)
self.id_input = QLineEdit(self)
self.score_label = QLabel('成绩', self)
self.score_input = QLineEdit(self)
self.submit_btn = QPushButton('确定', self)
self.submit_btn.clicked.connect(self.accept)
self.cancel_btn = QPushButton('取消', self)
self.cancel_btn.clicked.connect(self.reject)
self.layout = QVBoxLayout()
self.layout.addWidget(self.name_label)
self.layout.addWidget(self.name_input)
self.layout.addWidget(self.age_label)
self.layout.addWidget(self.age_input)
self.layout.addWidget(self.class_label)
self.layout.addWidget(self.class_input)
self.layout.addWidget(self.id_label)
self.layout.addWidget(self.id_input)
self.layout.addWidget(self.score_label)
self.layout.addWidget(self.score_input)
self.layout.addWidget(self.submit_btn)
self.layout.addWidget(self.cancel_btn)
self.setLayout(self.layout)
def get_student_info(self):
name = self.name_input.text()
age = self.age_input.text()
class_ = self.class_input.text()
id_ = self.id_input.text()
score = self.score_input.text()
return name, age, class_, id_, score
if __name__ == '__main__':
app = QApplication(sys.argv)
window = StudentManagementSystem()
window.show()
sys.exit(app.exec_())
这个学生管理系统使用了PyQt5库来构建用户界面。左侧是系统功能栏,通过点击按钮来触发相应的操作。右侧是学生信息显示界面,使用了QTableWidget来显示学生的信息。系统提供了添加学生、删除学生、查找学生、按成绩排序等功能
原文地址: https://www.cveoy.top/t/topic/iN4b 著作权归作者所有。请勿转载和采集!