超市销售管理系统 - 需求分析阶段报告

1. 系统概述

超市销售管理系统是为中小型超市设计的信息化管理解决方案,旨在实现商品管理、销售处理、库存管理、会员管理等核心业务流程的信息化,提高超市运营效率和服务质量。

2. 系统功能需求

2.1 核心功能模块

功能模块子功能描述
销售管理商品销售处理顾客购买商品的交易,支持会员折扣
销售退货处理顾客退货业务
销售查询查询历史销售记录
库存管理商品管理商品信息的增删改查
进货管理处理商品进货业务
库存查询查询当前库存状态
库存预警低库存商品提醒
会员管理会员注册新增会员信息
会员查询查询会员信息和消费记录
会员积分管理会员积分和等级
报表统计销售统计按时间、商品等维度统计销售情况
商品排行热销商品排行
会员消费会员消费分析

2.2 用户角色及权限

角色权限
收银员商品销售、销售退货、会员查询
库存管理员商品管理、进货管理、库存查询
经理全部功能,包括报表统计

3. 数据流图

3.1 顶层数据流图

 

3.2 销售处理数据流图

 

4. 行为流程图

4.1 销售流程

 

4.2 进货流程

5. 数据表结构

5.1 员工表

字段名数据类型长度约束描述
员工IDINT-PRIMARY KEY, AUTO_INCREMENT员工唯一标识
姓名VARCHAR20NOT NULL员工姓名
性别ENUM-NOT NULL'男'或'女'
电话VARCHAR20-联系电话
角色ENUM-NOT NULL'收银员','库存管理员','经理'
用户名VARCHAR20NOT NULL, UNIQUE登录用户名
密码VARCHAR32NOT NULLMD5加密密码

5.2 供应商表

字段名数据类型长度约束描述
供应商IDINT-PRIMARY KEY, AUTO_INCREMENT供应商唯一标识
名称VARCHAR50NOT NULL供应商名称
联系人VARCHAR20-联系人姓名
联系电话VARCHAR20-联系电话

5.3 会员表

字段名数据类型长度约束描述
会员IDINT-PRIMARY KEY, AUTO_INCREMENT会员唯一标识
姓名VARCHAR20NOT NULL会员姓名
电话VARCHAR20NOT NULL会员电话
积分INT-DEFAULT 0累计积分
消费总额DECIMAL10,2DEFAULT 0累计消费金额
折扣率DECIMAL3,2DEFAULT 1.0, CHECK(0.5-1.0)会员折扣率
注册日期DATE-NOT NULL注册日期

5.4 商品表

字段名数据类型长度约束描述
商品条码VARCHAR20PRIMARY KEY商品条形码
商品名称VARCHAR100NOT NULL商品名称
规格VARCHAR20-规格描述
零售价DECIMAL10,2NOT NULL销售价格
成本价DECIMAL10,2NOT NULL进货价格
库存数量INT-NOT NULL, DEFAULT 0当前库存量
供应商IDINT-FOREIGN KEY供应商ID

5.5 销售单表

字段名数据类型长度约束描述
销售单号INT-PRIMARY KEY, AUTO_INCREMENT销售单唯一标识
销售日期DATETIME-NOT NULL销售时间
员工IDINT-NOT NULL, FOREIGN KEY操作员工
会员IDINT-FOREIGN KEY会员ID(可为空)
总金额DECIMAL10,2NOT NULL销售总金额
支付方式ENUM-NOT NULL'现金','会员卡','微信','支付宝'

5.6 销售明细表

字段名数据类型长度约束描述
明细IDINT-PRIMARY KEY, AUTO_INCREMENT明细唯一标识
销售单号INT-NOT NULL, FOREIGN KEY关联销售单
商品条码VARCHAR20NOT NULL, FOREIGN KEY商品条码
销售数量INT-NOT NULL销售数量
售价DECIMAL10,2NOT NULL实际售价
折扣率DECIMAL3,2DEFAULT 1.0折扣率

