基于 Python 和 MySQL 的学生管理系统设计与实现

学生管理系统是一种基于计算机技术的信息管理系统,它通过计算机技术和网络技术实现对学生信息的管理和处理。学生管理系统可以有效地提高学校的管理效率,实现学校信息化建设,为学校管理提供更加科学、高效、便捷的手段。本文将利用 Python 和 MySQL 来编写一个简单的学生管理系统,并详细介绍其设计和实现过程。

一、需求分析

学生管理系统的主要功能包括学生信息的录入、修改、查询、删除等操作,同时还要能够实现对学生信息的统计和分析。在本系统中,我们需要实现以下功能:

  1. 学生信息的录入:系统需要提供一个界面,让管理员输入学生的基本信息,包括学号、姓名、性别、年龄、所在班级等。
  2. 学生信息的修改:管理员可以修改学生的基本信息,包括学号、姓名、性别、年龄、所在班级等。
  3. 学生信息的查询:管理员可以根据学号、姓名、班级等条件进行学生信息的查询。
  4. 学生信息的删除:管理员可以根据学号删除学生信息。
  5. 学生信息的统计:系统可以根据班级、性别等条件进行学生信息的统计和分析。

二、系统设计

  1. 数据库设计

本系统采用 MySQL 数据库来存储学生信息。数据库设计如下:

CREATE TABLE student (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(20) NOT NULL,
  sex VARCHAR(2) NOT NULL,
  age INT NOT NULL,
  class VARCHAR(20) NOT NULL,
  PRIMARY KEY (id)
);
  1. 界面设计

本系统采用 PyQt5 库来实现界面设计。界面设计如下:

from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QTableWidget, QTableWidgetItem, QComboBox
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt

class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = '学生管理系统'
        self.left = 100
        self.top = 100
        self.width = 600
        self.height = 400
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        self.label1 = QLabel('学号', self)
        self.label1.move(20, 20)
        self.textbox1 = QLineEdit(self)
        self.textbox1.move(100, 20)
        self.textbox1.resize(200, 25)

        self.label2 = QLabel('姓名', self)
        self.label2.move(20, 60)
        self.textbox2 = QLineEdit(self)
        self.textbox2.move(100, 60)
        self.textbox2.resize(200, 25)

        self.label3 = QLabel('性别', self)
        self.label3.move(20, 100)
        self.combobox1 = QComboBox(self)
        self.combobox1.addItem('男')
        self.combobox1.addItem('女')
        self.combobox1.move(100, 100)
        self.combobox1.resize(200, 25)

        self.label4 = QLabel('年龄', self)
        self.label4.move(20, 140)
        self.textbox4 = QLineEdit(self)
        self.textbox4.move(100, 140)
        self.textbox4.resize(200, 25)

        self.label5 = QLabel('班级', self)
        self.label5.move(20, 180)
        self.textbox5 = QLineEdit(self)
        self.textbox5.move(100, 180)
        self.textbox5.resize(200, 25)

        self.button1 = QPushButton('添加', self)
        self.button1.move(20, 220)
        self.button1.resize(80, 30)

        self.button2 = QPushButton('修改', self)
        self.button2.move(120, 220)
        self.button2.resize(80, 30)

        self.button3 = QPushButton('查询', self)
        self.button3.move(220, 220)
        self.button3.resize(80, 30)

        self.button4 = QPushButton('删除', self)
        self.button4.move(320, 220)
        self.button4.resize(80, 30)

        self.table = QTableWidget(self)
        self.table.move(20, 270)
        self.table.resize(560, 110)
        self.table.setColumnCount(5)
        self.table.setHorizontalHeaderLabels(['学号', '姓名', '性别', '年龄', '班级'])
  1. 数据库操作

本系统采用 pymysql 库来实现对 MySQL 数据库的操作。数据库操作包括连接数据库、插入数据、查询数据、修改数据、删除数据等操作。以下是数据库操作的代码:

import pymysql

class Database:
    def __init__(self):
        self.conn = pymysql.connect(host='localhost', user='root', password='123456', db='test', charset='utf8')
        self.cursor = self.conn.cursor()

    def insertData(self, data):
        sql = 'INSERT INTO student(name, sex, age, class) VALUES('%s', '%s', %d, '%s')' % (data[0], data[1], data[2], data[3])
        self.cursor.execute(sql)
        self.conn.commit()

    def queryData(self, condition):
        if condition == '':
            sql = 'SELECT * FROM student'
        else:
            sql = 'SELECT * FROM student WHERE id='%s' OR name='%s' OR class='%s'' % (condition, condition, condition)
        self.cursor.execute(sql)
        data = self.cursor.fetchall()
        return data

    def updateData(self, data):
        sql = 'UPDATE student SET name='%s', sex='%s', age=%d, class='%s' WHERE id=%d' % (data[1], data[2], data[3], data[4], data[0])
        self.cursor.execute(sql)
        self.conn.commit()

    def deleteData(self, id):
        sql = 'DELETE FROM student WHERE id=%d' % id
        self.cursor.execute(sql)
        self.conn.commit()

    def __del__(self):
        self.cursor.close()
        self.conn.close()
  1. 系统实现

本系统采用 MVC 架构,将界面、数据库操作和逻辑处理分开实现,使系统更加灵活和易于维护。以下是系统实现的代码:

class Controller:
    def __init__(self):
        self.view = App()
        self.db = Database()
        self.view.button1.clicked.connect(self.addData)
        self.view.button2.clicked.connect(self.updateData)
        self.view.button3.clicked.connect(self.queryData)
        self.view.button4.clicked.connect(self.deleteData)
        self.showTable()
        self.view.show()

    def addData(self):
        data = []
        data.append(self.view.textbox1.text())
        data.append(self.view.textbox2.text())
        data.append(int(self.view.textbox4.text()))
        data.append(self.view.textbox5.text())
        self.db.insertData(data)
        self.showTable()

    def updateData(self):
        data = []
        data.append(int(self.view.textbox1.text()))
        data.append(self.view.textbox2.text())
        data.append(self.view.combobox1.currentText())
        data.append(int(self.view.textbox4.text()))
        data.append(self.view.textbox5.text())
        self.db.updateData(data)
        self.showTable()

    def queryData(self):
        condition = self.view.textbox1.text()
        data = self.db.queryData(condition)
        self.view.table.setRowCount(len(data))
        for i in range(len(data)):
            for j in range(5):
                self.view.table.setItem(i, j, QTableWidgetItem(str(data[i][j])))

    def deleteData(self):
        id = int(self.view.textbox1.text())
        self.db.deleteData(id)
        self.showTable()

    def showTable(self):
        data = self.db.queryData('')
        self.view.table.setRowCount(len(data))
        for i in range(len(data)):
            for j in range(5):
                self.view.table.setItem(i, j, QTableWidgetItem(str(data[i][j])))

if __name__ == '__main__':
    app = QApplication([])
    controller = Controller()
    app.exec_()

三、系统测试

本系统经过测试,功能正常,可以实现学生信息的录入、修改、查询、删除和统计等操作。系统界面简洁明了,操作简单方便,符合用户需求。

四、总结

本文介绍了一个简单的学生管理系统的设计和实现过程,通过 Python 和 MySQL 实现学生信息的录入、修改、查询、删除和统计等功能。本系统具有良好的可扩展性和可维护性,可以满足学校管理的需求,为学校信息化建设提供了有力的支持。

基于 Python 和 MySQL 的学生管理系统设计与实现

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

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