书店销售管理系统(SQL语言实现)

成绩

西安航空学院

课程设计说明书(论文)

题 目 书店销售管理系统

课 程 名 称 数据库原理及应用课程设计

学 院 (部) 计算机学院

专 业 计算机科学与技术

班 级 计算机科学206

学 生 姓 名

学 号

设 计 地 点 软件工程实验室

指 导 教 师

设计起止时间:2021年1月 6 日至2021年1月9日

课程设计(综合实验)任务书

1.课程设计(综合实验)内容及要求

本课程采取实验教学的方式,由教师提前布置设计题目,学生对设计题目进行分析,完成设计,最终写出课程设计报告。
1、设计数据库、表。
2、导入数据。
3、检索数据。
4、设计视图、存储过程、触发器。
5、数据备份和还原。
6、创建登陆账户,设置访问权限。
2.课程设计(综合实验)任务及工作量的要求〔包括课程设计(综合实验)计算说明书、图纸、实物样品等要求〕
题目1 书店销售管理系统
书店希望借助一个销售管理系统实现对现有业务的管理。该书店目前采用会员制,顾客购买书籍累积达到一定金额后,凭购书发票可填表申请成为正式会员,会员在购书时享有一定折扣,折扣额度可变化。该书店不定期地会推出促销活动,要求图书的价格是可变更的。系统主要模块如下:
(1) 书店销售管理系统设计与实现—图书入库管理及查询统计
 图书入库管理:维护入库图书信息(如图书编号、书名、作者、价格、图书分类、出版社等)。自动计算库存。
 图书查询统计:按图书分类,出版社、书名、作者等条件查询图书的详细信息。支持模糊查询。
(2) 书店销售管理系统设计与实现—销售管理
 销售管理:销售过的图书都记录在销售列表中,方便统计收入。图书销售后,实时记录图书库存,按每天统计销售额、按每个月或季度统计销售额并生成报表,并能根据销售数量统计生成畅销书名单。
(3) 书店销售管理系统设计与实现—书店会员管理
 书店会员管理:提供会员信息的维护功能,可设置会员等级,不同级别的会员享受不同的折扣,可以变更折扣额度。
(4) 书店销售管理系统设计与实现—系统管理
 系统管理:包括参数设置、权限设置、更改密码等。用户包括系统管理员和销售人员。系统管理员维护整个系统的数据。

目录

  1. 课程设计目的及要求… 6

  2. 课程设计任务分析… 6
    2.1总体需求分析… 6

  3. 课程设计主要内容… 10
    3.1 数据库整体的创建… 10
    3.1.1 数据库的创建… 10
    3.1.2 表的创建… 10
    3.2 数据输入… 14
    3.2.1 对分类表进行填充… 14
    3.2.2 对图书表进行填充… 15
    3.2.3 对会员信息表进行填充… 16
    3.2.4 对销售单表进行填充… 17
    3.2.5 对销售详情单表进行填充… 18
    3.2.6 等级制度表的输入… 19
    3.2.7 员工表的输入… 19
    3.2.8 权限表的输入… 20
    3.2.9 职位表的输入… 21
    3.3实现功能… 22
    3.3.3视图… 23
    4.实验总结… 25

  4. 课程设计目的及要求

1.1 目的

数据库原理及应用综合实验是数据库原理及应用课程重要的实践教学环节。该课程设计的目的,一方面使学生更透彻地理解数据库的基本概念和原理,使之由抽象到具体;另一方面,通过课程综合实验加强学生的实验手段与实践技能,培养学生独立分析问题、解决问题、应用知识的能力和团队合作精神、创新精神。与本课程的实验教学相比,综合实验独立设课,具有更多的学时,给学生更多自行设计、自主实验的机会,充分放手,真正培养学生的实践动手能力,全面提高学生的综合素质。

1.2 要求

(1) 明确课题的设计需求(需求分析,讨论决定):

(2) 概念模型设计,分析出所有实体、每个实体的属性以及实体之间的关系,画出E-R图;