5.7 进货单表

字段名数据类型长度约束描述
进货单号INT-PRIMARY KEY, AUTO_INCREMENT进货单唯一标识
进货日期DATETIME-NOT NULL进货时间
员工IDINT-NOT NULL, FOREIGN KEY操作员工
供应商IDINT-NOT NULL, FOREIGN KEY供应商ID
总金额DECIMAL10,2NOT NULL进货总金额

5.8 进货明细表

字段名数据类型长度约束描述
明细IDINT-PRIMARY KEY, AUTO_INCREMENT明细唯一标识
进货单号INT-NOT NULL, FOREIGN KEY关联进货单
商品条码VARCHAR20NOT NULL, FOREIGN KEY商品条码
进货数量INT-NOT NULL进货数量
进价DECIMAL10,2NOT NULL进货单价

6. 数据关系图

6.1 销售E-R关系图

6.2 库存 E-R关系图

6.3 会员E-R关系图

1. 员工表 (Employee)

  • 一对一关系:无直接一对一关系。
  • 一对多关系
    • 一个员工可以处理多个销售单(销售单表)。
    • 一个员工可以处理多个进货单(进货单表)。

2. 供应商表 (Supplier)

  • 一对一关系:无直接一对一关系。
  • 一对多关系
    • 一个供应商可以提供多种商品(商品表)。
    • 一个供应商可以对应多个进货单(进货单表)。

3. 会员表 (Member)

  • 一对一关系:无直接一对一关系。
  • 一对多关系
    • 一个会员可以进行多次购买,生成多个销售单(销售单表)。
    • 一个会员可以发表多条评论(评论表)。
    • 一个会员可以有多个互动行为(互动表),如点赞、收藏等。
  • 多对多关系
    • 会员之间存在关注关系(关注关系表),一个会员可以关注多个其他会员,同时也可以被多个会员关注。

4. 商品表 (Product)

  • 一对一关系:无直接一对一关系。
  • 一对多关系
    • 一种商品可以出现在多个销售明细中(销售明细表)。
    • 一种商品可以出现在多个进货明细中(进货明细表)。
    • 一种商品可以有多个多媒体文件关联(多媒体文件表)。
    • 一种商品可以收到多条评论(评论表)。
    • 一种商品可以有多个互动行为(互动表),如被点赞、被收藏。
  • 多对多关系
    • 商品与标签之间是多对多关系,通过内容-标签关联表实现。一种商品可以有多个标签,一个标签也可以对应多种商品。

5. 销售单表 (SalesOrder)

  • 一对一关系:无直接一对一关系。
  • 一对多关系
    • 一个销售单可以包含多个销售明细(销售明细表)。

6. 销售明细表 (SalesDetail)

  • 一对一关系:无直接一对一关系。
  • 多对一关系
    • 多条销售明细对应一个销售单(销售单表)。
    • 多条销售明细对应一种商品(商品表)。

7. 进货单表 (PurchaseOrder)

  • 一对一关系:无直接一对一关系。
  • 一对多关系
    • 一个进货单可以包含多个进货明细(进货明细表)。

8. 进货明细表 (PurchaseDetail)

  • 一对一关系:无直接一对一关系。
  • 多对一关系
    • 多条进货明细对应一个进货单(进货单表)。
    • 多条进货明细对应一种商品(商品表)。

7. 会员管理需求分析

7.1 会员等级规则

等级积分要求折扣率描述
新会员0-991.0无折扣
普通会员100-1990.955%折扣
白银会员200-4990.910%折扣
黄金会员500-9990.8515%折扣
钻石会员≥10000.7525%折扣

7.2 会员积分规则

  • 每消费1元获得1积分

  • 积分可用于提升会员等级

  • 积分不清零

7.3 会员管理数据流

8. 退货处理需求分析

8.1 退货规则

  1. 必须提供原始销售单号

  2. 退货商品必须与销售记录一致

  3. 退货数量不能超过原始销售数量

  4. 退货后恢复库存

  5. 会员退货需扣除相应积分

