国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python Flask Web + PyQt 前后端分離的項目—學習成績可視化分析系統(tǒng)

這篇具有很好參考價值的文章主要介紹了Python Flask Web + PyQt 前后端分離的項目—學習成績可視化分析系統(tǒng)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

簡介

使用工具:

Python,PyQt ,F(xiàn)lask ,MySQL

注:制作重點在網(wǎng)頁端,因此網(wǎng)頁端的功能更全

WEB界面展示:

系統(tǒng)登錄分為管理員,老師,學生3部分

管理員統(tǒng)一管理所有的賬號信息以及登錄信息

老師管理,添加,修改班級,學生的成績信息

學生只能查看成績信息,不能做出修改

Python Flask Web + PyQt 前后端分離的項目—學習成績可視化分析系統(tǒng),Python,pyqt,mysql,flask,python,數(shù)據(jù)可視化

Python Flask Web + PyQt 前后端分離的項目—學習成績可視化分析系統(tǒng),Python,pyqt,mysql,flask,python,數(shù)據(jù)可視化

Python Flask Web + PyQt 前后端分離的項目—學習成績可視化分析系統(tǒng),Python,pyqt,mysql,flask,python,數(shù)據(jù)可視化

Python Flask Web + PyQt 前后端分離的項目—學習成績可視化分析系統(tǒng),Python,pyqt,mysql,flask,python,數(shù)據(jù)可視化

Python Flask Web + PyQt 前后端分離的項目—學習成績可視化分析系統(tǒng),Python,pyqt,mysql,flask,python,數(shù)據(jù)可視化

Python Flask Web + PyQt 前后端分離的項目—學習成績可視化分析系統(tǒng),Python,pyqt,mysql,flask,python,數(shù)據(jù)可視化

?

?

PYQT界面展示:

Python Flask Web + PyQt 前后端分離的項目—學習成績可視化分析系統(tǒng),Python,pyqt,mysql,flask,python,數(shù)據(jù)可視化

Python Flask Web + PyQt 前后端分離的項目—學習成績可視化分析系統(tǒng),Python,pyqt,mysql,flask,python,數(shù)據(jù)可視化

?

數(shù)據(jù)庫創(chuàng)建:

Python Flask Web + PyQt 前后端分離的項目—學習成績可視化分析系統(tǒng),Python,pyqt,mysql,flask,python,數(shù)據(jù)可視化

項目目錄

Project-

? ? ? ?- PYQT? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 存放軟件端的代碼文件(運行l(wèi)ogin.py啟動程序)

? ? ? ? ? ? ? ? ? ?Python Flask Web + PyQt 前后端分離的項目—學習成績可視化分析系統(tǒng),Python,pyqt,mysql,flask,python,數(shù)據(jù)可視化

? ? ? ?- static? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 存放靜態(tài)資源(圖片等)

? ? ? ?-?templates ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 存放網(wǎng)頁端的代碼

? ? ? ? ? ? ? ? ? ?Python Flask Web + PyQt 前后端分離的項目—學習成績可視化分析系統(tǒng),Python,pyqt,mysql,flask,python,數(shù)據(jù)可視化

? ? ? ?- app.py? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 啟動網(wǎng)頁端系統(tǒng)

? ? ? ?-?student.sql ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 數(shù)據(jù)庫文件

代碼

簡單放一個登錄的代碼

from flask import Flask, jsonify, render_template, request, redirect, url_for, session
import mysql.connector
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib
matplotlib.use('agg')
from matplotlib.font_manager import FontProperties
from io import BytesIO
import base64
from flask import render_template_string
import os
from datetime import datetime
from collections import defaultdict



# 預(yù)設(shè)字體格式,并傳給rc方法
font = {'family': 'SimHei', "size": 12}
matplotlib.rc('font', **font)  # 一次定義終身使用
# Set font properties for Chinese characters
font_prop = FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf', size=12)



app = Flask(__name__)
app.secret_key = 'your_secret_key'  # Change this to a secure secret key

# Replace these placeholders with your database connection details
DB_HOST = 'localhost'
DB_USER = 'root'
DB_PASSWORD = '123456'
DB_DATABASE = 'Student'

def connect_to_database():
    try:
        connection = mysql.connector.connect(
            host=DB_HOST,
            user=DB_USER,
            password=DB_PASSWORD,
            database=DB_DATABASE
        )
        return connection
    except mysql.connector.Error as err:
        print(f"Error: {err}")
        return None

