# MyNetShop **Repository Path**: zrt-cmd/MyNetShop ## Basic Information - **Project Name**: MyNetShop - **Description**: 此仓库不更新,拉取或froked找最新的 https://gitee.com/zrt-cmd/my-net-shop-zrt - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 140 - **Created**: 2026-05-07 - **Last Updated**: 2026-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MyNetShop 在线商城系统 ## 项目概述 MyNetShop 是一个基于 **PyQt6** 的桌面端在线商城系统,提供完整的商品管理、用户交互、销售数据分析功能。项目采用模块化设计,实现了从用户认证到销售分析的完整业务闭环。 **适用场景**:教学案例、小型商业应用、Python GUI 开发学习 --- ## 快速开始 ### 环境要求 - Python 3.12+ - Windows / macOS / Linux ### 安装依赖 ```bash # 1. 创建虚拟环境 python -m venv .venv # 2. 激活虚拟环境 # Windows: .\.venv\Scripts\activate # Linux/macOS: source .venv/bin/activate # 3. 安装依赖 pip install -r requirements.txt ``` ### 初始化数据库(首次运行) ```bash python init_db.py ``` ### 启动程序 ```bash python Main.py ``` ### 测试账号 | 用户名 | 密码 | 说明 | |--------|------|------| | 1 | 123456 | 张三 | | 2 | 123456 | 李四 | | zrt | zrt | 测试用户 | | admin | admin123 | 管理员 | --- ## 项目架构 ### 技术架构 ``` ┌─────────────────────────────────────────────────────────┐ │ MyNetShop 系统架构 │ ├─────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ 表现层 (UI Layer) │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │ │ │ │ Login.py │ │ Main.py │ │ ui/*_ui.py │ │ │ │ │ │ 登录界面 │ │ 主界面 │ │ Qt Designer │ │ │ │ │ └──────────┘ └──────────┘ └──────────────┘ │ │ │ │ PyQt6 + QSS 主题样式管理 │ │ │ └─────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ 业务层 (Business Layer) │ │ │ │ ──────────────────────────────────────────┐ │ │ │ │ │ shop/ 购物模块 │ │ │ │ │ │ - PreShop.py 商品选购 │ │ │ │ │ │ - ConfirmShop.py 下单结算 │ │ │ │ │ │ - HistoryOrder.py 历史订单 │ │ │ │ │ │ - Mine.py 个人中心 │ │ │ │ │ └──────────────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────┐ │ │ │ │ │ analysis/ 分析模块 │ │ │ │ │ │ - SaleAnalysis.py 销售分析图表 │ │ │ │ │ ──────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ 数据层 (Data Layer) │ │ │ │ ──────────────┐ ┌──────────────────────┐ │ │ │ │ │ db_manager.py│ │ init_db.py │ │ │ │ │ │ 数据库操作类 │ │ 数据库初始化/迁移 │ │ │ │ │ └────────────── └────────────────────── │ │ │ │ ┌──────────────────────────────────────────┐ │ │ │ │ │ SQLite 数据库 (data/netshop.db) │ │ │ │ │ │ - users 用户表 │ │ │ │ │ │ - categories 商品分类表 │ │ │ │ │ │ - products 商品表 │ │ │ │ │ │ - orders 订单主表 │ │ │ │ │ │ - order_items 订单明细表 │ │ │ │ │ ──────────────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────┐ │ │ │ │ │ data/product_images/ 商品图片存储 │ │ │ │ │ └──────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ 全局状态 (Global State) │ │ │ │ ┌──────────────────────────────────────────┐ │ │ │ │ │ appvar.py 全局变量管理 │ │ │ │ │ │ - userID 当前登录用户ID │ │ │ │ │ │ - username 当前登录用户名 │ │ │ │ │ └──────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────┘ ``` ### 项目目录结构 ``` MyNetShop/ ├── Main.py # 主程序入口 ├── Login.py # 登录/注册模块 ├── appvar.py # 全局变量管理 ├── db_manager.py # 数据库操作封装类 ├── init_db.py # 数据库初始化脚本 ├── requirements.txt # 项目依赖 │ ├── shop/ # 购物业务模块 │ ├── PreShop.py # 商品选购 │ ├── ConfirmShop.py # 下单结算 │ ├── HistoryOrder.py # 历史订单查询 │ └── Mine.py # 个人中心/商品管理 │ ├── analysis/ # 数据分析模块 │ └── SaleAnalysis.py # 销售分析(图表展示) │ ├── ui/ # Qt Designer 生成的 UI 代码 │ ├── Main_ui.py # 主界面 │ ├── PreShop_ui.py # 商品选购界面 │ ├── ConfirmShop_ui.py # 下单结算界面 │ ├── SaleAnalysis_ui.py # 销售分析界面 │ └── Login_ui.py # 登录界面 │ ├── data/ # 数据文件 │ ├── netshop.db # SQLite 数据库(唯一数据源) │ └── product_images/ # 商品图片存储 │ └── image/ # UI 资源图片 ``` --- ## 核心功能模块 ### 1. 用户认证模块 **功能特性**: - ✅ 用户登录(SHA-256 密码加密 + 数据库验证) - ✅ 用户注册(前端+后端双重验证) - ✅ 会话管理(全局变量传递用户ID) - ✅ 防 SQL 注入(参数化查询) **涉及文件**: - [Login.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\Login.py) - 登录/注册逻辑 - [ui/Login_ui.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\ui\Login_ui.py) - 登录界面 UI --- ### 2. 商品选购模块 **功能特性**: - ✅ 商品卡片式展示(图片+名称+价格+库存) - ✅ 分类动态筛选 - ✅ 关键词搜索 - ✅ 购物车管理(本地缓存) - ✅ 数量调整 - ✅ 商品图片管理(支持上传) **涉及文件**: - [shop/PreShop.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\shop\PreShop.py) - 业务逻辑 - [ui/PreShop_ui.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\ui\PreShop_ui.py) - 界面定义 - [db_manager.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\db_manager.py) - 数据库操作 --- ### 3. 下单结算模块 **功能特性**: - ✅ 购物车商品确认 - ✅ 订单信息填写 - ✅ 订单创建(写入数据库) - ✅ 库存扣减 - ✅ 支付流程(状态更新) - ✅ 支付时间记录 **涉及文件**: - [shop/ConfirmShop.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\shop\ConfirmShop.py) - 业务逻辑 - [ui/ConfirmShop_ui.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\ui\ConfirmShop_ui.py) - 界面定义 - [db_manager.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\db_manager.py) - 订单操作 --- ### 4. 销售分析模块 **功能特性**: - ✅ 按类别统计销售额占比(饼图) - ✅ 按月份统计销售趋势(柱状图) - ✅ **用户数据隔离**(每个账号独立统计) - ✅ 使用 PyQt6-Charts 渲染图表 - ✅ 支持打印预览 **涉及文件**: - [analysis/SaleAnalysis.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\analysis\SaleAnalysis.py) - 分析逻辑 - [ui/SaleAnalysis_ui.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\ui\SaleAnalysis_ui.py) - 界面定义 - [db_manager.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\db_manager.py) - 数据查询 --- ### 5. 历史订单模块 **功能特性**: - ✅ 订单列表查询(按用户过滤) - ✅ 订单详情查看(商品清单+数量+价格) - ✅ 订单状态展示(已支付/待支付) - ✅ 订单时间记录 **涉及文件**: - [shop/HistoryOrder.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\shop\HistoryOrder.py) - 业务逻辑 - [ui/HistoryOrder_ui.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\ui\HistoryOrder_ui.py) - 界面定义 --- ### 6. 个人中心模块 **功能特性**: - ✅ 用户信息查看 - ✅ 商品管理(增删改查) - ✅ 商品图片上传 - ✅ 商品分类关联 **涉及文件**: - [shop/Mine.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\shop\Mine.py) - 业务逻辑 - [ui/Mine_ui.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\ui\Mine_ui.py) - 界面定义 --- ## 数据库设计 ### ER 关系图 ``` ┌─────────────┐ ┌──────────────┐ │ users │ │ categories │ ├─────────────┤ ├──────────────┤ │ PK user_id │ │ PK category_id│ │ username │ │ category_name│ │ password │ └──────┬───────┘ │ email │ │ │ phone │ │ 1 │ created_at │ │ └──────┬──────┘ │ │ │ │ │ │ 1 │ N │ │ │ ▼ │ ┌──────────────────┐ │ │ products │ │ ├──────────────────┤ │ │ PK product_id │ │ │ FK category_id │ │ │ name │ │ │ price │ │ │ stock │ │ │ image_path │ │ └────────┬─────────┘ │ │ │ │ N │ │ │ │ │ ▼ │ ┌──────────────────┐ │ │ order_items │ │ ├──────────────────┤ │ │ PK id │ │ │ FK order_id │ │ │ FK product_id │ │ │ quantity │ │ │ status │ ──────────────┤ │ │ N └──────────────────┘ │ │ ▼ ┌──────────────┐ │ orders │ ──────────────┤ │ PK order_id │ │ FK user_id │ │ amount │ │ order_time │ │ created_at │ └──────────────┘ ``` ### 表结构说明 #### 1. users(用户表) | 字段 | 类型 | 说明 | |------|------|------| | user_id | TEXT PRIMARY KEY | 用户唯一标识 | | username | TEXT NOT NULL | 用户名 | | password | TEXT NOT NULL | SHA-256 加密后的密码 | | email | TEXT | 邮箱地址 | | phone | TEXT | 手机号 | | created_at | TIMESTAMP | 注册时间 | #### 2. categories(商品分类表) | 字段 | 类型 | 说明 | |------|------|------| | category_id | TEXT PRIMARY KEY | 分类唯一标识 | | category_name | TEXT NOT NULL | 分类名称 | #### 3. products(商品表) | 字段 | 类型 | 说明 | |------|------|------| | product_id | INTEGER PRIMARY KEY | 商品唯一标识(自增) | | category_id | TEXT FOREIGN KEY | 关联分类 | | name | TEXT NOT NULL | 商品名称 | | price | REAL NOT NULL | 商品价格 | | stock | INTEGER DEFAULT 0 | 库存数量 | | image_path | TEXT | 商品图片路径 | #### 4. orders(订单主表) | 字段 | 类型 | 说明 | |------|------|------| | order_id | INTEGER PRIMARY KEY | 订单唯一标识(自增) | | user_id | TEXT FOREIGN KEY | 关联用户 | | amount | REAL NOT NULL | 订单总金额 | | order_time | TEXT | 支付时间 | | created_at | TIMESTAMP | 创建时间 | #### 5. order_items(订单明细表) | 字段 | 类型 | 说明 | |------|------|------| | id | INTEGER PRIMARY KEY | 明细唯一标识(自增) | | order_id | INTEGER FOREIGN KEY | 关联订单 | | product_id | INTEGER FOREIGN KEY | 关联商品 | | quantity | INTEGER NOT NULL | 购买数量 | | status | TEXT NOT NULL | 订单状态 | --- ## 程序逻辑思维导图 ### 完整业务流程 ``` ┌─────────────────────────────────────────────────────────────────┐ │ MyNetShop 业务流程 │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────┐ │ 程序启动 │ │ Main.py │ ────────┬─────────┘ │ ▼ ┌──────────────────┐ │ 显示登录窗口 │ │ LoginWindow │ ────────┬─────────┘ │ ▼ ┌──────────────────┐ │ 用户输入账号 │ │ 密码登录 │ ────────┬─────────┘ │ ▼ ┌──────────────────┐ │ 验证用户名密码 │ │ (SHA-256 加密) │ └────────┬─────────┘ │ ▼ ┌──────────┴──────────┐ │ │ ┌─────▼─────┐ ┌────▼───── │ 验证成功 │ │ 验证失败 │ └─────┬─────┘ └────┬─────┘ │ │ ▼ ▼ ┌──────────────────┐ ┌──────────────────┐ │ 保存用户信息 │ │ 显示错误提示 │ │ appvar.setID() │ │ 返回登录窗口 │ └────────┬─────────┘ └──────────────────┘ │ ▼ ┌──────────────────┐ │ 关闭登录窗口 │ │ 显示主界面 │ │ MainWindow │ └────────┬─────────┘ │ ▼ ┌──────────────────────────────────────────┐ │ 侧边栏导航菜单 │ │ ┌──────┬──────┬──────┬──────┬──────┐ │ │ │欢迎 │选购 │结算 │分析 │历史 │ │ │ │首页 │商品 │订单 │销售 │订单 │ │ │ └──┬───┴──┬───┴──┬───┴──┬───┴──┬───┘ │ │ │ │ │ │ │ │ └─────┼──────┼──────┼──────┼──────┼────────┘ │ │ │ │ │ ┌─────────▼─┐┌───▼───┐┌─▼──────┌▼──────┐┌─▼────────┐ │欢迎首页 ││商品 ││下单 ││销售 ││历史 │ │ ││选购 ││结算 ││分析 ││订单 │ └───────────┘───┬───┘└───┬───┘└───┬───┘└──┬───────┘ │ │ │ │ ▼ ▼ ▼ ▼ ┌──────────────────────────────────────┐ │ 数据库操作 │ │ db_manager.py 统一接口 │ ──────────┬─────────────────────────── │ ┌──────────────┼──────────────┐ │ │ │ ┌─────▼──────┐┌─────▼──────┐┌─────▼──────┐ │ 读取数据 ││ 写入数据 ││ 更新数据 │ │ SELECT ││ INSERT ││ UPDATE │ │ 商品列表 ││ 创建订单 ││ 扣减库存 │ │ 用户信息 ││ 订单项 ││ 支付状态 │ │ 销售统计 ││ ││ │ └────────────┘└────────────└────────────┘ ``` ### 核心业务流 ``` 用户登录 ──► 选购商品 ──► 加入购物车 ─► 下单结算 ──► 支付 ──► 订单完成 │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ 验证身份 浏览商品 本地缓存 创建订单 更新状态 保存ID 分类筛选 数量调整 扣减库存 记录时间 搜索商品 确认信息 写入DB 写入DB ``` ### 数据流向图 ``` ──────────────────┐ │ 用户操作 │ │ (前端交互) │ └────────┬───────── │ ▼ ┌──────────────────┐ │ 业务模块 │ │ shop/ │ │ analysis/ │ └─────────────────┘ │ ▼ ┌──────────────────┐ │ 数据库操作 │ │ db_manager.py │ └─────────────────┘ │ ▼ ┌──────────────────┐ │ SQLite 数据库 │ │ netshop.db │ └────────┬─────────┘ │ ▼ ──────────────────┐ │ 查询结果 │ │ 返回前端 │ │ 渲染显示 │ ──────────────────┘ ``` --- ## 技术栈 | 类别 | 技术 | 版本 | |------|------|------| | **编程语言** | Python | 3.12+ | | **GUI 框架** | PyQt6 | 6.7.0 | | **图表库** | PyQt6-Charts | 6.7.0 | | **数据库** | SQLite | 内置 | | **数据处理** | openpyxl | 3.1.5(仅初始化时可选) | --- ## 安全性设计 ### 1. 密码加密 - ✅ 使用 SHA-256 算法加密存储 - ✅ 禁止明文保存密码 - ✅ 登录时加密比对验证 ### 2. SQL 防护 - ✅ 所有查询使用参数化方式 - ✅ 防止 SQL 注入攻击 - ✅ 统一数据库接口封装 ### 3. 数据隔离 - ✅ 每个账号数据完全独立 - ✅ 订单查询包含 user_id 过滤 - ✅ 销售分析按用户过滤 ### 4. 输入验证 - ✅ 前端输入格式校验 - ✅ 后端数据完整性检查 - ✅ 用户名唯一性验证 --- ## 常见问题 ### Q1: ImportError: No module named 'PyQt6' **解决方案**:运行 `pip install -r requirements.txt` ### Q2: 无法找到图片 **解决方案**:确保在项目根目录运行,或检查 `image/` 文件夹存在 ### Q3: QSS 样式未生效 **解决方案**:检查 Main.py 中的 `app.setStyleSheet(STYLE)` 是否被调用 ### Q4: 销售分析没有数据 **解决方案**:需要先完成下单流程,产生订单记录后才能显示统计数据 ### Q5: 如何重新初始化数据库? **解决方案**: ```bash # 删除旧数据库 del data\netshop.db # 重新初始化 python init_db.py ``` --- ## 开发指南 ### 修改 UI 后重新生成代码 如修改了 `ui/*.ui` 文件,需要重新生成对应的 Python 代码: ```python from PyQt6 import uic uic.compileUi('ui/Main.ui', open('ui/Main_ui.py', 'w')) ``` ### 添加新功能模块 1. 在对应的业务模块目录下创建新文件(如 `shop/NewFeature.py`) 2. 使用 Qt Designer 设计界面,生成 `ui/NewFeature_ui.py` 3. 在 [Main.py](file://c:\Users\ZRT\Downloads\MyNetShop-master2\MyNetShop-master\Main.py) 中导入并添加导航按钮 4. 在 `naviXXX()` 方法中实现页面切换逻辑 --- ## 许可证 学内使用 --- ## 版本历史 ### v2.0 (2026-05-14) - ✅ 完整迁移到 SQLite 数据库 - ✅ 移除 Excel 数据源依赖 - ✅ 实现用户数据隔离机制 - ✅ 优化销售分析模块 - ✅ 完善商品图片管理功能 - ✅ 修复历史订单数据显示问题 ### v1.0 (早期版本) - ✅ 基础购物流程实现 - ✅ PyQt6 GUI 界面 - ✅ 侧边栏导航设计 --- **项目维护者**:MyNetShop 开发团队 **最后更新**:2026-05-14