文章目录

  • 一.前言
  • 二.相关知识
    • 1.PyQt5
    • 2.sqlite3
  • 三.效果预览
    • 1.登录
    • 2.注册
    • 3.普通用户身份权限
    • 4.管理员身份权限
  • 三、技术讨论
    • 1.数据展示表格
        • 1. 更强的表现力和交互性(前端功能丰富)
        • 2. 数据处理效率更高(支持大数据量)
        • 3. 美观且易于自定义(前端 UI 更现代)
        • 4. 功能扩展性强
        • 5. **跨平台一致性更好**
    • 2.数据表
  • 四.总结


此系统为粉丝定制化开发,旨在于练习数据库使用,欢迎各位粉丝私聊博主了解软件!
在这里插入图片描述

一.前言

下面是粉丝大概的需求,接下来我会根据我的理解结合需求来实现整个系统,本篇博客将会详细介绍系统实现思路以及开发流程。

做的是网页管理系统
用qt5做的UI界面,要求数据方面连接数据库
有登录和注册功能
用户上分为管理员和普通用户
用户界面有
网址浏览,已有的网址浏览
查询,查询网址
上传,上传没有的网址
修改密码
管理员界面有
审核,对用户提交的网址进行审核
管理用户,对用户的账号进行管理
修改密码
网页对象包括属性:封面(要是麻烦就不做了),站名,网址,介绍
查询功能只查询网址这个属性
所有数据都保存在数据库里

二.相关知识

1.PyQt5

PyQt5 是 Python 绑定 Qt 应用程序框架的一个库,它用于开发跨平台的桌面应用程序。PyQt5 由 Riverbank Computing 维护,基于 Qt 5 框架,提供了丰富的 GUI 组件和强大的功能,包括窗口控件、布局管理、信号槽机制、多线程支持、绘图、网络编程等。
PyQt5 的特点:
✅ 跨平台支持:可在 Windows、macOS 和 Linux 上运行。
✅ 强大的 GUI 组件:提供 Qt Designer 可视化设计 UI,支持拖拽控件布局。
✅ 信号槽机制:提供高效的事件处理系统,使 UI 响应更加流畅。
✅ QSS 样式表:类似 CSS,可以美化 UI 组件。
✅ 集成多媒体支持:基于 QtMultimedia,可实现音频、视频播放功能。
摘自chat GPT

在这里插入图片描述

2.sqlite3

Python3 的 sqlite3 模块是 Python 标准库中内置的数据库接口,用于操作 SQLite 数据库。SQLite 是一种轻量级的关系型数据库,特点是无需安装服务器,数据直接保存在本地文件中,非常适合小型应用、原型开发或本地数据存储。通过 sqlite3 模块,你可以轻松地创建数据库、执行 SQL 语句、插入和查询数据,同时支持参数化查询、防止 SQL 注入,并且遵循 DB-API 2.0 规范。
在这里插入图片描述

正如大家所见,此数据库轻若羽毛。

三.效果预览

接下来我将使用贴图的方式展示本系统所有功能以及功能点。

1.登录

首先呢用户需要登录到系统才能使用软件的正式功能,我们设计了简约的登录界面,能给用户一种“我们的系统很简约”的心理暗示,背景色采用浅蓝色结合我们的主题“网站网址管理”,背景图上是上网的标志“e”,也就是explore,我们的系统定义为“NetBox 管理平台”,简单直观地就能让用户了解到我们系统的大致作用,在系统中文名下方是英文名称,左侧是我们系统的Logo,这里的logo取自Chrome的图标,登录界面中间区域是信息填写区域,用户需要填写具体的用户名和与之匹配的密码,通过选择身份的方式登录不同的系统角色账号,在用户确认信息无误之后点击登录按钮进行登录操作,我们的系统校验通过后即可跳转到软件核心主界面。
在这里插入图片描述

2.注册

