设计一个基于Python与MySQL的学生信息管理系统,能够实现学生信息的添加、删除和显示功能。 使用面向对象的编程方式,至少包含两个类:Student和StudentManagementSystem。
时间: 2024-10-25 17:12:29 浏览: 16
基于python的人员信息管理系统的设计与实现毕业论文
设计一个基于Python和MySQL的学生信息管理系统,首先我们需要设置基本的数据库模型。我们将创建两个类:`Student` 和 `StudentManagementSystem`。
```python
import mysql.connector
# 定义数据库连接类
class DatabaseConnection:
def __init__(self, host, user, password, database):
self.conn = mysql.connector.connect(
host=host,
user=user,
password=password,
database=database
)
self.cursor = self.conn.cursor()
def close(self):
self.cursor.close()
self.conn.close()
# 学生类,表示单个学生的信息
class Student:
def __init__(self, id, name, major):
self.id = id
self.name = name
self.major = major
def to_dict(self):
return {'id': self.id, 'name': self.name, 'major': self.major}
@staticmethod
def from_db_row(row):
return Student(row[0], row[1], row[2])
# 学生管理类,用于操作数据库和处理业务逻辑
class StudentManagementSystem:
def __init__(self, db_connection):
self.db_conn = db_connection
def add_student(self, student):
query = "INSERT INTO students (id, name, major) VALUES (%s, %s, %s)"
self.db_conn.cursor.execute(query, (student.id, student.name, student.major))
self.db_conn.commit()
def delete_student(self, id):
query = "DELETE FROM students WHERE id=%s"
self.db_conn.cursor.execute(query, (id,))
self.db_conn.commit()
def display_students(self):
query = "SELECT * FROM students"
self.db_conn.cursor.execute(query)
rows = self.db_conn.cursor.fetchall()
for row in rows:
print(Student.from_db_row(row))
def close(self):
self.db_conn.close()
# 示例用法
def main():
db_config = {
'host': 'localhost',
'user': 'root',
'password': 'password',
'database': 'students_info'
}
connection = DatabaseConnection(**db_config)
sms = StudentManagementSystem(connection)
# 添加新学生
new_student = Student(1, '张三', '计算机科学')
sms.add_student(new_student)
# 删除学生
sms.delete_student(1)
# 显示所有学生信息
sms.display_students()
sms.close() # 关闭数据库连接
if __name__ == "__main__":
main()
```
在这个例子中,我们首先定义了一个简单的数据库连接类`DatabaseConnection`,以及学生类`Student`,它包含了学生的ID、姓名和专业属性。`StudentManagementSystem`类负责管理数据库操作,如添加、删除和显示学生信息。在`main`函数中,我们展示了如何使用这个系统。
阅读全文