基于python实现学生管理系统

基于Python实现学生管理系统

简介

学生管理系统是一种很常见的应用系统,用于方便学校对学生信息进行管理。本文介绍了如何使用Python语言来实现一个简单的学生管理系统,包括设计数据库、编写程序等。

设计数据库

学生管理系统需要存储的数据包括学生信息、课程信息、成绩信息等。因此,需要设计一个关系型数据库来存储这些信息。在本示例中,我们使用MySQL数据库。

在MySQL数据库中,我们创建一个名为"student_management_system"的数据库,在其中创建三个表:studentscourses,以及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_bpcourses_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技术站

(1)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • Python中的复杂数据类型(list、tuple)

    以下是“Python中的复杂数据类型(list、tuple)”的完整攻略。 1. list list是Python中最常用的数据类型之一,它是一个有序的集合,可以包含任意类型的对象,包括数字、字符串、列表、元组、字典等。list可以通过索引访问其中的元素,也可以通过切片操作获取其中的子列表。示例如下: my_list = [1, ‘hello’, [2, 3…

    python 2023年5月13日
    00
  • Python爬虫解析网页的4种方式实例及原理解析

    Python爬虫是一种自动化程序,可以模拟人类浏览器行为,从网页中提取数据。在爬虫过程中,解析网页是非常重要的一步。本文将介绍Python爬虫解析网页的4种方式,包括正则表达式、BeautifulSoup、XPath和CSS选择器,并提供两个示例。 1. 正则表达式解析网页 正则表达式是一种用于匹配字符串的工具,可以用于解析网页。以下是一个示例,演示如何使用…

    python 2023年5月15日
    00
  • python3 lambda表达式详解

    Python3 Lambda表达式详解 Lambda表达式是Python中的一种匿名函数,它可以在不定义函数的情况下快速定义一个函数。本文将详细讲解Python3 Lambda表达式的使用方法,包括如何定义Lambda函数、如何使用Lambda函数等内容。 定义Lambda函数 以下是一个使用Lambda表达式定义函数的示例: f = lambda x: x…

    python 2023年5月15日
    00
  • python如何实现代码检查

    为了实现Python代码检查,我们可以使用各种工具和库。本文将讨论一些最常用的工具和库,这些工具和库可以帮助您检查Python代码并遵循最佳实践。 1. 使用flake8进行代码检查 flake8是Python中最常用的代码检查工具之一。它可以检查代码中的一些潜在错误、语法错误、代码风格违规、过长的行以及其他问题。在终端中使用以下命令安装: pip inst…

    python 2023年5月31日
    00
  • 利用Python和OpenCV库将URL转换为OpenCV格式的方法

    首先,将URL转换为OpenCV格式需要经历以下过程: 使用Python的requests库从URL获取数据; 将获取到的数据进行解码; 将解码得到的数据转换为OpenCV格式。 下面是具体的步骤和示例说明: 步骤一:使用Python的requests库从URL获取数据 在Python中,可以通过requests库来发送HTTP请求,从而获取到URL对应资源…

    python 2023年6月3日
    00
  • Python基于paramunittest模块实现excl参数化

    下面是Python基于paramunittest模块实现excl参数化的详细攻略。 什么是paramunittest模块 paramunittest是一个Python的单元测试模块,可以实现对方法参数进行参数化自动测试。 安装paramunittest模块 在命令行执行下面的指令进行安装: pip install paramunittest 实现excl参数…

    python 2023年5月14日
    00
  • pip报错“OSError: [Errno 2] No such file or directory: ‘pip’”怎么处理?

    当使用 pip 安装 Python 包时,可能会遇到 “OSError: [Errno 2] No such file or directory: ‘pip'” 错误。这个错误通常是由于 pip 没有正确安装或 pip 的路径没有添加到系统路径中导致的。以下是详细讲解 pip 报错 “OSError: [Errno 2] No such file or di…

    python 2023年5月4日
    00
  • python时间序列数据相减的实现

    下面是关于“Python时间序列数据相减的实现”的完整攻略,希望对你有帮助。 什么是时间序列数据 时间序列数据是一种按照时间顺序排列的数据,通常在金融、气象、交通等领域广泛应用。时间序列数据的特点是存在时间相关性,且数据点之间的时间间隔通常不是固定的。 如下是一组时间序列数据的示例: 2019-01-01 00:00:00,10.2 2019-01-01 0…

    python 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部