python实现简单的学生成绩管理系统

  1. 确定功能需求

在开发学生成绩管理系统之前,需要明确该系统的功能需求,包括以下几个方面:

  • 学生信息管理:包括添加学生信息、修改学生信息、删除学生信息和查看学生信息等操作。
  • 成绩管理:包括添加成绩信息、修改成绩信息、删除成绩信息和查看成绩信息等操作。
  • 统计分析:包括对学生成绩的统计和分析,如计算总分、平均分、最高分、最低分、排名等。

  • 搭建环境

python中实现学生成绩管理系统,需要先安装必要的开发环境和相关依赖库。可以通过以下命令来安装:

pip install flask
pip install flask_sqlalchemy
  1. 创建数据库

学生成绩管理系统需要保存学生信息和成绩信息,可以使用关系型数据库来存储,如MySQL、SQLite等。这里以SQLite为例,在Python中创建数据库的代码为:

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///student.db'
db = SQLAlchemy(app)

这段代码的作用是创建一个名为student.db的SQLite数据库,并创建一个名为db的SQLAlchemy对象,用于对数据库进行操作。

  1. 创建模型

在Python中,可以使用ORM(对象关系映射)工具来操作数据库,将数据库中的表映射为Python中的类,操作起来更加方便。可以根据学生成绩管理系统的需求,创建如下模型类:

class Student(db.Model):
    __tablename__ = 'students'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), nullable=False)
    gender = db.Column(db.Enum('男', '女'), nullable=False)
    class_name = db.Column(db.String(64), nullable=False)
    scores = db.relationship('Score', backref='student', lazy=True)

class Score(db.Model):
    __tablename__ = 'scores'
    id = db.Column(db.Integer, primary_key=True)
    course_name = db.Column(db.String(64), nullable=False)
    score = db.Column(db.Float, nullable=False)
    student_id = db.Column(db.Integer, db.ForeignKey('students.id'))

这段代码定义了两个表,一个是存储学生信息的students表,另一个是存储成绩信息的scores表。在students表中,每个学生有一个唯一的id、姓名name、性别gender、班级class_name和该学生的成绩信息scores。在scores表中,每个成绩有一个唯一的id、课程名称course_name、成绩score和该成绩所属的学生id。

  1. 创建视图

视图是用户操作的界面,可以通过Flask框架来创建视图。可以创建如下视图:

@app.route('/')
def index():
    students = Student.query.all()
    return render_template('index.html', students=students)

@app.route('/add_student', methods=['GET', 'POST'])
def add_student():
    if request.method == 'POST':
        name = request.form['name']
        gender = request.form['gender']
        class_name = request.form['class_name']
        student = Student(name=name, gender=gender, class_name=class_name)
        db.session.add(student)
        db.session.commit()
        return redirect(url_for('index'))

    return render_template('add_student.html')

@app.route('/add_score', methods=['GET', 'POST'])
def add_score():
    if request.method == 'POST':
        course_name = request.form['course_name']
        score = float(request.form['score'])
        student_id = int(request.form['student_id'])
        score_obj = Score(course_name=course_name, score=score, student_id=student_id)
        db.session.add(score_obj)
        db.session.commit()
        return redirect(url_for('index'))

    students = Student.query.all()
    return render_template('add_score.html', students=students)

这段代码中定义了三个视图,分别是显示学生信息的index视图、添加学生信息的add_student视图和添加成绩信息的add_score视图。在add_student和add_score视图中,使用表单来获取用户输入的信息,保存到数据库中,并重定向到index视图来展示修改后的学生信息。

  1. 创建模板

为了展示视图中的数据和用户界面,需要使用HTML模板。可以创建如下两个模板文件:

index.html

<!doctype html>
<html>
    <head>
        <title>学生成绩管理系统</title>
    </head>
    <body>
        <table>
            <thead>
                <tr>
                    <th>姓名</th>
                    <th>性别</th>
                    <th>班级</th>
                    <th>总分</th>
                    <th>平均分</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                {% for student in students %}
                <tr>
                    <td>{{ student.name }}</td>
                    <td>{{ student.gender }}</td>
                    <td>{{ student.class_name }}</td>
                    <td>{{ student.sum_scores }}</td>
                    <td>{{ student.avg_scores }}</td>
                    <td><a href="{{ url_for('add_score', student_id=student.id) }}">添加成绩</a></td>
                </tr>
                {% endfor %}
            </tbody>
        </table>
    </body>
</html>

add_student.html

<!doctype html>
<html>
    <head>
        <title>添加学生信息</title>
    </head>
    <body>
        <form method="POST" action="{{ url_for('add_student') }}">
            <label>姓名:</label><input type="text" name="name" /><br />
            <label>性别:</label><input type="radio" name="gender" value="男" checked />男 <input type="radio" name="gender" value="女" />女<br />
            <label>班级:</label><input type="text" name="class_name" /><br />
            <input type="submit" value="保存" />
        </form>
    </body>
</html>