未注册的用户可以通过注册的方式注册新账号,注册页面只支持用户身份注册,管理员的注册按钮点击后会提示“注册管理员请联系超级管理员!”也就是说管理员账户需要特殊的权限才能够注册,普通身份无法直接注册成管理员,只能注册为普通用户。用户输入了用户名以及确认了密码之后点击确定按钮,系统会对用户输入的信息进行校验,具体校验项包括:用户是否被注册、密码是否匹配、身份是否正确…
在这里插入图片描述

3.普通用户身份权限

普通用户身份登录成功后到软件主界面,可以进行如下操作:

  1. 用户系统操作:退出登录、退出系统
  2. 对现有的网址进行查看,包括网址审核状态、网址条目
  3. 删除目标网址 即取消网址审核状态提交,用户通过在表格中多选url的方式对目标网址进行删除操作
  4. 上传新网址,顾名思义,用户可以选择指定类型的本地文件来进行网址的审核提交

我们的系统支持三种类型的文件:TXT、CSV、Excel
文件内容格式见下图(CSV):
在这里插入图片描述
请添加图片描述

在这里插入图片描述

4.管理员身份权限

管理员拥有本系统的最高身份权限,但是不支持网址上传操作,因为不能自己审核自己,管理员的权限主要是:

  1. 用户管理:鸟瞰整个用户数据表格数据,查看所有用户的身份、网址数据量
  2. 网址审核:对于用户提交的网址内容进行审核,可以直接标记目标网址的状态:通过、不通过,支持网址的删除操作
  3. 登录日志管理:查看所有用户的登录日志信息,包括的数据项为:用户ID、用户名、身份、登录时间、IP地址

这里截图一张,展示一下系统核心功能:
在这里插入图片描述

三、技术讨论

1.数据展示表格

本次数据的展示并没有使用传统的PyQt5的QTableWidget二维数据表,而是使用了QWebEngine封装的datatables,这样做的好处有很多:

1. 更强的表现力和交互性(前端功能丰富)
  • DataTables 支持列排序、分页、搜索、筛选、高亮显示等功能,开箱即用。
  • 可以轻松实现列宽自适应、列固定、合并单元格、行内编辑等复杂操作。
  • 插件生态丰富,如按钮导出(CSV、Excel)、打印、列拖动等插件。
2. 数据处理效率更高(支持大数据量)
  • QTableWidget 在处理上千行数据时容易变卡,性能差。
  • DataTables 使用虚拟 DOM 和分页显示,渲染效率明显更高,尤其适合上万行数据展示
3. 美观且易于自定义(前端 UI 更现代)
  • 可以使用 HTML/CSS/Bootstrap 等前端技术美化表格外观。
  • 支持响应式设计,自适应不同窗口大小。
4. 功能扩展性强
  • 可以嵌入图表(如 Chart.js)、链接、按钮、下拉菜单等组件。
  • 可以和后端数据动态交互(AJAX 数据源),比如结合 Flask、FastAPI 实时刷新数据。
5. 跨平台一致性更好
  • 基于 Web 技术,在 Windows、Linux、macOS 下表现几乎完全一致。
  • 可拓展为 Web 应用的一部分,统一 UI 和逻辑。

2.数据表

这里说的是SQLite3的数据表,我们的系统是基于SQLite3的,里面包括三张数据表,分别是:

用户信息表

CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT,username TEXT NOT NULL UNIQUE,password TEXT NOT NULL,role INTEGER NOT NULL CHECK (role IN (1, 2))
);

用户日志表

CREATE TABLE IF NOT EXISTS user_login_logs (id INTEGER PRIMARY KEY AUTOINCREMENT,user_id INTEGER NOT NULL,  -- 用户 IDlogin_time TEXT NOT NULL,  -- 登录时间ip_address TEXT           -- 登录的 IP 地址
);

用户url审核表

CREATE TABLE IF NOT EXISTS user_urls (id INTEGER PRIMARY KEY AUTOINCREMENT,user_id INTEGER NOT NULL,url TEXT NOT NULL,icon_base64 TEXT,`desc` TEXT,`title` TEXT,upload_time INTEGER,status INTEGER default 0,--- 0未审核 1审核通过 2审核未通过UNIQUE(user_id, url)
);