8.2 退货流程

9. 库存预警机制

9.1 预警规则

  • 库存数量 ≤ 10:需补货(红色预警)

  • 10 < 库存数量 ≤ 20:库存紧张(黄色预警)

  • 库存数量 > 20:库存充足(绿色正常)

9.2 预警处理流程

10.数据库结构设计

10.1数据库创建与各表创建

CREATE DATABASE IF NOT EXISTS 超市销售管理系统;
USE 超市销售管理系统;

-- 1. 员工表
CREATE TABLE 员工表 (
    员工ID INT PRIMARY KEY AUTO_INCREMENT,
    姓名 VARCHAR(20) NOT NULL,
    性别 ENUM('男','女') NOT NULL,
    电话 VARCHAR(20),
    角色 ENUM('收银员','库存管理员','经理') NOT NULL,
    用户名 VARCHAR(20) NOT NULL UNIQUE,
    密码 VARCHAR(32) NOT NULL
);

-- 2. 供应商表
CREATE TABLE 供应商表 (
    供应商ID INT PRIMARY KEY AUTO_INCREMENT,
    名称 VARCHAR(50) NOT NULL,
    联系人 VARCHAR(20),
    联系电话 VARCHAR(20)
);

-- 3. 会员表
CREATE TABLE 会员表 (
    会员ID INT PRIMARY KEY AUTO_INCREMENT,
    姓名 VARCHAR(20) NOT NULL,
    电话 VARCHAR(20) NOT NULL,
    积分 INT DEFAULT 0,
    消费总额 DECIMAL(10,2) DEFAULT 0,
    折扣率 DECIMAL(3,2) DEFAULT 1.0 CHECK (折扣率 BETWEEN 0.5 AND 1.0),
    注册日期 DATE NOT NULL
);

-- 4. 商品表
CREATE TABLE 商品表 (
    商品条码 VARCHAR(20) PRIMARY KEY,
    商品名称 VARCHAR(100) NOT NULL,
    规格 VARCHAR(20),
    零售价 DECIMAL(10,2) NOT NULL,
    成本价 DECIMAL(10,2) NOT NULL,
    库存数量 INT NOT NULL DEFAULT 0,
    供应商ID INT,
    FOREIGN KEY (供应商ID) REFERENCES 供应商表(供应商ID)
);

-- 5. 销售单表
CREATE TABLE 销售单表 (
    销售单号 INT PRIMARY KEY AUTO_INCREMENT,
    销售日期 DATETIME NOT NULL,
    员工ID INT NOT NULL,
    会员ID INT,
    总金额 DECIMAL(10,2) NOT NULL,
    支付方式 ENUM('现金','会员卡','微信','支付宝') NOT NULL,
    FOREIGN KEY (员工ID) REFERENCES 员工表(员工ID),
    FOREIGN KEY (会员ID) REFERENCES 会员表(会员ID)
);

-- 6. 销售明细表
CREATE TABLE 销售明细表 (
    明细ID INT PRIMARY KEY AUTO_INCREMENT,
    销售单号 INT NOT NULL,
    商品条码 VARCHAR(20) NOT NULL,
    销售数量 INT NOT NULL,
    售价 DECIMAL(10,2) NOT NULL,
    折扣率 DECIMAL(3,2) DEFAULT 1.0,
    FOREIGN KEY (销售单号) REFERENCES 销售单表(销售单号),
    FOREIGN KEY (商品条码) REFERENCES 商品表(商品条码)
);

-- 7. 进货单表
CREATE TABLE 进货单表 (
    进货单号 INT PRIMARY KEY AUTO_INCREMENT,
    进货日期 DATETIME NOT NULL,
    员工ID INT NOT NULL,
    供应商ID INT NOT NULL,
    总金额 DECIMAL(10,2) NOT NULL,
    FOREIGN KEY (员工ID) REFERENCES 员工表(员工ID),
    FOREIGN KEY (供应商ID) REFERENCES 供应商表(供应商ID)
);