def save_login_record(connection, role, account):
    try:
        cursor = connection.cursor()
        login_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        query = f"INSERT INTO login_record (role, account, login_time) VALUES ('{role}', '{account}', '{login_time}')"
        cursor.execute(query)
        connection.commit()
    except mysql.connector.Error as err:
        print(f"Error: {err}")
    finally:
        cursor.close()


def check_admin_login(connection, table_name, account, password, role):

    try:

        if role == '管理員':
            table_name = 'admin'
            cursor = connection.cursor()
            print(table_name,account,password,role)
            query = f"SELECT * FROM {table_name} WHERE Mainid='{account}' AND password='{password}'"

            # Implement your database query logic here
            cursor.execute(query)
            result = cursor.fetchone()

        elif role == '老師':
            table_name = 'admin_teachers'
            # Check administrator login
            cursor = connection.cursor()
            print(table_name,account,password,role)
            query = f"SELECT * FROM {table_name} WHERE Teacherid='{account}' AND password='{password}'"

            # Implement your database query logic here
            cursor.execute(query)
            result = cursor.fetchone()


        elif role == '學生':
            table_name = 'admin_students'
            # Check administrator login
            cursor = connection.cursor()
            print(table_name,account,password,role)
            query = f"SELECT * FROM {table_name} WHERE Studentid='{account}' AND password='{password}'"

            # Implement your database query logic here
            cursor.execute(query)
            result = cursor.fetchone()

        if result:
            # Save login record in data_8
            save_login_record(connection, role, account)

        return bool(result)
    except mysql.connector.Error as err:
        print(f"Error: {err}")
        return False
    finally:
        cursor.close()

@app.route('/')
def index():
    return render_template('login.html')

@app.route('/login', methods=['POST'])
def login():
    account = request.form['account']
    password = request.form['password']
    role = request.form['role']

    connection = connect_to_database()
    if connection is None:
        return render_template('login_failed.html', message='Failed to connect to the database.')

    table_name = get_table_name(role)

    if check_admin_login(connection, table_name, account, password, role):
        session['role'] = role
        if role == '學生':
            session['account'] = account
            print("===================",session['account'])
        return redirect(url_for('admin_dashboard'))
    else:
        return render_template('login_failed.html', message='Invalid username or password.')

@app.route('/admin/dashboard')
def admin_dashboard():
    role = session.get('role')

    if role == '管理員':
        data = fetch_admin_data()
        data_1 = fetch_admin_teacher_data()
        data_2 = fetch_admin_student_data()
        data_8 = fetch_login_records()
        data_10 = populate_tree_model_10()
        return render_template('admin_dashboard.html', role=role, data=data, data_1=data_1, data_2=data_2, data_8 = data_8, data_10 = data_10)
    
    elif role == '老師':
        
        data_2 = fetch_admin_student_data()
        data_3 = populate_tree_model_2()
        data_4 = populate_tree_model_6()
        data_5 = populate_tree_model_4()
        data_6 = populate_tree_model_7()
        data_7 = populate_tree_model_5()
        data_9 = populate_tree_model_9()
        scatter_plot_files = show_images()
        data_10 = populate_tree_model_10()
        return render_template('teacher_dashboard.html',scatter_plot_files = scatter_plot_files, role=role, data_2=data_2, data_3=data_3, data_4=data_4, data_5=data_5, data_6=data_6, data_7=data_7, data_9=data_9, data_10 = data_10)
    
    elif role == '學生':
        account = session.get('account')
        data_3 = populate_tree_model_2()
        data_4 = populate_tree_model_6()
        data_5 = populate_tree_model_4()
        data_6 = populate_tree_model_7()
        data_7 = populate_tree_model_5()
        data_8 = show_info()
        print("===================----------------",session['account'])
        return render_template('student_dashboard.html', studentID=account, data_3=data_3, data_4=data_4, data_5=data_5, data_6=data_6, data_7=data_7, data_8=data_8)
    else:
        return redirect(url_for('index'))

# Add routes for other pages as needed

def get_table_name(role):
    # Implement logic to determine the table name based on the role
    if role == '管理員':
        return 'admin'
    elif role == '老師':
        return 'admin_teachers'
    elif role == '學生':
        return 'admin_students'
    else:
        return None

