书店销售管理系统 您所在的位置:网站首页 网上书店数据库包含四张表 书店销售管理系统

书店销售管理系统

2024-07-12 08:04| 来源: 网络整理| 查看: 265

枯木逢春犹再发,人无两度再少年🍂

系统主要模块如下: (1) 书店销售管理系统设计与实现—图书入库管理及查询统计 图书入库管理:维护入库图书信息(如图书编号、书名、作者、价格、图书分类、出版社等)。自动计算库存。 图书查询统计:按图书分类,出版社、书名、作者等条件查询图书的详细信息。支持模糊查询。 (2) 书店销售管理系统设计与实现—销售管理 销售管理:销售过的图书都记录在销售列表中,方便统计收入。图书销售后,实时记录图书库存,按每天统计销售额、按每个月或季度统计销售额并生成报表,并能根据销售数量统计生成畅销书名单。 (3) 书店销售管理系统设计与实现—书店会员管理 书店会员管理:提供会员信息的维护功能,可设置会员等级,不同级别的会员享受不同的折扣,可以变更折扣额度。

目录 一、数据字典

  1.图书实体表   2.会员实体表   3. 会员类型表   4. 销售实体表   5. 销售明细实体表

二、概念模型设计

  1. 图书基本信息E-R图   2. 会员实体E-R图   3.会员类型E-R图   4.销售实体E-R图   5.销售明细E-R图   6.总体E-R图

三、逻辑结构设计

  逻辑模型图

四、物理结构设计

  设计与实现    表的创建    数据插入

五、SQL查询

  1. 分组统计、模糊查询   2. 天销售额   3. 天销售榜前三   4.月销售额   5. 月销售榜前三   6.自动计算库存,支付金额(触发器)

一、数据字典 1. 图书实体表 字段名别名数据类型长度约束图书编号bookIsbn字符型20位主码图书名称bookName字符型20位not null作者bookAuthor字符型20位not null图书类别bookType字符型20位not null价格bookPrice浮点型\not null出版社bookPublisher字符型20位not null库存bookCount整型\not null 2.会员实体表 字段名别名数据类型长度约束会员idvipId字符型20位主码会员等级vipLevel整型\外键会员名字vipName字符型20位not null会员性别vipSex字符型20位not null会员年龄vipAge字符型20位not null会员电话vipTel字符型20位not null 3. 会员类型表 字段名别名数据类型长度约束会员等级vipId字符型20位主键会员等级名vipName字符型20位not null会员等级折扣vipLevelDisCountfloat\not null 4. 销售实体表 字段名别名数据类型长度约束销售单号saleId字符型20位主键会员IDvipId字符型20位外键销售日期saleDate日期型\not null 5. 销售明细实体表 字段名别名数据类型长度约束销售明细idsaleDetailId字符型20位主键销售单号saleId字符型20位外键图书编号bookIsbn字符型20位外键销售数量bookSaleCount整型\not null 二、概念模型设计 1. 图书基本信息E-R图

在这里插入图片描述

2. 会员实体E-R图

在这里插入图片描述

3.会员类型E-R图

在这里插入图片描述

4.销售实体E-R图

在这里插入图片描述

5.销售明细E-R图

在这里插入图片描述

6.总体E-R图

在这里插入图片描述

三、逻辑结构设计

E-R图向关系模型的转换(主键用下划线标出)

图书(图书编号,图书名称,作者,图书类别,价格,出版社,库存)

会员(会员id,会员等级,会员名字,会员性别,会员年龄,会员电话)

会员类型(会员等级,会员等级名,会员等级折扣)

销售(销售单号,会员ID,销售日期)

销售明细(销售明细id,销售单号,图书编号,销售数量)

逻辑模型图

在这里插入图片描述

四、物理结构设计

在这里插入图片描述

设计与实现 1. 创建book表 /*==============================================================*/ /* Table: book */ /*==============================================================*/ create table book ( bookIsbn char(20) not null, bookName char(20) null, bookAuthor char(20) null, bookType char(20) null, bookPrice float null, bookPublisher char(20) null, bookCount int null, constraint PK_BOOK primary key nonclustered (bookIsbn) )

