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

一、项目简介

项目背景

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

项目目标

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

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客户可以有多条销售记录)。

逻辑结构

在这里插入图片描述

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本系统为中小型超市销售管理系统,因此系统需求分析阶段主要采取实地采访、调查学校周边超市,网上查找相关资料,请教老师等多种方式,尤其是仔细思考、分析超市购物发票。这一阶段大概了解了目前超市销售管理的现状,了解了超市销售方面的业务,同时也发现了其中存在的一些问题。经过近两天时间的实践,了解了很多关于超市的知识,收获挺多的。 需求分析成果如下。 系统要处理的基本对象包括营业员基本信息、会员基本信息、管理员基本信息、商品基本信息、货架基本信息、销售单基本信息、退货单基本信息等多个对象。各个基本对象包含信息如下所示: 营业员(营业员号,姓名,收银台位置,上班时间,下班时间,月薪,联系电话); 会员(会员卡号,会员姓名,卡密码,注册时间,累计消费); 商品(商品编号,货架编号,条形码,商品名称,商品价格,现有存量,存量底线,生产日期,保质期,供货商); 销售单(销售单编号,营业员编号,会员卡号,打印时间,有无折扣); 销售商品(销售单号,商品编号,销售数量); 货架(货架编号,管理员号,货架名称); 管理员(管理员号,姓名,联系电话,上班时间,下班时间,月薪); 退货单(退货单号,商品编号,退货数量); 打印(退货单号,销售单号,营业员号,打印时间)。 本中小型超市销售管理系统大体上包含三个模块,为前台收银业务处理,前台退货业务处理以及后台销售处理功能模块,具体如下所述。
数据库 超市管理系统设计报告 系统叙述 图 代码 心得体会 参考文献等【提供全部完全版】可是直接应用 班级:计HR05-7 姓名:张 冰 学号:0520010726 2007年7月4日 超市管理系统设计 一、需求分析 1 项目背景 1.1 编写目的   本需求的编写目的在于研究超市管理系统软件的开发途径和应用方法。   本需求的预期读者是与超市管理系统软件开发有联系的决策人,开发组成人员,扶助开发者,支持本项目的领导和公司人员,软件验证者。 1.2 背景及范围   本项目的名称:超市管理系统开发软件。   本项目的任务提出者及开发者是超市管理系统软件开发小组,用户是超市。   超市管理系统超市管理系统是帮助管理人员、商品销售和库存的管理软件。 2 项目概述   该超市管理系统软件目前已有比较完善的管理与使用功能,研制超市管理系统软件是为了满足超市对商品销售和库存管理的方便,以现代化的创新思维模式去工作。 2.1 目标 2.1.1 开发意图   a. 为了超市管理系统更完善;   b. 为了超市对商品库存和销售的管理更方便;   c. 为了减轻工作人员的工作负担。 2.1.2 应用目标   通过本系统软件,能帮助工作人员利用计算机,快速方便的对超市进行管理等操作,使散乱的商品销售量和库存量能够具体化、直观化、合理化。 2.1.3 作用及范围 本软件适用于超市,它是比较完善的系统管理软件 2.1.4 背景   现今超市管理的烦琐给具有强烈时间观念的行政人员带来了诸多不便,为了对商品销售和管理商品库存方便,因此开发了本软件。 2.2 一般约束   a. 本项目的开发经费不超过1万元;   b. 辅导老师1人,开发人员1人;   c. 在管理方针、硬件的限制、并行操作安全和保密方面无约束。 2.3 假设和依据   假设开发经费不到位,管理不完善,设计时没能用全得到考虑,本项目的开发都将受到很大的影响。 3 功能需求 3.1 规格说明   查询超市的全部信息。 3.2 引言 为了查询超市的全部信息。 3.2.1 外部功能 内部功能 操作员和系统管理员 通过应用界面,应用程序,查询等。 同过SQL语言,对数据库的查询、插入、修改、删除等操作。 3.3 性能需求 3.3.1静态数值需求   a. 支持的终端数为4台;   b. 处理并发的40个链接; 3.3.2 精度需求   在精度需求上,根据使用需要,在各项数据的输入、输出及传输过程中,由于本系统使用了数摞结构,可以满足各种精度的需求。 3.3.3时间需求   在软件方面,响应时间、更新处理时间都比较快且迅速,完全满足用户要求。 3.3.4 灵活性   当用户需求,如操作方式,运行环境,结果精度,数据结构与其他软件接口等发生变化时,设计的软件要做适当调整,灵活性非常大。 3.3.5 故障处理   a. 内部故障处理   在开发阶段可以随即修改数据库里的相应内容。   b. 外部故障处理   对编辑的程序进行重装载时,第一次装载认为错,修改。第二次运行,在需求调用时出错,有错误提示,重试。 3.4 设计约束条件 3.4.1 技术约束 本项目的设计采用软硬一体化的设计方法。 3.4.2 环境约束   运行该软件所适用的具体设备必须是奔腾2G内存256兆以上的计算机,局域网络环境 3.4.3 标准约束   该软件的开发完全按照企业标准开发,包括硬件、软件和文档规格。 3.4.4 硬件限制   奔腾2G、内存256兆以上的计算机满足输入端条件。 3.5 接口需求 3.5.1 用户接口   本产品的用户一般需要通过终端进行操作,进入主界面后点击相应的窗口,分别进入相对应的界面(如:输入界面、输出界面)。用户对程序的维护,最好要有备份。 3.5.2 软件接口 WIN2000/XP操作系统. 3.6 属性 3.6.1 可使用性   在装载总程序时,正常就运行,异常就停止;汉语编程系统出现错误,将会产生不可遇见的问题,热启,整个终端程序就会再启动;程序出现错误,重新装载,若仍有错,按照提示逐渐装载。 3.6.2 保密性   本软件作为超市管理辅助设备,它的规模比较小,不需要保密技术;限定一个程序中某些区域的规约,给不同的模块分配不同的功能。 3.6.3 可维护性   本软件的组成程序为汉语成语设计语言,组构均较简单,直观意义上的较独立。因此,基于电子化所构成的硬件的简单可维护的特点,决定了该软件的简单可维护性。 3.6.4 可转移、可转换性 可转移的环境是奔腾1G、128兆内存以上;不可修改任何部分; 3.6.5 注释   本产品拥有的属性十分重要,它使得读者用规定的方法去客观的验证软件的各种特性。 3.7 数据库   数据库实现有组织地,动态地存储大量关联数据,方便多用户访问的计算机软硬件组成的系统;它与文件系统的重要区别是数据的充分共享,交叉访问,与应用程序的高度独立性。   由于本软件的整体结构比较简单,所涉及数据相对来说也较少,组成文件的最小单位是记录。 4 设备   奔腾1g、内存128兆以上的计算机。局域网络环境 5 需求注释 对于本软件,它的功能需求、性能需求、接口需求,从稳定性、可行性上都是可以的。 6 功能树 二、概念设计 1 实体及其属性 (1)超市E-R图: (2)收银员E-R图: (3)收银小票E-R图: (4)商品库存E-R图: 2 综合ER图 图2-1 超市管理ER图 三、逻辑设计 超市表(企业编号,店名,地址),主键为企业编号,符合三范式。 收银员表(收银员编号,姓名,性别,工资),主键为收银员编号号,符合三范式。 收银小票表(小票编号,商品编号,收银员编号,商品名称,单价,个数,总价)主键 为小票编号,符合三范式。 商品库存表(商品编号,商品名称,单价,库存量,供货商名)主键为商品编号号,符 合三范式。 表3-1 超市表SHOP 列名 含义 长度 类型 NULL DEFAULT ENO 企业编号 10 Char() no no SNAME 店名 30 Char() no no ADDRESS 地址 30 Char() no no 表3-2 收银员表ASSISTANT 列名 含义 长度 类型 NULL DEFAULT ANO 收银员编号 10 Char() no no ANAME 姓名 6 Char() no no SEX 性别 2 Char() no no SALARY 工资 8 INT no no 表3-3收银小票 表BILL 列名 含义 长度 类型 NULL DEFAULT BNO 小票编号 20 Char() no no CNO 商品编号 8 Char() no no ANO 收银员编号 8 Char() no no CNAME 商品名称 8 Char() no no PRICE 单价 8 Float() no no QUANTITY 个数 3 Int no no TOTAL 总价 10 Float () no no 表3-4 商品库存表RESERVR 列名 含义 长度 类型 NULL DEFAULT CNO 商品编号 8 Char() no no CNAME 商品名称 8 Char() no no PRICE 单价 8 Float() no no LIST 库存量 8 Int no no PROFESSINAL 供货商名 20 Char() yes no 四、其它数据库对象的设计 1、索引 (1)商品库存表商品编号索引 CREATE UNIQUE INDEX CRESERVE ON RESERVE(CNO ); (2)收银小票表小票编号索引 CREATE UNIQUE INDEX BBILL ON BILL (BNO); (3)收银员表中收银员编号索引 CREATE UNIQUE INDEX AASSISTANT ON ASSISTANT (ANO); 2、视图 某种商品的销售量和库存量的视图 GREATE VIEW COMMODITY (CNO,CNAME,MARKET,LIST) AS SELECT RESERVR .CNO,RESERVR .CNAME,SUM(QUANTITY),LIST FROM RESERVR ,BILL GROUP BY BILL.CNO 3、触发器 定义一个触发器,当商品库存表中,供货商为空时,自动改为”本店制作”。 CREATE TRIGGER UDLIST BEFORE UPDATE OR TNSERT ON RESERVR FOR EACH ROW AS BEGIN IF PROFESSINAL IS NULL THEN PROFESSINAL:=’本店制作’; END IF; END; 4、存储过程 利用存储过程来实现,当某商品卖出时,它的商品库存量相应的减少. CREATE PROCEDURE SELL ( BCNO CHAR, QLIST INT) AS DECLARE BEGIN SELECT TIST FROM RESERVE WHERE BCNO =RESERVE.CNO; IF LIST IS NULL THEN ROLLBACK; RETURN; END IF; IF LIST<QUANTITY THEN ROLLBACK; RETURN; END IF; UPDATE RESERVE SET LIST=LIST-QLIST WHERE BCNO=RESERVE.CNO; COMMIT; END; 五、备份及恢复策略 备分策略 采用数据转储和登录日志文件两种方法结合的方法备分数据库。 针对不同的故障,制定恢复策略 1、事务故障的恢复策略 (1)反向扫描日志文件,查找该事务的更新操作. (2)对事务的更新操作执行逆操作. (3)继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理. (4)如此处理下去,直到读到此事务的开始标记,事务故障恢复就完成了. 2、系统故障的恢复策略 (1)正向扫描日志文件,找出在故障发生前已经提交的事务,将其事务标识记入重做队列.同时找出故障发生时尚未完成的事务,将其事务标识记入撤消队列. (2)对撤消队列中的各个事务进行撤消处理. (3)对重做队列中的各个事务进行重做处理. 3、介质故障恢复策略 (1)装入最新的数据库后备副本,使数据库恢复到最近一次转储时一致性状态. (2)装入相应的日志文件副本,重做已完成的事务.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值