def fetch_login_records():
    data_8 = []
    try:
        connection = connect_to_database()
        if connection is None:
            return []

        cursor = connection.cursor()
        query = "SELECT * FROM login_record"
        cursor.execute(query)

        login_records = cursor.fetchall()

        # Convert rows to a list of dictionaries
        for row in login_records:
            data_8.append({
                'role': row[0],
                'account': row[1],
                'login_time': row[2]
            })

        return data_8
    except mysql.connector.Error as err:
        print(f"Error: {err}")
        return []
    finally:
        cursor.close()
        if connection:
            connection.close()

def fetch_admin_data():
    data = []
    try:
        # Connect to the MySQL database
        connection = mysql.connector.connect(
            host='localhost',
            user='root',
            password='123456',
            database='Student'
        )

        cursor = connection.cursor()

        # Execute a query to fetch data from the admin table
        query = "SELECT Mainid, Username, Password, Name FROM admin"
        cursor.execute(query)

        # Fetch all rows from the result
        rows = cursor.fetchall()

        # Convert rows to a list of dictionaries
        for row in rows:
            data.append({
                'Mainid': row[0],
                'Username': row[1],
                'Password': row[2],
                'Name': row[3]
            })

    except mysql.connector.Error as err:
        print(f"Error: {err}")

    finally:
        # Close the cursor and connection
        cursor.close()
        connection.close()

    return data


百度云鏈接:

鏈接:https://pan.baidu.com/s/13HtbUm0Wwd0RT_cY61M57A?pwd=o102?
提取碼:o102?
--來自百度網(wǎng)盤超級會員V5的分享

系統(tǒng)可能還存在某些不完善的地方,歡迎討論文章來源地址http://www.zghlxwxcb.cn/news/detail-830713.html