这段代码展示了两个HTML模板,一个是index.html,用于展示学生信息,另一个是add_student.html,用于添加学生信息。在index.html中,使用了Jinja2模板引擎的语法来循环获取到的学生信息,并计算每个学生的总分和平均分。在add_student.html中,使用HTML表单来获取用户输入的学生信息。

示例1:添加学生信息

假设我们要添加一个名为张三、性别为男、班级为一年级一班的学生,可以按照如下步骤操作:

  1. 打开链接 http://127.0.0.1:5000/add_student
  2. 输入姓名、性别、班级,点击保存
  3. 系统自动保存学生信息,并重定向到http://127.0.0.1:5000/ 页面

示例2:添加成绩信息

假设我们要给张三添加一门语文成绩(90分),可以按照如下步骤操作:

  1. 打开链接 http://127.0.0.1:5000/ 页面
  2. 找到张三所在的行,点击“添加成绩”链接
  3. 在跳转的页面中,选择课程名称、输入成绩,点击保存
  4. 系统自动保存成绩信息,并重定向到http://127.0.0.1:5000/ 页面

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现简单的学生成绩管理系统 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • 在python中实现调用可执行文件.exe的3种方法

    接下来我会详细讲解在Python中实现调用可执行文件.exe的三种方法。 方法一:使用Python自带的os模块 Python自带的os模块可以用来运行外部程序。通过将可执行文件路径传递给os.system()方法,我们就可以在Python中调用.exe文件。代码如下: import os os.system("path/to/your/execu…

    python 2023年5月30日
    00
  • 浅谈机器学习需要的了解的十大算法

    下面是详细讲解“浅谈机器学习需要的了解的十大算法”的完整攻略,包含两个示例说明。 机器学习需要了解的十大算法简介 机器学习需要了解的十大算法是指在机器学习领域中需要掌握的十种算法。这些算法包括线性回归、逻辑回归、决策树、随机森林、支持向量机、朴素贝叶斯、K近邻、神经网络、聚类和降维。这些算法在不同的场景下都有广泛的应用。 线性回归算法 线性回归算法是一种基于…

    python 2023年5月14日
    00
  • Python中的sys.stdout.write实现打印刷新功能

    在Python中,sys.stdout.write方法的作用可以让我们直接向标准输出流(stdout)中写入内容。通过这个方法,我们可以在控制台上打印内容,并且还可以实现打印刷新的功能,让我们更方便地观察程序输出的结果。下面是Python中的sys.stdout.write实现打印刷新功能的完整攻略。 1. 导入sys模块 在使用sys.stdout.wri…

    python 2023年6月5日
    00
  • Python实现自定义函数的5种常见形式分析

    Python实现自定义函数的5种常见形式分析 在Python中,自定义函数是非常常见的一种操作。Python提供了多种方式来定义函数,本文将介绍其中的5种常见形式。 1. 无参函数 无参函数不需要传入参数,直接执行函数体中的代码块。定义无参函数的代码如下: def function_name(): # 代码块 示例:实现一个简单的无参函数,输出“Hello …

    python 2023年6月5日
    00
  • 决策树剪枝算法的python实现方法详解

    下面是详细讲解“决策树剪枝算法的Python实现方法”的完整攻略,包括算法原理、Python实现和两个示例说明。 算法原理 决策树剪枝算法是一种用于减少决策树复杂度的技术,通过去除一些不必要的分支和叶子节点,从而提高决策树的泛化能力和预测性能。其基本思想是决策树的训练过程中,先生成一棵完整的决策树,然后通过对决策树进行剪枝,去除一些不必要的分支和叶子节点,从…

    python 2023年5月14日
    00
  • python字符串切片及常用方法示例详解

    Python的字符串是一种非常重要的数据类型,经常在我们的开发中使用。对于字符串的切片和各种常用方法,失误是我们必须要掌握的。 Python字符串切片 字符串切片是指对字符串进行裁剪,获取其一部分的操作,Python中字符串的切片使用切片运算符[ ],语法格式为: str[start:end:step] 其中: str:表示要进行切片操作的字符串。 star…

    python 2023年6月5日
    00
  • 利用selenium爬虫抓取数据的基础教程

    利用Selenium爬虫抓取数据的基础教程 简介 Selenium是一款自动化测试工具,可用于web应用程序的测试,包括功能测试和回归测试。此外,Selenium还可以用于数据抓取,特别是那些需要JavaScript渲染或动态内容的网站。本文将介绍Selenium爬虫的基础使用方法,以及两个示例说明。 安装Selenium Selenium通过web驱动程序…

    python 2023年5月14日
    00
  • python中的sys模块和os模块

    下面我来为你详细讲解 Python 中的 sys 模块和 os 模块。 sys 模块 sys 模块是 Python 内置的一个模块,主要用于读取 Python 解释器的相关信息以及在程序执行过程中动态地修改这些信息。下面是 sys 模块中常用的函数。 模块导入 在使用 sys 模块之前,需要先导入该模块: import sys 获取 Python 解释器信息…

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