(3) 逻辑模型设计,根据E-R图关系模型转换的规则,完成E-R图转换为关系模式,设计表结粒,包括每个表的主键、外键、各个属性的约束,分析关系模式是否符合一定的范式要求,并说明原因,不符合需要的关系模式可以进行适当的模式分解。设计可能需要的视图;

(4) 根据选定的DBMS,确定具体的物理结构。在SQLSERVER中建立数据库,写出建立数据库的SQL语句;

(5) 建立和管理基本表;写出相关的SQL语句;

(6) 建立和管理视图;写出相关的SQL语句;

(7) 建立和管理索引;写出相关的SQL语句;

(8) 给出部分测试数据(每个表中至少有10条数据),根据应用需求设计若干条用户可能进行的访问数据库要求,给出具体操作要求和相应的SQL语句(多样化),并给出执行结果的截图:

(9) 分析设计应用系统功能需求,进行应用系统开发(开发工具自选)

  1. 课程设计任务分析

2.1总体需求分析

需求分析

1、背景

(1) 待开发的系统名称:图书库、销售管理系统

(2) 用户:书店管理人员

(3) 开发环境:

① 操作系统:Windows 10

② 数据库:SQL Server 2008

2、系统总体功能分析需求

(1) 某书店图书销售管理系统

(2) 实现图书类别、出版社、图书、仓库信息的管理;

(3)实现入库管理;

(4)实现销售管理;

(5)创建存储过程查询某段时间内各种图书的进货和销售情况;

(6)创建视图查询各类图书的库存总数;

(7)创建触发器当会员消费金额到达一定的额度时,会触发升级给特定的折扣;

(8)要求一单可以处理多种图书(比如销售设置销售单及其明细两个表);

建立数据库相关表之间的参照完整性约束。

2.2 概要设计

                      总逻辑图2-1

书店销售管理系统(SQL语言实现)_第1张图片

图书表2-2

书店销售管理系统(SQL语言实现)_第2张图片

                        图书表的对应关系3-3
  1. 课程设计主要内容

3.1 数据库整体的创建

3.1.1 数据库的创建

为项目创建一个数据库,数据库的名称为Bookstore

create
database Bookstore;

use
Bookstore;

3.1.2 表的创建

3.1.2.1 图书分类表的创建

为图书种类创建表名为图书分类:

create
table 图书分类(

分类编号 char(20) primary key,

分类名称 char(20),

);

3.1.2.2 图书表的创建

为图书创建图书表,将图书分类表中的分类编号作为外键加入到图书表中:

create
table 图书(

图书编号 char(10) primary key,

分类编号 char(20),

图书名称 char (20),

作者 char (20),

价格 int,

图书数量 int,

出版社 char(20),

foreign
key (分类编号) references 图书分类(分类编号),

);

3.1.2.3 会员信息表的创建

为会员创建表为会员信息表:

create
table 会员信息(

会员编号 smallint primary key,

会员名称 nchar not NULL,

会员生日 date,

性别 nchar ,

会员等级 nchar ,

电话 [int],

入会日期 date,

);

3.1.2.4 等级制度表

为等级的判断条件创建表名为等级制度表:

create
table 等级制度(

会员等级 char(10) primary key,

享受折扣 char(10),

单次购买金额达到 int

);

3.1.2.5 为销售总单创建销售单表:

为销售总单创建表,其中将会员信息表中的会员编号作为外键加入到销售单表中:

create
table 销售单(

销售编号 char(10) primary key,

销售总数 int,

销售总额 int,

享受折扣 float,

销售日期 date,

会员编号 smallint,

foreign
key (会员编号) references 会员信息(会员编号),

);

3.1.2.6 为销售详情单创建销售详情单表:

为销售详情单创建表,其中将销售单表中的销售编号作为外键加入到销售详情单表中:

create
table 销售详情单(

销售编号 char(10),

详情编号 char(10) primary key,

会员名称 nchar(20),

图书单价 int,

销售日期 date,

数量 int,

图书编号 char(10),

foreign
key (销售编号) references 销售单(销售编号),

);

3.1.2.7 员工表:

为书店员工创建员工表,其中将员工编号作为主键,并后面为员工创建对应数据库角色,和给予相应的权限。

