Python生成学生管理系统,使用qt组件,MySQL 数据库,-1

创建一个基于 Python 的学生管理系统,使用 Qt 组件(通过 PyQt5 或 PySide2)和 MySQL 数据库,是一个综合性的项目。以下是一个详细的指南,包括环境设置、数据库设计、Python 代码示例以及如何使用 Qt 设计用户界面。

## 目录

1. [环境设置](#环境设置)
2. [数据库设计](#数据库设计)
3. [安装必要的 Python 库](#安装必要的-python-库)
4. [连接 MySQL 数据库](#连接-mysql-数据库)
5. [创建 Qt 用户界面](#创建-qt-用户界面)
6. [实现功能模块](#实现功能模块)
    - [添加学生](#添加学生)
    - [查看学生列表](#查看学生列表)
    - [编辑学生信息](#编辑学生信息)
    - [删除学生](#删除学生)
7. [完整代码示例](#完整代码示例)
8. [运行项目](#运行项目)

---

## 环境设置

确保你的开发环境中安装了以下软件:

1. **Python 3.x**: [下载链接](https://www.python.org/downloads/)
2. **MySQL**: [下载链接](https://dev.mysql.com/downloads/mysql/)
3. **Qt Designer**(可选,用于设计 UI):[下载链接](https://build-system.fman.io/qt-designer-download)

## 数据库设计

首先,设计一个简单的数据库来存储学生信息。假设我们有一个名为 `students` 的表,包含以下字段:

- `id` (INT, 主键, 自增)
- `name` (VARCHAR)
- `age` (INT)
- `gender` (VARCHAR)
- `email` (VARCHAR)
- `phone` (VARCHAR)

### 创建数据库和表

```sql
CREATE DATABASE student_management;

USE student_management;

CREATE TABLE students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    age INT,
    gender VARCHAR(10),
    email VARCHAR(100),
    phone VARCHAR(20)
);
```

你可以使用 MySQL 命令行或 MySQL Workbench 来执行上述 SQL 语句。

## 安装必要的 Python 库

你需要安装以下 Python 库:

- `PyQt5` 或 `PySide2`: 用于创建用户界面
- `PyMySQL`: 用于连接 MySQL 数据库

使用 pip 安装:

```bash
pip install PyQt5 PyMySQL
```

或者,如果你更喜欢 `PySide2`:

```bash
pip install PySide2 PyMySQL
```

## 连接 MySQL 数据库

以下是如何使用 `PyMySQL` 连接 MySQL 数据库的示例代码:

```python
import sys
from PyQt5 import QtWidgets
import pymysql

# 数据库配置
db_config = {
    'host': 'localhost',
    'user': 'your_username',
    'password': 'your_password',
    'database': 'student_management',
    'charset': 'utf8mb4'
}

def get_db_connection():
    try:
        connection = pymysql.connect(**db_config)
        return connection
    except pymysql.MySQLError as e:
        print(f"数据库连接错误: {e}")
        return None
```

确保将 `'your_username'` 和 `'your_password'` 替换为你的 MySQL 用户名和密码。

## 创建 Qt 用户界面

你可以使用 Qt Designer 设计和保存 `.ui` 文件,或者使用代码编写界面。以下示例将使用代码编写一个简单的界面。

### 示例界面

```python
from PyQt5 import QtWidgets, QtCore

class StudentManagementApp(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("学生管理系统")
        self.setGeometry(100, 100, 800, 600)
        self.central_widget = QtWidgets.QWidget()
        self.setCentralWidget(self.central_widget)
        self.layout = QtWidgets.QVBoxLayout()
        self.central_widget.setLayout(self.layout)

        # 创建表格视图
        self.table = QtWidgets.QTableWidget()
        self.table.setColumnCount(6)
        self.table.setHorizontalHeaderLabels(['ID', '姓名', '年龄', '性别', '邮箱', '电话'])
        self.layout.addWidget(self.table)

        # 创建按钮
        self.button_layout = QtWidgets.QHBoxLayout()
        self.add_button = QtWidgets.QPushButton("添加学生")
        self.edit_button = QtWidgets.QPushButton("编辑学生")
        self.delete_button = QtWidgets.QPushButton("删除学生")
        self.refresh_button = QtWidgets.QPushButton("刷新列表")
        self.button_layout.addWidget(self.add_button)
        self.button_layout.addWidget(self.edit_button)
        self.button_layout.addWidget(self.delete_button)
        self.button_layout.addWidget(self.refresh_button)
        self.layout.addLayout(self.button_layout)

        # 连接按钮信号
        self.add_button.clicked.connect(self.add_student)
        self.edit_button.clicked.connect(self.edit_student)
        self.delete_button.clicked.connect(self.delete_student)
        self.refresh_button.clicked.connect(self.refresh_student_list)

        # 初始化学生列表
        self.refresh_student_list()

    def refresh_student_list(self):
        connection = get_db_connection()
        if connection:
            try:
                with connection.cursor() as cursor:
                    sql = "SELECT * FROM students"
                    cursor.execute(sql)
                    result = cursor.fetchall()
                    self.table.setRowCount(0)
                    for row_number, row_data in enumerate(result):
                        self.table.insertRow(row_number)
                        for column_number, data in enumerate(row_data):
                            self.table.setItem(row_number, column_number, QtWidgets.QTableWidgetItem(str(data)))
            except pymysql.MySQLError as e:
                print(f"查询错误: {e}")
            finally:
                connection.close()
```

## 实现功能模块

### 添加学生

```python
    def add_student(self):
        dialog = QtWidgets.QDialog(self)
        dialog.setWindowTitle("添加学生")
        dialog_layout = QtWidgets.QVBoxLayout()
        form_layout = QtWidgets.QFormLayout()
        name_input = QtWidgets.QLineEdit()
        age_input = QtWidgets.QLineEdit()
        gender_input = QtWidgets.QLineEdit()
        email_input = QtWidgets.QLineEdit()
        phone_input = QtWidgets.QLineEdit()
        form_layout.addRow("姓名", name_input)
        form_layout.addRow("年龄", age_input)
        form_layout.addRow("性别", gender_input)
        form_layout.addRow("邮箱", email_input)
        form_layout.addRow("电话", phone_input)
        dialog_layout.addLayout(form_layout)

        button_layout = QtWidgets.QHBoxLayout()
        ok_button = QtWidgets.QPushButton("确定")
        cancel_button = QtWidgets.QPushButton("取消")
        button_layout.addWidget(ok_button)
        button_layout.addWidget(cancel_button)
        dialog_layout.addLayout(button_layout)

        dialog.setLayout(dialog_layout)

        def on_ok():
            name = name_input.text()
            age = age_input.text()
            gender = gender_input.text()
            email = email_input.text()
            phone = phone_input.text()
            if not name:
                QtWidgets.QMessageBox.warning(self, "输入错误", "姓名不能为空")
                return
            try:
                age = int(age)
            except ValueError:
                QtWidgets.QMessageBox.warning(self, "输入错误", "年龄必须是数字")
                return
            connection = get_db_connection()
            if connection:
                try:
                    with connection.cursor() as cursor:
                        sql = "INSERT INTO students (name, age, gender, email, phone) VALUES (%s, %s, %s, %s, %s)"
                        cursor.execute(sql, (name, age, gender, email, phone))
                    connection.commit()
                except pymysql.MySQLError as e:
                    print(f"插入错误: {e}")
                finally:
                    connection.close()
                self.refresh_student_list()
                dialog.close()

        def on_cancel():
            dialog.close()

        ok_button.clicked.connect(on_ok)
        cancel_button.clicked.connect(on_cancel)

        dialog.exec_()
```

### 查看学生列表

在上面的 `refresh_student_list` 方法中已经实现了查看学生列表的功能。

### 编辑学生信息

```python
    def edit_student(self):
        selected_items = self.table.selectedItems()
        if not selected_items:
            QtWidgets.QMessageBox.warning(self, "选择错误", "请选择要编辑的学生")
            return
        row = selected_items[0].row()
        student_id = self.table.item(row, 0).text()
        connection = get_db_connection()
        if connection:
            try:
                with connection.cursor() as cursor:
                    sql = "SELECT * FROM students WHERE id = %s"
                    cursor.execute(sql, (student_id,))
                    result = cursor.fetchone()
                connection.close()
            except pymysql.MySQLError as e:
                print(f"查询错误: {e}")
                connection.close()
                return

            dialog = QtWidgets.QDialog(self)
            dialog.setWindowTitle("编辑学生")
            dialog_layout = QtWidgets.QVBoxLayout()
            form_layout = QtWidgets.QFormLayout()
            name_input = QtWidgets.QLineEdit(result[1])
            age_input = QtWidgets.QLineEdit(str(result[2]))
            gender_input = QtWidgets.QLineEdit(result[3])
            email_input = QtWidgets.QLineEdit(result[4])
            phone_input = QtWidgets.QLineEdit(result[5])
            form_layout.addRow("姓名", name_input)
            form_layout.addRow("年龄", age_input)
            form_layout.addRow("性别", gender_input)
            form_layout.addRow("邮箱", email_input)
            form_layout.addRow("电话", phone_input)
            dialog_layout.addLayout(form_layout)

            button_layout = QtWidgets.QHBoxLayout()
            ok_button = QtWidgets.QPushButton("确定")
            cancel_button = QtWidgets.QPushButton("取消")
            button_layout.addWidget(ok_button)
            button_layout.addWidget(cancel_button)
            dialog_layout.addLayout(button_layout)

            dialog.setLayout(dialog_layout)

            def on_ok():
                name = name_input.text()
                age = age_input.text()
                gender = gender_input.text()
                email = email_input.text()
                phone = phone_input.text()
                if not name:
                    QtWidgets.QMessageBox.warning(self, "输入错误", "姓名不能为空")
                    return
                try:
                    age = int(age)
                except ValueError:
                    QtWidgets.QMessageBox.warning(self, "输入错误", "年龄必须是数字")
                    return
                connection = get_db_connection()
                if connection:
                    try:
                        with connection.cursor() as cursor:
                            sql = "UPDATE students SET name = %s, age = %s, gender = %s, email = %s, phone = %s WHERE id = %s"
                            cursor.execute(sql, (name, age, gender, email, phone, student_id))
                        connection.commit()
                    except pymysql.MySQLError as e:
                        print(f"更新错误: {e}")
                    finally:
                        connection.close()
                    self.refresh_student_list()
                    dialog.close()

            def on_cancel():
                dialog.close()

            ok_button.clicked.connect(on_ok)
            cancel_button.clicked.connect(on_cancel)

            dialog.exec_()
```

### 删除学生

```python
    def delete_student(self):
        selected_items = self.table.selectedItems()
        if not selected_items:
            QtWidgets.QMessageBox.warning(self, "选择错误", "请选择要删除的学生")
            return
        row = selected_items[0].row()
        student_id = self.table.item(row, 0).text()
        reply = QtWidgets.QMessageBox.question(self, "确认删除", f"确定要删除学生 ID {student_id} 吗?", QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No)
        if reply == QtWidgets.QMessageBox.Yes:
            connection = get_db_connection()
            if connection:
                try:
                    with connection.cursor() as cursor:
                        sql = "DELETE FROM students WHERE id = %s"
                        cursor.execute(sql, (student_id,))
                    connection.commit()
                except pymysql.MySQLError as e:
                    print(f"删除错误: {e}")
                finally:
                    connection.close()
                self.refresh_student_list()
```

## 完整代码示例

以下是完整的 Python 代码示例,整合了上述所有部分:

```python
import sys
from PyQt5 import QtWidgets, QtCore
import pymysql

# 数据库配置
db_config = {
    'host': 'localhost',
    'user': 'your_username',
    'password': 'your_password',
    'database': 'student_management',
    'charset': 'utf8mb4'
}

def get_db_connection():
    try:
        connection = pymysql.connect(**db_config)
        return connection
    except pymysql.MySQLError as e:
        print(f"数据库连接错误: {e}")
        return None

class StudentManagementApp(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("学生管理系统")
        self.setGeometry(100, 100, 800, 600)
        self.central_widget = QtWidgets.QWidget()
        self.setCentralWidget(self.central_widget)
        self.layout = QtWidgets.QVBoxLayout()
        self.central_widget.setLayout(self.layout)

        # 创建表格视图
        self.table = QtWidgets.QTableWidget()
        self.table.setColumnCount(6)
        self.table.setHorizontalHeaderLabels(['ID', '姓名', '年龄', '性别', '邮箱', '电话'])
        self.layout.addWidget(self.table)

        # 创建按钮
        self.button_layout = QtWidgets.QHBoxLayout()
        self.add_button = QtWidgets.QPushButton("添加学生")
        self.edit_button = QtWidgets.QPushButton("编辑学生")
        self.delete_button = QtWidgets.QPushButton("删除学生")
        self.refresh_button = QtWidgets.QPushButton("刷新列表")
        self.button_layout.addWidget(self.add_button)
        self.button_layout.addWidget(self.edit_button)
        self.button_layout.addWidget(self.delete_button)
        self.button_layout.addWidget(self.refresh_button)
        self.layout.addLayout(self.button_layout)

        # 连接按钮信号
        self.add_button.clicked.connect(self.add_student)
        self.edit_button.clicked.connect(self.edit_student)
        self.delete_button.clicked.connect(self.delete_student)
        self.refresh_button.clicked.connect(self.refresh_student_list)

        # 初始化学生列表
        self.refresh_student_list()

    def refresh_student_list(self):
        connection = get_db_connection()
        if connection:
            try:
                with connection.cursor() as cursor:
                    sql = "SELECT * FROM students"
                    cursor.execute(sql)
                    result = cursor.fetchall()
                    self.table.setRowCount(0)
                    for row_number, row_data in enumerate(result):
                        self.table.insertRow(row_number)
                        for column_number, data in enumerate(row_data):
                            self.table.setItem(row_number, column_number, QtWidgets.QTableWidgetItem(str(data)))
            except pymysql.MySQLError as e:
                print(f"查询错误: {e}")
            finally:
                connection.close()

    def add_student(self):
        dialog = QtWidgets.QDialog(self)
        dialog.setWindowTitle("添加学生")
        dialog_layout = QtWidgets.QVBoxLayout()
        form_layout = QtWidgets.QFormLayout()
        name_input = QtWidgets.QLineEdit()
        age_input = QtWidgets.QLineEdit()
        gender_input = QtWidgets.QLineEdit()
        email_input = QtWidgets.QLineEdit()
        phone_input = QtWidgets.QLineEdit()
        form_layout.addRow("姓名", name_input)
        form_layout.addRow("年龄", age_input)
        form_layout.addRow("性别", gender_input)
        form_layout.addRow("邮箱", email_input)
        form_layout.addRow("电话", phone_input)
        dialog_layout.addLayout(form_layout)

        button_layout = QtWidgets.QHBoxLayout()
        ok_button = QtWidgets.QPushButton("确定")
        cancel_button = QtWidgets.QPushButton("取消")
        button_layout.addWidget(ok_button)
        button_layout.addWidget(cancel_button)
        dialog_layout.addLayout(button_layout)

        dialog.setLayout(dialog_layout)

        def on_ok():
            name = name_input.text()
            age = age_input.text()
            gender = gender_input.text()
            email = email_input.text()
            phone = phone_input.text()
            if not name:
                QtWidgets.QMessageBox.warning(self, "输入错误", "姓名不能为空")
                return
            try:
                age = int(age)
            except ValueError:
                QtWidgets.QMessageBox.warning(self, "输入错误", "年龄必须是数字")
                return
            connection = get_db_connection()
            if connection:
                try:
                    with connection.cursor() as cursor:
                        sql = "INSERT INTO students (name, age, gender, email, phone) VALUES (%s, %s, %s, %s, %s)"
                        cursor.execute(sql, (name, age, gender, email, phone))
                    connection.commit()
                except pymysql.MySQLError as e:
                    print(f"插入错误: {e}")
                finally:
                    connection.close()
                self.refresh_student_list()
                dialog.close()

        def on_cancel():
            dialog.close()

        ok_button.clicked.connect(on_ok)
        cancel_button.clicked.connect(on_cancel)

        dialog.exec_()

    def edit_student(self):
        selected_items = self.table.selectedItems()
        if not selected_items:
            QtWidgets.QMessageBox.warning(self, "选择错误", "请选择要编辑的学生")
            return
        row = selected_items[0].row()
        student_id = self.table.item(row, 0).text()
        connection = get_db_connection()
        if connection:
            try:
                with connection.cursor() as cursor:
                    sql = "SELECT * FROM students WHERE id = %s"
                    cursor.execute(sql, (student_id,))
                    result = cursor.fetchone()
                connection.close()
            except pymysql.MySQLError as e:
                print(f"查询错误: {e}")
                connection.close()
                return

            dialog = QtWidgets.QDialog(self)
            dialog.setWindowTitle("编辑学生")
            dialog_layout = QtWidgets.QVBoxLayout()
            form_layout = QtWidgets.QFormLayout()
            name_input = QtWidgets.QLineEdit(result[1])
            age_input = QtWidgets.QLineEdit(str(result[2]))
            gender_input = QtWidgets.QLineEdit(result[3])
            email_input = QtWidgets.QLineEdit(result[4])
            phone_input = QtWidgets.QLineEdit(result[5])
            form_layout.addRow("姓名", name_input)
            form_layout.addRow("年龄", age_input)
            form_layout.addRow("性别", gender_input)
            form_layout.addRow("邮箱", email_input)
            form_layout.addRow("电话", phone_input)
            dialog_layout.addLayout(form_layout)

            button_layout = QtWidgets.QHBoxLayout()
            ok_button = QtWidgets.QPushButton("确定")
            cancel_button = QtWidgets.QPushButton("取消")
            button_layout.addWidget(ok_button)
            button_layout.addWidget(cancel_button)
            dialog_layout.addLayout(button_layout)

            dialog.setLayout(dialog_layout)

            def on_ok():
                name = name_input.text()
                age = age_input.text()
                gender = gender_input.text()
                email = email_input.text()
                phone = phone_input.text()
                if not name:
                    QtWidgets.QMessageBox.warning(self, "输入错误", "姓名不能为空")
                    return
                try:
                    age = int(age)
                except ValueError:
                    QtWidgets.QMessageBox.warning(self, "输入错误", "年龄必须是数字")
                    return
                connection = get_db_connection()
                if connection:
                    try:
                        with connection.cursor() as cursor:
                            sql = "UPDATE students SET name = %s, age = %s, gender = %s, email = %s, phone = %s WHERE id = %s"
                            cursor.execute(sql, (name, age, gender, email, phone, student_id))
                        connection.commit()
                    except pymysql.MySQLError as e:
                        print(f"更新错误: {e}")
                    finally:
                        connection.close()
                    self.refresh_student_list()
                    dialog.close()

            def on_cancel():
                dialog.close()

            ok_button.clicked.connect(on_ok)
            cancel_button.clicked.connect(on_cancel)

            dialog.exec_()

    def delete_student(self):
        selected_items = self.table.selectedItems()
        if not selected_items:
            QtWidgets.QMessageBox.warning(self, "选择错误", "请选择要删除的学生")
            return
        row = selected_items[0].row()
        student_id = self.table.item(row, 0).text()
        reply = QtWidgets.QMessageBox.question(self, "确认删除", f"确定要删除学生 ID {student_id} 吗?", QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No)
        if reply == QtWidgets.QMessageBox.Yes:
            connection = get_db_connection()
            if connection:
                try:
                    with connection.cursor() as cursor:
                        sql = "DELETE FROM students WHERE id = %s"
                        cursor.execute(sql, (student_id,))
                    connection.commit()
                except pymysql.MySQLError as e:
                    print(f"删除错误: {e}")
                finally:
                    connection.close()
                self.refresh_student_list()

def main():
    app = QtWidgets.QApplication(sys.argv)
    window = StudentManagementApp()
    window.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()
```

## 运行项目

1. **配置数据库**: 确保 MySQL 数据库已启动,并且 `student_management` 数据库和 `students` 表已创建。
2. **配置数据库连接**: 在代码中,将 `db_config` 的 `user` 和 `password` 替换为你的 MySQL 用户名和密码。
3. **运行脚本**: 保存上述代码为 `student_management.py`,然后在命令行中运行:

    ```bash
    python student_management.py
    ```

4. **使用应用**: 使用界面上的按钮来添加、编辑、删除和刷新学生列表。

## 注意事项

- **安全性**: 在实际应用中,请确保对用户输入进行适当的验证和消毒,以防止 SQL 注入等安全问题。
- **错误处理**: 增强错误处理机制,例如在数据库操作失败时提供更详细的错误信息。
- **用户体验**: 可以进一步优化用户界面,例如添加搜索功能、分页显示等。
- **数据持久性**: 确保数据库连接在应用运行期间保持打开,并在适当的时候关闭连接以释放资源。

---

通过以上步骤,你应该能够创建一个基本的学生管理系统。根据需要,你可以扩展功能,例如添加搜索功能、导入导出数据、用户权限管理等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/941027.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8改进,YOLOv8引入Hyper-YOLO的MANet混合聚合网络+HyperC2Net网络

摘要 理论介绍 MANet 的目标是通过多种卷积操作的协同作用,提高特征提取能力,并加强梯度流动,从而提升模型在不同层次的特征表示和语义深度。MANet 结合了三种卷积变体,通过混合使用它们来提高视觉特征的多样性和信息流动性。 HyperC2Net 的主要目标是通过超图结构对多层次…

挑战一个月基本掌握C++(第六天)了解函数,数字,数组,字符串

一 C函数 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上&#xff…

vue的ElMessage的css样式不生效

我使用elementplus,是使用的用哪个单独引入的,然后表单校验时候警告的css不生效,就是这个效果 反复看视频的引入也没发现问题,后来才知道需要这个引入 import { ElMessage } from "element-plus"; import element-pl…

PromptGIP:Unifying lmage Processing as Visual Prompting Question Answering

“Unifying Image Processing as Visual Prompting Question Answering” 文章提出了一种名为 PromptGIP 的通用模型,将图像处理任务统一为视觉提示问答范式,在多个图像处理任务上展现出良好性能,为通用图像处理提供了新的思路和方法。 confe…

Windows服务器修复SSL/TLS协议信息泄露漏洞等...

为了保证生产环境的安全, 我们会定期对服务器进行漏洞扫描, 一般情况下我们都是使用Linux服务器, 某些情况会用到Windows服务器 出现SSL/TLS协议信息泄露漏洞问题一般情况下是远程连接使用了不安全的加密算法, 需要禁用这些加密算法 修复方法 从网络中查询修复方法又很多, 大…

基于AT89C52单片机的6位电子密码锁设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/90166684?spm1001.2014.3001.5503 14 部分参考设计如下: 目 录 摘要 1 abstract 2 1 绪论 3 1.1 课题背景 3 1.2 课题的目的和意义 3 1.3 电子密码…

考前倒计时98天

2024年12月21日到2025年3月29日共有 98​ 天 一、计算机基础 思维分类特征强调学科代表理论思维(推理思维)推理和演绎推理数学实验思维(证实思维)观察和总结自然规律归纳物理学计算思维(构造思维)设计和构造…

力扣-图论-70【算法学习day.70】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…

最新详细Gmail 注册指南以及注册谷歌账号手机号码无法验证?解决方法分享

Gmail 注册指南:2024 年实用教程,解决手机号验证难题,开启你的数字之旅 在当今信息时代,Gmail 邮箱已成为我们工作与生活中常用的数字工具,它不仅功能强大、界面简洁,还是访问 Google 服务(如 …

【已解决】黑马点评项目jmeter高并发测试中用户数据的生成

具体实现见此篇文章的第3章 运行 test 程序后,生成以下用户名 以下文件名改成自己的地址 成功

范德蒙矩阵(Vandermonde 矩阵)简介:意义、用途及编程应用

参考: Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares Stephen Boyd and Lieven Vandenberghe 书的网站: https://web.stanford.edu/~boyd/vmls/ Vandermonde 矩阵简介:意义、用途及编程应用 在数学和计算科学中&a…

数智化医院分布式计算框架融合人工智能方向初步实现与能力转换浅析

人工智能中心计算机 一、引言 1.1 研究背景与意义 近年来,人工智能(Artificial Intelligence,AI)与大数据技术的迅猛发展为医疗行业带来了前所未有的变革机遇。医疗领域积累了海量的数据,如电子病历(Electronic Medical Record,EMR)、医学影像、临床检验数据以及基因…

深度学习之超分辨率算法——SRGAN

更新版本 实现了生成对抗网络在超分辨率上的使用 更新了损失函数,增加先验函数 SRresnet实现 import torch import torchvision from torch import nnclass ConvBlock(nn.Module):def __init__(self, kernel_size3, stride1, n_inchannels64):super(ConvBlock…

Pytorch | 利用PI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用PI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集PI-FGSM介绍背景和动机算法原理算法流程 PI-FGSM代码实现PI-FGSM算法实现攻击效果 代码汇总pifgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexN…

IMX6ULL开发板如何关掉自带的QT的GUI界面和poky的界面的方法

重要说明:其实最后发现根本没必要去关掉自带的QT的GUI界面,直接把屏幕先刷黑就可以看到测试效果了,把屏蔽先刷黑的代码见博文: https://blog.csdn.net/wenhao_ir/article/details/144594705 不过,既然花了时间摸索如何…

【网络安全】逆向工程 练习示例

1. 逆向工程简介 逆向工程 (RE) 是将某物分解以了解其功能的过程。在网络安全中,逆向工程用于分析应用程序(二进制文件)的运行方式。这可用于确定应用程序是否是恶意的或是否存在任何安全漏洞。 例如,网络安全分析师对攻击者分发…

Docker Compose 安装 Harbor

我使用的系统是rocky Linux 9 1. 准备环境 确保你的系统已经安装了以下工具: DockerDocker ComposeOpenSSL(用于生成证书)#如果不需要通过https连接的可以不设置 1.1 安装 Docker 如果尚未安装 Docker,可以参考以下命令安装&…

深入浅出:多功能 Copilot 智能助手如何借助 LLM 实现精准意图识别

阅读原文 1. Copilot中的意图识别 如果要搭建一个 Copilot 智能助手,比如支持 知识问答、数据分析、智能托管、AIGC 等众多场景或能力,那么最核心的就是基于LLM进行意图识别分发能力,意图识别的准确率直接决定了 Copilot 智能助手的能力上限…

ZED-OpenCV项目运行记录

项目地址:GitCode - 全球开发者的开源社区,开源代码托管平台 使用 ZED 立体相机与 OpenCV 进行图像处理和深度感知 • 使用 ZED 相机和 OpenCV 库捕获图像、深度图和点云。 • 提供保存并排图像、深度图和点云的功能。 • 允许在不同格式之间切换保存的深度图和点云…

Linux 常见用例汇总

注:本文为 Linux 常见用例文章合辑。 部分内容已过时,未更新整理。 检查 Linux 上的 glibc 版本 译者:joeren | 2014-11-27 21:33 问:检查 Linux 系统上的 GNU C 库(glibc)的版本? GNU C 库&…