题 课院精彩文档
目:程:
山东建筑大学计算机科学与技术学院
课程设计说明书
企业仓库管理系统设计-提货 管理及用户登录模块 数据库原理及应用课程设计 计算机学院
(部): 实用标准文案
山东建筑大学计算机科学与技术学院
课程设计任务书
指导教师(签字): 教研室主任(签字):
精彩文档
设计题目 企业仓库管理系统设计-提货管理及用户登录模块 为了满足公司仓库管理的业务需求,先需要开发企业仓库管理系统。该系统对货物进行入库和出库管理。该系统的管理员为仓库管理员,同时他也是系统管理员。我实现的功能模块:用户登录管理、提货管理。具体描述如下: (1)用户登录注册管理。 ①用户注册。用户注册时,输出客户号和密码,如果客户号不存在则注册成功,若客户号已存在则用户存在,不能注册。 ②用户登录。用户登录时,输出客户号和密码,与数据库中客户表匹配数据,如果客户号和密码都相同则登录成功,否则登录失败。 (2)提货管理。 ①申请提货登记。包括:货物号,客户号,货物数量。 ②审核提货单。首先根据数据库客户信息表审核提货单中客户是否存在,若客户存在,然后根据数据库仓库库存信息审核客户所需货物数量是否充足。 ③货物出库登记:包括:货物号,客户号,货物数量,出库日期。 已知技术参数和设计要求 1、需求分析 设计内容与步骤 2、数据库设计 3、用SQL语句、触发器与存储过程等实现功能 4、课程设计说明书 1、设计工作6学时 2、实现4学时 3、课程设计说明书2学时 设计工作计划与进度安排 1、 考勤20% 设计考核要求 2、 课程设计说明书50% 3、 答辩30% 实用标准文案
目录
1. 系统概述 .................................................. 4 2.需求分析 .................................................. 4
2.1、数据流图: .......................................................................5
2.2、数据字典 .........................................................................7
2.2.1数据项 ......................................................................7 2.2.2数据结构 ....................................................................8 2.2.3数据流 ......................................................................8 2.2.4数据存储 ....................................................................9 2.2.5处理过程 ...................................................................10
3. 数据库概念结构设计 ........................................ 10
3.1、标识仓库管理系统中的实体和属性 ..................................................10
3.2、确定实体间的联系 ................................................................11
4. 数据库逻辑结构设计 ........................................ 12
4.1、关系模型 ........................................................................12 4.2、表与视图的设计 ..................................................................12
5. 数据库物理设计及实施 ...................................... 15
5.1 创建数据库 .......................................................................15 5.2 创建表 ...........................................................................15
6. 功能实现 ................................................. 20
6.1 用户注册登录功能模块 .............................................................20 6.2 仓库提货功能模块 .................................................................22
7. 总结 ..................................................... 25 参考文献 .................................................... 26
精彩文档
实用标准文案
1. 系统概述
本作品完成的是企业仓库管理系统,前期主要是需求分析,包括数据与处理,并对有关企业仓库管理系统的管理员需求进行了综合、归纳和抽象,形成了一个于DBMS的概念模型,画出了E—R图,然后本组在数据库中将概念模型转换成了数据模型,建了客户信息表Users,用到了仓库基本信息表Storage,仓库库存信息表Repertory,然后本小组分工实现了用户登录、采购管理、提货管理、入库管理、出库管理。
本人实现的:(企业仓库管理系统设计—提货管理及用户登录模块)
1.未注册的客户先进行注册,注册后登录,注册的客户可直接登录系统。 2.当客户提出提货请求时,产生一个提货单
3.首先根据数据库客户信息表审核提货单中客户是否存在。 4.若客户存在,则审核货物,查看货物数量是否充足。
5.审核成功后进行货物出库登记,登记的内容有货物号、客户号、货物数量、日期。在OutS表中插入登记的此条出库记录。
2.需求分析
现要开发企业仓库管理系统。经过可行性分析和初步的需求调查,确定了系统的功能边界,该系统应
能完成下面的功能: (1)用户的注册,登录。 (2)货物采购管理 (3)仓库入库管理。 (4)仓库提货管理。 (5)仓库出库管理。
精彩文档
实用标准文案
2.1、数据流图:
客户提货单供应商发货单企业仓库管理系统订单客户信息货物信息入库信息出库信息返回查询结果货物、客户编号仓库管理员到货通知采购员
图2.1 企业仓库管理系统顶层数据流图
订货通知精彩文档
实用标准文案
供应商订单订货通知发货单采购员到货通知1入库信息管理入库信息仓库管理员出库信息2出库信息管理提货单客户货物信息3货物信息管理6打印客户信息返回查询结果4客户信息管理5查询统计管理客户货物信息
图2.2 企业仓库管理系统0层数据流图
注册信息未注册用户注册个人信息个密码已注册用户登录人信息修改个人信息修改个人信息
图2.3 用户登录注册数据流图
精彩文档
实用标准文案
出库信息出库信息出库信息出库单客户审核客户客户存在审核货物货物充足查找存储仓库出库出库信息客户货不存在物不足拒绝出库 图2.4 仓库提货管理数据流图
2.2、数据字典 2.2.1数据项
表2.1 数据项表 数据项名称 货物号 货物名 货物数量 货物价格 供应商号 供应商名 客户号 客户密码 仓库号 仓库总容量 仓库剩余容量 出库编号 出库日期 管理员账号 管理员密码 含义说明 唯一标识一个货物 货物的名称 货物的总数量 货物的价钱 唯一标识一个供应商 供应商的名字 唯一标识一个客户 客户的密码 唯一标识仓库信息 仓库的总容量信息 仓库剩余容量 用于记录货物出库 用于记录货物何时出库 唯一标示管理员信息 管理员管理员的密码 类型 字符型 字符型 整型 整型 字符型 字符型 字符型 字符型 字符型 整型 整型 字符型 字符型 字符型 字符型 长度 20 20 20 20 20 20 20 20 20 20 20 精彩文档
实用标准文案
2.2.2数据结构
(1)名称:客户
含义说明:定义了一个客户有关的信息 组成结构:客户号+客户密码 (2)名称:货物
含义说明:定义了一个货物有关的信息
组成结构:货物号+货物名+货物价格+货物型号+货物类别 (3)名称:仓库
含义说明:定义了一个仓库的有关信息 组成结构:仓库号+仓库总容量+仓库剩余容量
2.2.3数据流 (1)数据流名称:入库单
含义:客户入库时需要填写的信息 来源:客户 去向:审核客户 数据流量:50份/天
组成:客户号+货物名+货物数量 (2)数据流名称:出库单
含义:客户出库时需要填写的信息 来源:客户 去向:审核客户 数据流量:50份/天
组成:客户号+货物名+货物数量 (3)数据流名称:提货单
含义:客户提货时需要填写的信息 来源:客户 去向:审核客户 数据流量:50份/天
组成:客户号+货物号+货物数量 (4)数据流名称:违规单
含义:如果无法提出所需货物,会给出一个反馈 来源:系统管理员
精彩文档
实用标准文案
去向:反馈给客户 数据流量:50份/天 组成:无法提货原因
2.2.4数据存储
(1)数据存储名称:管理员信息表 含义说明:存放管理员的注册信息 组成结构:管理员账号+管理员密码
说明:用来存储管理员信息,管理员账号号是管理员的主属性 (2)数据存储名称:客户信息表 含义说明:存放客户的注册信息 组成结构:客户号+客户密码
说明:用来存储客户信息,客户号是客户的主属性 (3)数据存储名称:货物信息表 含义说明:存放货物的注册信息 组成结构:货物号+货物名+货物价格
说明:货物号为其主属性,货物价格为当前该货物的入库价格 (4)数据存储名称:仓库信息表 含义说明:存放仓库的相关信息
组成结构:仓库号+仓库总容量+仓库剩余容量
说明:仓库号为其主码,要求能根据审核仓库的剩余容量查询货物的存放与否。 (5)数据存储名称:出库信息表 含义说明:存放货物出库信息
组成结构:出库编号+货物号+客户号+货物数量+货物价格+仓库号+出库日期 说明:出库编号为其主码
(6)数据存储名称:仓库库存信息表 含义说明:用来存储当前仓库存储信息 组成结构:仓库号+货物号+客户号+货物数量
说明:仓库号,货物号,客户号是其主码,货物数量为当前仓库中该客户的该货物的数量。 (7)数据存储名称:提货单信息表 含义说明:存放客户提货时所需的提货单
精彩文档
实用标准文案
组成结构:客户号+货物号+货物量
说明:仓库号,货物号,客户号是其主码,货物数量为当前仓库中该客户的该货物的数量。
2.2.5处理过程
处理过程名称 货物入库 货物出货 订货单 发货单
输入 入库单 出货单 订货单 发货单 输出 核对正确后的入库信息表 核对正确后的出库信息表 核对正确后的订货单 核对正确后的发货单 加工逻辑 将货物按照入库单清点正确后,审核通过,否则不通过 将货物按照出库单清点正确后,审核通过,否则不通过 按照客户的订货情况进行核对 按照客户的订货情况进行核对然后发货 3. 数据库概念结构设计
3.1、标识仓库管理系统中的实体和属性
参照数据字典中对数据存储的描述,可初步确定实体和属性为: 管理员{管理员账号,管理员密码}
货物{货物号,货物名,货物价格,货物型号,货物类别} 客户{客户号,客户密码 } 供应商{供应商编号,供应商名}
仓库{仓库号,仓库的总容量,仓库的剩余容量}
入库信息{入库编号,货物号,客户号,货物数量,仓库号,入库日期} 出库信息{货物号,客户号,货物数量,出库日期} 仓库存信息{仓库号,货物号,客户号,货物数量} 提货单信息{货物号,客户号,货物数量} 其中有下划线的属性为实体的码。
精彩文档
实用标准文案
3.2、确定实体间的联系
供应商号货物号管理员账号客户号采购单编号供应商号货物数采购单管理员账号供应商名供应商m定货nn管理员管理员名称联系方式货物类别货物数量m货物管理员密码货物号m提货n客户客户密码货物名客户号货物型号货物价格货物数仓库编号n入库n1仓库1出库出库日期入库数量仓库名称出库编号
图3.1 企业仓库管理系统总E-R图
货货货货货货货货货货货货货货m货货n货货货货货货货货货货货货货货货货货货
图3.2 仓库提货管理E-R图
精彩文档
实用标准文案
4. 数据库逻辑结构设计
4.1、关系模型
表4.1 关系模式表
将在概念结构阶段得到的基本E-R图转换成关系模型,如下表所示: 关系名 货物 属性及码 货物号,货物名,货物价格 其他约束条件 货物号为主码 货物名不允许为空 客户 客户号,客户密码 客户号为主码 客户密码不允许为空 仓库 仓库号,总容量,剩余容量 仓库号为主码 总容量、剩余容量不允许为空 入库信息 入库编号,货物号,客户号,货物数量,入库编号为主码 仓库号,入库日期 出库信息 货物号,客户号不允许为空 货物号,客户号,货物数量,出库日期 货物号,客户号为主码,并且为外码。 货物号,客户号不允许为空 仓库库存信息 仓库号,货物号,客户号,货物数量量 仓库号,货物号,客户号为主码,并且为外码。 货物号,客户号不允许为空 管理员信息 管理员账号,管理员密码 管理员账号为主码 密码不允许为空 4.2、表与视图的设计
表4.2 Users(客户表)
字段名 Uid 字段含义 客户号 字段类型 VARCHAR VARCHAR 长度 20 20 小数 是否为空 NOT NULL NOT NULL 列级约束 Primarykey NOT NULL Upassword 客户密码 函数依赖有: Uid → Upassword
精彩文档
实用标准文案
可以看出非主属性Upassword完全函数依赖于Uid,并且此表绝不会存在传递函数依赖和部分函数依赖问题,所以Users属于3NF甚至于更高的级别。
表4.3 Goods(货物表)
字段名 Gid Gname Gprice Gmodel Gsort 函数依赖有:
Gid → Gname,Gid → Gprice,Gid → Gmodel,Gid → Gsort
可以看出非主属性Gname,Gprice,Gmodel,Gsort完全函数依赖于Gid,并且此表绝不会存在传递函数依赖和部分函数依赖问题,所以Users属于3NF甚至于更高的级别。
表4.4 Storage(仓库信息表)
字段名 Sid Sstocks Ssstock 字段含义 仓库号 仓库总容量 剩余容量 字段类型 VARCHAR INT INT 长度 20 小数 是否为空 NOT NULL NOT NULL NOT NULL 列级约束 Primarykey NOT NULL NOT NULL 字段含义 货物号 货物名 货物价格 货物型号 货物类别 字段类型 VARCHAR VARCHAR INT VARCHAR VARCHAR 长度 20 20 20 20 小数 是否为空 NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL 列级约束 Primarykey NOT NULL NOT NULL NOT NULL NOT NULL 函数依赖有:
Sid → Sstocks ,Sid → Ssstock
可以看出非主属性Sstocks、Ssstock完全函数依赖于Sid,并且Storage表中没有传递函数依赖,即每一个非主属性既不部分依赖于码也不传递依赖于码,所以Storage属于3NF。
表4.5 Lading(提货单信息表)
字段名 Uid 字段含义 客户号 字段类型 VARCHAR 长度 小数 20 是否为空 NOT NULL 列级约束 Foreign key references Users(Uid) Gid 货物号 VARCHAR 20 NOT NULL Foreign key references Goods(Gid) 精彩文档
实用标准文案 Lnumber 提货数量 INT NULL 函数依赖有:
(Uid,Gid) → Lnumber
可以看出非主属性Lnumber完全函数依赖于(Uid,Gid),并且Lading表中没有传递函数依赖,即每一个非主属性既不部分依赖于码也不传递依赖于码,所以Lading属于3NF。
表4.6 OutS(出库信息表)
字段名 Gid 字段含义 货物号 字段类型 VARCHAR 长度 小数 是否为空 20 NOT NULL 列级约束 Foreign key references Goods(Gid) Uid 客户号 VARCHAR 20 NOT NULL Foreign key references Users(Uid) Gnumber 货物数量 INT datatime NULL NULL MODIFYDATE 出货日期 表级约束 Primarykey(Gid,Uid) 函数依赖有:
(Gid,Uid) → Gnumber,MODIFYDATE
非主属性Gnumber,MODIFYDATE完全函数依赖于(Gid,Uid),且不存在传递函数依赖,即属于3NF。
表4.7 Repertory(仓库库存信息表)
字段名 字段含义 字段类型 Sid 仓库号 VARCHAR 10 NOT NULL Foreign key references 长度 小数 是否为空 列级约束 Storate(sid) Gid 货物号 VARCHAR 20 NOT NULL Foreign key references Cargo(gid) Gnumber 表级约束 货物数量 INT Primarykey(Sid,Gid) NULL 函数依赖有: (Sid,Gid)→Gnumber
可以看出非主属性Gnumber对(Sid,Gid)是完全函数依赖,并且不存在传递依赖,即每一个非主属性既不部分依赖于码也不传递依赖于码,所以Repertory属于3NF。
精彩文档
实用标准文案
5. 数据库物理设计及实施
5.1 创建数据库
create database 企业仓库系统;
5.2 创建表
创建Users表:
create table Users
(Uid varchar(20) not null primary key, Upassword varchar(20) not null );
精彩文档
实用标准文案
创建Goods表:
create table Goods
(Gid varchar(20) not null primary key, Gname varchar(20)not null, Gprice int not null, Gmodel varchar(20)not null, Gsort varchar(20)not null );
创建Storage表:
create table Storage
(Sid varchar(20) not null primary key, Sstocks int not null, Ssstock int not null );
精彩文档
实用标准文案
创建Lading表:
create table Lading
(Lid varchar(20) primary key, Uid varchar(20), Gid varchar(20), Lnumber int );
创建Reterpory表:
create table Reterpory( Sid varchar(20) not null, Gid varchar(20) not null, Gnumber int not null, primary key(Sid,Gid),
foreign key(Sid) references Storage(Sid), foreign key(Gid) references Goods(Gid), );
创建OutS表:
create table OutS( Gid varchar(20), Uid varchar(20), Gnumber int,
MODIFYDATE datetime,
精彩文档
实用标准文案
foreign key(Gid)references goods(Gid), foreign key(Uid)references users(Uid) );
向Users表中插入数据:
insert into Users(Uid,Upassword)values('U1','aaa'); insert into Users(Uid,Upassword)values('U2','bbb'); insert into Users(Uid,Upassword)values('U3','ccc'); insert into Users(Uid,Upassword)values('U4','ddd'); insert into Users(Uid,Upassword)values('U5','eee'); insert into Users(Uid,Upassword)values('U6','fff'); insert into Users(Uid,Upassword)values('U7','ggg'); insert into Users(Uid,Upassword)values('U8','hhh'); insert into Users(Uid,Upassword)values('U9','jjj'); insert into Users(Uid,Upassword)values('U10','kkk'); select* from Users;
向Goods表中插入数据:
精彩文档
实用标准文案
insert into Goods(Gid,Gname,Gprice,Gmodel,Gsort) values('G1','a',20,'A','一级'); insert into Goods(Gid,Gname,Gprice,Gmodel,Gsort) values('G2','b',10,'B','二级'); insert into Goods(Gid,Gname,Gprice,Gmodel,Gsort) values('G3','c',50,'C','一级'); insert into Goods(Gid,Gname,Gprice,Gmodel,Gsort) values('G4','d',70,'D','三级'); insert into Goods(Gid,Gname,Gprice,Gmodel,Gsort) values('G5','e',20,'E','二级'); insert into Goods(Gid,Gname,Gprice,Gmodel,Gsort) values('G6','f',100,'F','一级'); insert into Goods(Gid,Gname,Gprice,Gmodel,Gsort) values('G7','g',140,'G','三级'); insert into Goods(Gid,Gname,Gprice,Gmodel,Gsort) values('G8','h',60,'H','一级'); insert into Goods(Gid,Gname,Gprice,Gmodel,Gsort) values('G9','i',80,'I','二级'); insert into Goods(Gid,Gname,Gprice,Gmodel,Gsort) values('G10','j',90,'J','一级'); select* from Goods;
向Reterpory表中插入数据:
insert into Reterpory values('S1','G1',600); insert into Reterpory values('S2','G2',800); insert into Reterpory values('S3','G3',1000); insert into Reterpory values('S4','G4',900); insert into Reterpory values('S5','G6',800); insert into Reterpory values('S6','G7',700); insert into Reterpory values('S7','G8',600); insert into Reterpory values('S8','G5',950); insert into Reterpory values('S9','G10',500); insert into Reterpory values('S10','G9',1100); select* from Reterpory;
精彩文档
实用标准文案
6. 功能实现
6.1 用户注册登录功能模块
1.用户注册时,输出客户号和密码,如果客户号不存在则注册成功,若客户号已存在则用户存在,不能注册。 --用户注册存储过程
create procedure insertUsers (
@uid varchar(20), @upassword varchar(20), @returnname varchar(20) output ) as
if exists(select Uid from Users where Uid=@uid) begin
set @returnname='用户存在' end else begin
insert into Users values(@uid,@upassword) set @returnname='注册成功' end go
精彩文档
实用标准文案
2.用户登录时,输出客户号和密码,与数据库中客户表匹配数据,如果客户号和密码都相同则登录成功,否则登录失败。 --用户登录存储过程
create procedure loginUsers (
@uid varchar(20), @upassword varchar(20), @returnname varchar(20) output ) as
if exists(select Uid,Upassword --判断登录信息是否正确 from Users
where Uid=@uid and Upassword=@upassword)
begin set @returnname='登陆成功' end else begin
set @returnname='登录失败' end go
精彩文档
实用标准文案
6.2 仓库提货功能模块
1.当客户提出提货请求时,产生一个提货单。(运用insert语句将提货单信息插入到提货信息表Lading)
insert into Lading values('L1','U1','G1',500); insert into Lading values('L2','U3','G9',1000); insert into Lading values('L3','U8','G7',800); insert into Lading values('L4','U19','G11',600);
2.首先根据数据库客户信息表审核提货单中客户是否存在。(通过建立一个视图Lading_Uid显示存在的客户及信息)
create view Lading_Uid
精彩文档
实用标准文案
as
select Users.Uid,Uname,Lading.Gid,Lading.Lnumber from Users,Lading
where Users.Uid=Lading.Uid; select* from Lading_Uid;
3.若客户存在,然后根据数据库仓库库存信息审核客户所需货物数量是否充足。(通过建立一个视图Lading_Gnumber显示货物数量充足的货物号及信息)
create view Lading_Gnumber as
select Lading_Uid.Uid,Uname,Lading_Uid.Gid,Lading_Uid.Lnumber from Lading_Uid,Reterpory
where Lading_Uid.Gid=Reterpory.Gid and Lading_Uid.Lnumber<=Reterpory.Gnumber; select* from Lading_Gnumber;
4.审核成功后进行货物出库登记,登记的内容有货物号、客户号、货物数量、日期。在OutS表中插入登记的此条出库记录。(编写一个触发器Lading_outs,实现在提货单信息表Lading插入数据时,自动审核客户号和货物数量,审核完在OutS表中插入登记的此条出库记录)
create trigger Lading_outs on Lading
精彩文档
实用标准文案
after insert as begin
insert into outS( Gid,Uid,Gnumber,MODIFYDATE)
select Lading_Gnumber.Gid,Lading_Gnumber.Uid,Lading_Gnumber.Lnumber,getdate() as MODIFYDATE from Lading_Gnumber; delete from Lading; select* from OutS; end;
精彩文档
实用标准文案
7. 总结
这次课程设计我们组完成了企业仓库管理系统的设计,我完成了其中的提货管理和用户登录模块,从需求分析到概念结构设计,再到逻辑结构设计,最后到数据库物理设计及实施,亲自参与整个数据库的设计过程。在建表之前,我们组一起讨论了要建几个表的问题,为了减少冗余,我们将提货单信息表和出库信息表分别建表。在建立功能过程中,对触发器和存储过程理解不深刻,通过看书和上网查询完善了触发器和存储过程。
通过此次课程设计,掌握了表与视图的建立,也学会了触发器与存储过程的建立,提高了自己写代码的能力,深刻的体会了数据库的应用方法和设计理念,更加深刻的体会了数据库的实际应用,也对很多概念用法有了更进一步的理解。同时学会了遇到困难要有吃苦耐劳的精神,同时认识到了团队合作的重要性。
精彩文档
实用标准文案
参考文献
[1] 萨师煊, 王珊. 数据库系统概论[M].北京:高等教育出版社,2006. [2] 甘仞初. .管 理信息系统[M].北京:机械工业出版社,2002.
[3] 李昆,SQL SERVER2000课程设计案例精编,北京:中国水利水电出版社,2006 [4] 钱雪忠.数据库原理及应用[M]北京:邮电大学出版社,2007.
[5] 仝春灵,数据库原理与应用—SQL Server 2000,北京:电子工业出版社,2007
[6] 辛赫(Singh.S.K)、何玉洁等.数据库系统概念、设计及应用[M]北京:机械工业出版社,2008 [7] 周成兴.SQL与关系数据库理论[M]北京:清华大学出版社,2010
精彩文档
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务