书店销售管理系统 | 您所在的位置:网站首页 › 网上书店数据库包含四张表 › 书店销售管理系统 |
枯木逢春犹再发,人无两度再少年🍂 系统主要模块如下: (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图E-R图向关系模型的转换(主键用下划线标出) 图书(图书编号,图书名称,作者,图书类别,价格,出版社,库存) 会员(会员id,会员等级,会员名字,会员性别,会员年龄,会员电话) 会员类型(会员等级,会员等级名,会员等级折扣) 销售(销售单号,会员ID,销售日期) 销售明细(销售明细id,销售单号,图书编号,销售数量) 逻辑模型图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 实验室设备网 版权所有 |