ppt在线制作/seo关键词排名工具

ppt在线制作,seo关键词排名工具,郑州专业网页模板制作公司,嘉定广州网站建设目录 一. 概要 二. 技术栈 三. 系统功能设计 3.1 功能模块 3.2 数据表设计 四. 具体实现 4.1 Qt 服务端 4.1.1 初始化 WebSocket 服务器 4.1.2 用户管理界面 4.2 微信小程序端 4.2.1 注册功能 4.2.2 登录功能 五. 运行效果 六. 源码下载 一. 概要 在物联网和智能设备…

目录

一. 概要

二. 技术栈

三. 系统功能设计

3.1 功能模块

 3.2 数据表设计

四. 具体实现

4.1 Qt 服务端

4.1.1 初始化 WebSocket 服务器

 4.1.2 用户管理界面

 4.2 微信小程序端

4.2.1 注册功能

 4.2.2 登录功能

五. 运行效果

六. 源码下载


一. 概要

在物联网和智能设备管理领域,用户管理系统是一个核心模块。本文将介绍如何通过 Qt 和 微信小程序实现一个用户管理系统,其中Qt服务端运行在嵌入式Linux设备IMX6ULL上,支持用户和运维人员的注册与登录功能,并将数据存储到开发板设备的SQLite 数据库中。通过 WebSocket 实现实时通信,确保数据的高效传输。支持微信小程序端和Qt服务端同时对用户的个人信息数据进行增删改查操作。在微信小程序注册时,将数据通过WebSocket写入到开发板的SQLite数据库中,在进行登陆时,通过WebSocket校验输入的用户名和密码与开发板SQLite数据库中的数据进行对比,当数据存在且正确是可登陆进系统。如下为IMX6ULL服务端:

                                                                IMX6ULL服务端

二. 技术栈

  • Qt服务端:用于开发桌面端管理界面,提供用户和运维人员数据的展示和管理功能。
  • 微信小程序:作为移动端入口,提供用户注册和登录界面,登录成功后跳转到对应的界面。
  • WebSocket:实现微信小程序与 Qt 服务端的实时通信,用于存储和校验开发板服务端数据库中的数据。
  • SQLite:轻量级数据库,用于存储用户信息。

三. 系统功能设计

3.1 功能模块

1. 用户注册:

  • 用户通过微信小程序填写用户名、密码和角色(用户或运维人员)。
  • 数据通过 WebSocket 发送到开发板Qt服务端,并存储到 SQLite 数据库。

2. 用户登录:

  • 用户通过微信小程序输入用户名和密码。
  • Qt服务端验证用户信息,返回登录结果。

3. 用户管理:

  • Qt服务端提供管理人员对用户和运维人员的个人信息进行增删改查等的操作。

 3.2 数据表设计

在 SQLite 中创建 users 表,存储用户信息,其中包括用户的id,用户名,用户密码,用户角色(用于标识用户和运维人员):

CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT,username TEXT NOT NULL UNIQUE,password TEXT NOT NULL,role TEXT NOT NULL
);

四. 具体实现

4.1 Qt 服务端

4.1.1 初始化 WebSocket 服务器

在Qt程序中创建一个WebSocket服务器,监听来自微信小程序的连接请求。以下为建立服务端的主要代码:

