文章目錄
- 一.前言
- 二.相關知識
- 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.普通用戶身份權限
普通用戶身份登錄成功后到軟件主界面,可以進行如下操作:
- 用戶系統操作:退出登錄、退出系統
- 對現有的網址進行查看,包括網址審核狀態、網址條目
- 刪除目標網址 即取消網址審核狀態提交,用戶通過在表格中多選url的方式對目標網址進行刪除操作
- 上傳新網址,顧名思義,用戶可以選擇指定類型的本地文件來進行網址的審核提交
我們的系統支持三種類型的文件:TXT、CSV、Excel
文件內容格式見下圖(CSV):
4.管理員身份權限
管理員擁有本系統的最高身份權限,但是不支持網址上傳操作,因為不能自己審核自己,管理員的權限主要是:
- 用戶管理:鳥瞰整個用戶數據表格數據,查看所有用戶的身份、網址數據量
- 網址審核:對于用戶提交的網址內容進行審核,可以直接標記目標網址的狀態:通過、不通過,支持網址的刪除操作
- 登錄日志管理:查看所有用戶的登錄日志信息,包括的數據項為:用戶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組件定義花了一些時間,因為本系統不依賴設計師,所有組件都是自定義出來的。最后感謝大家看到這里,如果您也有需求的話歡迎點擊下方聯系我!