基于 Python 和 MySQL 的学生管理系统设计与实现
基于 Python 和 MySQL 的学生管理系统设计与实现
学生管理系统是一种基于计算机技术的信息管理系统,它通过计算机技术和网络技术实现对学生信息的管理和处理。学生管理系统可以有效地提高学校的管理效率,实现学校信息化建设,为学校管理提供更加科学、高效、便捷的手段。本文将利用 Python 和 MySQL 来编写一个简单的学生管理系统,并详细介绍其设计和实现过程。
一、需求分析
学生管理系统的主要功能包括学生信息的录入、修改、查询、删除等操作,同时还要能够实现对学生信息的统计和分析。在本系统中,我们需要实现以下功能:
- 学生信息的录入:系统需要提供一个界面,让管理员输入学生的基本信息,包括学号、姓名、性别、年龄、所在班级等。
- 学生信息的修改:管理员可以修改学生的基本信息,包括学号、姓名、性别、年龄、所在班级等。
- 学生信息的查询:管理员可以根据学号、姓名、班级等条件进行学生信息的查询。
- 学生信息的删除:管理员可以根据学号删除学生信息。
- 学生信息的统计:系统可以根据班级、性别等条件进行学生信息的统计和分析。
二、系统设计
- 数据库设计
本系统采用 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)
);
- 界面设计
本系统采用 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(['学号', '姓名', '性别', '年龄', '班级'])
- 数据库操作
本系统采用 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()
- 系统实现
本系统采用 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 实现学生信息的录入、修改、查询、删除和统计等功能。本系统具有良好的可扩展性和可维护性,可以满足学校管理的需求,为学校信息化建设提供了有力的支持。
原文地址: https://www.cveoy.top/t/topic/nacX 著作权归作者所有。请勿转载和采集!