-- 8. 进货明细表
CREATE TABLE 进货明细表 (
    明细ID INT PRIMARY KEY AUTO_INCREMENT,
    进货单号 INT NOT NULL,
    商品条码 VARCHAR(20) NOT NULL,
    进货数量 INT NOT NULL,
    进价 DECIMAL(10,2) NOT NULL,
    FOREIGN KEY (进货单号) REFERENCES 进货单表(进货单号),
    FOREIGN KEY (商品条码) REFERENCES 商品表(商品条码)
);

10.2 销售、库存、会员视图(对应第6点的数据关系E-R图)

(1)销售视图

-- 1. 销售汇总视图
CREATE VIEW 销售汇总视图 AS
SELECT 
    s.销售单号,
    s.销售日期,
    e.姓名 AS 收银员,
    IFNULL(m.姓名, '非会员') AS 顾客,
    s.总金额,
    s.支付方式,
    COUNT(d.明细ID) AS 商品种类数
FROM 销售单表 s
JOIN 员工表 e ON s.员工ID = e.员工ID
LEFT JOIN 会员表 m ON s.会员ID = m.会员ID
JOIN 销售明细表 d ON s.销售单号 = d.销售单号
GROUP BY s.销售单号, s.销售日期, e.姓名, m.姓名, s.总金额, s.支付方式;

(2)库存视图

-- 2. 商品库存视图
CREATE VIEW 商品库存视图 AS
SELECT 
    p.商品条码,
    p.商品名称,
    p.规格,
    p.零售价,
    p.库存数量,
    v.名称 AS 供应商,
    CASE 
        WHEN p.库存数量 <= 10 THEN '需补货'
        WHEN p.库存数量 <= 20 THEN '库存紧张'
        ELSE '库存充足'
    END AS 库存状态
FROM 商品表 p
LEFT JOIN 供应商表 v ON p.供应商ID = v.供应商ID;

(3)会员视图

-- 3. 会员消费视图
CREATE VIEW 会员消费视图 AS
SELECT 
    m.会员ID,
    m.姓名,
    m.电话,
    m.积分,
    m.消费总额,
    COUNT(DISTINCT s.销售单号) AS 消费次数,
    MAX(s.销售日期) AS 最近消费日期
FROM 会员表 m
LEFT JOIN 销售单表 s ON m.会员ID = s.会员ID
GROUP BY m.会员ID, m.姓名, m.电话, m.积分, m.消费总额;

10.3 存储过程创建

10.3.1 处理销售的存储过程

在点击“结账”按钮时会调用触发器,把购物车里的所有商品计算总价后按会员折扣率算,修改数据库值

销售更新

-- 删除已存在的"处理销售"存储过程,防止重复创建
DROP PROCEDURE IF EXISTS 处理销售;

