资源描述
一、系统需求规格说明
1.项目概述
《超市商品销售系统》为展示,明确所要开发的软件应具有的功能、性能,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。
2.主要任务与性能要求
主要任务:系统的E-R图和相关的SQl server 建立
性能要求:保证数据的正确与完整
二.系统设计
1.引言
名称:超市商品销售系统
目的:让用户结合系统给方便应用
2.参考资料
1. 王珊 萨师煊,数据库系统概论(第四版),高等教育出版社,2006年5月
2.赵杰等SQL Server数据库管理设计与实现教程 清华大学出版社 2004年3月
3.系统任务描述
顾客购买商品后应该打印详细购物清单,清单中内容有购买日期、商品编号、商品名称、单价、数量、合计金额,清单最后还要有现金和找零。顾客分为普通和会员2种,会员购物时需提供会员卡号,结帐后将根据购物金额按照1元1分进行积分的累积。一定时期可进行积分换购。此外,本系统应该实现库存查询、销售金额统计及报表打印。
3.研究的网站
(1)凡客:
主要属性:颜色、尺码、数量
(2)京东商城:
主要属性:颜色、版本、数量
(3)淘宝商城:
主要属性:配送地点、付费方式、数量、颜色
总结:由上面三个网站分析可知购买商品时候的主要属性各不相同,因商品本身而变,但是有些属性是必须的了,例如数量、颜色、付费方式等是在网上购买东西时候大部分都需要的属性
4.数据库概念结构设计
(1)E-R图:
(2)关系图:
5.数据库逻辑结构设计
商品(商品编号、类别、名称、型号、进价、库存数量、销售价、售出数量)
订单(订单号,购买日期、合计金额、会员卡号)
销售明细(订单号,商品编号、单价、数量)
会员(会员卡号,姓名,积分,联系方式)
工作人员(员工编号,姓名,年龄,性别,电话)
goods(gno,gclass, gname gtype gin_price gout_price gin_number gout_number)
DD(DDno DDdate DDHYno DDcount HYno)
XSMX(DDno gno XSMXdj XSMXsl)
HY(HYno HYname HYlxfs HYjf)
People(pno pname page psex ptele)
商品表
字段名称
数据类型
可否为空
约束条件
说明
gno
Char(6)
NOT NULL
主键
商品编号
gclass
Char(7)
NOT NULL
无
商品种类
gname
char(10)
NOT NULL
无
商品名称
gtype
Char(7)
NOT NULL
无
型号
Gin_price
int
不小于零
进价
Gout_price
int
不小于零
卖出价格
Gin_number
int
不小于零
库存数量
Gout_number
int
不小于零
销售数量
pno
Char(7)
NOT NULL
外键
管理人员编号
订单表
字段名称
数据类型
可否为空
约束条件
说明
DDno
Char(20)
NOT NULL
主键
订单编号
DDdate
datetime
无
订单日期
DDHYno
char(20)
NOT NULL
外键
会员编
DDcount
Char(20)
不小于零
总金额
销售明细表
字段名称
数据类型
可否为空
约束条件
说明
DDno
Char(20)
NOT NULL
外键
订单编号
gno
Char(6)
NOT NULL
外键
商品编号
XSMXdj
char(20)
NOT NULL
单价
XSMXsl
int
不小于零
数量
会员表
字段名称
数据类型
可否为空
约束条件
说明
HYno
char(20
NOT NULL
主键
会员卡号
HYname
char(20)
NOT NULL
无
姓名
HYlxfs
char(20)
NOT NULL
无
联系方式
HYjf
char(20)
不小于零
积分
工作人员表:
字段名称
数据类型
可否为空
约束条件
说明
pno
char(7)
NOT NULL
主键
员工编号
pname
CHAR(10)
NOT NULL
无
姓名
page
char(3)
NOT NULL
无
年龄
psex
char(2)
NOT NULL
男或女
性别
ptele
CHAR(10)
NOT NULL
无
电话
6.数据库物理结构设计
² 商品表(商品编号、类别、名称、型号、进价、库存数量、销售价、售出数量)
CREATE TABLE goods
(gno CHAR(6) PRIMARY KEY,
gclass CHAR(7) NOT NULL,
gname CHAR(10) NOT NULL,
gtype CHAR(7) NOT NULL,
gin_price int CHECK (gin_price>= 0 ),
gout_price int CHECK (gout_price>= 0 ),
gin_number int CHECK (gin_number>= 0 ),
gout_number int CHECK (gout_number>= 0 ),
pno char(7) NOT NULL,
FOREIGN KEY (pno) REFERENCES people(pno),
)
插入商品数据
² 订单表(订单号,购买日期)
create table DD
(DDno char(20) primary key,
DDdate datetime ,
DDHYno char(20),
DDcount char(20) check(DDcount>=0),
foreign key(DDHYno) references HY(HYno),
);
插入订单数据
² 销售明细表(订单号,商品编号、单价、数量)
create table XSMX
(DDno char(20) not null,
gno char(6) not null,
XSMXdj char(20) not null,
XSMXsl int check(XSMXsl>=0),
primary key(DDno,gno),
foreign key(DDno) references DD(DDno),
foreign key(gno) references goods(gno),
);
插入销售明细数据
² 会员表(会员卡号,姓名,积分,联系方式)
create table HY
(HYno char(20) primary key,
HYname char(20) not null,
HYlxfs char(20) not null,
HYjf char(20),
check (HYjf>=0),
);
插入会员数据
² 工作人员表(员工编号,姓名,年龄,性别,电话)
CREATE TABLE people
(pno char(7) PRIMARY KEY,
pname CHAR(10) NOT NULL,
page char(3) NOT NULL,
psex char(2) NOT NULL,
ptele CHAR(10) NOT NULL
)
插入人员数据
7.主要功能实现
1.查询处理
(1) 查询goods表,将商品按商品号降序排列
select *
from goods
order by gno desc
(2) 查询pelple表中年龄大约22的员工号
select pno , page
from people
where page>22
(3)连接查询
查询管理‘001’号商品的工作人员编号、性别、年龄、姓名
select people.pno , page,psex,pname
from people join goods on goods.pno=people.pno
where gno='001'
(4)嵌套查询
查询管理编号为002的工作人员姓名,工作编号,性别
select pno,pname,psex
from people
where pno in(
select pno from goods
where gno='002'
(5)模糊查询
查询名字中有’张’字的员工姓名、性别、工作编号、年龄
SELECT pname, pno,psex,page
from people
where pname like '张%'
(6)查询订单号为'3303'的客户订购的商品编号,商品名称,商品数量,商品单价
select DDno,XSMX.gno ,XSMXsl,XSMXdj,gname
from XSMX join goods on XSMX.gno=goods.gno
where DDno='3303'
2.创建视图
(1) 商品号,商品型号,卖出价视图
create view A_1
as
select gno,gtype,gout_price
from goods
(2)工作人员编号,工作人员性别
create view A_2
AS
select pno,psex
from people
3.创建存储过程
(1)创建金额统计的存储过程
create procedure 金额统计(@st_gno char(6),@money int output)
as
DECLARE @out_price int
DECLARE @out_number int
SELECT@out_price=gout_price,@out_number=gout_number,@money=@out_price*@out_number
FROM goods
where gno=@st_gno
运行销售金额
declare @st_gno char(6),@money int
select @st_gno='005',@money=’12000’
exec 金额统计@st_gno,@money output
select *,gno=@st_gno,'销售金额'=@money
from goods
where gno=@st_gno
(2)创建打印订单的存储过程
create procedure 打印订单(@st_DDno char(6))
as
SELECTDD.DDno,DDdate,XSMXdj,XSMXsl,XSMXxj,XSMXzl,XSMXhjje,XSMX.gno,gclass,gname,gtype
FROM goods join XSMX on goods.gno=XSMX.gno join DD on XSMX.DDno=DD.DDno
where DD.DDno=@st_DDno
运行打印订单
declare @st_DDno char(6)
select @st_DDno='3301'
exec 打印订单@st_DDno
(3)创建视图创建查询库存的存储过程
create procedure 查询库存(@st_gno char(6),@number int output)
as
DECLARE @in_number int
DECLARE @out_number int
SELECT@in_number=gin_number,@out_number=gout_number,@number=@in_number-@out_number
FROM goods
where gno=@st_gno
运行查询库存
DECLARE @number int
DECLARE @st_gno char(6)
select @st_gno='0001'
exec 查询库存@st_gno,@number output
select gno=@st_gno,'当前库存'=@number
4.创建函数
(1)金额统计函数
CREATE FUNCTION fn_f1(@st_gno char(6))
RETURNS int
AS
BEGIN
DECLARE @out_price int
DECLARE @out_number int
DECLARE @money int
SELECT@out_price=gout_price,@out_number=gout_number,@money=@out_price*@out_number
FROM goods
where gno=@st_gno
RETURN @money
END
(2)运行统计函数
declare @st_gno char(6)
set @st_gno='0003'
SELECT dbo.fn_f1(@st_gno)
三.收获和体会
通过这次数据库的上机操作,我学到了很多东西,通过真实的上机操作,我明白了许多课上学习所学不到的东西,上课讲的基本上都是理论性的知识,而数据库乃至我们整个专业都是离不开上机操作,离不开实际的操作的,通过上机的实际操作,通过解决上机调试出现的各种错误,我更加明白了上机操作的重要性,通过此次系统的做了一个小的数据库,我基本掌握了数据库课上讲解的知识,虽然此次的数据库很小,但是我还是通过此明白了数据库建立的整个过程!此次上机操作我的收获很大,不光在数据库知识上,还在自信心上,以前觉得编程这种东西很难,自己不适合编程,但是通过此次操作,我觉得只要用心,其实这些并不是不能做到的,感谢学校和老师能给我们这次机会!
展开阅读全文