资源描述
第一章 需求分析
1.1设计目标
中小型销售公司普遍存在员工素质偏低、效率不高、管理混乱等问题。本系统正是基于这些问题而设计。使用该本系统,可以规范销售仓储涉及的基本操作,提高员工工作效率,减少用工成本,规范管理,增加收益。
1.2功能要求
本系统针对仓储销售等环节所遇到的问题,设有商品信息管理、供应商信息管理、仓库信息管理、进货管理、销售管理五个管理功能模块,来实现对商品、供应商、客户、仓储、、进货、销售的规范管理。其中
(1)商品销售信息管理涉及商品信息添加、修改、查询、删除
(2)供应商信息管理涉及供应商信息的添加、修改、查询、删除
(3)仓库信息管理涉及仓储商品库存信息的添加、修改、查询、删除
(4)进货管理涉及进货单信息的生成和商品仓储信息的更新
(5)销售管理涉及销售单的生成和商品仓储信息的更新。
(6)客户信息管理涉及客户信息的添加、修改、查询、删除
1.2.1信息要求
系统能够随时根据需要,更新数据库的信息。对于录入的信息,要准确,详细,符合属性要求。
1.2.2操作要求
系统要能在提高管理效率的基础上,力求操作简单、易学、实用、方便,同时还不能对操作用户有太高的素质要求。
1.3可行性分析
1.3.1经济可行性
因为通过计算机控制,各种信息可以很容易的做到随时更新、维护,有利于新息的统一管理和维护,因此可以节约许多的人力和物力,方便管理,由此可以减少不必要的开支,同时该系统可以提高学校的管理效率,节约了大量资金,所以从经济上完全是可行的。
1.3.2技术可行性
数据库是数据管理的最新技术,SQL语言能够很好的和其他界面编程语言工具(如C#)结合。用户只需面对操作界面,而不用管后台处理工作,方便用户使用。
综上所述,开发该系统具有较强的可行性。
第二章 概念结构设计
2.1概念设计
概念模型是对信息世界建模,所以概念模型应能够准确的描述出信息世界的常用概念。在需求分析阶段所得到的应用需求应首先抽象为信息世界的结构,才能更好的、更准确的用某一DBMS实现这些需求。而概念设计则是基于是完成需求分析后提供的需求说明书,用概念数据模型表示数据及其相互间的关系,这种数据模型是与DBMS无关的、面向现实世界的、易于被人所理解和接受的数据模型,其独立于计算机的数据模型,独立于计算机的软硬件系统,与用户进行交流十分方便。
概念性数据模型关心的是如何完整、正确地反映客观实际情况,是一种容易被人们理解的直观的数据库结构模式。同时易于更改、易于向网状、关系、层次等各种数据模型转换。概念性数据在用户和设计者之间建立了桥梁,它是整个数据库设计的关键。
概念设计中常用自顶而下的实体分析方法,即首先定义全局概念结构的框架,然后逐步细化。描述概念模型的有力工具是E-R模型,是建立概念性数据模型的有力工具。
2.2数据抽象与局部视图设计
2.2.1数据抽象
根据需求分析的数据进行分类抽象,形成了商品、供应商、仓库、客户四个实体类型。
1、 商品概念模型(图2-1)
商品
规格
商品编号
品牌
类型
进价
售价
图2-1商品概念模型
2、 供应商概念模型(图2-2)
供应商
地址
供应商编号
名称
电话
银行账号
信誉度
图2-2供应商概念模型
3、 仓库概念模型(图2-3)
仓库
商品编号
联系电话
库存量
图2-3仓库概念模型
4、客户管理模型(图2-4)
客户
客户编号
客户类型
联系电话
名称
图2-4客户管理模型
5、销售员管理模型(图2-5)
销售员
销售员编号
类型
联系方式
用户名
图2-5销售员管理模型
2.2.2基本E-R图设计
基本E-R图(图2-6)
库存量
供应商
地址
供应商编号
名称
电话
银行账号
信誉度
商品
规格
商品编号
品牌
类型
仓库
商品编号
联系电话
存储
供应
数量
进货时间
客户
客户编号
客户类型
姓名
联系电话
数量
销售
销售编号
进价
售价
图2-6 基本E-R图
第三章 逻辑结构设计
3.1体育用品销售管理系统数据模型
关系模型的逻辑结构是一组关系模式的集合。E-R图则是有实体型、实体的属性和实体型之间的联系3个要素组成。所以将E-R图转换成关系模型实际上就是将实体型、实体的属性和实体型之间的联系转换成关系模式,转换过程中遵循的规则:
因为此系统E-R图中的联系为1:n或m:n,所以在转换过程中将实体间的多元联系转换成一个关系模型,该关系模型中的码由各实体的码组成。
由概念设计的E-R图抽象出来的关系模型如下所示:
其中主键用粗体标注,外键用下划线标注。
3.2数据模型的优化
本系统中,已按照数据依赖的理论对上面的关系模式进行了逐一分析,在进行了多次分解和比对后各关系模式已达到第三范式,虽然这不一定是最好关系模式,但此模式对于整个数据库设计来讲还是比较合理的,数据的操作效率和存储空间的利用效率都比较高。虽然有些查询比较难实现,但可以通过建立视图来实现。
第四章 物理结构设计
由逻辑设计抽象出来的关系表如下所示:
表4-1商品表
属性列
字段类型
字段长度
主码
商品编号
char
9
是
品牌
char
20
类型
char
20
规格
char
20
进价
float
售价
float
表4-2供应商表
属性列
字段类型
字段长度
主码
供应商编号
char
9
是
名称
char
20
地址
Char
20
电话
char
20
银行账号
Char
20
信誉度
Char
4
表4-3客户表
属性列
字段类型
字段长度
主码
客户编号
char
9
是
名称
char
10
联系方式
char
20
客户类型
Char
6
类型
char
8
表4-4仓库表
属性列
字段类型
字段长度
主码
商品编号
char
9
是
联系电话
char
20
库存量
int
表4-5进货表
属性列
字段类型
字段长度
主码
商品编号
char
9
是
供应商编号
Char
9
是
数量
Int
进货时间
Datetime
表4-6销售表
属性列
字段类型
字段长度
主码
商品编号
char
9
是
客户编号
Char
9
是
数量
int
销售员编号
char
9
是
卖出时间
datetime
表4-7用户表
属性列
字段类型
字段长度
主码
用户名
char
9
是
用户密码
char
19
用户类型
char
8
表4-8销售员表
属性列
字段类型
字段长度
主码
销售员编号
char
10
是
用户名
char
10
密码
char
20
类型
Char
8
第五章 数据库实施
5.1数据库创建
5.1.1创建数据库
create database 体育用品销售系统管理
on
(
name = 体育用品销售管理_data,
filename='d:\data\体育用品销售管理_data.mdf',
size=10MB,
maxsize=100MB,
filegrowth=10%
)
log on
(
name= 体育用品销售管理_log,
filename='f:\data\体育用品销售管理_log.ndf',
size=10MB,
maxsize=100MB,
filegrowth=1MB
)
5.1.2创建关系模型
create table GYS --供应商
(
供应商编号char(9) primary key,
名称char(20) not null,
地址char(20)not null,
电话char(20)not null,
银行账号char(20)not null,
信誉度char(4)
)
create table SPB --商品表
(
商品编号char(9) primary key,
品牌 char(20)not null,
类型char(20) not null,
售价float not null,
进价float not null,
规格char (20)not null
)
create table JHD --进货单(供应关系)
(
供应商编号char(9),
商品编号char (9),
数量int not null,
进货时间datetime
primary key (供应商编号,商品编号),
foreign key (商品编号) references SPB (商品编号),
foreign key (供应商编号) references GYS (供应商编号)
)
create table KCB --库存表
(
商品编号char(9) ,
联系电话char(20),
库存量int,
primary key(商品编号),
foreign key (商品编号) references SPB (商品编号)
)
create table selltable--售货员表
(
销售员编号char(10) primary key,
用户名char(10)not null,
密码char(20)not null,
类型char(8)
)
create table XSD --销售单
(
销售员编号char(10),
商品编号char(9) not null,
数量int not null,
卖出时间datetime,
客户编号char(9),
primary key(销售员编号,商品编号,客户编号),
foreign key (商品编号) references SPB (商品编号),
foreign key (销售员编号) references selltable (销售员编号),
foreign key (客户编号) references KHB (客户编号),
)
create table YHB --管理员表
(
用户名char(9) primary key,
用户密码char(19) not null,
用户类型char(8)
)
--客户表
create table KHB
(
客户编号char(9)primary key,
客户类型char(6) check(客户类型in('高级','普通')),
姓名char(10),
联系电话char(20)not null,
类型char(8)
)
5.2各功能实现
5.2.1登录界面
如图5-1
图5-1登录界面
select * from YHB WHERE 用户名='董世磊'and 用户密码= '20094051236'and 用户类型= '管理员'
select * from KHB WHERE 用户名='王楠'and 用户密码= 'A1'and 用户类型= '客户'
select * from YHB WHERE 用户名='董'and 用户密码= '3066'and 用户类型= '销售员'
5.2.2商品信息管理
如图5-2
图5-1商品信息管理视图
--销售员查看商品信息
create procedure 销售员查看商品信息@商品编号char(9)
as
begin
if exists(select * from SPB where 商品编号= @商品编号)
begin
select 商品编号,品牌,类型,售价,规格from SPB where 商品编号= @商品编号
end
else
print'不存在该商品!'
end
exec 销售员查看商品信息'10003'
--客户查看商品信息
create procedure 客户查看商品信息@商品编号char(9)
as
begin
if exists(select * from SPB where 商品编号= @商品编号)
begin
select 商品编号,品牌,类型,售价,规格from SPB where 商品编号= @商品编号
end
else
print'不存在该商品!'
end
exec 客户查看商品信息'10003'
--管理员删除商品信息
create trigger 删除商品信息
on SPB
instead of delete
as
begin
declare @商品编号char(9)
select @商品编号= 商品编号from deleted
delete JHD where 商品编号= @商品编号
delete XSD where 商品编号= @商品编号
delete KCB where 商品编号= @商品编号
end
delete SPB where 商品编号= '10001'
--管理员修改商品信息
create procedure 修改商品信息
@商品编号char(9),
@品牌 char(20),
@类型char(20),
@售价float,
@进价float,
@规格char(20)
as
begin
if exists(select * from SPB where 商品编号= @商品编号)
begin
update SPB
set
品牌=@品牌,
类型=@类型,
售价=@售价,
进价=@进价,
规格=@规格
where 商品编号= @商品编号
print'商品信息修改成功!'
end
else
print'不存在该商品!'
end
exec 修改商品信息'10001','李宁','T恤衫',189,100,'XXL'
--管理员按商品编号查看商品信息
create procedure 查看商品信息@商品编号char(9)
as
begin
if exists(select * from SPB where 商品编号= @商品编号)
begin
select * from SPB where 商品编号= @商品编号
end
else
print'不存在该商品!'
end
exec 查看商品信息'10002'
--管理员按商品品牌查看商品信息
create procedure 查看商品品牌信息@品牌char(20)
as
begin
if exists(select * from SPB where 品牌= @品牌)
begin
select * from SPB where 品牌= @品牌
end
else
print'不存在该品牌商品!'
end
exec 查看商品品牌信息'李宁'
--管理员按商品类型查看商品信息--规格
create procedure 查看商品类型信息@类型char(20)
as
begin
if exists(select * from SPB where 类型= @类型)
begin
select * from SPB where 类型= @类型
end
else
print'不存在该类型商品!'
end
exec 查看商品类型信息'T恤衫'
--管理员按商品规格查看商品信息
create procedure 查看商品规格信息@规格char(20)
as
begin
if exists(select * from SPB where 规格= @规格)
begin
select * from SPB where 规格= @规格
end
else
print'不存在该规格商品!'
end
exec 查看商品规格信息'XL'
------------------------
insert into SPB
values('10001','李宁','T恤衫',189,100,'XL')
insert into SPB
values('10002','李宁','篮球鞋',189,100,'ML')
insert into SPB
values('10003','adidas','篮球',189,100,'XXL')
insert into SPB
values('10004','adidas','篮球鞋',189,100,'LL')
insert into SPB
values('10005','NIKE','跑鞋',189,100,'XXL')
insert into SPB
values('10006','NIKE','T恤衫',189,100,'ML')
5.2.3供应商信息管理
如图5-3
图5-3供应商信息管理
--管理员删除供应商信息同时要级联删除进货单的信息
create trigger 删除供应商
on GYS
instead of delete
as
begin
declare @供应商编号char(9)
select @供应商编号= 供应商编号from deleted
delete from JHD where 供应商编号= @供应商编号
end
delete from GYS where 供应商编号= '1005'
--管理员修改供应商信息
create procedure 修改供应商
@供应商编号char(9),
@名称char(20),
@地址char(20),
@电话char(20),
@银行账号char(20),
@信誉度char(4)
as
begin
if exists(select * from GYS where 供应商编号= @供应商编号)
begin
update GYS
set
名称=@名称,
地址=@地址,
电话=@电话,
银行账号=@银行账号,
信誉度=@信誉度
where 供应商编号= @供应商编号
print'供应商信息修改成功!'
end
else
print'不存在该供应商!'
end
exec 修改供应商'1001','申通体育','爱民道号','6666666','123465789','低'
--管理员查看供应商信息
create procedure 查看供应商@供应商编号char(9)
as
begin
if exists(select * from GYS where 供应商编号= @供应商编号)
begin
select * from GYS where 供应商编号= @供应商编号
end
else
print'不存在该供应商!'
end
exec 查看供应商'1002'
--管理员查看高或低信誉供应商信息
create procedure 查看供应商信誉@信誉度char(4)
as
begin
if exists(select * from GYS where 信誉度= @信誉度)
begin
select * from GYS where 信誉度= @信誉度
end
else
print'不存在该信誉度的供应商!'
end
exec 查看供应商信誉'高'
5.2.4销售员信息管理
如图5-4
图5-4销售员信息管理
--管理员删除销售员信息
create procedure 删除销售员信息@销售员编号char(10)
as
begin
if exists(select *from selltable where 销售员编号=@销售员编号)
begin
delete selltable
where 销售员编号=@销售员编号
print'信息删除成功!'
end
else
print'没有该销售员,无法进行删除!'
end
exec 删除销售员信息'10'
--管理员修改销售员信息
create procedure 修改销售员信息
@销售员编号char(10),
@用户名char(10),
@密码char(20)
as
begin
if exists(select *from selltable where 销售员编号=@销售员编号)
begin
update selltable
set 用户名=@用户名,
密码=@密码
where 销售员编号=@销售员编号
print'信息修改成功!'
end
else
print'没有该销售员,无法进行修改!'
end
exec 修改销售员信息'1','董','3066'
--管理员查看销售员信息
create procedure 查看销售员信息@销售员编号char(10)
as
begin
if exists(select *from selltable where 销售员编号=@销售员编号)
begin
select *from selltable where 销售员编号=@销售员编号
end
else
print'没有该销售员!'
end
exec 查看销售员信息'1'
--客户查看销售员信息
create procedure 客户查看销售员信息@销售员编号char(10)
as
begin
if exists(select *from selltable where 销售员编号=@销售员编号)
begin
select 销售员编号,用户名from selltable where 销售员编号=@销售员编号
end
else
print'没有该销售员!'
end
exec 客户查看销售员信息'1'
insert into selltable
values('1','董','6899','销售员')
insert into selltable
values('2','王','0369','销售员')
insert into selltable
values('3','王','0369','销售员')
5.2.5客户信息管理
如图5-5
图5-5客户信息管理
--管理员,销售员删除客户信息
create trigger 级联删除客户信息
on KHB
instead of delete
as
begin
declare @客户编号char(9)
select @客户编号=客户编号from deleted
delete from XSD where 客户编号=@客户编号
end
delete KHB where 客户编号='A1'
--管理员,销售员修改客户信息
create procedure 修改客户信息
@客户编号char(9),
@客户类型char(6),
@姓名char(10),
@联系电话char(20)
as
begin
if exists(select *from KHB where 客户编号=@客户编号)
begin
update KHB
set 客户类型=@客户类型,
姓名=@姓名,
联系电话=@联系电话
where 客户编号=@客户编号
print'信息修改成功!'
end
else
print'不存在该客户,无法进行修改!'
end
exec 修改客户信息'A5','高级','苏南','15239686890'
--管理员,销售员查看客户信息
create procedure 查看客户信息@客户编号char(9)
as
begin
if exists(select *from KHB where 客户编号=@客户编号)
begin
select *from KHB where 客户编号=@客户编号
end
else
print'不存在该客户!'
end
exec 查看客户信息'A1'
--管理员,销售员按客户类型查看客户信息
create procedure 按客户类型查看客户信息@客户类型char(9)
as
begin
if exists(select *from KHB where 客户类型=@客户类型)
begin
select *from KHB where 客户类型=@客户类型
end
else
print'不存在该类型客户!'
end
exec 按客户类型查看客户信息'高级'
insert into KHB
values('A1','高级','王楠','15239686845')
insert into KHB
values('A2','高级','莉莉','15239686834')
insert into KHB
values('A3','普通','李斌','15239686867')
insert into KHB
values('A4','高级','刘海','15239686889')
insert into KHB
values('A5','普通','苏南','15239686890')
5.2.6销售信息管理
如图5-6
图5-6销售系统管理
--管理员删除销售信息
create procedure 删除销售信息@销售员编号char(9),@商品编号char(9)
as
begin
if exists(select * from XSD where 销售员编号=@销售员编号and 商品编号= @商品编号)
begin
delete XSD where 销售员编号=@销售员编号and 商品编号= @商品编号
print'信息删除成功!'
end
else
print'不存在该供应商供应的该商品,无法进行删除!'
end
exec 删除销售信息'1','10004'
--管理员按卖出时间删除销售信息
create procedure 按卖出时间删除销售信息@卖出时间datetime
as
begin
if exists(select * from XSD where 卖出时间< @卖出时间)
begin
delete XSD
where 卖出时间< @卖出时间
print'销售信息删除成功!'
end
else
print'不存在该销售员销售的该商品!'
end
exec 按卖出时间删除销售信息'20110101'
--管理员按卖出时间查看销售信息
create procedure 按卖出时间查看销售信息@卖出时间datetime
as
begin
if exists(select * from XSD where 卖出时间=@卖出时间)
begin
select *from XSD where 卖出时间=@卖出时间
end
else
print'该时间没有卖出货物!'
end
EXEC 按卖出时间查看销售信息'20110912'
--管理员按大于卖出时间查看销售信息
create procedure 按大于卖出时间查看销售信息@卖出时间datetime
as
begin
if exists(select * from XSD where 卖出时间>@卖出时间)
begin
select *from XSD where 卖出时间>@卖出时间
end
else
print'该时间没有卖出货物!'
end
exec 按大于卖出时间查看销售信息'20110101'
--管理员按小于卖出时间查看销售信息
create procedure 按小于卖出时间查看销售信息@卖出时间datetime
as
begin
if exists(select * from XSD where 卖出时间<@卖出时间)
begin
select *from XSD where 卖出时间<@卖出时间
end
else
print'该时间没有卖出货物!'
end
exec 按小于卖出时间查看销售信息'20121010'
--管理员按商品编号查看销售信息
create procedure 按商品编号查看销售信息@商品编号char(9)
as
begin
if exists(select * from XSD where 商品编号=@商品编号)
begin
select *from XSD where 商品编号=@商品编号
end
else
print'没有卖出该编号的货!'
end
exec 按商品编号查看销售信息'10003'
insert into XSD
values('1','10001',20,'20111020','A1')
insert into XSD
values('1','10004',2,'20121020','A2')
insert into XSD
values('1','10006',10,'20121120','A3')
insert into XSD
values('2','10002',20,'20120820','A4')
insert into XSD
values('2','10003',40,'20121220','A5')
insert into XSD
values('2','10005',6,'20120520','A2')
insert into XSD
values('2','10004',6,'20100520','A1')
5.2.7进货信息管理
如图5-7
图5-7进货信息管理
--管理员删除进货信息
create procedure 删除进货信息@供应商编号char(9),@商品编号char(9)
as
begin
if exists(select * from JHD where 供应商编号=@供应商编号and 商品编号= @商品编号)
begin
delete JHD where 供应商编号=@供应商编号and 商品编号= @商品编号
end
else
print'不存在该供应商供应的该商品,无法进行删除!'
end
exec 删除进货信息'1002','10005'
--管理员修改进货信息
create procedure 修改进货信息
@供应商编号char(9),
@商品编号char (9),
@数量int,
@进货时间datetime
as
begin
if exists(select * from JHD where 供应商编号=@供应商编号and 商品编号= @商品编号)
begin
update JHD
set 数量=@数量,
进货时间=@进货时间
where 供应商编号=@供应商编号and 商品编号= @商品编号
print'进货信息修改成功!'
end
else
print'不存在该供应商供应的该商品!'
end
exec 修改进货信息'1001','10006',200,'21210912'
--管理员按进货时间查看进货信息
create procedure 按进货时间查看进货信息@进货时间datetime
as
begin
if exists(select * from JHD where 进货时间=@进货时间)
begin
select *from JHD where 进货时间=@进货时间
end
else
print'该时间没有进货!'
end
EXEC 按进货时间查看进货信息'20110912'
--管理员按商品编号查看进货信息
create procedure 按商品编号查看进货信息@商品编号char(9)
as
begin
if exists(select * from JHD where 商品编号=@商品编号)
begin
select *from JHD where 商品编号=@商品编号
end
else
print'没有进该编号的货!'
end
exec 按商品编号查看进货信息'10003'
insert into JHD
values('1001','10006',100,'20110912')
insert into JHD
values('1002','10005',100,'20110923')
insert into JHD
values('1001','10004',100,'20111012')
insert into JHD
values('1003','10003',100,'20111112')
insert into JHD
values('1002','10002',100,'20111212')
insert into JHD
values('1001','10001',100,'20120112')
insert into JHD
values('1005','10001',100,'20120412')
5.2.8仓库信息管理
如图5-8
图5-8仓库信息管理
--管理员查看库存信息
create procedure 查看库存信息@商品编号char(9)
as
begin
if exists(select * from KCB where 商品编号=@商品编号)
begin
select *from KCB where 商品编号=@商品编号
end
else
展开阅读全文