-- 创建处理销售业务的存储过程
DELIMITER //  -- 临时修改分隔符为//,以便在存储过程中使用分号
CREATE PROCEDURE 处理销售(
    IN p_员工ID INT,  -- 输入参数:操作员工的ID编号
    IN p_会员ID INT,  -- 输入参数:会员ID,可为NULL表示非会员购买
    IN p_支付方式 ENUM('现金','会员卡','微信','支付宝'),  -- 输入参数:支付方式枚举值
    IN p_商品列表 JSON  -- 输入参数:JSON格式的商品列表数据
)
BEGIN
    -- 声明所有需要的变量
    DECLARE v_销售单号 INT;  -- 存储生成的销售单编号
    DECLARE v_总金额 DECIMAL(10,2) DEFAULT 0;  -- 存储订单总金额,初始化为0
    DECLARE v_折扣率 DECIMAL(3,2);  -- 存储会员折扣率(0.75-1.0)
    DECLARE i INT DEFAULT 0;  -- 循环计数器,用于遍历JSON数组
    DECLARE v_商品条码 VARCHAR(20);  -- 存储当前处理的商品条码
    DECLARE v_购买数量 INT;  -- 存储当前商品的购买数量
    DECLARE v_库存数量 INT;  -- 存储当前商品的库存数量
    DECLARE v_零售价 DECIMAL(10,2);  -- 存储当前商品的零售价格
    DECLARE v_商品名称 VARCHAR(100);  -- 存储当前商品的名称
    
    -- 获取会员折扣率:如果是会员则查询折扣率,非会员默认1.0(无折扣)
    IF p_会员ID IS NOT NULL THEN
        SELECT 折扣率 INTO v_折扣率 FROM 会员表 WHERE 会员ID = p_会员ID;
    ELSE
        SET v_折扣率 = 1.0;  -- 非会员不打折
    END IF;
    
    -- 创建销售单记录,初始总金额设为0,后面会更新
    INSERT INTO 销售单表 (销售日期, 员工ID, 会员ID, 总金额, 支付方式)
    VALUES (NOW(), p_员工ID, p_会员ID, 0, p_支付方式);
    
    -- 获取刚插入的销售单ID
    SET v_销售单号 = LAST_INSERT_ID();
    
    -- 循环处理JSON数组中的每个商品
    WHILE i < JSON_LENGTH(p_商品列表) DO
        -- 从JSON中提取商品条码(使用双引号包裹中文键名)
        SET v_商品条码 = JSON_UNQUOTE(JSON_EXTRACT(p_商品列表, CONCAT('$[', i, ']."条码"')));
        -- 从JSON中提取购买数量
        SET v_购买数量 = JSON_EXTRACT(p_商品列表, CONCAT('$[', i, ']."数量"'));
        
        -- 从商品表查询当前商品的详细信息
        SELECT 商品名称, 零售价, 库存数量 INTO v_商品名称, v_零售价, v_库存数量
        FROM 商品表 WHERE 商品条码 = v_商品条码;
        
        -- 检查库存是否足够
        IF v_库存数量 < v_购买数量 THEN
            -- 库存不足时,构造错误信息并抛出异常
            SET @error_msg = CONCAT('商品库存不足: ', v_商品名称);
            SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = @error_msg;
        END IF;
        
        -- 添加销售明细记录
        INSERT INTO 销售明细表 (销售单号, 商品条码, 销售数量, 售价, 折扣率)
        VALUES (v_销售单号, v_商品条码, v_购买数量, v_零售价, v_折扣率);
        
        -- 更新商品库存(减去已售数量)
        UPDATE 商品表 SET 库存数量 = 库存数量 - v_购买数量
        WHERE 商品条码 = v_商品条码;
        
        -- 累加计算总金额(考虑折扣)
        SET v_总金额 = v_总金额 + (v_零售价 * v_折扣率 * v_购买数量);
        
        -- 计数器加1,处理下一个商品
        SET i = i + 1;
    END WHILE;
    
    -- 更新销售单的总金额
    UPDATE 销售单表 SET 总金额 = v_总金额 WHERE 销售单号 = v_销售单号;
    
    -- 如果是会员购买,更新会员积分和消费总额
    IF p_会员ID IS NOT NULL THEN
        -- 每消费4元积1分(FLOOR取整)
        UPDATE 会员表 
        SET 积分 = 积分 + FLOOR(v_总金额/4),
            消费总额 = 消费总额 + v_总金额
        WHERE 会员ID = p_会员ID;
        
        -- 调用更新会员折扣的存储过程
        CALL 更新会员折扣(p_会员ID);
    END IF;
    
    -- 返回生成的销售单号和总金额
    SELECT v_销售单号 AS 销售单号, v_总金额 AS 总金额;
END //
DELIMITER ;  -- 恢复分隔符为分号
10.3.2 处理进货的存储过程

在“库存”按钮点击后,可以通过点击“进货”按钮

-- 删除已存在的"处理进货"存储过程
DROP PROCEDURE IF EXISTS 处理进货;