create table 员工(

员工编号 char(20) primary key,

员工名称 char(10),

入职日期 date,

性别 char(10),

年龄 int,

电话号码 int,

地址 char(40)

);

3.1.2.8 权限表:

为书店员工创建员工表,

create table 权限(

权限编号 char(20) primary key,

权限功能 char(20)

);

3.1.2.9 职位表:

为员工职位创建表,其中将员工表中的员工编号和权限表中的权限编号作为外键加入到职位表中:

create table 职位(

职位 char(20) primary key,

员工编号 char(20),

员工名称 char(10),

入职日期 date,

权限编号 char(20),

foreign key (员工编号) references 员工(员工编号),

foreign key (权限编号) references 权限(权限编号)

);

3.2 数据输入

3.2.1 对分类表进行填充

insert into 图书分类
values(‘1001’,‘计算机’);

insert into 图书分类
values(‘1002’,‘文学类’);

insert into 图书分类
values(‘1003’,‘机械类’);

insert into 图书分类
values(‘1004’,‘哲学类’);

图 3.2.1 图书分类表插入

3.2.2 对图书表进行填充

insert
into 图书 values(‘10001’,‘1001’,‘C语言程序设计’,‘马新华’,‘28’,‘35’,‘清华出版社’);

insert
into 图书 values(‘10002’,‘1001’,‘java程序设计’,‘刘梦’,‘35’,‘50’,‘西航出版社’);

insert
into 图书 values(‘10003’,‘1001’,‘计算机组成原理’,‘王雷’,‘15’,‘40’,‘北航出版社’);

insert
into 图书 values(‘10004’,‘1001’,‘数据结构’,‘刘鑫’,‘24’,‘25’,‘南邮出版社’);

insert
into 图书 values(‘10005’,‘1002’,‘白鹿原’,‘贾平凹’,‘50’,‘45’,‘中国人民出版社’);

insert
into 图书 values(‘10006’,‘1002’,‘百年孤独’,‘马尔克斯’,‘60’,‘34’,‘陕西出版社’);

insert
into 图书 values(‘10007’,‘1002’,‘追风筝的人’,‘james’,‘62’,‘40’,‘北京出版社’);

insert
into 图书 values(‘10008’,‘1003’,‘工程制图’,‘刘磊’,‘23’,‘60’,‘清华出版社’);

insert
into 图书 values(‘10009’,‘1003’,‘单片机组成原理’,‘王鑫’,‘50’,‘46’,‘杭州出版社’);

insert
into 图书 values(‘10010’,‘1003’,‘飞行器制造’,‘范雷新’,‘30’,‘62’,‘人民大学出版社’);

insert
into 图书 values(‘10011’,‘1004’,‘纯粹理性批判’,‘张华’,‘30’,‘40’,‘青岛出版社’);

insert
into 图书 values(‘10012’,‘1004’,‘马克斯恩格斯主义’,‘马克思’,‘60’,‘26’,‘哲学出版社’);

insert
into 图书 values(‘10013’,‘1004’,‘中国哲学史’,‘茅盾’,‘30’,‘60’,‘清华出版社’);

图 3.2.2 图书表插入

3.2.3 对会员信息表进行填充

insert
into 会员信息 values(‘1001’,‘王二’,‘1965-02-23’,‘男’,‘1级’,‘1365623212’,‘2019-05-20’);

insert
into 会员信息 values(‘1002’,‘许三多’,‘1989-03-23’,‘男’,‘1级’,‘1321523212’,‘2019-04-10’);

insert
into 会员信息 values(‘1003’,‘史今’,‘1992-10-10’,‘男’,‘2级’,‘1365623012’,‘2010-05-20’);

insert
into 会员信息 values(‘1004’,‘赵薇’,‘1999-02-23’,‘女’,‘2级’,‘1535695321’,‘2010-06-20’);

insert
into 会员信息 values(‘1005’,‘孙俪’,‘1999-08-15’,‘女’,‘0级’,‘1391923212’,‘2018-03-20’);

insert
into 会员信息 values(‘1006’,‘高程’,‘1976-09-23’,‘男’,‘3级’,‘1366233212’,‘2015-04-20’);