2.创建会员表

/*==============================================================*/ /* Table: vip */ /*==============================================================*/ create table vip ( vipId char(20) not null, vipLevel int null, vipName char(20) null, vipSex char(20) null, vipAge char(20) null, vipTel char(20) null, constraint PK_VIP primary key nonclustered (vipId) )

3.创建会员类型表

/*==============================================================*/ /* Table: vipType */ /*==============================================================*/ create table vipType ( vipLevel int not null, vipLevelName char(20) null, vipLevelDisCount float null, constraint PK_VIPTYPE primary key nonclustered (vipLevel) )

4.创建销售实体表

/*==============================================================*/ /* Table: sale */ /*==============================================================*/ create table sale ( saleId char(20) not null, vipId char(20) null, saleDate datetime null, constraint PK_SALE primary key nonclustered (saleId) )

5.创建销售明细表

/*==============================================================*/ /* Table: saleDetail */ /*==============================================================*/ create table saleDetail ( saleDetailId char(20) not null, saleId char(20) null, bookIsbn char(20) null, bookSaleCount int null, constraint PK_SALEDETAIL primary key nonclustered (saleDetailId) )

6.创建表整体脚本如下:

/*==============================================================*/ /* DBMS name: Microsoft SQL Server 2012 */ /* Created on: 2022/11/18 8:12:35 */ /*==============================================================*/ if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('sale') and o.name = 'FK_SALE_BUY_VIP') alter table sale drop constraint FK_SALE_BUY_VIP go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('saleDetail') and o.name = 'FK_SALEDETA_RELATIONS_SALE') alter table saleDetail drop constraint FK_SALEDETA_RELATIONS_SALE go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('saleDetail') and o.name = 'FK_SALEDETA_RELATIONS_BOOK') alter table saleDetail drop constraint FK_SALEDETA_RELATIONS_BOOK go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('vip') and o.name = 'FK_VIP_参照_VIPTYPE') alter table vip drop constraint FK_VIP_参照_VIPTYPE go if exists (select 1 from sysobjects where id = object_id('SysManageUser') and type = 'U') drop table SysManageUser go if exists (select 1 from sysobjects where id = object_id('book') and type = 'U') drop table book go if exists (select 1 from sysindexes where id = object_id('sale') and name = 'buy_FK' and indid > 0 and indid 0 and indid 0 and indid 0 and indid @bookcount) begin print('购买数量:'+convert(varchar,@booksalecount)+', 库存量:'+convert(varchar,@bookcount)+'。 库存不足,订单支付失败!') rollback transaction; end else begin declare @newCount int update book set bookcount=(bookcount-@booksalecount) where bookisbn=@bookisbn; select @newCount=bookcount from book where bookisbn=@bookisbn; declare @saleId char(20); select @saleId=saleId,@bookIsbn=bookIsbn,@bookSaleCount=bookSaleCount from inserted; declare @bookPrice float; declare @bookName char(20); select @bookPrice=bookPrice,@bookName=bookName from book where bookIsbn=@bookIsbn; declare @vipId char(20); select @vipId=vipId from sale where saleId=@saleId; declare @vipName char(20); declare @vipLevel int; select @vipName=vipName,@vipLevel=vipLevel from vip where vipId=@vipId declare @vipLevelDiscount float; select @vipLevelDiscount=vipLevelDisCount from vipType where vipLevel=@vipLevel print(convert(varchar(6),@vipName)+'购买《'+convert(varchar(10),@bookName)+'》的消费金额为:'+convert(varchar,@bookSaleCount*@bookPrice*@vipLevelDiscount)+', 购买数量:'+convert(varchar,@bookSaleCount)+', 单价:'+convert(varchar,@bookPrice)+', 会员等级:'+convert(varchar,@vipLevel)+', 会员折扣:'+convert(varchar,@vipLevelDiscount)+', 更新后的库存量为:'+convert(varchar,@newCount)) end end

向销售明细表中插入一条数据测试,库存量和金额是否正确。

insert into saledetail values('3','saleid001','isbn2103002',1);

说明:销售明细id为3,这条销售明细属于saleid001销售id,售出的书id是isbn2103002,数量是1。

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有