数据库课设----超市管理系统的设计与实现

一、项目简介

项目背景

现代超市面临着日益增长的管理需求,需要高效的销售管理系统来处理商品的管理、销售记录、库存控制和报表生成。一个功能完善的销售管理系统不仅能提高工作效率,还能帮助超市更好地了解销售情况,优化库存和资源配置。

项目目标

开发一个高效、易用且功能完善的超市销售管理系统,以满足超市在商品管理、销售记录、库存控制和报表生成等方面的需求,从而提高运营效率和管理水平。具体目标如下:

1. 提高销售管理效率

快速处理销售:收银员能够快速录入销售数据,减少顾客等待时间。
准确记录销售:确保每笔销售都能被准确记录,包括商品详情和销售金额。

2. 优化库存管理

实时库存更新:每次销售后自动更新库存数量,避免手动操作带来的错误。
库存预警:当某种商品库存不足时,系统能自动发出预警,提示管理员及时补货。

3. 提供详细的报表和分析

销售报表:生成每日、每月和年度的销售报表,帮助管理层分析销售趋势和业绩。
库存报表:生成当前库存报表和历史库存变化报表,帮助管理层掌握库存动态。

4. 用户权限管理

角色分离:明确区分管理员和收银员的权限,确保系统安全。
用户认证:提供可靠的用户认证机制,防止未经授权的访问。

5. 提供可靠的数据备份和恢复机制

数据安全:定期自动备份数据库,防止数据丢失。
数据恢复:提供数据恢复功能,以便在发生数据损坏或丢失时能够迅速恢复系统。

6. 支持系统的可扩展性

模块化设计:系统设计采用模块化结构,便于未来功能扩展和维护。
技术更新:采用主流技术和开发框架,保证系统具备良好的可维护性和扩展性

需求分析

超市销售管理系统旨在帮助超市实现商品管理、销售记录、库存控制和报表生成的自动化和高效化。通过该系统,超市能够提升管理效率,减少人为错误,及时掌握销售和库存情况,做出更精准的决策。
包括用户管理、商品管理、销售管理、库存管理、客户管理

二、数据库实体设计

1、 用户(User)
描述:存储系统用户的信息,包括管理员和收银员
包括的数据项有:用户ID,用户名,用户密码、性别、用户角色(管理员或收银员)

在这里插入图片描述
2. 商品(Product)
描述:存储商品的信息。
包括的数据项有:商品ID,商品名称、所属类别,单价,库存数量、供应商ID

在这里插入图片描述
3. 销售记录(Sale)
描述:存储每笔销售的信息。
包括的数据项有:销售ID、销售日期、收银员ID(关联User表)、销售总金额、VIP客户ID(关联VIPCustomer表)、优惠金额
在这里插入图片描述
4. 销售明细(SaleDetail)
描述:存储每笔销售的具体商品明细。
包括的数据项有:销售ID(关联Sale表)、商品ID(关联Product表)、单位、商品单价、销售数量
在这里插入图片描述5. 库存预警(StockAlert)
描述:存储库存预警信息。
包括的数据项有:预警ID、商品ID(关联Product表)、预警阈值、当前库存
在这里插入图片描述
6. VIP客户(VIPCustomer)
描述:存储VIP客户的信息。
包括的数据项有:VIP客户ID、客户姓名、电话号码、积分
在这里插入图片描述
7. 供应商(Supplier)
描述:存储供应商的信息。
包括的数据项有:供应商ID、供应商名称、联系人姓名、供应商地址
在这里插入图片描述

供应商-商品关联表(SupplierProduct)

描述:存储供应商和商品之间的关联信息。
包括的数据项:供应商ID(关联Supplier表), 商品ID(关联Product表)

三、数据库实体描述和逻辑结构

实体描述

  1. 用户(User)
    描述:存储系统用户的信息,包括管理员和收银员。

包括的数据项:

UserID:用户ID,唯一标识每个用户。
Username:用户名。
Password:用户密码。
Gender:性别。
Role:用户角色(管理员或收银员)。

CREATE TABLE User (
    UserID INT PRIMARY KEY AUTO_INCREMENT,    -- 主键,自增
    Username VARCHAR(255) NOT NULL UNIQUE,    -- 用户名,非空,唯一
    Password VARCHAR(255) NOT NULL,           -- 用户密码,非空
    Gender VARCHAR(10) CHECK (Gender IN ('男', '女', '其他')), -- 性别,限制在 '男', '女', '其他' 之间
    Role VARCHAR(50) NOT NULL CHECK (Role IN ('Admin', 'Cashier'))    -- 用户角色,非空,限制在 'Admin', 'Cashier' 之间
);
  1. 商品(Product)
    描述:存储商品的信息。

