基于Python实现学生管理系统
简介
学生管理系统是一种很常见的应用系统,用于方便学校对学生信息进行管理。本文介绍了如何使用Python语言来实现一个简单的学生管理系统,包括设计数据库、编写程序等。
设计数据库
学生管理系统需要存储的数据包括学生信息、课程信息、成绩信息等。因此,需要设计一个关系型数据库来存储这些信息。在本示例中,我们使用MySQL数据库。
在MySQL数据库中,我们创建一个名为"student_management_system"的数据库,在其中创建三个表:students
,courses
,以及scores
。
可以使用以下的SQL代码来创建相应的表:
-- 创建students表
CREATE TABLE students (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
gender VARCHAR(10) NOT NULL,
birthday DATE,
major VARCHAR(255)
);
-- 创建courses表
CREATE TABLE courses (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
teacher VARCHAR(255),
credit FLOAT
);
-- 创建scores表
CREATE TABLE scores (
student_id INT NOT NULL,
course_id INT NOT NULL,
score FLOAT NOT NULL,
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES students(id),
FOREIGN KEY (course_id) REFERENCES courses(id)
);
编写程序
我们使用Python语言来编写程序,需要使用pymysql库来连接MySQL数据库,使用flask库构建Web应用。在本示例中,我们使用Python 3.7.7版本进行开发。
安装依赖
可以使用以下命令安装所需的依赖:
pip install pymysql flask
连接数据库
连接MySQL数据库需要进行以下配置:
import pymysql
# 数据库连接配置
DB_HOST = 'localhost'
DB_PORT = 3306
DB_USER = 'root'
DB_PASSWORD = 'password'
DB_NAME = 'student_management_system'
# 创建数据库连接
conn = pymysql.connect(host=DB_HOST, port=DB_PORT, user=DB_USER, password=DB_PASSWORD, db=DB_NAME)
Flask应用
我们使用Flask构建Web应用。在本示例中,我们将使用Flask提供的Blueprint
机制,将应用的不同部分分别封装成不同的蓝图。
from flask import Flask
from students import students_bp
from courses import courses_bp
from scores import scores_bp
app = Flask(__name__)
app.config.update(
DEBUG=True,
SECRET_KEY='thisisasecretkey',
)
# 注册蓝图
app.register_blueprint(students_bp)
app.register_blueprint(courses_bp)
app.register_blueprint(scores_bp)
在上面的代码中,我们注册了三个蓝图:students_bp
,courses_bp
以及scores_bp
。这三个蓝图分别对应学生管理、课程管理以及成绩管理三个模块。
编写蓝图
接下来,我们分别编写三个蓝图的代码。以下是students_bp
的示例代码:
from flask import Blueprint, jsonify, request
import pymysql
students_bp = Blueprint('students', __name__, url_prefix='/students')
# 获取所有学生信息
@students_bp.route('/', methods=['GET'])
def get_students():
conn = pymysql.connect(host=DB_HOST, port=DB_PORT, user=DB_USER, password=DB_PASSWORD, db=DB_NAME)
cursor = conn.cursor()
cursor.execute('SELECT * FROM students')
result = cursor.fetchall()
conn.close()
return jsonify(result)
# 新增学生信息
@students_bp.route('/', methods=['POST'])
def add_student():
data = request.json
name = data['name']
gender = data['gender']
birthday = data.get('birthday')
major = data.get('major')
conn = pymysql.connect(host=DB_HOST, port=DB_PORT, user=DB_USER, password=DB_PASSWORD, db=DB_NAME)
cursor = conn.cursor()
cursor.execute('INSERT INTO students(`name`, `gender`, `birthday`, `major`) VALUES (%s, %s, %s, %s)',
(name, gender, birthday, major))
conn.commit()
conn.close()
return 'OK'
# 删除学生信息
@students_bp.route('/<int:id>', methods=['DELETE'])
def delete_student(id):
conn = pymysql.connect(host=DB_HOST, port=DB_PORT, user=DB_USER, password=DB_PASSWORD, db=DB_NAME)
cursor = conn.cursor()
cursor.execute('DELETE FROM students WHERE id=%s', id)
conn.commit()
conn.close()
return 'OK'
以上代码中,@students_bp.route('/<int:id>', methods=['DELETE'])
表示该路由处理DELETE请求,并传入一个名为id
的参数,该参数为整数类型。类似的,我们可以在其他蓝图中编写相应的路由。
运行应用
最后,我们使用以下代码启动Flask应用:
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
现在,我们可以使用浏览器或者其他HTTP客户端工具来测试我们的应用了。
示例说明
以下是两个关于使用该学生管理系统的示例说明:
示例1
小明是一名学生,他想查看自己的成绩单。他访问学生管理系统,输入自己的学号和密码,即可查看到自己的所有成绩信息。
示例2
小红是一名教师,她需要录入学生的成绩。她访问学生管理系统,输入自己的教师账号和密码,进入成绩录入页面。她选择相应的课程,并输入学生的学号和成绩,即可完成成绩录入。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于python实现学生管理系统 - Python技术站