下图为用户url审核表截图内容:
在这里插入图片描述

四.总结

本次和大家详细分享了我为粉丝定制化开发的“PyQt5+SQLite3的网址审核系统”,此系统非常适合用来作为数据库大作业或者PyQt5项目练习,系统整体实现不难,主要是得有整体架构开发思路,整体代码量约为1700行,主要是PyQt5组件定义花了一些时间,因为本系统不依赖设计师,所有组件都是自定义出来的。最后感谢大家看到这里,如果您也有需求的话欢迎点击下方联系我!
在这里插入图片描述

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

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

相关文章

与后端现场联调mock数据

当我们后端在现场没办法连后端本地就可以使用mock数据,模拟后端返回数据。使用工具:apifox 一、安装好以后--新建接口 举个栗子: 我想建个接口http://123.123.123.123:8080/api/login 二、 新建期望,返回固定值,否则…

C# 事件(发布者和订阅者)

发布者和订阅者 很多程序都有一个共同的需求,即当一个特定的程序事件发生时,程序的其他部分可以得到 该事件已经发生的通知。 发布者/订阅者模式(publisher/subscriber pattem)可以满足这种需求。在这种模式中,发布 …

RediSearch高性能全文搜索引擎

RediSearch 是 RedisLabs 团队开发的一个高性能全文搜索引擎,可作为一个 Redis Module 运行在 Redis 上。 Redis7:百万数据级Redis Search 超越 ElasticSearch Redis Search是基于Redis的全文搜索引擎模块(RediSearch)&#xff0c…

菜谱大全——字符串处理艺术:从文本解析到高效搜索 [特殊字符][特殊字符]

目录 前言一、现实场景二、技术映射2.1 基础刀工:String类2.2 高效剁馅:StringBuilder2.3 精准雕刻:正则表达式 三、知识点呈现3.1 String vs StringBuilder vs StringBuffer3.2 正则表达式核心语法速查3.3 字符串拼接性能陷阱 四、代码实现五…

webpack+vite前端构建工具 -答疑

webpack答疑 1 输入webpack命令,执行的是全局版本还是本地版本的webpack 当在命令行窗口输入webpack命令时,其执行优先级可通过以下步骤明确判断: 1.1 【全局安装优先机制】 执行原理:系统会按照环境变量PATH的顺序逐级查找可执…

API接口开放平台 Crabc 3.4 发布

Crabc 是一款 API 接口开发平台,企业级接口管理、SQL2API 平台。支持动态数据源、动态 SQL 和标签, 支持接入(mysql、oracle、达梦、TiDB、hive、es 和 mongodb)等 SQL 或 NoSQL 数据源,在线可视化编写 SQL 快速发布接…

PD快充协议芯片XSP04D支持全协议+支持串口通讯+支持与主板共用一个Type-C

随着Type-C接口的充电器普及,市面上的PD充电器越来越多,小家电产品可不配充电器,使用Type-C接口,然后加入一颗PD协议取电协议芯片XSP08即可让充电器/充电宝/车充等电源输出9V/12V/15V/20V电压给产品供电。 针对各种各样的不同需求…

C# 高效加载txt文件内容

在 C# 中,高效加载 TXT 文件内容可以通过多种方法实现,具体方法的选择取决于文件的大小和读取需求。以下是一些常用的方法: 1. 使用 File.ReadAllText 如果文件比较小,并且你希望一行一行地读取整个内容,可以使用 Fi…

(2)pytest执行用例的规则

1. 简介 今天主要学习一下pytest的执行用例的规则。 2. 通过help帮助查看pytest如何使用 .查看pytest命令行参数,可以用pytest -h 或pytest --help查看 3. 用例设计原则 文件名以test_*.py文件和*_test.py以test_开头的函数以Test开头的类以test_开头的方法所有的…

