书店销售管理系统----数据库原理及应用综合实验

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

系统主要模块如下:
(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 < 255)
   drop index sale.buy_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('sale')
            and   type = 'U')
   drop table sale
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('saleDetail')
            and   name  = 'Relationship_4_FK'
            and   indid > 0
            and   indid < 255)
   drop index saleDetail.Relationship_4_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('saleDetail')
            and   name  = 'Relationship_6_FK'
            and   indid > 0
            and   indid < 255)
   drop index saleDetail.Relationship_6_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('saleDetail')
            and   type = 'U')
   drop table saleDetail
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('vip')
            and   name  = '参照_FK'
            and   indid > 0
            and   indid < 255)
   drop index vip.参照_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('vip')
            and   type = 'U')
   drop table vip
go

if exists (select 1
            from  sysobjects
           where  id = object_id('vipType')
            and   type = 'U')
   drop table vipType
go

/*==============================================================*/
/* Table: SysManageUser                                         */
/*==============================================================*/
create table SysManageUser (
   SMUId                char(20)             not null,
   SMUName              char(20)             null,
   SMUPassword          char(20)             null,
   SMUType              char(20)             null,
   constraint PK_SYSMANAGEUSER primary key nonclustered (SMUId)
)
go

/*==============================================================*/
/* 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)
)
go

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

/*==============================================================*/
/* Index: buy_FK                                                */
/*==============================================================*/
create index buy_FK on sale (
vipId ASC
)
go

/*==============================================================*/
/* 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)
)
go

/*==============================================================*/
/* Index: Relationship_6_FK                                     */
/*==============================================================*/
create index Relationship_6_FK on saleDetail (
bookIsbn ASC
)
go

/*==============================================================*/
/* Index: Relationship_4_FK                                     */
/*==============================================================*/
create index Relationship_4_FK on saleDetail (
saleId ASC
)
go

/*==============================================================*/
/* 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)
)
go

/*==============================================================*/
/* Index: 参照_FK                                                 */
/*==============================================================*/
create index 参照_FK on vip (
vipLevel ASC
)
go

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

alter table sale
   add constraint FK_SALE_BUY_VIP foreign key (vipId)
      references vip (vipId)
go

alter table saleDetail
   add constraint FK_SALEDETA_RELATIONS_SALE foreign key (saleId)
      references sale (saleId)
go

alter table saleDetail
   add constraint FK_SALEDETA_RELATIONS_BOOK foreign key (bookIsbn)
      references book (bookIsbn)
go

alter table vip
   add constraint FK_VIP_参照_VIPTYPE foreign key (vipLevel)
      references vipType (vipLevel)
go
向book表中插入数据:
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103001         ', N'恋人拍卖行          ', N'Tom                 ', N'社会科学            ', N'12', N'商务印书馆          ', N'15')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103002         ', N'俄狄浦斯王          ', N'Kit                 ', N'工具书              ', N'3', N'人民出版社          ', N'11')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103003         ', N'至尊女王爷          ', N'xiaoming            ', N'工具书              ', N'7', N'中华书局            ', N'16')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103004         ', N'天是红尘岸          ', N'zhaoyun             ', N'专业书              ', N'14', N'商务印书馆          ', N'7')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103005         ', N'逐日追风剑          ', N'huatuo              ', N'小说                ', N'1', N'商务印书馆          ', N'2')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103006         ', N'雪中悍刀行          ', N'machao              ', N'儿童读物            ', N'4', N'商务印书馆          ', N'3')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103007         ', N'神级大魔头          ', N'sunbin              ', N'小说                ', N'6', N'商务印书馆          ', N'14')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103008         ', N'宿主请留步          ', N'shangguan           ', N'工具书              ', N'13', N'人民出版社          ', N'93')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103009         ', N'巴黎圣母院          ', N'zhouyu              ', N'工具书              ', N'11', N'人民出版社          ', N'3')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103010         ', N'徐霞客游记          ', N'xiaoqiao            ', N'社会科学            ', N'19', N'人民出版社          ', N'12')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103011         ', N'喧哗与骚动          ', N'baili               ', N'社会科学            ', N'10', N'人民出版社          ', N'18')
GO
INSERT INTO [dbo].[book] ([bookIsbn], [bookName], [bookAuthor], [bookType], [bookPrice], [bookPublisher], [bookCount]) VALUES (N'isbn2103012         ', N'苏菲的世界          ', N'make                ', N'社会科学            ', N'8', N'人民出版社          ', N'5')
GO

向vipType表中插入数据

INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'0', N'普通会员            ', N'0.95')
GO
INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'1', N'一级会员            ', N'0.9')
GO
INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'2', N'二级会员            ', N'0.85')
GO
INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'3', N'三级会员            ', N'0.8')
GO
INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'4', N'四级会员            ', N'0.75')
GO
INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'5', N'五级会员            ', N'0.7')
GO
INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'6', N'六级会员            ', N'0.65')
GO
INSERT INTO [dbo].[vipType] ([vipLevel], [vipLevelName], [vipLevelDisCount]) VALUES (N'7', N'七级会员            ', N'0.6')
GO

向vip表中插入数据

INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v001                ', N'7', N'张三丰              ', N'男                  ', N'21                  ', N'19907078888         ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v002                ', N'6', N'杨暖昕              ', N'女                  ', N'22                  ', N'19803038888         ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v003                ', N'0', N'凌秋子              ', N'男                  ', N'36                  ', N'17806069999         ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v004                ', N'4', N'李楠                ', N'男                  ', N'18                  ', N'17806068888         ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v005                ', N'6', N'文春雪              ', N'男                  ', N'36                  ', N'18808089999         ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v006                ', N'3', N'陆亦思              ', N'男                  ', N'46                  ', N'17801010000         ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v007                ', N'1', N'代迎海              ', N'男                  ', N'18                  ', N'13109787777         ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v008                ', N'2', N'白紫玉              ', N'男                  ', N'17                  ', N'13120200897         ')
GO
INSERT INTO [dbo].[vip] ([vipId], [vipLevel], [vipName], [vipSex], [vipAge], [vipTel]) VALUES (N'v009                ', N'6', N'韩若初              ', N'女                  ', N'26                  ', N'17809271234         ')
GO

向sale表中插入数据

INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid010           ', N'v001                ', N'2020-12-01 04:06:21.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid009           ', N'v002                ', N'2020-01-03 08:15:12.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid001           ', N'v001                ', N'2020-12-01 04:06:21.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid002           ', N'v002                ', N'2020-01-03 08:15:12.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid003           ', N'v005                ', N'2020-01-05 02:45:00.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid004           ', N'v009                ', N'2020-01-06 02:45:00.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid005           ', N'v007                ', N'2020-01-06 02:45:00.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid006           ', N'v003                ', N'2020-01-06 02:45:00.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid007           ', N'v004                ', N'2020-02-27 00:00:00.000')
GO
INSERT INTO [dbo].[sale] ([saleId], [vipId], [saleDate]) VALUES (N'saleid008           ', N'v001                ', N'2020-03-11 00:00:00.000')
GO

向saleDetail表中插入数据

INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'HAWGPIXSQBPRW6IA1TD4', N'saleid001           ', N'isbn2103001         ', N'19')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'52SU70BURCAMS50F5QFD', N'saleid001           ', N'isbn2103004         ', N'9')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'7FVQ0GKT5G9QB0P6TUA4', N'saleid001           ', N'isbn2103003         ', N'2')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'C6VNTSXDUCOQKE37ER14', N'saleid001           ', N'isbn2103002         ', N'1')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'UKA4710SMLJKWSQO389H', N'saleid002           ', N'isbn2103009         ', N'1')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'970CM5NUN54WDHXNUYQ8', N'saleid002           ', N'isbn2103001         ', N'2')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'P6G5AHGVYCGJBHD8NU9L', N'saleid002           ', N'isbn2103006         ', N'2')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'WX1RIJJMQYACA4Y3FL69', N'saleid001           ', N'isbn2103004         ', N'15')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'YF9G7JP86C3OVSE1AQR4', N'saleid003           ', N'isbn2103007         ', N'3')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'UPH2K75GBCQI68W3NLXC', N'saleid006           ', N'isbn2103006         ', N'11')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'V7OLOUXQ5WM9AIF96NSS', N'saleid005           ', N'isbn2103003         ', N'17')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'5Q6MB5S4HA3Y0TNC HO ', N'saleid004           ', N'isbn2103002         ', N'8')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'VWLWUACJQ36G0N7SVSCN', N'saleid002           ', N'isbn2103005         ', N'8')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'8MFJ3SREX7OJ9D0GC69U', N'saleid006           ', N'isbn2103001         ', N'2')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'ELK8E2O5E0W4Q4YHA0QK', N'saleid004           ', N'isbn2103007         ', N'7')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'1                   ', N'saleid001           ', N'isbn2103008         ', N'1')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'2                   ', N'saleid001           ', N'isbn2103008         ', N'6')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'ELK8E2O5t68UQ4YHA0QK', N'saleid005           ', N'isbn2103007         ', N'2')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'PA31CORBOML5W9MPLP88', N'saleid007           ', N'isbn2103001         ', N'2')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'D16V7L1PD 19JI7GGDJN', N'saleid007           ', N'isbn2103002         ', N'1')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'CPQKT SXWO LEL10 KFW', N'saleid008           ', N'isbn2103011         ', N'1')
GO
INSERT INTO [dbo].[saleDetail] ([saleDetailId], [saleId], [bookIsbn], [bookSaleCount]) VALUES (N'28N9LUIDU37HAWMCFC3 ', N'saleid008           ', N'isbn2103012         ', N'1')
GO

