python3GUI--基于PyQt5+SQLite3的网址审核系统(详细图文)

发布于:2025-07-03 ⋅ 阅读:(23) ⋅ 点赞:(0)


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

一.前言

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

做的是网页管理系统
用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,  -- 用户 ID
    login_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组件定义花了一些时间,因为本系统不依赖设计师,所有组件都是自定义出来的。最后感谢大家看到这里,如果您也有需求的话欢迎点击下方联系我!
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到