商品销售管理系统.docx
《商品销售管理系统.docx》由会员分享,可在线阅读,更多相关《商品销售管理系统.docx(33页珍藏版)》请在冰豆网上搜索。
商品销售管理系统
实习报告
题目:
商品销售管理系统
姓名:
学号:
**********
专业:
计算机科学与技术
班级:
一班
实验实习中心制
2014年7月1日
实习报告评语
实习报告成绩:
优良中及格不及格
指导老师签字:
年月日
1.设计内容
设计开发一个应用于商品销售管理系统,能够完善以下要求:
①一个公司目前需要一款商品销售关系系统,该公司有经理和员工。
②经理管理员工,对员工的信息可以进行增删改查。
③员工负责管理商品,对新进的商品进行添加操作,已有的商品进行修改和查询,对过时的商品进行下架处理。
员工负责销售商品,对销售的商品进行记录,对库存进行盘点和当日销售盘点。
员工负责对客户进行管理,包括新客户的录入,老客户信息的更新。
员工负责进货,对所进的货物进行统计和盘点。
2.设计目的
数据库课程设计是为数据库原理及应用课程而独立开设的实践性课程,对于巩固数据库知识,加强学生的实际动手能力和提高学生综合素质十分必要。
通过本实验达到以下目的:
①培养具有C/S和B/S模式的数据库应用软件系统的设计和开发能力。
②熟练掌握一种数据库系统(如SQLSERVER)的使用。
③熟练掌握一种数据库应用软件开发工具(如ASP、VB、VC和Java)的使用。
④通过设计实际的数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。
要求:
要求掌握数据库的设计的每个步骤;掌握数据库设计各阶段的设计内容、设计方法和工具。
3.设计过程
3.1需求分析
3.1.1用户需求
使用该系统的用户有两种人:
员工和经理。
㈠员工对于系统的功能要求如下:
⑴商品管理
①首次采购的商品,进行新商品入库管理;
②已有的商品,进行修改和查询的管理;
③过时的商品进行下架管理。
⑵客户管理
①新客户为其创建客户信息;
②老客户更新信息。
⑶修改登录密码
㈡经理对于系统的功能要求如下:
⑴员工表的查看;
⑵对于新员工为其创建员工信息;
⑶老员工的信息更新;
⑷员工辞职后信息删除。
3.1.2数据流图
3.1.2.1顶层数据流图
3.1.2.2第一层数据流图
3.1.2.3第二层数据流图
3.1.2.3.1经理对员工的第二层数据流图
3.1.2.3.2员工对商品的第二层数据流图
3.1.2.3.3员工对销售的第二层数据流图
3.1.2.3.4员工对进货的第二层数据流图
3.1.2.3.5员工对客户的第二层数据流图
3.1.3数据字典
(a)数据项:
系统涉及的数据项有20项,如表3-1-1所示。
表3-1-1数据项列表
数据项编号
数据项名
数据项含义
与其它数据项的关系
存储结构
别名
DI-1
YGBH
员工编号
Int(10)
员工编号
DI-2
YGXM
员工姓名
char(10)
员工姓名
DI-3
YGXB
员工性别
char
(2)
员工性别
DI-4
YGNL
员工年龄
Int(5)
员工年龄
DI-5
YGMM
员工密码
char(20)
员工密码
DI-6
SPBH
商品编号
Int(10)
商品编号
DI-7
SPM
商品名
char(10)
商品名
DI-8
LR
利润
Int(10)
利润
DI-9
KCL
库存量
Int(10)
库存量
DI-10
XSL
销售量
Int(10)
销售量
DI-11
JHJG
进货价格
Int(10)
进货价格
DI-12
CHJG
出货价格
Int(10)
出货价格
DI-13
JHL
进货量
Int(10)
进货量
DI-14
XSRQ
销售日期
DATE
销售日期
DI-15
QDRQ
清点日期
DATE
清点日期
DI-16
JHRQ
进货日期
DATE
进货日期
DI-17
GKBH
客户编号
Int(10)
客户编号
DI-18
GKXM
客户姓名
char(10)
客户姓名
DI-19
GKXB
客户性别
char
(2)
客户性别
DI-20
GKDH
客户电话
Int(10)
客户电话
(b)数据结构:
系统涉及的数据结构,如表3-1-2所示。
表3-1-2数据结构列表
数据结
构编号
数据结构名
数据结构
含义
组成
D1
YG
员工信息
YGBH,YGXM,YGXB,YGNL,YGMM
D2
SPXX
商品信息
SPBH,KCL,JHJG,CHJG
D31
XSXX
销售信息
SPBH,XSL,LR,XSRQ
D32
KCXX
库存信息
SPBH,KCL,QDRQ
D4
KH
客户信息
KHBH,KHXM,KHXB,KHDH
D5
JHJL
进货记录信息
SPBH,JHL,JHJG,JHRQ
3.1.4功能模块分析
根据用户需求,以及数据流图分析,提取出系统应该实现的功能,如图3-1-8所示
主要包括三大功能模块:
(1)员工管理:
对商品信息进行增、删、改、查的操作。
(2)商品管理模块:
包括销售管理、进货管理、出货管理。
(3)客户管理:
对客户的信息进行增、删、改、查的操作。
3.2概念设计阶段
分析了数据流图及数据字典,列出模块中涉及到的实体及基本E-R图。
(1)实体属性图
本系统的实体有:
商品实体、员工实体和客户实体。
(2)分E-R图
(3)基本E-R图
合并各分E-R图,消除属性冲突、命名冲突、结构冲突等三类冲突,得到初步E-R图,再消除不必要冗余,得到的基本E-R图,如图3.2.3所示:
3.3逻辑设计阶段
3.3.1关系模型
实体型转换为关系模式。
实体的属性就是关系的属性,实体的码就是关系的码。
对于实体间的联系则有以下不同的情况:
一个m:
n联系转换为一个关系模式。
与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
一个1:
n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
一个1:
1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
三个或三个以上实体间的一个多元联系可以转换为一个关系模式。
与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合具有相同码的关系模式可合并。
该系统中实体与实体联系分析如下:
由于经理与员工、员工与客户的联系方式是1:
n(一对多),可以将其之间的联系与n端实体员工、客户合并;而员工与商品之间的管理联系方式则是n:
m(多对多),这样要把它们之间的联系转化为独立的关系模式;
具体的基本E-R图向关系模型的转化如下:
员工:
YG(YGBH,YGXM,YGXB,YGNL,YGMM)
商品信息:
SPXX(SPBH,SPM,CHJG,LR)
销售信息:
XSXX(DDH,SPBH,YGBH,XSRQ,KHBH,XSL)
库存信息:
KCXX(SPBH,KCL,QDRQ)
客户:
KH(KHBH,GKXM,GKXB,GKDH)
进货:
JH(SPBH,JHL,JHJG,JHRQ)
(注:
标有直线下划线的为主属性,标有波浪线下划线的是外键属性)
3.3.2数据模型优化
判断每个模式是否满足3NF(是否存在部分函数依赖、传递函数依赖)
关系模式YG、SP、KCXX、KH、JH不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF;
关系模式XSXX存在传递函数依赖,所以将XSSS模式分解成两个关系模式SPXSXX和YGXSXX:
员工销售信息:
SPXSXX(DDH,YGBH,KHBH,XSRQ)
商品销售信息:
YGXSXX(DDH,SPBH,XSL)
3.4物理设计阶段
3.4.1物理设计阶段的目标和任务
数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:
(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。
3.4.2数据存储方面
为数据库中各基本表建立的索引如下:
由于基本YGXSXX的属性YGBH经常在查询条件中出现,在这个属性上建立聚簇索引;
3.4.3数据库物理设计
以下各表中的有下划线的列是关键字,有波浪下滑线的列是外关键字。
表3-4-1D1员工数据表
属性名
数据类型
类型宽度
小数位数
可否为空
员工编号
int
Notnull
员工姓名
char
10
Notnull
员工性别
char
2
Notnull
员工年龄
int
Notnull
员工密码
int
Notnull
表3-4-2D2商品信息数据表
属性名
数据类型
类型宽度
小数位数
可否为空
商品编号
int
Notnull
商品名
Char
10
Notnull
库存量
int
Notnull
进货价格
Number
10
2
Notnull
出货价格
Number
10
2
Notnull
利润
Number
10
2
Notnull
表3-4-3D31员工销售信息数据表
属性名
数据类型
类型宽度
小数位数
可否为空
订单号
Int
Notnull
员工编号
int
Notnull
客户编号
int
Notnull
销售日期
DATE
Notnull
表3-4-4D32商品销售信息数据表
属性名
数据类型
类型宽度
小数位数
可否为空
订单号
Int
Notnull
商品编号
int
Notnull
销售量
int
Notnull
表3-4-5D33库存信息数据表
属性名
数据类型
类型宽度
小数位数
可否为空
商品编号
int
Notnull
库存量
int
Notnull
清点日期
DATE
Notnull
表3-4-6D4客户表
属性名
数据类型
类型宽度
小数位数
可否为空
客户编号
int
Notnull
客户姓名
char
10
Notnull
客户性别
char
10
客户电话
int
表3-4-7D5进货记录表
属性名
数据类型
类型宽度
小数位数
可否为空
商品编号
int
Notnull
进货量
int
Notnull
进货价格
Number
10
2
Notnull
进货日期
DATE
Notnull
3.4.4数据库子模式定义物理设计
表3-4-8视图作用表
编号
用户子模式(View)
作用(共性:
提供数据保密和安全保护机制)
V-1
JLView
便于经理查询员工的基本信息
V-2
YG1View
用于员工查看商品信息
V-3
YG2View
用于员工查看商品销售表
表3-4-9员工表视图
属性名
数据类型
类型宽度
小数位数
可否为空
员工编号
int
Notnull
员工姓名
char
10
Notnull
员工性别
char
2
Notnull
员工年龄
int
Notnull
表3-4-10商品信息视图
属性名
数据类型
类型宽度
小数位数
可否为空
商品编号
int
Notnull
商品名
Char
Notnull
库存量
int
Notnull
进货价格
number
10
2
Notnull
出货价格
number
10
2
Notnull
利润
Number
10
2
Notnull
表3-4-11销售信息视图
属性名
数据类型
类型宽度
小数位数
可否为空
订单号
INT
Notnull
商品编号
int
Notnull
销售量
Int
Notnull
商品总利润
Number
10
2
Notnull
员工编号
Int
Notnull
客户编号
Int
Notnull
销售日期
DATE
Notnull
3.5数据库实施
3.5.1建立数据库
createdatabaseGoods;
3.5.2建立数据表
(1)员工信息表的建立:
CREATETABLE[dbo].[YGXX](
[员工编号][int]IDENTITY(1,1)NOTNULL,
[员工姓名][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[员工性别][char]
(2)COLLATEChinese_PRC_CI_ASNOTNULL,
[员工年龄][int]NOTNULL,
[员工密码][int]NOTNULL,
CONSTRAINT[PK_YGXX]PRIMARYKEYCLUSTERED
(
[员工编号]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
(2)商品信息表的建立
CREATETABLE[dbo].[SPXX](
[SPBH][int]NOTNULL,
[SPM][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[KCL][int]NOTNULL,
[JHJG][numeric](10,2)NOTNULL,
[CHJG][numeric](1,1)NOTNULL,
CONSTRAINT[PK_SPXX]PRIMARYKEYCLUSTERED
(
[SPBH]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
(3)员工销售信息表的建立
CREATETABLE[dbo].[YGXSXX](
[DDH][int]NOTNULL,
[YGBH][int]NOTNULL,
[KHBH][int]NOTNULL,
[XSRQ][datetime]NOTNULL,
CONSTRAINT[PK_YGXSXX]PRIMARYKEYCLUSTERED
(
[DDH]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
(4)商品销售信息表的建立
CREATETABLE[dbo].[SPXSXX](
[DDH][int]NOTNULL,
[SPBH][int]NULL,
[XSL][int]NULL,
CONSTRAINT[PK_SPXSXX]PRIMARYKEYCLUSTERED
(
[DDH]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
(5)库存信息表的建立
CREATETABLE[dbo].[KCXX](
[SPBH][int]NOTNULL,
[KCL][int]NOTNULL,
[QDRQ][datetime]NOTNULL,
CONSTRAINT[PK_KCXX]PRIMARYKEYCLUSTERED
(
[SPBH]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
(6)客户表的建立
CREATETABLE[dbo].[KH](
[KHBH][int]NOTNULL,
[KHXM][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[KHXB][char]
(2)COLLATEChinese_PRC_CI_ASNOTNULL,
[KHDH][int]NOTNULL,
CONSTRAINT[PK_KH]PRIMARYKEYCLUSTERED
(
[KHBH]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY])
(7)进货记录表的建立
CREATETABLE[dbo].[JHJL](
[SPBH][int]NOTNULL,
[JHL][int]NOTNULL,
[JHJG][numeric](10,2)NOTNULL,
[JHRQ][datetime]NOTNULL,
CONSTRAINT[PK_JHJL]PRIMARYKEYCLUSTERED
(
[SPBH]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
3.5.3建立视图
(1)用于经理查询员工表的视图定义如下:
CREATEVIEW[dbo].[经理查看视图]
AS
SELECT员工编号,员工姓名,员工性别,员工年龄
FROMdbo.员工信息
(2)用于员工查询商品信息的视图定义如下:
CREATEVIEW[dbo].[商品信息视图]
AS
SELECTdbo.商品信息.商品编号,dbo.商品信息.商品名,dbo.商品信息.库存量,dbo.进货记录.进货价格,dbo.商品信息.出货价格,
dbo.商品信息.利润
FROMdbo.商品信息INNERJOIN
dbo.进货记录ONdbo.商品信息.商品编号=dbo.进货记录.商品编号
(3)用于查询销售信息的视图定义如下:
CREATEVIEW[dbo].[销售信息视图]
AS
SELECTdbo.商品销售信息.订单号,dbo.商品信息视图.商品名,dbo.商品销售信息.商品编号,dbo.商品销售信息.销售量,
dbo.商品信息视图.利润*dbo.商品销售信息.销售量AS商品总利润,dbo.员工销售信息.销售日期
FROMdbo.商品信息视图INNERJOIN
dbo.商品销售信息ONdbo.商品信息视图.商品编号=dbo.商品销售信息.商品编号INNERJOIN
dbo.员工销售信息ONdbo.商品销售信息.订单号=dbo.员工销售信息.订单号
3.5.4建立索引
CREATECLUSTEREDINDEX[员工编号索引]ON[dbo].[员工销售信息]
(
[员工编号]ASC,
[订单号]ASC
)WITH(SORT_IN_TEMPDB=OFF,DROP_EXISTING=OFF,IGNORE_DUP_KEY=OFF,ONLINE=OFF)ON[PRIMARY]
3.5.5建立触发器
createtrigger[进货记录触发器]
on[dbo].[进货记录]
forinsert
as
declare@商品编号int
declare@进货量int
declare@库存量int
declare@清点日期datetime
select@商品编号=商品编号frominserted
select@进货量=进货量frominsertedwhere商品编号=@商品编号
select@库存量=0--from库存信息where商品编号=@商品编号
select@清点日期=getdate()
ifnotexists(select商品编号from库存信息where商品编号=@商品编号)
begin
insertinto库存信息values(@商品编号,@库存量,@清点日期)
update库存信息set库存量=(库存量+@进货量),清点日期=getdate()
where商品编号=@商品编号
end
else
begin
select@库存量=库存量from库存信息where商品编号=@商品编号
update库存信息set库存量=(库存量+@进货量),清点日期=getdate()
where商品编号=@商品编号
End
createtrigger[销售触发器]
on[dbo].[商品销售信息]
forinsert
as
declare@商品编号int
declare@销售量int
declare@库存量int
select@商品编号=商品编号frominserted
select@销售量=销售量frominsertedwhere商品编号=@商品编号
begin
select@库存量=库存量from库存信息where商品编号=@商品编号
update库存信息set库存量=(库存量-@销售量),清点日期=getdate()
where商品编号=@商品编号
end
3.5.6创建各个功能的存储过程
编号
存储过程名称
定义
作用
P-1
YGXX_Insert
详见附录1
在YGXX中插入一元组
P-2
SPXX_Insert
详见附录2
在SPXX中插入一元组
P-3
KH_Insert
详见附录3
在KH中插入一元组
P-4
YGXSXX_Insert
详见附录4
在YGXSXX中插入一元组
P-5
SPXSXX_Insert
详见附录5
在SPXSXX中插入一元组
P-6
KCXX_Insert
详见附录6
在KCXX中插入一元组
P-7
JHJL_Insert
详见附录7
在JHJL中插入本人信息
4.系统的实现
(1)经理登录控制台,经理输入用户