用python中的PyQt库编写一个教务系统,读取数据并通过加入组件能够对学生成绩数据进行添加、删除、修改、查询
时间: 2023-12-19 15:05:05 浏览: 32
好的,为了实现这个教务系统,我们可以使用Python的PyQt库来创建用户界面,使用文件来存储学生成绩数据。下面是一个简单的实现示例:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QMessageBox, QListWidget
import sys
import json
# 读取学生成绩数据
def read_student_data():
try:
with open('students.json', 'r') as f:
students = json.load(f)
except FileNotFoundError:
students = {}
return students
# 保存学生成绩数据
def save_student_data(students):
with open('students.json', 'w') as f:
json.dump(students, f)
# 添加学生的成绩数据
def add_student(name, grades):
students = read_student_data()
if name not in students:
students[name] = grades
save_student_data(students)
return f"学生{name}的成绩已添加"
else:
return f"学生{name}的成绩已存在,无法重复添加"
# 删除学生的成绩数据
def delete_student(name):
students = read_student_data()
if name in students:
del students[name]
save_student_data(students)
return f"学生{name}的成绩已删除"
else:
return f"学生{name}的成绩不存在,无法删除"
# 修改学生的成绩数据
def modify_student(name, grades):
students = read_student_data()
if name in students:
students[name] = grades
save_student_data(students)
return f"学生{name}的成绩已修改"
else:
return f"学生{name}的成绩不存在,无法修改"
# 查询学生的成绩数据
def query_student(name):
students = read_student_data()
if name in students:
return f"学生{name}的成绩为{students[name]}"
else:
return f"学生{name}的成绩不存在"
class StudentManager(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 学生姓名标签
self.nameLabel = QLabel("学生姓名:", self)
self.nameLabel.move(20, 20)
# 学生姓名输入框
self.nameLineEdit = QLineEdit(self)
self.nameLineEdit.move(120, 20)
# 学生成绩标签
self.gradesLabel = QLabel("学生成绩:", self)
self.gradesLabel.move(20, 60)
# 学生成绩输入框
self.gradesLineEdit = QLineEdit(self)
self.gradesLineEdit.move(120, 60)
# 添加学生按钮
self.addButton = QPushButton("添加", self)
self.addButton.move(20, 100)
self.addButton.clicked.connect(self.add_student)
# 删除学生按钮
self.deleteButton = QPushButton("删除", self)
self.deleteButton.move(100, 100)
self.deleteButton.clicked.connect(self.delete_student)
# 修改学生按钮
self.modifyButton = QPushButton("修改", self)
self.modifyButton.move(180, 100)
self.modifyButton.clicked.connect(self.modify_student)
# 查询学生按钮
self.queryButton = QPushButton("查询", self)
self.queryButton.move(260, 100)
self.queryButton.clicked.connect(self.query_student)
# 学生列表
self.studentList = QListWidget(self)
self.studentList.move(20, 140)
self.studentList.resize(300, 200)
self.setGeometry(300, 300, 350, 400)
self.setWindowTitle('学生成绩管理系统')
self.show()
# 添加学生
def add_student(self):
name = self.nameLineEdit.text()
grades = self.gradesLineEdit.text().split(',')
ret = add_student(name, grades)
QMessageBox.information(self, "提示", ret)
self.nameLineEdit.setText("")
self.gradesLineEdit.setText("")
self.show_student_list()
# 删除学生
def delete_student(self):
name = self.nameLineEdit.text()
ret = delete_student(name)
QMessageBox.information(self, "提示", ret)
self.nameLineEdit.setText("")
self.gradesLineEdit.setText("")
self.show_student_list()
# 修改学生
def modify_student(self):
name = self.nameLineEdit.text()
grades = self.gradesLineEdit.text().split(',')
ret = modify_student(name, grades)
QMessageBox.information(self, "提示", ret)
self.nameLineEdit.setText("")
self.gradesLineEdit.setText("")
self.show_student_list()
# 查询学生
def query_student(self):
name = self.nameLineEdit.text()
ret = query_student(name)
QMessageBox.information(self, "提示", ret)
self.nameLineEdit.setText("")
self.gradesLineEdit.setText("")
# 显示学生列表
def show_student_list(self):
self.studentList.clear()
students = read_student_data()
for name, grades in students.items():
self.studentList.addItem(f"{name}: {grades}")
if __name__ == '__main__':
app = QApplication(sys.argv)
sm = StudentManager()
sm.show_student_list()
sys.exit(app.exec_())
```
在上面的代码中,我们使用PyQt库创建了一个简单的用户界面,包括学生姓名输入框、学生成绩输入框、添加按钮、删除按钮、修改按钮、查询按钮和学生列表。我们使用JSON文件来存储学生成绩数据,并使用Python的json库来读取和保存数据。当用户在学生姓名输入框和学生成绩输入框中输入数据并点击添加、删除、修改或查询按钮时,我们调用相应的函数来执行相应的操作,并使用QMessageBox来显示操作结果。我们还定义了一个函数来显示学生列表,该函数在窗口启动时自动调用,以显示所有学生的成绩数据。