-- 创建处理进货业务的存储过程
DELIMITER //
CREATE PROCEDURE 处理进货(
    IN p_员工ID INT,  -- 输入参数:操作员工ID
    IN p_供应商ID INT,  -- 输入参数:供应商ID
    IN p_商品列表 JSON  -- 输入参数:JSON格式的商品信息数组
)
BEGIN
    -- 声明变量
    DECLARE v_进货单号 INT;  -- 存储生成的进货单号
    DECLARE v_总金额 DECIMAL(10,2) DEFAULT 0;  -- 存储进货总金额
    DECLARE i INT DEFAULT 0;  -- 循环计数器
    DECLARE v_商品条码 VARCHAR(20);  -- 存储商品条码
    DECLARE v_商品名称 VARCHAR(100);  -- 存储商品名称
    DECLARE v_规格 VARCHAR(20);  -- 存储商品规格
    DECLARE v_数量 INT;  -- 存储进货数量
    DECLARE v_进价 DECIMAL(10,2);  -- 存储商品进价
    DECLARE v_零售价 DECIMAL(10,2);  -- 存储商品零售价
    
    -- 创建进货单记录,初始总金额设为0
    INSERT INTO 进货单表 (进货日期, 员工ID, 供应商ID, 总金额)
    VALUES (NOW(), p_员工ID, p_供应商ID, 0);
    
    -- 获取刚插入的进货单ID
    SET v_进货单号 = LAST_INSERT_ID();
    
    -- 循环处理每个进货商品
    WHILE i < JSON_LENGTH(p_商品列表) DO
        -- 从JSON中提取完整的商品信息
        SET v_商品条码 = JSON_UNQUOTE(JSON_EXTRACT(p_商品列表, CONCAT('$[', i, ']."条码"')));
        SET v_商品名称 = JSON_UNQUOTE(JSON_EXTRACT(p_商品列表, CONCAT('$[', i, ']."名称"')));
        SET v_规格 = JSON_UNQUOTE(JSON_EXTRACT(p_商品列表, CONCAT('$[', i, ']."规格"')));
        SET v_进价 = JSON_EXTRACT(p_商品列表, CONCAT('$[', i, ']."进价"'));
        SET v_零售价 = JSON_EXTRACT(p_商品列表, CONCAT('$[', i, ']."零售价"'));
        SET v_数量 = JSON_EXTRACT(p_商品列表, CONCAT('$[', i, ']."数量"'));
        
        -- 检查商品是否已存在
        IF NOT EXISTS (SELECT 1 FROM 商品表 WHERE 商品条码 = v_商品条码) THEN
            -- 新商品:插入完整商品信息
            INSERT INTO 商品表 (商品条码, 商品名称, 规格, 零售价, 成本价, 库存数量, 供应商ID)
            VALUES (
                v_商品条码, 
                v_商品名称,
                v_规格,
                v_零售价,
                v_进价,
                0,  -- 初始库存为0,下面会增加
                p_供应商ID
            );
        ELSE
            -- 已有商品:更新价格信息
            UPDATE 商品表 
            SET 零售价 = v_零售价,
                成本价 = v_进价
            WHERE 商品条码 = v_商品条码;
        END IF;
        
        -- 添加进货明细记录
        INSERT INTO 进货明细表 (进货单号, 商品条码, 进货数量, 进价)
        VALUES (v_进货单号, v_商品条码, v_数量, v_进价);
        
        -- 更新商品库存(增加进货数量)
        UPDATE 商品表 
        SET 库存数量 = 库存数量 + v_数量
        WHERE 商品条码 = v_商品条码;
        
        -- 累加计算总金额(进价×数量)
        SET v_总金额 = v_总金额 + (v_进价 * v_数量);
        
        -- 处理下一个商品
        SET i = i + 1;
    END WHILE;
    
    -- 更新进货单总金额
    UPDATE 进货单表 SET 总金额 = v_总金额 WHERE 进货单号 = v_进货单号;
    
    -- 返回进货单号和总金额
    SELECT v_进货单号 AS 进货单号, v_总金额 AS 总金额;