insert
into 会员信息 values(‘1007’,‘伍六一’,‘1989-03-29’,‘男’,‘1级’,‘1365656112’,‘2016-04-18’);

insert
into 会员信息 values(‘1008’,‘马小帅’,‘1995-10-02’,‘男’,‘3级’,‘1365623343’,‘2018-03-28’);

insert
into 会员信息 values(‘1010’,‘王国庆’,‘1969-02-23’,‘男’,‘3级’,‘1965623212’,‘2013-09-20’);

图 3.2.3 会员信息表插入

3.2.4 对销售单表进行填充

insert
into 销售单values(‘1002’,650,825,0,‘2020-01-25’,‘1009’);

insert
into 销售单values(‘1003’,290,450,0.2,‘2020-09-02’,‘1004’);

insert
into 销售单values(‘1004’,180,580,0.1,‘2020-01-28’,‘1001’);

图 3.2.4
销售单表插入

3.2.5 对销售详情单表进行填充

insert
into 销售详情单 values(‘1001’,‘1001-01’,‘马小帅’,200,‘2020-6-25’,10,‘10001’);

insert
into 销售详情单 values(‘1001’,‘1001-02’,‘马小帅’,150,‘2020-6-25’,9,‘10002’);

insert
into 销售详情单 values(‘1002’,‘1002-01’,‘梁博’,300,‘2020-7-15’,5,‘10003’);

insert
into 销售详情单 values(‘1002’,‘1002-02’,‘梁博’,350,‘2020-7-15’,7,‘10002’);

insert
into 销售详情单 values(‘1003’,‘1003-01’,‘赵薇’,32,‘2019-8-1’,7,‘10004’);

insert
into 销售详情单 values(‘1003’,‘1003-02’,‘赵薇’,100,‘2019-8-1’,8,‘10007’);

insert
into 销售详情单 values(‘1003’,‘1003-03’,‘赵薇’,40,‘2019-8-1’,4,‘10005’);

insert
into 销售详情单 values(‘1003’,‘1003-04’,‘赵薇’,60,‘2019-8-1’,5,‘10001’);

insert
into 销售详情单 values(‘1004’,‘1004-01’,‘王二’,300,‘2020-6-25’,6,‘10001’);

insert
into 销售详情单 values(‘1004’,‘1004-02’,‘王二’,150,‘2020-6-25’,8,‘10002’);

图 3.2.5
销售详情单表插入

3.2.6 等级制度表的输入

insert
into 等级制度 values(‘0级’,0,0);

insert
into 等级制度 values(‘1级’,0.1,100);

insert
into 等级制度 values(‘2级’,0.2,200);

insert
into 等级制度 values(‘3级’,0.3,300);

insert
into 等级制度 values(‘4级’,0.4,400);

图 3.2.6
等级制度单表插入

3.2.7 员工表的输入

insert
into 员工 values(‘201’,‘于铮’,‘2015-02-23’,‘男’,18,1778250146,‘陕西省西安市’);

insert
into 员工 values(‘202’,‘洋洋’,‘2016-06-21’,‘女’,25,1254254226,‘陕西省西安市’);

insert
into 员工 values(‘203’,‘培丰’,‘2014-08-04’,‘男’,21,1365623212,‘陕西省西安市’);

insert
into 员工 values(‘204’,‘亮忠’,‘2017-07-04’,‘男’,19,1253555442,‘陕西省西安市’);

insert
into 员工 values(‘205’,‘旭东’,‘2018-07-17’,‘女’,30,1365623212,‘陕西省西安市’);

insert
into 员工 values(‘206’,‘国庆’,‘2019-11-30’,‘男’,24,1548523555,‘陕西省西安市’);

图 3.2.7
员工表插入

3.2.8 权限表的输入

insert
into 权限 values(‘A’,‘all’);

insert
into 权限 values(‘B’,‘招聘’);

insert
into 权限 values(‘C’,‘销售’);

insert
into 权限 values(‘D’,‘人事管理’);

insert
into 权限 values(‘E’,‘销售管理’);

insert
into 权限 values(‘F’,‘图书整理’);

insert
into 权限 values(‘G’,‘财务管理’);