包括的数据项:

ProductID:商品ID,唯一标识每个商品。
ProductName:商品名称。
Category:所属类别。
Price:单价。
StockQuantity:库存数量。
SupplierID:供应商ID,标识供应该商品的供应商。

CREATE TABLE Product (
    ProductID INT PRIMARY KEY AUTO_INCREMENT, -- 主键,自增
    ProductName VARCHAR(255) NOT NULL,        -- 商品名称,非空
    Category VARCHAR(255) NOT NULL,           -- 所属类别,非空
    Price DECIMAL(10, 2) NOT NULL CHECK (Price >= 0), -- 单价,非空,价格应大于等于0
    StockQuantity INT NOT NULL CHECK (StockQuantity >= 0), -- 库存数量,非空,库存应大于等于0
    SupplierID INT NOT NULL,                  -- 供应商ID,非空
    FOREIGN KEY (SupplierID) REFERENCES Supplier(SupplierID) -- 外键,关联供应商表
);
  1. 销售记录(Sale)
    描述:存储每笔销售的信息。

包括的数据项:

SaleID:销售ID,唯一标识每笔销售。
SaleDate:销售日期。
CashierID:收银员ID(关联User表)。
TotalAmount:销售总金额。
VIPCustomerID:VIP客户ID(关联VIPCustomer表)。
DiscountAmount:优惠金额。

CREATE TABLE Sale (
    SaleID INT PRIMARY KEY AUTO_INCREMENT,    -- 主键,自增
    SaleDate DATETIME NOT NULL,               -- 销售日期,非空
    CashierID INT NOT NULL,                   -- 收银员ID,非空
    TotalAmount DECIMAL(10, 2) NOT NULL CHECK (TotalAmount >= 0), -- 销售总金额,非空,总金额应大于等于0
    VIPCustomerID INT,                        -- VIP客户ID,可以为空
    DiscountAmount DECIMAL(10, 2) NOT NULL CHECK (DiscountAmount >= 0), -- 优惠金额,非空,优惠金额应大于等于0
    FOREIGN KEY (CashierID) REFERENCES User(UserID), -- 外键,关联用户表
    FOREIGN KEY (VIPCustomerID) REFERENCES VIPCustomer(VIPCustomerID) -- 外键,关联VIP客户表
);
  1. 销售明细(SaleDetail)
    描述:存储每笔销售的具体商品明细。

包括的数据项:

SaleID:销售ID(关联Sale表)。
ProductID:商品ID(关联Product表)。
Unit:单位。
UnitPrice:商品单价。
Quantity:销售数量。

CREATE TABLE SaleDetail (
    SaleID INT NOT NULL,                      -- 销售ID,非空
    ProductID INT NOT NULL,                   -- 商品ID,非空
    Unit VARCHAR(50) NOT NULL,                -- 单位,非空
    UnitPrice DECIMAL(10, 2) NOT NULL CHECK (UnitPrice >= 0), -- 商品单价,非空,单价应大于等于0
    Quantity INT NOT NULL CHECK (Quantity > 0), -- 销售数量,非空,数量应大于0
    FOREIGN KEY (SaleID) REFERENCES Sale(SaleID), -- 外键,关联销售记录表
    FOREIGN KEY (ProductID) REFERENCES Product(ProductID) -- 外键,关联商品表
);
  1. 库存预警(StockAlert)
    描述:存储库存预警信息。

包括的数据项:

AlertID:预警ID,唯一标识每条库存预警。
ProductID:商品ID(关联Product表)。
AlertThreshold:预警阈值。
CurrentStock:当前库存。

CREATE TABLE StockAlert (
    AlertID INT PRIMARY KEY AUTO_INCREMENT,   -- 主键,自增
    ProductID INT NOT NULL,                   -- 商品ID,非空
    AlertThreshold INT NOT NULL CHECK (AlertThreshold >= 0), -- 预警阈值,非空,阈值应大于等于0
    CurrentStock INT NOT NULL CHECK (CurrentStock >= 0), -- 当前库存,非空,库存应大于等于0
    FOREIGN KEY (ProductID) REFERENCES Product(ProductID) -- 外键,关联商品表
);
  1. VIP客户(VIPCustomer)
    描述:存储VIP客户的信息。

包括的数据项:

VIPCustomerID:VIP客户ID,唯一标识每个VIP客户。
CustomerName:客户姓名。
PhoneNumber:电话号码。
Points:积分。

