• Flask学生信息管理系统,前后端分离(附完整源码+数据库)


    一、演示

    计算机作业:flask学生信息管理系统,前后端分离

    更加详细青岛b站查看:学生信息管理系统

    二、Flask基础

    即使你对Flask不熟悉,希望你要掌握基础,才能修改和看懂一个项目,本专栏有讲解过Flask基础,这里便不说了,自己去看:

    1. 第一篇:环境搭建+配置+URL与试图之间的映射+重定向+数据库连接
    2. 第二篇:模板渲染+模板过滤使用+控制语句

    三、项目设计

    • 使用sqlite3数据库,原因:不需要配置,不需要安装和管理;不需要一个单独的服务器进程或操作的系统(无服务器的);一个完整的SQLite数据库存储在一个单一的跨平台的磁盘文件上
    • 使用web框架Flask,原因:入门简单;轻量级框架(我也就学了一天)

    3.1 数据库设计

    构思比较简单,用一张表存储信息:
    在这里插入图片描述
    :本人使用数据库可视化工具:navicat

    3.2页面设计

    把一个网站分为多个页面,这样便于管理,本人把所有页面分别设置如下几个功能:

    • 添加学生信息
    • 删除学生信息
    • 具体信息删除
    • 保存信息
    • 首页

    3.3 涉及技术

    • python 基础
    • Flask 框架
    • sqlite3数据库增删改查基础
    • HTML,CSS,JS前端三件套

    相关技术不懂的自行查询资料,学起来很容易,学习方法很重要,Flask框架我也就学了一天,大学生拿出自己的智慧,要么就交税。

    3.4 页面截图

    首页:在这里插入图片描述

    添加学生:
    在这里插入图片描述
    删除学生:
    在这里插入图片描述
    查看学生信息:
    在这里插入图片描述

    四、程序

    4.1 主程序源码

    from flask import *
    import sqlite3
    app = Flask(__name__)
    
    @app.route("/")
    def index():
        return render_template("index.html")
    
    @app.route("/add_student")
    def add_student():
        return render_template("add_student.html")
    
    @app.route("/saverecord",methods = ["POST","GET"])
    def saveRecord():
        msg = "msg"
        if request.method == "POST":
            try:
                name = request.form["name"]
                email = request.form["email"]
                gender = request.form["gender"]
                contact = request.form["contact"]
                dob = request.form["dob"]
                address = request.form["address"]
                with sqlite3.connect("student_detials.db") as connection:
                    cursor = connection.cursor()
                    cursor.execute("INSERT into Student_Info (name, email, gender, contact, dob, address) values (?,?,?,?,?,?)",(name, email, gender, contact, dob, address))
                    connection.commit()
                    msg = "学生信息添加成功"
            except:
                connection.rollback()
                msg = "不能把该学生信息添加到数据库"
            finally:
                return render_template("success_record.html",msg = msg)
                connection.close()
    
    
    
    @app.route("/delete_student")
    def delete_student():
        return render_template("delete_student.html")
    
    
    
    @app.route("/student_info")
    def student_info():
        connection = sqlite3.connect("student_detials.db")
        connection.row_factory = sqlite3.Row
        cursor = connection.cursor()
        cursor.execute("select * from Student_Info")
        rows = cursor.fetchall()
        return render_template("student_info.html",rows = rows)
    
    
    
    @app.route("/deleterecord",methods = ["POST"])
    def deleterecord():
        id = request.form["id"]
        with sqlite3.connect("student_detials.db") as connection:
    
            cursor = connection.cursor()
            cursor.execute("select * from Student_Info where id=?", (id,))
            rows = cursor.fetchall()
            if not rows == []:
    
                cursor.execute("delete from Student_Info where id = ?",(id,))
                msg = "学生信息成功删除"
                return render_template("delete_record.html", msg=msg)
    
            else:
                msg = "该信息不能被删除"
                return render_template("delete_record.html", msg=msg)
    
            
            
    if __name__ == "__main__":
        app.run(debug = True)  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76

    4.2 完整源码

    文件比较多,就不放到付费资源了,可以通过以下方式添加我送你,或者以上b站评论区获取,放有获取方式。安装好相关模块,即可自己运行完整项目,这就是为什么选择使用sqlite3数据库,而不是mysql原因,不需要大家再去搭建数据库环境。

    三连以上的视频,加我微信:hxgsrubxjogxeeag,备注:CSDN,否则不同意。给我看三连截图。
    
    • 1

    五、声明

    本项目为个人的一个小作业,前路还长,且行且努力,加油!希望本项目的简单设计对你有所帮助,切勿直接抄袭提交作业。欢迎你与我交流。

    ——made by CSDN:川川菜鸟

  • 相关阅读:
    协程和Flow
    矩阵存储和特殊矩阵的压缩存储
    30岁的程序员,技术一般,去考公还是努力提升技术?
    Pytest测试框架一键动态切换环境思路及方案
    编程小白如何学习RPA,0基础学习RPA攻略!
    11个精美网页——Web前端开发技术课程大作业,期末考试,Dreamweaver简单网页制作
    MyBatis-Plus - 自定义租户拦截器,一定要这样吗?!
    LabVIEW使用PID对激振器控制
    如何用python生成动态随机验证码图片
    基于梯度优化的BP神经网络(分类应用) - 附代码
  • 原文地址:https://blog.csdn.net/weixin_46211269/article/details/125512612