资源描述
<附录>设计报告参考格式:
XXXXX
课程设计
课 程: 数据库
题 目: 仓库管理系统
专 业: 软件工程
班 级:
座 号:
姓 名: ZJ
年 月 日
仓库管理系统
引言:数据库技术是计算机科学中的一个非常重要的部分,数据库技术以数据库的应用也正以日新月异的速度发展。仓库管理在企业的整个供应链中起着至关重要的作用,如果不能保证正确的进货和库存控制及发货,将会导致管理费用的增加,服务质量难以得到保证,从而影响企业的竞争力。传统简单、静态的仓库管理已无法保证企业各种资源的高效利用。如今的仓库作业和库存控制作业已十分复杂化多样化,仅靠人工记忆和手工录入,不但费时费力,而且容易出错,给企业带来巨大损失。使用仓库管理系统 , 对仓库各环节实施全过程控制管理,并可对货物进行货位、批次、保质期、配送等实现系统列号管理,对整个收货、发货、补货、集货、送货等各个环节的规范化作业 , 还可以根据客户的需求制作多种合理的统计报表。仓库管理系统能帮助企业合理有效地利用仓库空间,以快速、准确、低成本的方式为客户提供最好的服务。
关键字:SQL,Delphi,仓库管理,系统
1.仓库管理系统
系统功能的基本要求:
1)产品入库管理,可以填写入库单,确认产品入库;
2)产品出库管理,可以填写出库单,确认出库;
3)借出管理,凭借条借出,然后能够还库;
4)初始库存设置,设置库存的初始值,库存的上下警戒限;
5)可以进行盘库,反映每月、年的库存情况;
6)可以查询产品入库情况、出库情况、当前库存情况,可以按出库单、入库单,产品、时间进行查询;
2.需求分析
基本资料管理:
供货单位管理:设置并管理供货商档案,档案信息包括客户编号、客户名称、地址、联系人、联系电话和备注信息。
1. 收货单位管理:设置并管理收货单位档案,档案信息包括客户编号、客户名称、地址、联系人、联系电话和备注信息。
2. 货品档案管理:档案信息包括货品名称、编号、货品描述、计量单位、备注说明。
3. 库管人员设置:设置并管理仓库管理人员。
仓库货物进出管理:
1. 货品入仓管理:可以自动生成入库单号,货品及客户选择方便快捷,不限制每笔入库单货物笔数。
2. 货品出仓管理:可以自动生成出库单号,货品及客户选择方便快捷,不限制每笔出货单货物笔数。
3. 货品盘点管理:可以自动生成盘点单号,货品选择方便快捷。
库存查询及统计:
1. 库存查询:可以随时查询各种货品库存,货品自动分类汇总统计。
2. 单据查询:可以随时查询入库、出库、盘点等各种货物单据。
3. 综合查询:可以随时查询不同时间段、凭证号、客户、货品等查询条件查询入、出、盘等数据,并能对查询数据进行统计汇总。
库存分析报警:
1. 库存上下限设置:可以设定仓库库存中各项货品的库存上下限。
库
3.概念结构设计
1)库存实体E-R图:
2)入库实体E-R图:
3) 出库实体E-R图:
4)部门需求实体E-R图:
5)还库实体E-R图:
6)计划采购实体E-R图:
7)实体和实体之间的关系图如图所示:
8) 仓库管理E-R图如图所示
4.逻辑结构设计
关系模型设计
1) 仓库表STORE_INFO
NO.
字段名
代码
类型
约束
1
仓库号
stoID
Char(3)
主键
2
已用库存
Used_volume
Smallint
非空,默认0,unsigned,<=All_volume
3
库存总量
All_volume
Smallint
非空,默认10000,unsigned
4
负责人
principal
Varchar(20)
非空
5
电话号码
stoTEL
Varchar(15)
2) 零件表PRO_INFO
NO.
字段名
代码
类型
约束
1
零件号
PRO_CODE
Char(7)
主键
2
名称
PRO_NAME
Varchar(20)
非空
3
规格
PRO_SIZE
Char(10)
4
单价
price
Decimal(6,2)
非空,默认0,unsigned
5
计量单位
mensuration
Char(4)
非空,默认“元”
6
描述
description
Text
3) 供应商SUPPLIER_INFO
NO.
字段名
代码
类型
约束
1
编号
SUPPLIER_CODE
varchar(5)
主键
2
供应商
SUPPLIER_NAME
Varchar(25)
非空
3
电话号码
LINK_PHONE
Varchar(15)
非空
4
地址
address
Text
4) 使用者USER_TABLE
NO.
字段名
代码
类型
约束
1
用户名
DUSER_NAME
VARCHAR(30)
主键
2
密码
USER_PWD
Varchar(20)
非空
3
用户级别
USER_LEVEL
Varchar(15)
5) 入库LIST_INFO
NO.
字段名
代码
类型
约束
0
入库编号
LIST_CODE
varchar(5)
主键
1
时间
LIST_DATE
datetime
2
物品数量
PRO_NUM
int
3
物品单位
UNIT
varchar(4)
4
物品号
PRO_CODE
Smallint
非空
5
库位代码
PLACE_CODE
Varchar(20)
非空
6
操作员号
OPERATOR_ID
Varchar(20)
非空
6) 操作员OPERATOR_INFO
NO.
字段名
代码
类型
约束
0
操作员号
OPERATOR_ID
VARCHAR(5)
主键
1
姓名
DNAME
Char(3)
非空
2
性别
SEX
Char(3)
非空
3
等级
LEVEL1
Char(7)
4
电话
PHONE
Smallint
非空
5
地点
ADDRESS
Varchar(20)
非空
7) 库位表PLACE_INFO
NO.
字段名
代码
类型
约束
0
库位号
PLACE_CODE
smallint
主键
1
区域名
AREA_NAME
Char(3)
2
物品编号
PRO_CODE
Char(7)
主键,
3
货架号
SHELF_NUM
Smallint
非空
4
层号
FLOOR_NUM
Varchar(20)
非空
5
列号
LINE_NUM
Varchar(20)
非空
6
高度
HEIGHT
Varchar(20)
非空
7
长度
LENGTH
Timestamp
非空
8
宽度
WIDTH
5.系统流图
定货报告
入
库
信
息
处
理
出
库
信 息
处
理
购货商需求表
采购货物入库
仓库管理系统
存储文件
入库信息
出库信息表
库存报表
供货商出入库
库存报表
6.设计存储过程
库存盘点存储过程
设计思路:
1、 判断是否期初盘点,期初盘点则根据已有的入仓数据和出仓数据,计算现库存数量,如果没有入仓数据和出仓数据,则数量计为0,把结果数据插入盘点信息表,返回成功标志,程序结束;
2、 非期初盘点,则根据当前时间点找到最近一期的盘点数据,再根据从该期盘点时间到当前时间点所有的入仓数据和出仓数据,计算现库存数量,把结果数据插入盘点信息表,返回成功标志,程序结束;
3、 考虑到货品信息表会不定时更新,盘点表也要以最新的货品信息表进行盘点。
实时库存情况存储过程
实时库存情况存储过程与库存盘点存储过程设计思路类似,但计算结果不需写到数据表,直接以数据集形式返回。
设计思路:
1、 判断是否已存在盘点数据,如否则根据已有的入仓数据和出仓数据,计算现库存数量,如果没有入仓数据和出仓数据,则数量计为0,返回结果数据集,程序结束;
2、 如已存在盘点数据,则根据当前时间点找到最近一期的盘点数据,再根据从该期盘点时间到当前时间点所有的入仓数据和出仓数据,计算现库存数量,返回结果数据集,程序结束;
3、 考虑到货品信息表会不定时更新,盘点表也要以最新的货品信息表进行盘点。
查询库存异常情况存储过程
查询库存异常情况存储过程是以设置库存上下限数据,对实时库存情况进行计算,返回低于库存下限或高于上限的货品数据
设计思路:
1、 根据库存上下限的数据,限定计算实时库存的货品范围;
2、 判断是否已存在盘点数据,如否则根据已有的入仓数据和出仓数据,计算现库存数量,返回低于库存下限或高于上限的货品数据集,程序结束;
3、 如已存在盘点数据,则根据当前时间点找到最近一期的盘点数据,再根据从该期盘点时间到当前时间点所有的入仓数据和出仓数据,计算现库存数量,返回低于库存下限或高于上限的货品数据集,程序结束。
7.Delphi前台演示
1、登录
2主界面
3供应商信息管理
4操作员信息管理
5物品信息管理、
6库位信息管理
7入库信息管理
8.出库信息管理
9物资借出管理
10物资归还管理
11.库存信息初始化
12库位信息查询
13库盘点操作管理
14.某时间段库存信息查询
15.按时间盘点库存信息操作
16入库信息查询
17.出库信息查询
18当前库存信息查询
19.用户账号管理
20.账号密码修改
8.数据库的实施和维护
----------------------------------------------------------创建数据库名为Material_DB的数据库----------------------------------------------------------------------------------
CREATE DATABASE Material_DB
ON PRIMARY(
NAME = 'Material_DB1',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL\DATA\Material_DB1.mdf',
SIZE = 10MB,
MAXSIZE = 500MB,
FILEGROWTH = 20MB),
(
NAME = 'Material_DB2',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL\DATA\Material_DB2.mdf',
SIZE = 1MB,
MAXSIZE = 100MB,
FILEGROWTH = 10MB)
LOG ON(
NAME = 'Material_DB_Log',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL\DATA\Material_DB_Log.ldf',
SIZE = 10MB,
MAXSIZE = 100MB,
FILEGROWTH = 10%);
GO
------------------------------------------------------------创建各实体与联系的关系表---------------------------------------------------------------------------------------
--供应商管理SQL语句
create procedure FindAllSupplier
as
select supplier_code 供应商代码,supplier_name 供应商名称,link_man 联系人,link_phone 联系电话,supplier_address 供应商地址,remark 备注
from supplier_info
create proc InsertSupplier @SUPPLIER_CODEED varchar(5),@SUPPLIER_NAMEED varchar(25),@LINK_MANED varchar(8),@LINK_PHONEED varchar(15),@SUPPLIER_ADDRESSED varchar(50),@REMARKED varchar(255)
as
insert into supplier_info(supplier_code,supplier_name,link_man,link_phone,supplier_address,remark) values(@supplier_codeed,@supplier_nameed,@link_maned,@link_phoneed,@supplier_addressed,@remarked)
create proc ModifySupplier @SUPPLIER_CODEED varchar(5),@SUPPLIER_NAMEED varchar(25),@LINK_MANED varchar(8),@LINK_PHONEED varchar(15),@SUPPLIER_ADDRESSED varchar(50),@REMARKED varchar(255)
as
update supplier_info set supplier_code=@supplier_codeed,supplier_name=@supplier_nameed,link_man=@link_maned,link_phone=@link_phoneed,supplier_address=@supplier_addressed,remark=@remarked
where supplier_code=@supplier_codeed
create proc DeleteSupplier @Supplier_codeed varchar(5)
as
delete from supplier_info where supplier_code=@supplier_codeed
--物品管理SQL语句
create procedure FindAllPro
as
select pro_code 物品编码,pro_name 物品名称,unit 计量单位,pro_type 物品类型,pro_size 物品规格,pro_price 单位价格,supplier_code 供应商代码,order_num 订货批量,order_time 订货提前期
from pro_info
create proc InsertPro @pro_codeed varchar(5),@pro_nameed varchar(15),@pro_typeed varchar(5),@supplier_codeed varchar(5),@united varchar(4),@pro_sizeed varchar(15),@order_numed int,@pro_priceed int,@order_timeed int
as
insert into pro_info(pro_code,pro_name,pro_type,supplier_code,unit,pro_size,order_num,pro_price,order_time) values(@pro_codeed,@pro_nameed,@pro_typeed,@supplier_codeed,@united,@pro_sizeed,@order_numed,@pro_priceed,@order_timeed)
create proc ModifyPro @pro_codeed varchar(5),@pro_nameed varchar(15),@pro_typeed varchar(5),@supplier_codeed varchar(5),@united varchar(4),@pro_sizeed varchar(15),@order_numed int,@pro_priceed int,@order_timeed int
as
update pro_info set pro_code=@pro_codeed,pro_name=@pro_nameed,pro_type=@pro_typeed,supplier_code=@supplier_codeed,unit=@united,pro_size=@pro_sizeed,order_num=@order_numed,pro_price=@pro_priceed,order_time=@order_timeed
where pro_code=@pro_codeed
create proc DeletePro @pro_codeed varchar(5)
as
delete from pro_info where pro_code=@pro_codeed
--库位管理SQL语句
create proc InsertPlace @PLACE_CODEED VARCHAR(5),@AREA_NAMEED VARCHAR(10),@PRO_CODEED VARCHAR(5),@SHELF_NUMED INT,@FLOOR_NUMED INT,@LINE_NUMED INT,@HEIGHTED INT,@LENGTHED INT,@WIDTHED INT
as
insert into place_info(place_code,area_name,pro_code,shelf_num,floor_num,line_num,height,length,width) values(@PLACE_CODEED,@AREA_NAMEED,@PRO_CODEED,@SHELF_NUMED,@FLOOR_NUMED,@LINE_NUMED,@HEIGHTED,@LENGTHED,@WIDTHED)
create proc ModifyPlace @PLACE_CODEED VARCHAR(5),@AREA_NAMEED VARCHAR(10),@PRO_CODEED VARCHAR(5),@SHELF_NUMED INT,@FLOOR_NUMED INT,@LINE_NUMED INT,@HEIGHTED INT,@LENGTHED INT,@WIDTHED INT
as
update place_info set place_code=@place_codeed,area_name=@area_nameed,pro_code=@pro_codeed,shelf_num=@shelf_numed,floor_num=@floor_numed,line_num=@line_numed,height=@heighted,length=@lengthed,width=@widthed
where place_code=@place_codeed
create proc DeletePlace @place_codeed varchar(5)
as
delete from place_info where place_code=@place_codeed
create procedure FindAllPlace
as
select place_code 库位号,area_name 区域名,pro_code 物品编号,shelf_num 货架号码,floor_num 层号,line_num 列号,height 货格高度,length 货格长度,width 货格宽度
from place_info
--操作员信息管理SQL语句
create proc InsertOperator @OPERATOR_IDED VARCHAR(5),@NAMEED VARCHAR(8),@SEXED VARCHAR(2),@LEVEL1ED VARCHAR(10),@PHONEED VARCHAR(15),@ADDRESSED VARCHAR(30)
as
insert into operator_info(OPERATOR_ID,DNAME,SEX,LEVEL1,PHONE,ADDRESS) values(@OPERATOR_IDED,@NAMEED,@SEXED,@LEVEL1ED,@PHONEED,@ADDRESSED)
create proc ModifyOperator @OPERATOR_IDED VARCHAR(5),@NAMEED VARCHAR(8),@SEXED VARCHAR(2),@LEVEL1ED VARCHAR(10),@PHONEED VARCHAR(15),@ADDRESSED VARCHAR(30)
as
update operator_info set OPERATOR_ID=@OPERATOR_IDED,DNAME=@NAMEED,SEX=@SEXED,LEVEL1=@LEVEL1ED,PHONE=@PHONEED,ADDRESS=@ADDRESSED
where operator_id=@OPERATOR_IDED
create proc DeleteOperator @operator_ided varchar(5)
as
delete from operator_info where operator_id=@operator_ided
create procedure FindAllOperator
as
select OPERATOR_ID 操作员ID,DNAME 姓名,LEVEL1 级别,SEX 性别,PHONE 联系电话,ADDRESS 住址
from operator_info
--入库信息管理SQL语句
create procedure FindAllList
as
select LIST_CODE 入库单编号,OPERATOR_ID 操作员代号,LIST_DATE 入库时间,PRO_CODE 入库物品编码,PRO_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号
from list_info
create procedure FindAllList_1
as
select LIST_CODE 入库单编号,OPERATOR_ID 操作员代号,LIST_DATE 入库时间,PRO_CODE 入库物品编码,PRO_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号
from list_info
where list_code like '1%'
create proc InsertList @LIST_CODEED varchar(5),@LIST_DATEED datetime,@PRO_NUMED int,@UNITED varchar(4),@PRO_CODEED varchar(5),@PLACE_CODEED VARCHAR(5),@OPERATOR_IDED VARCHAR(5)
as
insert into list_info(LIST_CODE,LIST_DATE,PRO_NUM,UNIT,PRO_CODE,PLACE_CODE,OPERATOR_ID) values(@LIST_CODEED,@LIST_DATEED,@PRO_NUMED,@UNITED,@PRO_CODEED,@PLACE_CODEED,@OPERATOR_IDED)
create proc ModifyList @LIST_CODEED varchar(5),@LIST_DATEED datetime,@PRO_NUMED int,@UNITED varchar(4),@PRO_CODEED varchar(5),@PLACE_CODEED VARCHAR(5),@OPERATOR_IDED VARCHAR(5)
as
update list_info set LIST_CODE=@list_codeed,LIST_DATE=@list_dateed,PRO_NUM=@pro_numed,UNIT=@united,PRO_CODE=@pro_codeed,PLACE_CODE=@place_codeed,OPERATOR_ID=@operator_ided
where list_code=@list_codeed
create proc DeleteList @List_codeed varchar(5)
as
delete from list_info where list_code=@list_codeed
--出库信息管理SQL语句
create procedure FindAllList_0
as
select LIST_CODE 出库单编号,OPERATOR_ID 操作员代号,LIST_DATE 出库时间,PRO_CODE 出库物品编码,PRO_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号
from list_info
where list_code like '0%'
create proc FindStore_Pro_Place @PRO_CODEED VARCHAR(5),@PLACE_CODEED VARCHAR(5)
as
select * from store_info where pro_code=@pro_codeed and place_code=@place_codeed
--借出信息管理SQL语句
create procedure FindAllList_o
as
select LIST_CODE 借出单编号,OPERATOR_ID 操作员代号,LIST_DATE 借出时间,PRO_CODE 借出物品编码,PRO_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号
from list_info
where list_code like 'o%'
--归还信息管理SQL语句
create procedure FindAllList_i
as
select LIST_CODE 归还单编号,OPERATOR_ID 操作员代号,LIST_DATE 归还时间,PRO_CODE 归还物品编码,PRO_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号
from list_info
where list_code like 'i%'
--库存信息管理SQL语句
create procedure FindAllStore
as
select PRO_CODE 入库物品编码,STORE_PRO_NUM 库存数量,STORE_UP_NUM 库存上限,STORE_DOWN_NUM 库存下限,UNIT 物品单位,PLACE_CODE 库位代号
from store_info
create proc InsertStore @PRO_CODEED VARCHAR(5),@STORE_PRO_NUMED INT,@STORE_UP_NUMED INT,@STORE_DOWN_NUMED INT,@UNITED VARCHAR(4),@PLACE_CODEED VARCHAR(5)
as
insert into store_info(PRO_CODE,STORE_PRO_NUM,STORE_UP_NUM,STORE_DOWN_NUM,UNIT,PLACE_CODE) values(@PRO_CODEED,@STORE_PRO_NUMED,@STORE_UP_NUMED,@STORE_DOWN_NUMED,@UNITED,@PLACE_CODEED)
create proc ModifyStore @PRO_CODEED VARCHAR(5),@STORE_PRO_NUMED INT,@STORE_UP_NUMED INT,@STORE_DOWN_NUMED INT,@UNITED VARCHAR(4),@PLACE_CODEED VARCHAR(5)
as
update store_info set PRO_CODE=@PRO_CODEED,STORE_PRO_NUM=@STORE_PRO_NUMED,STORE_UP_NUM=@STORE_UP_NUMED,STORE_DOWN_NUM=@STORE_DOWN_NUMED,UNIT=@UNITED,PLACE_CODE=@PLACE_CODEED
where pro_code=@pro_codeed and place_code=@place_codeed
create proc InsertStore_List @PRO_CODEED VARCHAR(5),@STORE_PRO_NUMED INT,@UNITED VARCHAR(4),@PLACE_CODEED VARCHAR(5)
as
insert into store_info(PRO_CODE,STORE_PRO_NUM,UNIT,PLACE_CODE) values(@PRO_CODEED,@STORE_PRO_NUMED,@UNITED,@PLACE_CODEED)
create proc ModifyStore_List @PRO_CODEED VARCHAR(5),@STORE_PRO_NUMED INT,@UNITED VARCHAR(4),@PLACE_CODEED VARCHAR(5)
as
update store_info set PRO_CODE=@PRO_CODEED,STORE_PRO_NUM=@STORE_PRO_NUMED,UNIT=@UNITED,PLACE_CODE=@PLACE_CODEED
where pro_code=@pro_codeed and place_code=@place_codeed
create proc DeleteStore @PRO_CODEED VARCHAR(5),@PLACE_CODEED VARCHAR(5)
as
delete from store_info where pro_code=@pro_codeed and place_code=@place_codeed
--库盘点作业管理SQL语句
create proc ModifyStore_ProNum @PRO_CODEED VARCHAR(5),@PLACE_CODEED VARCHAR(5),@STORE_PRO_NUMED INT
as
update store_info set STORE_PRO_NUM=@STORE_PRO_NUMED
where pro_code=@pro_codeed and place_code=@place_codeed
create proc FindStore_Pro @PRO_CODEED VARCHAR(5)
as
select * from store_info where pro_code=@pro_codeed
create proc FindAllStore_Operate
as
select PRO_CODE 入库物品编码,STORE_PRO_NUM 库存数量,STORE_UP_NUM 库存上限,STORE_DOWN_NUM 库存下限,UNIT 物品单位,PLACE_CODE 库位代号 from store_info
--入库信息查询
create proc FindAllList_1_time @LIST_DATEED1 datetime,@LIST_DATEED2 datetime
as
select LIST_CODE 入库单编号,OPERATOR_ID 操作员代号,LIST_DATE 入库时间,PRO_CODE 入库物品编码,PRO_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号
from list_info
where list_code like '1%' and list_date between @list_dateed1 and @list_dateed2
create proc FindAllList_1_Pro_code @PRO_CODEED varchar(5)
as
select LIST_CODE 入库单编号,OPERATOR_ID 操作员代号,LIST_DATE 入库时间,PRO_CODE 入库物品编码,PRO_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号
from list_info
where list_code like '1%' and pro_code=@pro_codeed
create proc FindAllList_1_Ope_id @OPERATOR_IDED VARCHAR(5)
as
select LIST_CODE 入库单编号,OPERATOR_ID 操作员代号,LIST_DATE 入库时间,PRO_CODE 入库物品编码,PRO_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号
from list_info
where list_code like '1%' and operator_id=@operator_ided
create proc FindList_1_ListCode @LIST_CODEED VARCHAR(5)
as
select LIST_CODE 入库单编号,OPERATOR_ID 操作员代号,LIST_DATE 入库时间,PRO_CODE 入库物品编码,PR
展开阅读全文