CREATE TABLE VIPCustomer (
    VIPCustomerID INT PRIMARY KEY AUTO_INCREMENT, -- 主键,自增
    CustomerName VARCHAR(255) NOT NULL,          -- 客户姓名,非空
    PhoneNumber VARCHAR(20) NOT NULL UNIQUE,     -- 电话号码,非空,唯一
    Points INT NOT NULL CHECK (Points >= 0)      -- 积分,非空,积分应大于等于0
);
  1. 供应商(Supplier)
    描述:存储供应商的信息。

包括的数据项:

SupplierID:供应商ID,唯一标识每个供应商。
SupplierName:供应商名称。
ContactName:联系人姓名。
SupplierAddress:供应商地址。

CREATE TABLE Supplier (
    SupplierID INT PRIMARY KEY AUTO_INCREMENT, -- 主键,自增
    SupplierName VARCHAR(255) NOT NULL,        -- 供应商名称,非空
    ContactName VARCHAR(255) NOT NULL,         -- 联系人姓名,非空
    SupplierAddress VARCHAR(255) NOT NULL      -- 供应商地址,非空
);

8.供应商-商品关联表(SupplierProduct)
供应商ID(关联Supplier表),SupplierID
商品ID(关联Product表)ProductID
数量 Quantity

CREATE TABLE `supplierproduct` (
  `SupplierID` int NOT NULL,
  `ProductID` int NOT NULL,
  `Quantity` int NOT NULL,
  PRIMARY KEY (`SupplierID`,`ProductID`),
  KEY `ProductID` (`ProductID`),
  CONSTRAINT `supplierproduct_ibfk_1` FOREIGN KEY (`SupplierID`) REFERENCES `supplier` (`SupplierID`),
  CONSTRAINT `supplierproduct_ibfk_2` FOREIGN KEY (`ProductID`) REFERENCES `product` (`ProductID`),
  CONSTRAINT `supplierproduct_chk_1` CHECK ((`Quantity` > 0))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

实体关系描述
用户和销售记录(User-Sale):每个销售记录都由一个收银员处理,因此用户和销售记录之间是一对多的关系(一个用户可以处理多条销售记录)。
供应商和商品(Supplier-Product):每个商品都有一个供应商,因此供应商和商品之间是一对多的关系(一个供应商可以供应多种商品)。
商品和销售明细(Product-SaleDetail):每个销售明细记录一个商品的销售信息,因此商品和销售明细之间是一对多的关系(一个商品可以出现在多条销售明细中)。
销售记录和销售明细(Sale-SaleDetail):每个销售记录可以包含多个销售明细,因此销售记录和销售明细之间是一对多的关系(一个销售记录可以包含多个销售明细)。
商品和库存预警(Product-StockAlert):每个商品可以有一个或多个库存预警,因此商品和库存预警之间是一对多的关系(一个商品可以有多个库存预警记录)。
VIP客户和销售记录(VIPCustomer-Sale):每个VIP客户可以有多个销售记录,因此VIP客户和销售记录之间是一对多的关系(一个VIP客户可以有多条销售记录)。

逻辑结构

在这里插入图片描述

本系统为中小型超市销售管理系统,因此系统需求分析阶段主要采取实地采访、调查学校周边超市,网上查找相关资料,请教老师等多种方式,尤其是仔细思考、分析超市购物发票。这一阶段大概了解了目前超市销售管理的现状,了解了超市销售方面的业务,同时也发现了其中存在的一些问题。经过近两天时间的实践,了解了很多关于超市的知识,收获挺多的。 需求分析成果如下。 系统要处理的基本对象包括营业员基本信息、会员基本信息、管理员基本信息、商品基本信息、货架基本信息、销售单基本信息、退货单基本信息等多个对象。各个基本对象包含信息如下所示: 营业员(营业员号,姓名,收银台位置,上班时间,下班时间,月薪,联系电话); 会员(会员卡号,会员姓名,卡密码,注册时间,累计消费); 商品(商品编号,货架编号,条形码,商品名称,商品价格,现有存量,存量底线,生产日期,保质期,供货商); 销售单(销售单编号,营业员编号,会员卡号,打印时间,有无折扣); 销售商品(销售单号,商品编号,销售数量); 货架(货架编号,管理员号,货架名称); 管理员(管理员号,姓名,联系电话,上班时间,下班时间,月薪); 退货单(退货单号,商品编号,退货数量); 打印(退货单号,销售单号,营业员号,打印时间)。 本中小型超市销售管理系统大体上包含三个模块,为前台收银业务处理,前台退货业务处理以及后台销售处理功能模块,具体如下所述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值