SQL查询

1.图书查询统计:按图书分类,出版社、书名、作者等条件查询图书的详细信息。支持模糊查询。
select bookType '图书分类' from book group by bookType;
select bookpublisher '出版社' from book group by bookpublisher;
select * from book where booktype like'%工具%';
select * from book where bookPublisher like '%商务印书馆%'
select * from book where bookname like '%王%'
2.天销售额(这里的销售额我算的是销售数量,也有人说是算销售金额)
select
  book.bookname,
  sum(booksalecount) day_sale_count
from
  (
		select
		  bookisbn,
		  booksalecount
		from
		  saledetail
		where
		  saleid in(
				select
				  saleid
				from
				  sale
				where
				  datepart(year, saledate) = 2020
				  and datepart(month, saledate) = 1
				  and datepart(day, saledate) = 6
		  )
  ) t1
  left join book on book.bookIsbn = t1.bookisbn
group by
  book.bookname;

在这里插入图片描述

3.天销售榜前三
select
  top 3 book.bookname,
  sum(booksalecount) sale_count
from
  (
    select
      bookisbn,
      booksalecount
    from
      saledetail
    where
      saleid in(
        select
          saleid
        from
          sale
        where
          datepart(year, saledate) = 2020
          and datepart(month, saledate) = 1
          and datepart(day, saledate) = 6
      )
  ) t1
  left join book on book.bookIsbn = t1.bookisbn
group by
  book.bookname
order by
  sale_count desc;

在这里插入图片描述

4.月销售额
select
  book.bookname,
  sum(booksalecount) book_count
from
(
    select
      bookisbn,
      booksalecount
    from
      saledetail
    where
      saleid in (
        select
          saleid
        from
          sale
        where
          datepart(year, saledate) = 2020
          and datepart(month, saledate) = 1
      )
  ) t1
  left join book on book.bookisbn = t1.bookisbn
group by
  book.bookname;

在这里插入图片描述

5.月销售榜前三
select
  top 3 book.bookname,
  sum(booksalecount) book_count
from
(
    select
      bookisbn,
      booksalecount
    from
      saledetail
    where
      saleid in (
        select
          saleid
        from
          sale
        where
          datepart(year, saledate) = 2020
          and datepart(month, saledate) = 1
      )
  ) t1
  left join book on book.bookisbn = t1.bookisbn
group by
  book.bookname
order by
  book_count desc;

在这里插入图片描述