InnoDB数据页

导读: 我们已经知道了页是数据库存储的基本单位,知道了一条行记录的存储格式是怎样的,当数据越来越多时,那一条条行记录具体又是怎么在页中被组织起来的呢? 一、InnoDB数据页结构 二、总结 1、一条条行数据是如何在数…

世赛背景下,中职物联网应用与服务赛项实训解决方案

一、世赛背景与物联网应用赛项概述 1.1 世赛发展历程及对中职教育的影响 世界技能大赛(WorldSkills Competition,简称世赛)自1950年创立以来,已经成为全球范围内展示职业技能水平的重要赛事。截至2024年,世赛已成功举…

【攻防篇】解决:阿里云docker 容器中自动启动xmrig挖矿-- 实战

文章目录 场景一、问题二、原因三、解决方案1、控制台处理2、 [清除与防护](https://blog.csdn.net/ladymorgana/article/details/148921668?spm1001.2014.3001.5501)1. 紧急处理:停止挖矿进程2. 清理被感染的容器3. 防护措施:防止再次被入侵4. 排查入侵…

飞算智造JavaAI:智能编程革命——AI重构Java开发新范式

文章目录 引言:当传统Java开发遇上AI一、技术架构解析1.1 核心架构图1.2 关键技术栈 二、实战演示:从需求到代码的全AI辅助2.1 场景:电商优惠券系统开发2.2 代码生成实例2.3 智能调试演示 三、与传统开发模式对比测试3.1 基准测试数据3.2 典型…

[特殊字符] 分享裂变新姿势:用 UniApp + Vue3 玩转小程序页面分享跳转!

在如今流量成本日益攀升的移动互联网时代,"用户分享拉新" 成为了增长的重要策略。而微信小程序作为天然具备社交传播力的平台,提供了较完善的分享机制支持。本文将从实战角度出发,手把手教你如何使用 uni-app Vue3 构建一个支持「…

[创业之路-458]:企业经营层 - 蓝海战略 - 重构价值曲线、整合产业要素、创造新需求

“重构价值曲线、整合产业要素、创造新需求”是蓝海战略中实现价值创新的核心路径,它们构成了一个从内部优化到外部协同,再到市场颠覆的完整逻辑链条。以下从理论框架、实践方法和企业案例三个维度展开分析: 一、重构价值曲线:打…

慢查询引发对mysql索引的探索

目录 一、索引分类 1.1 聚簇索引结构 1.2 非聚簇索引(二级索引) 1.3 主键索引 1.4 唯一索引 1.5 普通索引 1.6 前缀索引 1.7 联合索引 1.8 索引下推 1.9 索引区分度 二、优化索引的方法 2.1 索引的特点 2.2 适合创建索引的情况 2.3 不适合创建索引的情况 2.4 优…

启用不安全的HTTP方法

背景: 今天被安全检测出一个这样的问题:启用不安全的HTTP方法。DELETE方法是用来调试web服务器连接的http方式,支持该方式的服务器文件可能被非法删除;PUT方法用来向服务器提交文件;TRACE方法本用于客户端测试到服务器…

fvcom 水深文件dep制作

fvcom 水深文件dep制作 fvcom 水深文件dep制作20250630 本次案例网格和水深展示 vv image Figure 1 Model domain 本次制作其它驱动文件的输入文件为yellowsea.2dm 格式2dm; 文件内容格式详细介绍参考: https://www.xmswiki.com/wiki/SMS:2D_Mesh_Files_*.2dm …

ViewModel是EventFlow-State映射

ViewModel负责组装界面状态State。引发State变换的原因有很多,比如用户点击某个按钮,一次网络请求受到应答,一次本地数据库查询返回结果等等。因此ViewModel是根据各种事件生成State的对象,换句话说,是一个从多个事件流…

javaweb Day2

PreparedStatement作用: 预编译SQL语句并执行: 预防SQL注入问题 SQL注入:SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。