END //
DELIMITER ;
10.3.3 处理更新会员折扣的存储过程
DELIMITER //
CREATE PROCEDURE 更新会员折扣(
    IN p_会员ID INT  -- 输入参数:需要更新折扣的会员ID
)
BEGIN
    DECLARE v_积分 INT;  -- 存储会员当前积分
    
    -- 查询会员当前积分
    SELECT 积分 INTO v_积分 FROM 会员表 WHERE 会员ID = p_会员ID;
    
    -- 根据积分设置不同的折扣等级
    UPDATE 会员表 
    SET 折扣率 = CASE 
        WHEN v_积分 >= 1000 THEN 0.75   -- 钻石会员:75折
        WHEN v_积分 >= 500 THEN 0.85    -- 黄金会员:85折
        WHEN v_积分 >= 200 THEN 0.9     -- 白银会员:9折
        WHEN v_积分 >= 100 THEN 0.95    -- 普通会员:95折
        ELSE 1.0                        -- 新会员:无折扣
    END
    WHERE 会员ID = p_会员ID;
END //
DELIMITER ;

10.4 创建商品价格检查触发器

DELIMITER //
CREATE TRIGGER 检查商品价格
BEFORE UPDATE ON 商品表  -- 在更新商品表前触发
FOR EACH ROW  -- 对每行数据执行
BEGIN
    -- 确保更新后的零售价不低于成本价
    IF NEW.零售价 < NEW.成本价 THEN
        -- 如果低于成本价,抛出错误
        SIGNAL SQLSTATE '45000' 
        SET MESSAGE_TEXT = '零售价不能低于成本价';
    END IF;
END //
DELIMITER ;

10.5  创建用户并分配权限

现在是暂时先创建几个用户,后期应该完成注册后还会通过可视化按钮增加用户


-- 创建系统用户
CREATE USER '收银员'@'localhost' IDENTIFIED BY 'cashier123';  -- 收银员账户
CREATE USER '库存员'@'localhost' IDENTIFIED BY 'stock123';  -- 库存管理员账户
CREATE USER '经理'@'localhost' IDENTIFIED BY 'manager123';  -- 经理账户

-- 设置收银员权限
GRANT SELECT, INSERT ON 超市销售管理系统.销售单表 TO '收银员'@'localhost';  -- 销售单表权限
GRANT SELECT, INSERT ON 超市销售管理系统.销售明细表 TO '收银员'@'localhost';  -- 销售明细表权限
GRANT SELECT ON 超市销售管理系统.商品表 TO '收银员'@'localhost';  -- 商品查询权限
GRANT SELECT ON 超市销售管理系统.会员表 TO '收银员'@'localhost';  -- 会员查询权限
GRANT EXECUTE ON PROCEDURE 超市销售管理系统.处理销售 TO '收银员'@'localhost';  -- 执行销售流程权限

-- 设置库存管理员权限
GRANT SELECT, INSERT, UPDATE ON 超市销售管理系统.商品表 TO '库存员'@'localhost';  -- 商品管理权限
GRANT SELECT, INSERT ON 超市销售管理系统.进货单表 TO '库存员'@'localhost';  -- 进货单权限
GRANT SELECT, INSERT ON 超市销售管理系统.进货明细表 TO '库存员'@'localhost';  -- 进货明细权限
GRANT SELECT ON 超市销售管理系统.供应商表 TO '库存员'@'localhost';  -- 供应商查询权限
GRANT EXECUTE ON PROCEDURE 超市销售管理系统.处理进货 TO '库存员'@'localhost';  -- 执行进货流程权限

-- 设置经理权限(所有权限)
GRANT ALL PRIVILEGES ON 超市销售管理系统.* TO '经理'@'localhost';

11.前端QT实现

代码部分文件代码量太大,后续如需,便添加进来并加以解释,暂时先实现到这里

暂时还未美化,美化部分在QT里实现比较简单,所以等所有逻辑部分实现了,再进行美化

销售更新


 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值