// WebSocketServer.h
class WebSocketServer : public QObject {Q_OBJECT
public:explicit WebSocketServer(quint16 port, QObject *parent = nullptr);~WebSocketServer();private slots:void onNewConnection();void onMessageReceived(const QString &message);private:QWebSocketServer *m_server;QList<QWebSocket *> m_clients;
};// WebSocketServer.cpp
WebSocketServer::WebSocketServer(quint16 port, QObject *parent): QObject(parent), m_server(new QWebSocketServer("UserManager", QWebSocketServer::NonSecureMode, this)) {if (m_server->listen(QHostAddress::Any, port)) {connect(m_server, &QWebSocketServer::newConnection, this, &WebSocketServer::onNewConnection);qDebug() << "WebSocket server started on port" << port;} else {qWarning() << "Failed to start WebSocket server";}
}void WebSocketServer::onNewConnection() {QWebSocket *client = m_server->nextPendingConnection();connect(client, &QWebSocket::textMessageReceived, this, &WebSocketServer::onMessageReceived);m_clients.append(client);qDebug() << "New client connected";
}void WebSocketServer::onMessageReceived(const QString &message) {QWebSocket *client = qobject_cast<QWebSocket *>(sender());if (client) {qDebug() << "Received message:" << message;// 处理消息并返回响应client->sendTextMessage("Message received");}
}
 4.1.2 用户管理界面

在用户和运维人员个人信息管理界面中,使用 QTableView 和 QSqlTableModel 实现用户信息的展示和管理。如下为对用户运维人员个人信息管理的主要逻辑代码段:

// MainWindow.cpp
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);// 初始化 WebSocket 服务器m_webSocketServer = new WebSocketServer(8080, this);// 初始化 SQLite 数据库QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "mainwindow_connection");db.setDatabaseName("user.db");if (!db.open()) {qWarning() << "无法打开数据库";return;}// 初始化表格模型m_model = new QSqlTableModel(this, db);m_model->setTable("users");m_model->select();ui->tableView->setModel(m_model);// 调整列宽和布局ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);// 连接按钮信号槽connect(ui->addButton, &QPushButton::clicked, this, &MainWindow::onAddUser);connect(ui->deleteButton, &QPushButton::clicked, this, &MainWindow::onDeleteUser);connect(ui->updateButton, &QPushButton::clicked, this, &MainWindow::onUpdateUser);connect(ui->refreshButton, &QPushButton::clicked, this, &MainWindow::onRefreshButtonClicked);
}

 4.2 微信小程序端

4.2.1 注册功能

通过 WebSocket 发送注册请求到 Qt 服务端。如下为register,注册逻辑主要实现代码段:

// register.js
Page({data: {username: '',password: '',role: '用户'},onRegister: function () {const { username, password, role } = this.data;const message = JSON.stringify({type: 'register',username,password,role});wx.connectSocket({url: 'ws://192.168.10.100:8080'});wx.onSocketOpen(() => {wx.sendSocketMessage({data: message});});wx.onSocketMessage((res) => {const response = JSON.parse(res.data);if (response.success) {wx.showToast({title: '注册成功',icon: 'success'});} else {wx.showToast({title: response.message,icon: 'none'});}});}
});
 4.2.2 登录功能

通过 WebSocket 发送登录请求到 Qt 服务端。如下为登录login.js的主要逻辑代码段。

// login.js
Page({data: {username: '',password: ''},onLogin: function () {const { username, password } = this.data;const message = JSON.stringify({type: 'login',username,password});wx.connectSocket({url: 'ws://192.168.10.100:8080'});wx.onSocketOpen(() => {wx.sendSocketMessage({data: message});});wx.onSocketMessage((res) => {const response = JSON.parse(res.data);if (response.success) {wx.showToast({title: '登录成功',icon: 'success'});} else {wx.showToast({title: response.message,icon: 'none'});}});}
});

五. 运行效果

首先完成对Linux端编写的Qt服务端代码经过交叉编译后通过scp命令挂载到ip为192.168.10.50的IMX6ULL嵌入式设备上,如下:

确保挂成功:

随后在微信小程序端进行用户的注册:

 同时在注册成功时通过WebSocket将个人数据写入到服务端的数据库中:

 注册成功后跳转到登陆界面,在登陆成功后跳转到用户界面:

对于运维人员的注册于登录亦是如此。 

六. 源码下载

Qt端源码Qt_Server,微信小程序端源码QtApp_demo2,源码已上传至我的gitee代码仓库,有需要请自取:

https://gitee.com/liu-jixwa/mytest

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++17中`std::map`和`std::set`的`extract`与`merge`操作