6.自动计算库存,支付金额(触发器)
create trigger auto_update_bookcount_money on saleDetail
after insert
as
begin
	declare @booksalecount int;
	declare @bookisbn char(20);
	declare @bookcount int;
	select @bookisbn=bookisbn from inserted;
	select @booksalecount=bookSaleCount from inserted;
	select @bookcount=bookcount from book where bookisbn=@bookisbn;
	if(@booksalecount>@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。

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

  • 34
    点赞
  • 348
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论
图书销售管理系统数据库设计 数据库系统概论课程设计报告 2011年 05月 28 日 图书销售管理系统数据库设计全文共23页,当前为第1页。 目 录 图书销售管理系统数据库设计全文共23页,当前为第1页。 引 言 1 第一章 系统分析 1 功能需求 2 待开发系统功能 2 第二章 系统功能概要设计 2 系统主要功能模块设计 2 系统处理流程分析 3 系统接口设计 4 外部接口 4 内部接口 5 第三章 系统数据库设计 5 系统数据库分析 5 系统关系表 6 数据字典 6 数据项 6 数据结构 7 数据流表 8 数据存储 8 处理过程 9 第四章 概念结构设计 9 图书销售管理系统数据库设计全文共23页,当前为第2页。 用户管理模块 9 图书销售管理系统数据库设计全文共23页,当前为第2页。 图书管理模块 10 图书销售管理模块 11 查询管理模块 12 报表查询管理模块 13 数据管理模块 14 图书销售管理系统E-R图 15 第五章 逻辑结构设计 16 与系统E-R图对应的关系模式 16 试题所对应的关系模式 16 联系所对应的关系模式 16 关系模式优化处理 17 第六章 物理结构设计 18 系统数据处理特点 18 系统数据存储选择 18 第七章 数据库的实施和维护 18 数据库的实施 19 致 谢 20 图书销售管理系统数据库设计全文共23页,当前为第3页。 引 言 图书销售管理系统数据库设计全文共23页,当前为第3页。 随着计算机的普及书店规模的不断扩大,传统的图书销售管理方法,都是通过人工统计和计算的管理方式进行的。这样的管理方法不但费时费力,也容易产生计算上的错误和疏漏;计算机技术的全面普及,打破了书店管理的传统管理方法,提高了管理效率的同时,克服了传统管理方法中易产生的问题,使管理员能够有序的、全面的对图书销售和库存进行管理。 通过图书销售管理系统可以解决书店管理中遇到的各种问题,该图书销售管理系统分析了市场需求和实际需要,利用Microsoft Visual Studio 2008连接SQL数据库的方式,实现书店图书销售等一系列管理,该系统具有处理图书录入、图书销售及管理、图书查询、报表查询等功能。 第一章 系统分析 功能需求: 本系统是根据书店的实际需求而开发的,要求稳定、可靠的实现图书销售的自动化管理,通过本系统可以达到以下目标: 用户管理:对系统所有用户的相关信息进行管理。 图书管理:对图书信息进行添加以及编辑,对图书基本信息的录入及编辑包括图书类别图书进价、图书售价、图书出版社图书折扣、图书作者等。 图书销售管理:对图书的销售信息进行动态添加并实现图书库存量的动态修改等,所添加的图书销售信息包括图书的售价、折扣、销售日期。 查询管理:用户根据实际需要对图书图书销售、图书库存等信息分类查询。 报表查询:系统用户可以通过对时间段的选择来查看该段时间内图书的销售情况,以便于做出更为合理的销售计划、提高效益。 图书销售管理系统数据库设计全文共23页,当前为第4页。数据管理:为了防止系统用户的误操作,用户可以根据自己的需要对图书信息、销售数据等进行备份等操作。 图书销售管理系统数据库设计全文共23页,当前为第4页。 待开发软件功能: 通过以上的系统目标分析,根据以上系统所要满足的功能,设计出了图书销售管理系统的主要功能模块图,如图所示。 图书销售管理系统图书管理模块(M2)报表查询管理模块(M5)图书销售管理模块(M3)查询管理模块(M4)数据管理模块(M6)用户管理模块(M1) 图书销售管理系统 图书管理模块(M2) 报表查询管理模块(M5) 图书销售管理模块(M3) 查询管理模块(M4) 数据管理模块(M6) 用户管理模块(M1) 图 图书销售管理系统的系统功能图 第二章 系统功能概要设计 该图书销售管理系统是根据书店的情况结合实际需求而开发的,完全能够帮助书店实现高效、准确的图书销售自动化管理。 系统主要功能模块设计: 图书销售管理系统数据库设计全文共23页,当前为第5页。结合前面对系统功能的分析,以及Microsoft Visual Studio 2008开发环境的特点,得到如下图所示的系统功能模块图: 图书销售管理系统数据库设计全文共23页,当前为第5页。 图书销售管理系统图书管理模块(M2)报表查询管理模块(M5)图书销售管理模块(M3)查询管理模块(M4)数 管理模块(M6)用户管理模块(M1) 图书销售管理系统 图书管理模块(M2) 报表查询管理模块(M5) 图书销售管理模块(M3) 查询管理模块(M4) 数 管理模块(M6) 用户管理模块(M1) 图图书销售管理系统主要功能模块图 系统各个模块功能分配如下: (1)用户管理模块:系统用户根据权限进行系统登录并对相关用户信息进行管理;
网上书店信息管理系统是一种基于MySQL数据库Java技术实现的信息管理系统,主要用于对网上书店进行信息的管理、查询、统计和展示。该系统涉及到多种技术,包括Web开发、数据库设计、数据交互、用户权限控制等。 在该系统中,MySQL数据库作为数据存储的基础,负责管理网上书店的各种信息数据,如书籍信息、书籍分类、读者信息、订单信息等。采用MySQL数据库有多个优点,如数据安全、数据结构清晰、存储容量大等。 而Java技术则用于开发系统的各个模块,如前端展示页面、后端业务处理、数据交互等。通过Java技术,可以实现网上书店信息管理系统的多种功能,如图书浏览、搜索、购买、订单管理等。采用Java技术开发可以提供良好的用户体验,同时也方便优化程序以提升性能。 在网上书店信息管理系统中,用户权限控制也是一个重要的部分,通过控制不同用户的不同权限来保障系统的安全性。例如,只有管理员才能进行用户信息或订单信息的修改,而一般用户只能进行浏览、搜索和购买等操作。 总之,网上书店信息管理系统是基于MySQL数据库Java技术实现的,它通过整合各种技术和功能模块,可以有效地管理和展示网上书店中各种信息数据,功能齐全,可以提供良好的用户体验和高效的网站性能,有着广泛的应用前景。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿年、嗯啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值