Python | Système de reconnaissance faciale - Opération d'administrateur

Résumé du blog : Python | Système de reconnaissance faciale — Index du blog

Adresse GitHub : Su-Face-Recognition

Remarque : veuillez vous référer à avant de lire ce blog

Installation de l'outil, configuration de l'environnement : Python | Système de reconnaissance faciale – Introduction

Conception de l'interface utilisateur : Python | Système de reconnaissance faciale — Conception de l'interface utilisateur

Traitement des événements de l'interface utilisateur : Python | Système de reconnaissance faciale - Traitement des événements de l'interface utilisateur

1. Fonctionnement de la base de données

# -*- coding: utf-8 -*-
import pymysql


def init_conn():
    conn = pymysql.connect(
        host="127.0.0.1",  # 数据库的IP地址
        user="root",  # 数据库用户名称
        password="root",  # 数据库用户密码
        db="contest",  # 数据库名称
        port=3306,  # 数据库端口名称
        charset="utf8"  # 数据库的编码方式
    )
    return conn


def execute_with_bool(sql_str, args=()):
    conn = init_conn()
    cursor = conn.cursor()
    try:
        cursor.execute(sql_str, args)
        conn.commit()
        return True
    except Exception as e:
        conn.rollback()
        print(e)
        return False
    finally:
        cursor.close()


def execute_with_list(sql_str):
    conn = init_conn()
    cursor = conn.cursor()
    results = []
    try:
        cursor.execute(sql_str)
        results = cursor.fetchall()
    except Exception as e:
        conn.rollback()
        print(e)
    finally:
        cursor.close()
    return results


def search_by_name(name):
    return execute_with_list("select * from admin where name = " + name)


def delete_by_name(name):
    return execute_with_bool("delete from warn where name = %s", name)

2. Connexion administrateur

# 管理员登录界面
class LoginWindow(QDialog, AdminLoginUi):
    def __init__(self, parent=None):
        super(LoginWindow, self).__init__(parent)
        self.setupUi(self)

        self.minimize_button.clicked.connect(self.showMinimized)
        self.close_button.clicked.connect(self.cancel_login)

        self.confirm_button.clicked.connect(self.search_user)
        self.cancel_button.clicked.connect(self.cancel_login)

    # 点击确认,搜索管理员
    def search_user(self):
        input_name = self.name_lineEdit.text()
        input_password = self.password_lineEdit.text()

        if input_name == "":
            QMessageBox.about(self, '提示', '姓名不能为空')
        elif input_password == "":
            QMessageBox.about(self, '提示', '密码不能为空')
        else:
            row = AdminSqlUtil.search_by_name("\"" + input_name + "\"")
            if row:
                result = row[0]
                password = result[1]
                if input_password != password:
                    QMessageBox.about(self, '提示', '密码输入错误')
                else:
                    global ADMIN_LOGIN_FLAG
                    ADMIN_LOGIN_FLAG = True
                    QMessageBox.about(self, '提示', '登录成功')
                    self.close_window()
            else:
                QMessageBox.about(self, '提示', '该用户不存在')

    # 点击取消按钮
    def cancel_login(self):
        global ADMIN_LOGIN_FLAG
        ADMIN_LOGIN_FLAG = False
        self.close_window()

    # 关闭窗口
    def close_window(self):
        self.name_lineEdit.setPlaceholderText("请输入姓名")
        self.password_lineEdit.setPlaceholderText("请输入密码")
        self.close()

3. Déverrouillage de l'utilisateur

# 用户解锁
class UnloadWindow(QDialog, AdminUnloadUi):
    def __init__(self, parent=None):
        super(UnloadWindow, self).__init__(parent)
        self.setupUi(self)

        self.minimize_button.clicked.connect(self.showMinimized)
        self.close_button.clicked.connect(self.close_window)

        self.confirm_button.clicked.connect(self.unload_user)
        self.cancel_button.clicked.connect(self.close_window)

    # 解锁用户
    def unload_user(self):
        input_name = self.name_lineEdit.text()
        input_password = self.password_lineEdit.text()

        if input_name == "":
            QMessageBox.about(self, '提示', '姓名不能为空')
        elif input_password == "":
            QMessageBox.about(self, '提示', '密码不能为空')
        else:
            row = UserSqlUtil.search_by_name("\"" + input_name + "\"")
            if row:
                result = row[0]
                password = result[1]
                if input_password != password:
                    QMessageBox.about(self, '提示', '密码输入错误')
                else:
                    if AdminSqlUtil.delete_by_name(row[0]):
                        QMessageBox.about(self, '提示', '解锁成功')
                    else:
                        QMessageBox.about(self, '提示', '解锁失败,请重试')
                    self.close_window()
            else:
                QMessageBox.about(self, '提示', '该用户不存在')

    # 关闭窗口
    def close_window(self):
        self.name_lineEdit.setPlaceholderText("请输入姓名")
        self.password_lineEdit.setPlaceholderText("请输入密码")
        self.close()

4. Suppression d'utilisateur

# 用户删除
class DeleteWindow(QDialog, AdminDeleteUi):
    def __init__(self, parent=None):
        super(DeleteWindow, self).__init__(parent)
        self.setupUi(self)

        self.minimize_button.clicked.connect(self.showMinimized)
        self.close_button.clicked.connect(self.close_window)

        self.confirm_button.clicked.connect(self.user_delete)
        self.cancel_button.clicked.connect(self.close_window)

    def user_delete(self):
        input_name = self.name_lineEdit.text()
        input_password = self.password_lineEdit.text()

        if input_name == "":
            QMessageBox.about(self, '提示', '姓名不能为空')
        elif input_password == "":
            QMessageBox.about(self, '提示', '密码不能为空')
        else:
            row = UserSqlUtil.search_by_name("\"" + input_name + "\"")
            if row:
                result = row[0]
                password = result[1]
                if input_password != password:
                    QMessageBox.about(self, '提示', '密码输入错误')
                else:
                    flag = UserSqlUtil.delete_by_name(input_name)
                    if flag:
                        QMessageBox.about(self, '提示', '删除成功')
                    else:
                        QMessageBox.about(self, '提示', '删除失败,请重试')
                    self.close_window()
            else:
                QMessageBox.about(self, '提示', '该用户不存在')

    # 关闭窗口
    def close_window(self):
        self.name_lineEdit.setPlaceholderText("请输入姓名")
        self.password_lineEdit.setPlaceholderText("请输入密码")
        self.close()

continuer la lecture:

Affichage de l'écran de l'appareil photo : système de reconnaissance faciale - affichage de l'écran de l'appareil photo

Logique côté client :

Remarque : Le code ci-dessus est fourni à titre indicatif uniquement. Pour l'exécuter, reportez-vous au code source GitHub :  Su-Face-Recognition.

Guess you like

Origin blog.csdn.net/sun80760/article/details/131253756