文章目录 1. extract操作使用方法内部机制 2. merge操作使用方法特点 3. 性能优势4. 实际应用场景5. 总结 在C17标准中&#xff0c; std::map和 std::set这两个关联容器引入了两个极具实用价值的新特性&#xff1a; extract和 merge。这两个操作极大地增强了关联容器在处理…

当时只道是寻常

晴&#xff0c;2025年2月16日 卸载了油管、脸书和 X 手机 app &#xff0c;太浪费我时间&#xff0c;以后再去经营吧。 教学技能大赛材料需要在明天之内搞定——《教学实施方案》。感觉玄&#xff0c;同部门有经验的老师说至少花一周时间。 只能明天早点继续接着弄&#xff…

vue-谷歌浏览器安装vue-devtools插件

文章目录 一、谷歌浏览器安装vue-devtools1.1、方式一&#xff1a;直接下载crx并安装 本文讲解谷歌浏览器安装vue-devtools插件的步骤。 注意&#xff1a;以下vue-devtools插件都是vue2版本的。 一、谷歌浏览器安装vue-devtools 1.1、方式一&#xff1a;直接下载crx并安装 …

Hami项目开发笔记

如果还不了解hami&#xff0c;请阅读文章&#xff1a;hami入门学习 Hami提供了两个维度的监控能力&#xff0c;集群级别和节点级别&#xff0c;以及Pod真实占用的GPU和虚拟分配的GPU。 {scheduler node ip}:31993/metrics records the snapshot of allocated devices, includi…

机器学习 - 理论和定理

在机器学习中&#xff0c;有一些非常有名的理论或定理&#xff0c;对理解机器学习的内在特性非常有帮助。本文列出机器学习中常用的理论和定理&#xff0c;并举出对应的举例子加以深化理解&#xff0c;有些理论比较抽象&#xff0c;我们可以先记录下来&#xff0c;慢慢啃&#…

【devops】Github Actions Secrets | 如何在Github中设置CI的Secret供CI的yaml使用

一、Github Actions 1、ci.yml name: CIon: [ push ]jobs:build:runs-on: ubuntu-lateststeps:- name: Checkout codeuses: actions/checkoutv3- name: Set up Gouses: actions/setup-gov4with:go-version: 1.23.0- name: Cache Go modulesuses: actions/cachev3with:path: |…

springCloud-2021.0.9 之 GateWay 示例

文章目录 前言springCloud-2021.0.9 之 GateWay 示例1. GateWay 官网2. GateWay 三个关键名称3. GateWay 工作原理的高级概述4. 示例4.1. POM4.2. 启动类4.3. 过滤器4.4. 配置 5. 启动/测试 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收…

华为IPD简介

创作灵感 现在“熟悉华为IPD”经常出现在高级招聘岗位能力要求上&#xff0c;于是作者写下此文章以此巩固相关知识储备 名词解释 华为IPD&#xff08;Integrated Product Development&#xff0c;集成产品开发&#xff09;是华为引入并优化的一套产品开发管理体系&#xff0…

UniApp 中制作一个横向滚动工具栏

前言 最近在用 UniApp 开发项目时&#xff0c;需要一个横向滑动的工具栏。常见的工具栏一般都是竖着的&#xff0c;但横向滑动的工具栏不仅能展示更多内容&#xff0c;还能让界面看起来更加丰富。不过很多朋友可能会发现&#xff0c;如何让内容“横着”展示又不变形、能流畅滚…

java nio 原理 非阻塞IO Netty

一、为什么必须去了解NIO 首先你需要之后Netty的主要实现手段就是Nio,很多人一直学不明白Netty&#xff0c;根本原因是 除了日常开发中很难能够实践&#xff0c;很大一部分原因是不熟悉NIO&#xff0c;事实上真正熟悉了NIO和它背后的原理之后&#xff0c;去查看Netty的源码就有…

el-select 添加icon