图 3.2.8
权限表插入

3.2.9 职位表的输入

Insert
into 职位 values(‘老板’,‘201’,‘于铮’,‘2015-02-23’,‘A’);

insert
into 职位 values(‘招聘’,‘202’,‘洋洋’,‘2016-06-21’,‘B’);

insert
into 职位 values(‘销售’,‘203’,‘培丰’,‘2014-08-04’,‘C’);

insert
into 职位 values(‘会计’,‘203’,‘培丰’,‘2014-08-04’,‘G’);

insert
into 职位 values(‘经理’,‘204’,‘亮忠’,‘2017-07-04’,‘A’);

insert
into 职位 values(‘销售员’,‘205’,‘旭东’,‘2018-07-17’,‘C’);

insert
into 职位 values(‘人事’,‘205’,‘旭东’,‘2018-07-17’,‘B’);

图 3.2.9
职位表插入

3.3实现功能

3.3.1实现图书查询功能:

select*from
图书 where 分类编号=‘1003’;

select*from
图书 where 出版社=‘陕西出版社’;

select*from
图书 where 图书名称=‘c语言程序设计’;

select*from
图书 where 作者=‘james’;

                   图3.3.1 查询

3.3.2 销售额查询统计:

按每天统计销售额、按每个月或季度统计销售额并生成报表,并能根据销售数量统计生成畅销书名单。

select
sum(图书单价) ‘6月销售总额’ from 销售详情单 where ‘2020-06-01’<销售日期 and 销售日期<‘2020-06-30’;

select
sum(图书单价) ‘6月日销售总额’ from 销售详情单 where 销售日期=‘2020-6-25’;

select
sum(图书单价) ‘第三季度销售总额’ from 销售详情单 where ‘2020-06-01’<销售日期 and 销售日期<‘2020-09-30’;

图3.3.2 销售总额

3.3.3视图

create
view 图书及图书分类

as

select
图书编号,图书名称,图书.分类编号,分类名称 from 图书,图书分类

where
图书.分类编号 = 图书分类.分类编号

with
check option;

图 3.3.3
视图

通过视图 图书及图书分类 查询图书的详细信息及详细分类信息;

select

  • from 图书及图书分类;

图 3.3.4
视图查询

3.3.4生成畅销书单:

select 图书名称,sum(销售数量) as 销量排行

from 图书,销售详情单

where 图书.图书编号=销售详情单.图书编号

group by 图书名称

order by 销量排行 desc

                                   图3.3.5 畅销书单

4.实验总结

通过本次的图书进货销售数据库系统的设计,我学到了之前在课程中不能学到的知识,并将平时所学所知的理论知识完全运用在实践中,这样的机会非常难得。

由于一开始对数据库相关知识掌握不牢固,所以面对题目中的“触发器”、“存储过程”、“视图”等相关名词比较陌生,通过搜索引擎搜索相关知识,利用书本学习相关概念,通过在线视频了解如何在一个数据库中创建和使用“触发器”、“存储过程”、“视图”,最终完成了题目要求。

因为没有实战经验,所以对图书系统中的各个部分的用处不了解,因而无法创建表。后来通过学习,画了数据流图,然后画了各个实体的局部E-R 图。在创建数据库的过程中,一开始使用了英文的表名,后来因为表和列的数量过多而导致混淆,所以改用了中文命名的表名和列名。通过E-R 图,能更清楚了解了各个部分的相关关系,理清了约束条件等,将基本的数据库框架搭建好,同时参考题目要求和数据流图,最终完善了数据库。

在整个过程中,最难的部分在于触发器的创建,由于教材中只是粗浅的介绍了概念和语法,所以我通过在线视频的方式,学习了触发器的知识,最终一步一步写出了题目要求的触发器。

通过这次亲自动手实践,我学会了分析需求,并按照要求去做出一个系统,并深知其不易。只有亲手去操作,才能知道在理论学习的过程中的不足,弥补这些不足的方法,可以通过搜索引擎,书本,以及在线视频的讲解。我也更加期待下一次的动手实践课程。

评阅意见:

教师签名: 年 月 日

你可能感兴趣的:(sql,sql,数据库)