用Python写一个学生管理系统,要有gui界面,并能连接mySQL,全部代码
时间: 2024-03-21 10:39:58 浏览: 73
很抱歉,我无法在这里直接提供全部代码。但我可以给你一些指导来完成这个任务。
首先,你需要安装 Python 的 GUI 工具包,例如 PyQt 或 Tkinter,这将为你提供创建用户界面的工具。
接下来,你需要安装 Python 的 MySQL 连接器,例如 PyMySQL 或 mysql-connector-python。这将使你能够连接到 MySQL 数据库并执行查询。
接下来,你需要设计你的学生管理系统的数据模型,例如学生、课程和成绩等。然后创建 MySQL 数据库和表格来存储这些数据。你可以使用 MySQL Workbench 或其他 MySQL 管理工具来完成这个任务。
接下来,你需要编写 Python 代码来连接到 MySQL 数据库并执行查询。这包括创建连接、创建游标、执行查询、处理结果和关闭连接。
最后,你需要编写 GUI 界面代码,包括创建窗口、添加控件、处理事件等。你可以使用 PyQt Designer 或其他可视化工具来简化这个过程。
以下是一些参考代码,你可以根据你的具体需求进行修改:
```python
import pymysql
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QLineEdit, QPushButton, QTableWidget, QTableWidgetItem
class Student:
def __init__(self, id, name, gender, age):
self.id = id
self.name = name
self.gender = gender
self.age = age
class StudentManager:
def __init__(self):
self.connection = pymysql.connect(host='localhost', user='root', password='password', db='students')
self.cursor = self.connection.cursor()
def add_student(self, student):
sql = "INSERT INTO students (id, name, gender, age) VALUES (%s, %s, %s, %s)"
values = (student.id, student.name, student.gender, student.age)
self.cursor.execute(sql, values)
self.connection.commit()
def get_students(self):
sql = "SELECT * FROM students"
self.cursor.execute(sql)
results = self.cursor.fetchall()
students = []
for row in results:
id = row[0]
name = row[1]
gender = row[2]
age = row[3]
student = Student(id, name, gender, age)
students.append(student)
return students
class MainWindow(QMainWindow):
def __init__(self, student_manager):
super().__init__()
self.student_manager = student_manager
self.init_ui()
def init_ui(self):
self.setWindowTitle('学生管理系统')
self.setGeometry(100, 100, 800, 600)
self.label_id = QLabel('学号', self)
self.label_id.move(50, 50)
self.lineedit_id = QLineEdit(self)
self.lineedit_id.move(150, 50)
self.label_name = QLabel('姓名', self)
self.label_name.move(50, 100)
self.lineedit_name = QLineEdit(self)
self.lineedit_name.move(150, 100)
self.label_gender = QLabel('性别', self)
self.label_gender.move(50, 150)
self.lineedit_gender = QLineEdit(self)
self.lineedit_gender.move(150, 150)
self.label_age = QLabel('年龄', self)
self.label_age.move(50, 200)
self.lineedit_age = QLineEdit(self)
self.lineedit_age.move(150, 200)
self.button_add = QPushButton('添加', self)
self.button_add.move(50, 250)
self.button_add.clicked.connect(self.add_student)
self.tablewidget = QTableWidget(self)
self.tablewidget.setGeometry(300, 50, 400, 500)
self.tablewidget.setColumnCount(4)
self.tablewidget.setHorizontalHeaderLabels(['学号', '姓名', '性别', '年龄'])
self.update_table()
def add_student(self):
id = self.lineedit_id.text()
name = self.lineedit_name.text()
gender = self.lineedit_gender.text()
age = self.lineedit_age.text()
student = Student(id, name, gender, age)
self.student_manager.add_student(student)
self.update_table()
def update_table(self):
self.tablewidget.setRowCount(0)
students = self.student_manager.get_students()
for student in students:
row = self.tablewidget.rowCount()
self.tablewidget.insertRow(row)
self.tablewidget.setItem(row, 0, QTableWidgetItem(student.id))
self.tablewidget.setItem(row, 1, QTableWidgetItem(student.name))
self.tablewidget.setItem(row, 2, QTableWidgetItem(student.gender))
self.tablewidget.setItem(row, 3, QTableWidgetItem(student.age))
if __name__ == '__main__':
app = QApplication([])
student_manager = StudentManager()
window = MainWindow(student_manager)
window.show()
app.exec_()
```
请确保你已经安装了需要的库,并且已经创建了 MySQL 数据库和表格。然后运行此代码,它将创建一个 GUI 窗口,你可以使用它来添加和查看学生信息。
阅读全文