到了這里,關(guān)于Python Flask Web + PyQt 前后端分離的項目—學習成績可視化分析系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【項目案例】前后端分離項目 【W(wǎng)eb圖書管理系統(tǒng) 】SpringBoot + Vue + Element UI + Mysql

    【項目案例】前后端分離項目 【W(wǎng)eb圖書管理系統(tǒng) 】SpringBoot + Vue + Element UI + Mysql

    ?? 博主介紹 : 博主從事應(yīng)用安全和大數(shù)據(jù)領(lǐng)域,有8年研發(fā)經(jīng)驗,5年面試官經(jīng)驗,Java技術(shù)專家,WEB架構(gòu)師,阿里云專家博主,華為云云享專家,51CTO 專家博主 Java知識圖譜點擊鏈接: 體系化學習Java(Java面試專題) ???? 感興趣的同學可以收藏關(guān)注下 , 不然下次找不到喲

    2024年02月07日
    瀏覽(41)
  • Vue 和 Flask 前后端分離教程(一)

    Vue 和 Flask 前后端分離教程(一)

    在本教程中,我們將學習如何使用 Vue.js(前端框架)和 Flask(后端框架)構(gòu)建一個簡單的前后端分離應(yīng)用。本教程假設(shè)你對 HTML、CSS 和 JavaScript 有基本了解。讓我們開始吧! 如果對Flask和Vue還不太熟悉,可以選擇查看博主之前的教學文章: Flask 基礎(chǔ)教學(一) Flask基礎(chǔ)教學

    2024年04月25日
    瀏覽(18)
  • 一個月學通Python(二十二):中間件應(yīng)用及前后端分離開發(fā)入門(Web開發(fā))

    結(jié)合自身經(jīng)驗和內(nèi)部資料總結(jié)的Python教程,每天3-5章,最短1個月就能全方位的完成Python的學習并進行實戰(zhàn)開發(fā),學完了定能成為大佬!加油吧!卷起來! 全部文章請訪問專欄:《Python全棧教程(0基礎(chǔ))》 之前我們已經(jīng)實現(xiàn)了用戶必須登錄才能投票的限制,但是一個新的問題

    2024年02月16日
    瀏覽(21)
  • 基于JAVA+Springboot+Thymeleaf前后端分離項目:在線教育視頻點播學習系統(tǒng)設(shè)計與實現(xiàn)

    基于JAVA+Springboot+Thymeleaf前后端分離項目:在線教育視頻點播學習系統(tǒng)設(shè)計與實現(xiàn)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學生畢業(yè)設(shè)計教育和輔導(dǎo)。 所有項目都配有從入門到精通的基礎(chǔ)知識視頻課程,學習后應(yīng)對畢業(yè)設(shè)計答辯。 項目配有對應(yīng)開發(fā)文檔、

    2024年02月19日
    瀏覽(33)
  • python Flask web項目uwsgi + nginx部署

    python Flask web項目uwsgi + nginx部署

    略 2.1安裝vertualenv 2.2創(chuàng)建虛擬環(huán)境 創(chuàng)建保存環(huán)境的目錄: 創(chuàng)建虛擬環(huán)境: 查看虛擬環(huán)境: 2.3激活虛擬環(huán)境 activiate是激活虛擬環(huán)境的命令腳本,在虛擬環(huán)境的bin目錄下 執(zhí)行activate激活環(huán)境 3.1安裝uwsgi 激活虛擬環(huán)境,安裝uwsgi 3.2基于uwsgi運行flask項目 3.2.1命令的方式 3.2.2配置文

    2024年02月10日
    瀏覽(23)
  • FLASK+VUE--前后端分離(三)- VUE+Element-UI搭建登陸頁面且能夠正常登陸

    FLASK+VUE--前后端分離(三)- VUE+Element-UI搭建登陸頁面且能夠正常登陸

    FLASK+VUE–前后端分離(一)- Flask基礎(chǔ)講解之路由、視圖函數(shù)及代碼實現(xiàn) FLASK+VUE–前后端分離(二)- VUE基礎(chǔ)安裝及項目的簡易介紹 FLASK+VUE–前后端分離(三)- VUE+Element-UI搭建登陸頁面且能夠正常登陸 FLASK+VUE–前后端分離(四)- VUE+Element-UI簡單搭建主頁布局 FLASK+VUE–前后端

    2023年04月15日
    瀏覽(33)
  • 使用IIS服務(wù)器部署Flask python Web項目

    使用IIS服務(wù)器部署Flask python Web項目

    參考文章 參考文章 將Flask應(yīng)用程序部署到IIS服務(wù)器上需要一些步驟,因為IIS是為.NET應(yīng)用程序設(shè)計的。要將Flask Python Web項目部署到IIS服務(wù)器,您需要使用一個稱為\\\"FastCGI\\\"的橋接工具來連接IIS和Python應(yīng)用程序。以下是將Flask應(yīng)用程序部署到IIS服務(wù)器的一般步驟: 安裝IIS和FastCG

    2024年04月16日
    瀏覽(42)
  • python Web開發(fā) flask輕量級Web框架實戰(zhàn)項目--學生管理系統(tǒng)

    python Web開發(fā) flask輕量級Web框架實戰(zhàn)項目--學生管理系統(tǒng)

    ?上次發(fā)的一篇文章,有很多朋友私信我要后面的部分,那咱們就今天來一起學習一下吧,因為我的數(shù)據(jù)庫這門課選中的課題是學生管理系統(tǒng),所以今天就以這個課題為例子,從0到1去實現(xiàn)一個管理系統(tǒng)。數(shù)據(jù)庫設(shè)計部分我會專門出一個博客的,敬請期待吧~~~ 介如很多朋友問

    2024年02月16日
    瀏覽(91)
  • 【Python】Web學習筆記_flask(4)——鉤子函數(shù)

    【Python】Web學習筆記_flask(4)——鉤子函數(shù)

    鉤子函數(shù)可以用來注冊在請求處理的不同階段執(zhí)行出 Flask的請求鉤子指的是在執(zhí)行視圖函數(shù)前后執(zhí)行的一些函數(shù), 之前是有4種,但是? before_first_request已經(jīng)被刪除了,使用時會報錯 before_request:在每次請求前執(zhí)行,比如校驗權(quán)限,也可以用來記錄用戶最后的在線時間 after_r

    2024年02月14日
    瀏覽(23)
  • 【Python】Web學習筆記_flask(3)——上傳文件

    【Python】Web學習筆記_flask(3)——上傳文件

    用GET、POST請求上傳圖片并呈現(xiàn)出來 首先還是創(chuàng)建文件上傳的模板 然后需要定義幾個函數(shù): upload():路由函數(shù),接收GET請求時,顯示模板文件內(nèi)容,接收post請求時,上傳圖片 allowed_file():檢測上傳的文件是否滿足設(shè)置的類型 random_file():為上傳的文件重新創(chuàng)建隨機的不重復(fù)文

    2024年02月14日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包