资源描述
实 习 报 告
题目:商品销售管理系统
姓名:
学号:
专业:
班级:
实 验 实 习 中 心 制
20一五 年 6 月 23 日
实习报告评语
实习报告成绩:
优 良 中 及格 不及格
指导老师签字:
年 月 日
目录
1.设计内容 1
2.设计目的 1
3.设计过程 2
3.1需求分析 2
3.1.1用户需求 2
3.1.2数据流图 2
3.1.3数据字典 10
3.1.4功能模块分析 11
3.2概念设计阶段
3.3逻辑设计阶段
3.3.1关系模型
3.3.2数据模型优化
3.4物理设计阶段
3.4.1物理设计阶段的目标和任务
3.4.2数据存储方面
3.4.3数据库物理设计
3.4.4数据库子模式定义物理设计
3.5数据库实施
3.5.1建立数据库
3.5.2建立数据表
3.5.3建立视图
3.5.4建立索引
3.5.5建立触发器
3.5.6创建各个功能的存储过程
4. 系统的实现
5. 实习总结
6.参考文献
7.附件
1.设计内容
设计开发一个应用于商品销售管理系统,能够完善以下要求:
①一个公司目前需要一款商品销售关系系统,该公司有经理和员工。
②经理管理员工,对员工的信息可以进行增删改查。
③员工负责管理商品,对新进的商品进行添加操作,已有的商品进行修改和查询,对过时的商品进行下架处理。
员工负责销售商品,对销售的商品进行记录,对库存进行盘点和当日销售盘点。
员工负责对客户进行管理,包括新客户的录入,老客户信息的更新。
员工负责进货,对所进的货物进行统计和盘点。
2.设计目的
数据库课程设计是为数据库原理及应用课程而独立开设的实践性课程,对于巩固数据库知识,加强学生的实际动手能力和提高学生综合素质十分必要。通过本实验达到以下目的:
①培养具有C/S和B/S模式的数据库应用软件系统的设计和开发能力。
②熟练掌握一种数据库系统(如SQL SERVER)的使用。
③熟练掌握一种数据库应用软件开发工具(如ASP、VB、VC和Java)的使用。
④通过设计实际的数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。
要求:
要求掌握数据库的设计的每个步骤;掌握数据库设计各阶段的设计内容、设计方法和工具。
3.设计过程
3.1需求分析
3.1.1用户需求
使用该系统的用户有两种人:员工和经理。
㈠员工对于系统的功能要求如下:
⑴商品管理
①首次采购的商品,进行新商品入库管理;
②入库的商品进行上架管理;
③已有的商品,进行修改和查询的管理;
④过时的商品进行下架管理。
(2)客户管理
① 老客户更新信息;
② 新客户为其创建客户信息;
③ 查询所有客户信息。
(3)销售管理
①商品售出;
②退回商品入库。
(4)修改登录密码
㈡经理对于系统的功能要求如下:
⑴ 员工管理
① 员工表的查看;
② 对于新员工为其创建员工信息;
③ 老员工的信息更新;
④ 员工辞职后信息删除;
⑤ 员工业绩查看。
⑵库存管理
① 库存盘点;
② 当日销售盘点。
⑶修改登录密码。
3.1.2数据流图
3.1.2.1 顶层数据流图
图 3-1-1顶层数据流图
3.1.2.2 第一层数据流图
图 3-1-2第一层数据流图
3.1.2.3 第二层数据流图
3.1.2.3.1 经理对员工的第二层数据流图
图3-1-3 经理对员工的第二层数据流图
3.1.2.3.2 员工对商品的第二层数据流图
图3-1-4员工对商品的第二层数据流图
图 3-1-4
3.1.2.3.3 员工对库存的第二层数据流图
图 3-1-5员工对库存的第二层数据流图
3.1.2.3.4 员工对销售的第二层数据流图
图 3-1-6员工对销售的第二层数据流图
3.1.2.3.5 员工对进货的第二层数据流图
图3-1-7员工对进货的第二层数据流图
3.1.2.3.6 员工对客户的第二层数据流图
图3-1-8员工对客户的第二层数据流图
3.1.2.3.7 员工和经理修改密码的第二层数据流图
图3-1-9员工和经理修改密码的第二层数据流图
3.1.3数据字典
(a)数据项:系统涉及的数据项有20项,如表3-1-1所示。
表3-1-1数据项列表
数据项编号
数据项名
数据项含义
与其它数据项的关系
存储结构
别名
DI-1
YGBH
员工编号
Int
员工编号
DI-2
YGXM
员工姓名
char(10)
员工姓名
DI-3
YGXB
员工性别
char(2)
员工性别
DI-4
YGNL
员工年龄
Int
员工年龄
DI-5
YGMM
员工密码
char(20)
员工密码
DI-6
SPBH
商品编号
Int
商品编号
DI-7
SPM
商品名
char(10)
商品名
DI-8
LR
利润
Int
利润
DI-9
KCL
库存量
Int
库存量
DI-10
XSL
销售量
Int
销售量
DI-11
JHJG
进货价格
Int
进货价格
DI-12
CHJG
出货价格
Int
出货价格
DI-一三
JHL
进货量
Int
进货量
DI-14
XSRQ
销售日期
DATE
销售日期
DI-一五
QDRQ
清点日期
DATE
清点日期
DI-16
JHRQ
进货日期
DATE
进货日期
DI-17
KHBH
客户编号
Int
客户编号
DI-一八
KHXM
客户姓名
char (10)
客户姓名
DI-19
KHXB
客户性别
char(2)
客户性别
DI-20
KHDH
客户电话
Int
客户电话
(b)数据结构:系统涉及的数据结构,如表3-1-2所示。
表3-1-2数据结构列表
数据结
构编号
数据结构名
数据结构
含义
组成
D1
YG
员工信息
YGBH,YGXM,YGXB,YGNL,YGMM
D2
SPXX
商品信息
SPBH,KCL,JHJG,CHJG
D3
XSXX
销售信息
SPBH,XSL,LR,XSRQ
D4
KCXX
库存信息
SPBH,KCL,QDRQ
D5
KH
客户信息
KHBH,KHXM,KHXB,KHDH
D6
JHJL
进货记录信息
SPBH,JHL,JHJG,JHRQ
D7
YGXSXX
员工销售信息
DDH,YGBH,KHBH,XSRQ
D8
SPXSXX
商品销售信息
DDH,SPBH,XSL,XSRQ
3.1.4功能模块分析
根据用户需求,以及数据流图分析,提取出系统应该实现的功能,如Error! Reference source not found. 3-1-8所示
主要包括三大功能模块:
(1)员工管理:对员工信息进行增、删、改、查的操作。
(2)商品管理模块:包括销售管理、进货管理、出货管理。
(3)客户管理:对客户的信息进行增、删、改、查的操作。
商品销售管理系统
员
工
管
理
删除员工
修改员工
查询员工
增加员工
商
品
管
理
进货管理
出货管理
销售管理
客
户
管
理
删除客户
修改客户
查询客户
增加客户
图 3-1-10 功能模块图
3.2概念设计阶段
分析了数据流图及数据字典,列出模块中涉及到的实体及基本E-R图。
(1) 实体属性图
本系统的实体有:商品实体、员工实体、客户实体、库存实体和经理实体。
图 3-2-1 商品实体
图3-2-2 员工实体
图3-2-3 客户实体
图3-2-4 库存实体
图 3-2-5 经理实体
(2)基本E-R图
基本E-R图,如Error! Reference source not found.所示:
图 3-2-6 基本E-R图
3.3逻辑设计阶段
3.3.1关系模型
实体型转换为关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况:
一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合具有相同码的关系模式可合并。
具体的基本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(JHLSH,SPBH,JHL,JHJG,JHRQ)
经理:JL(JLXM,JLMM)
(注:标有直线下划线的为主属性,标有波浪线下划线的是外键属性)
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-1 D1员工数据表
属性名
数据类型
类型宽度
小数位数
可否为空
员工编号
int
Not null
员工姓名
char
10
Not null
员工性别
char
2
Not null
员工年龄
int
Not null
员工密码
int
Not null
表3-4-2 D2商品信息数据表
属性名
数据类型
类型宽度
小数位数
可否为空
商品编号
int
Not null
商品名
Char
10
Not null
库存量
int
Not null
进货价格
Number
10
2
Not null
出货价格
Number
10
2
Not null
利润
Number
10
2
表3-4-3 D31员工销售信息数据表
属性名
数据类型
类型宽度
小数位数
可否为空
订单号
Int
Not null
员工编号
int
Not null
客户编号
int
Not null
销售日期
DATETIME
Not null
表3-4-4 D32商品销售信息数据表
属性名
数据类型
类型宽度
小数位数
可否为空
订单号
Int
Not null
商品编号
int
Not null
销售量
int
Not null
销售日期
DATETIME
表3-4-5 D33库存信息数据表
属性名
数据类型
类型宽度
小数位数
可否为空
商品编号
int
Not null
库存量
int
Not null
清点日期
DATETIME
Not null
表3-4-6 D4 客户表
属性名
数据类型
类型宽度
小数位数
可否为空
客户编号
int
Not null
客户姓名
char
10
Not null
客户性别
char
2
客户电话
char
一五
Not null
表3-4-7 D5进货记录表
属性名
数据类型
类型宽度
小数位数
可否为空
进货流水号
Int
Not null
商品编号
int
Not null
进货量
int
Not null
进货价格
Number
10
2
Not null
进货日期
DATETIME
Not null
表3-4-7 D6经理表
属性名
数据类型
类型宽度
小数位数
可否为空
经理姓名
Char
10
Not null
经理密码
Char
20
Not null
3.4.4数据库子模式定义物理设计
表3-4-8 视图作用表
编号
用户子模式(View)
作用(共性:提供数据保密和安全保护机制)
V-1
JL1View
便于经理查询员工的基本信息
V-2
JL2View
便于经理查看当日销售信息
V-3
JL3View
便于经理查看当日库存信息
V-4
YG1View
用于员工查看商品信息
V-5
YG2View
用于员工查看商品销售表
表3-4-9 员工表视图
属性名
数据类型
类型宽度
小数位数
可否为空
员工编号
int
Not null
员工姓名
char
10
Not null
员工性别
char
2
Not null
员工年龄
int
Not null
表3-4-10 当日销售信息视图
属性名
数据类型
类型宽度
小数位数
可否为空
商品编号
int
Not null
商品名
Char
10
Not null
库存量
int
Not null
表3-4-11 当日库存信息视图
属性名
数据类型
类型宽度
小数位数
可否为空
商品编号
int
Not null
商品名
Char
10
Not null
库存量
int
Not null
清点日期
DATETIME
Not null
表3-4-12 商品信息视图
属性名
数据类型
类型宽度
小数位数
可否为空
商品编号
int
Not null
商品名
Char
10
Not null
库存量
int
Not null
进货价格
number
10
2
Not null
出货价格
number
10
2
Not null
利润
Number
10
2
Not null
表3-4-一三 销售信息视图
属性名
数据类型
类型宽度
小数位数
可否为空
订单号
INT
Not null
商品编号
int
Not null
销售量
Int
Not null
商品总利润
Number
10
2
Not null
员工编号
Int
Not null
客户编号
Int
Not null
销售日期
DATE
Not null
3.5数据库实施
3.5.1建立数据库
create database ZCH;
3.5.1建立模式
create schema sx_gl;
3.5.3建立数据表
(1)员工信息表的建立:
CREATE TABLE YGXX(
YGBH int IDENTITY(1,1) NOT NULL,
YGXM char(10) NOT NULL,
YGXB char(2) NOT NULL,
YGNL int NOT NULL,
YGMM int NOT NULL,
constraint PK_YGXX primary key nonclustered (YGBH) )
(2)商品信息表的建立
CREATE TABLE SPXX(
SPBH int NOT NULL,
SPM char(10) COLLATE Chinese_PRC_CI_AS NOT NULL,
KCL int NOT NULL,
JHJG numeric(10, 2) NOT NULL,
CHJG numeric(10, 2) NOT NULL,
LR numeric(10, 2) ,
constraint PK_SPXX primary key nonclustered (SPBH)
)
(3)员工销售信息表的建立
CREATE TABLE YGXSXX(
DDH int NOT NULL,
YGBH int NOT NULL,
KHBH int NOT NULL,
XSRQ datetime NOT NULL,
PRIMARY KEY (DDH,YGBH))
(4)商品销售信息表的建立
CREATE TABLE SPXSXX(
DDH int NOT NULL,
SPBH int NULL,
XSL int NULL,
XSRQ datetime,
constraint PK_SPXSXX primary key nonclustered (DDH))
(5)库存信息表的建立
CREATE TABLE KCXX(
SPBH int NOT NULL,
KCL int NOT NULL,
QDRQ datetime NOT NULL,
PRIMARY KEY (SPBH,QDRQ))
(6)客户表的建立
CREATE TABLE KH(
KHBH int NOT NULL,
KHXM char(10) COLLATE Chinese_PRC_CI_AS Not null,
KHXB char(2) COLLATE Chinese_PRC_CI_AS ,
KHDH char(一五) Not null,
constraint PK_KH primary key nonclustered (KHBH))
(7)进货记录表的建立
CREATE TABLE JHJL(
JHLSH int IDENTITY(1,1) NOT NULL,
SPBH int NOT NULL ,
JHL int NOT NULL,
JHJG numeric (10, 2) NOT NULL,
JHRQ datetime NOT NULL,
PRIMARY KEY (JHLSH)
)
(8)经理表的建立
CREATE TABLE JL(
JLXM char(9) NOT NULL,
JLMM int NOT NULL,)
3.5.4建立视图
(1) 用于经理查询员工表的视图定义如下:
CREATE VIEW 经理查看视图
AS
SELECT YGBH, YGXM, YGXB, YGNL
FROM YGXX
(2) 用于经理查询商品当日销售信息的视图定义如下:
CREATE VIEW 当日销售视图
AS
SELECT SPXSXX.SPBH, SPM, XSL
FROM SPXX,SPXSXX
where EXISTS (
select *
from SPXSXX
where datediff(dd,XSRQ,GETDATE())=0 and SPXX.SPBH=SPXSXX.SPBH)
and SPXX.SPBH=SPXSXX.SPBH
(3) 用于经理查询当日库存的视图定义如下:
CREATE VIEW 当日库存视图
AS
SELECT SPXX.SPBH, KCXX.KCL,QDRQ
FROM KCXX,SPXX
where exists(
select * from (
select SPBH,max(QDRQ) as FTime from KCXX group by SPBH) x
where x.SPBH=KCXX.SPBH and KCXX.QDRQ=x.FTime and SPXX.SPBH=KCXX.SPBH)
(4) 用于员工查询商品信息的视图定义如下:
CREATE VIEW 商品信息视图
AS
SELECT SPXX.SPBH, SPXX.SPM, SPXX.KCL, JHJL.JHJG, SPXX.CHJG,
SPXX.LR
FROM SPXX INNER JOIN JHJL
ON SPXX.SPBH=JHJL.SPBH
(5)用于查询销售信息的视图定义如下:
CREATE VIEW 销售信息视图
AS
SELECT SPXSXX.DDH, SPXX.SPM, SPXSXX.SPBH, SPXSXX.XSL,
SPXX.LR*SPXSXX.XSL AS SPZLR, YGXSXX.XSRQ
FROM SPXX INNER JOIN SPXSXX
ON SPXX.SPBH= SPXSXX.SPBH
INNER JOIN YGXSXX
ON SPXSXX.DDH= YGXSXX.DDH
3.5.4建立索引
CREATE CLUSTERED INDEX [员工编号索引] ON YGXSXX
(
YGBH ASC,
DDH ASC
)WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF,
IGNORE_DUP_KEY = OFF, ONLINE = OFF)
ON [PRIMARY]
3.5.5建立触发器
create trigger [进货记录触发器]
on JHJL
for insert
as
declare xSPBH int
declare xJHL int
declare xKCL int
declare xQDRQ datetime
select xSPBH = SPBH from inserted
select xJHL = JHL from inserted where SPBH=xSPBH
select xKCL =0
select xQDRQ =getdate()
if not exists(select SPBH from KCXX where SPBH =xSPBH )
begin
insert into KCXX values(xSPBH ,xKCL ,xQDRQ)
update KCXX set KCL =(KCL +xJHL),QDRQ =getdate()
where SPBH =xSPBH
end
else
begin
select xKCL=KCL from KCXX where SPBH =xSPBH
update KCXX set KCL =(KCL +xJHL),QDRQ=getdate()
where SPBH=xSPBH
End
create trigger 销售触发器
on SPXSXX
for insert
as
declare xSPBH int
declare xXSL int
declare xKCL int
select xSPBH =SPBH from inserted
select xXSL =XSL from inserted where SPBH=xSPBH
begin
select xKCL =KCL from KCXX where SPBH =xSPBH
update KCXX set KCL=(KCL-xXSL),QDRQ=getdate()
where SPBH=xSPBH
end
-------建立利润触发器
create trigger 利润触发器
on SPXX
for insert,update
as
declare xJHJG numeric (10, 2)
declare xCHJG numeric (10, 2)
declare xLR int
declare xSPBH int
declare xSPM char
declare xKCL int
select xSPBH =SPBH from inserted
select xSPM =SPM from inserted where SPBH=xSPBH
select xCHJG =CHJG from inserted where SPBH=xSPBH
select xJHJG =JHJG from JHJL where SPBH=xSPBH
select xKCL =KCL from KCXX where SPBH =xSPBH
begin
update SPXX set LR=(xCHJG-xJHJG),KCL=xKCL,JHJG=xJHJG
where SPBH=xSPBH
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中插入一元组
P-8
JL_Insert
详见附录8
在JL中插入一元组
4. 系统的实现
5. 实习总结
通过这次课程设计,了解到我们平时的实验和这次系统设计的差距之大。但只有把平时的实验认真完成,对基本知识的一次次巩固,才可完成这次课程设计。我们往往认为的编代码在程序设计中所占比例并不大,真正要我们所做的东西其实远远不止敲代码。重要的是对整个系统的设计同时对软件开发也有更全面的了解。
6.参考文献
[1] 萨师煊 王珊,数据库系统概论(第三版),北京:高教出版社,2000
[2] 软件开发与指导;人民邮电出版社
[3] Delpehi数据库开发毕业设计指导及实例;机械工业出版社,2004
7.附件
1.YGXX_Insert 的定义:
YGXX_Insert
CREATE PROCEDURE YGXX_Insert
xYGBH int,
xYGXM char(10),
xYGXB char(2),
xYGNL int,
xYGMM int
as
insert into YGXX
values(xYGBH,xYGXM,xYGXB,xYGNL,xYGMM);
2.SPXX_Insert 的定义:
CREATE PROCEDURE SPXX_Insert
xSPBH int,
xSPM char (10),
xKCL int ,
xJHJG numeric (10, 2) ,
xCHJG numeric (10, 1),
xLR numeric (10, 1)
as
insert into SPXX
values(xSPBH,xSPM,xKCL,xJHJG,xCHJG,xLR);
3.KH_Insert 的定义:
CREATE PROCEDURE KH_Insert
xKHBH int ,
xKHXM char(10) ,
xKHXB chaR(2) ,
xKHDH int
as
insert into KH
values(xKHBH,xKHXM,xKHXB,xKHDH);
4.YGXSXX_Insert 的定义:
CREATE PROCEDURE YGXSXX_Insert
xDDH int,
xYGBH int,
xKHBH int,
xXSRQ datetime
as
insert into YGXSXX
values(xDDH,xYGBH,xKHBH,xXSRQ);
5.SPXSXX_Insert 的定义:
CREATE PROCEDURE SPXSXX_Insert
xDDH int ,
xSPBH int ,
xXSL int
as
insert into SPXSXX
values(xDDH,xSPBH,xXSL);
6.KCXX_Insert 的定义:
CREATE PROCEDURE KCXX_Insert
xSPBH int ,
xKCL int ,
xQDRQ datetime
as
insert into KCXX
values(xSPBH,xKCL,xQDRQ);
7.JHJL_Insert 的定义:
CREATE PROCEDURE JHJL_Insert
xSPBH int ,
xJHL int ,
xJHJG numeric(10, 2) ,
xJHRQ datetime
as
insert into JHJL
values(xSPBH,xJHL,xJHJG,xJHRQ);
8.JL_Insert的定义:
CREATE PROCEDURE JL_Insert
xJLXM char(10),
xJLMM INT
as
insert into JL
values(xJLXM,xJLMM);
8.java代码附件
Java代码就不粘了,在工程里。这个代码实现了对员工和商品的增删改查,以及员工和管理员修改密码。验收只要求实现一个模块。如果要找全部功能实现的,qq联系我哟~
3.2.202507:3207:32:1425.3.27时32分7时32分14秒3月. 2, 252 三月 20257:32:14 上午07:32:14
2025年3月2日星期日07:32:14
展开阅读全文