Element-ui-plus 新版本&#xff1a;Select 选择器 | Element Plus 要实现如上的效果 &#xff0c;要用到具名插槽 prefix&#xff0c;看代码&#xff1a; <template><el-dialog ref"dialogRef" v-model"dialogVisible" :title"title"…

【Linux】Ubuntu Linux 系统 ——PHP开发环境

ℹ️大家好&#xff0c;我是练小杰&#xff0c;元宵节到了&#xff0c;在此祝大家元宵节快乐&#x1f606; 新的一年里&#xff0c;愿你步步高升&#xff0c;事事如意&#xff0c;心想事成&#xff01;! 本文是关于Linux 操作系统中部署PHP开发环境这部分基础内容&#xff0c;后…

haproxy实现MySQL服务器负载均衡

1.环境准备 准备好下面四台台服务器&#xff1a; 主机名IP角色open-Euler1192.168.121.150mysql-server1openEuler-2192.168.121.151mysql-server2openEuler-3192.168.121.152clientRocky8-1192.168.121.160haproxy 2.mysql服务器配置 1.下载mariadb #下载mariadb [rootop…

Uniapp 原生组件层级过高问题及解决方案

文章目录 一、引言&#x1f3c5;二、问题描述&#x1f4cc;三、问题原因❓四、解决方案&#x1f4af;4.1 使用 cover-view 和 cover-image4.2 使用 subNVue 子窗体4.3 动态隐藏原生组件4.4 使用 v-if 或 v-show 控制组件显示4.5 使用 position: fixed 布局 五、总结&#x1f38…

Neo4j集群学习

文章目录 官方指导文档Neo4j因果集群核心服务器只读副本因果一致性 Neo4j集群搭建Neo4j企业版下载集群简介虚拟机准备jdk安装实施搭建访问neo4j Web服务 集群添加Core节点 官方指导文档 Neo4j 5 ClusterNeo4j 5 Basic Cluster Neo4j因果集群 集群是Neo4企业版中所提供的功能…

Ant-Design-Vue:Button按钮SVG图标垂直未居中问题

问题描述 如下图所示&#xff0c;在使用Ant-Design-Vue UI组件库提供的Button按钮Icon组件开发页面时&#xff0c;发现icon图标并没有垂直居中。 icon插槽-图标垂直不居中 再看一个官网的例子&#xff0c; 官网老子 问题排查 首先&#xff0c;考虑是否由于当前的页面布局&#…

慧星云+Chatbox :云上部署DeepSeek告别使用卡顿

DeepSeek 官网卡顿 DeepSeek 系列模型的现象级爆火&#xff0c;引发国内外广泛关注与讨论热潮&#xff0c;然而充满热情的使用者也让 DeepSeek 官网崩溃导致无法正常使用。 为了解决用户使用痛点&#xff0c;慧星云推出了云端蒸馏与满血版的 DeepSeek&#xff0c;搭配 Chatbox …

DeepSeek与ChatGPT的全面对比

在人工智能&#xff08;AI&#xff09;领域&#xff0c;生成式预训练模型&#xff08;GPT&#xff09;已成为推动技术革新的核心力量。OpenAI的ChatGPT自发布以来&#xff0c;凭借其卓越的自然语言处理能力&#xff0c;迅速占据市场主导地位。然而&#xff0c;近期中国AI初创公…

LeetCode1706

LeetCode1706 目录 LeetCode1706题目描述示例题目理解问题描述 示例分析思路分析问题核心 代码段代码逐行讲解1. 获取网格的列数2. 初始化结果数组3. 遍历每个球4. 逐行模拟下落过程5. 检查是否卡住6. 记录结果7. 返回结果数组 复杂度分析时间复杂度空间复杂度 总结的知识点1. …

如何调整 Nginx工作进程数以提升性能

&#x1f3e1;作者主页&#xff1a;点击&#xff01; Nginx-从零开始的服务器之旅专栏&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2025年2月15日14点20分 Nginx 的工作进程数&#xff0…