1、设计报告参考格式:XXXXX课程设计课 程: 数据库 题 目: 仓库管理系统 专 业: 软件工程 班 级: 座 号: 姓 名: ZJ 年 月 日仓库管理系统引言:数据库技术是计算机科学中的一个非常重要的部分,数据库技术以数据库的应用也正以日新月异的速度发展。仓库管理在企业的整个供应链中起着至关重要的作用,如果不能保证正确的进货和库存控制及发货,将会导致管理费用的增加,服务质量难以得到保证,从而影响企业的竞争力。传统简单、静态的仓库管理已无法保证企业各种资源的高效利用。如今的仓库作业和库存控制作业已十分复杂化多样化,仅靠人工记忆和手工录入,不但费时费力,而且容易出错,给企业带来巨大损失。使用仓库
2、管理系统 , 对仓库各环节实施全过程控制管理,并可对货物进行货位、批次、保质期、配送等实现系统列号管理,对整个收货、发货、补货、集货、送货等各个环节的规范化作业 , 还可以根据客户的需求制作多种合理的统计报表。仓库管理系统能帮助企业合理有效地利用仓库空间,以快速、准确、低成本的方式为客户提供最好的服务。 关键字:SQL,Delphi,仓库管理,系统1.仓库管理系统系统功能的基本要求:1)产品入库管理,可以填写入库单,确认产品入库;2)产品出库管理,可以填写出库单,确认出库;3)借出管理,凭借条借出,然后能够还库;4)初始库存设置,设置库存的初始值,库存的上下警戒限;5)可以进行盘库,反映每月、
3、年的库存情况;6)可以查询产品入库情况、出库情况、当前库存情况,可以按出库单、入库单,产品、时间进行查询;2.需求分析基本资料管理:供货单位管理:设置并管理供货商档案,档案信息包括客户编号、客户名称、地址、联系人、联系电话和备注信息。1 收货单位管理:设置并管理收货单位档案,档案信息包括客户编号、客户名称、地址、联系人、联系电话和备注信息。2 货品档案管理:档案信息包括货品名称、编号、货品描述、计量单位、备注说明。3 库管人员设置:设置并管理仓库管理人员。仓库货物进出管理:1 货品入仓管理:可以自动生成入库单号,货品及客户选择方便快捷,不限制每笔入库单货物笔数。2 货品出仓管理:可以自动生成出
4、库单号,货品及客户选择方便快捷,不限制每笔出货单货物笔数。3 货品盘点管理:可以自动生成盘点单号,货品选择方便快捷。库存查询及统计:1 库存查询:可以随时查询各种货品库存,货品自动分类汇总统计。2 单据查询:可以随时查询入库、出库、盘点等各种货物单据。3 综合查询:可以随时查询不同时间段、凭证号、客户、货品等查询条件查询入、出、盘等数据,并能对查询数据进行统计汇总。 库存分析报警:1 库存上下限设置:可以设定仓库库存中各项货品的库存上下限。库3.概念结构设计1)库存实体E-R图:2)入库实体E-R图:3) 出库实体E-R图:4)部门需求实体E-R图:5)还库实体E-R图:6)计划采购实体E-R
5、图:7)实体和实体之间的关系图如图所示:8) 仓库管理E-R图如图所示4.逻辑结构设计 关系模型设计1) 仓库表STORE_INFONO.字段名代码类型约束1仓库号stoIDChar(3)主键2已用库存Used_volumeSmallint非空,默认0,unsigned,=All_volume3库存总量All_volumeSmallint非空,默认10000,unsigned4负责人principalVarchar(20)非空5电话号码stoTELVarchar(15)2) 零件表PRO_INFONO.字段名代码类型约束1零件号PRO_CODEChar(7)主键2名称PRO_NAMEVarch
6、ar(20)非空3规格PRO_SIZEChar(10)4单价priceDecimal(6,2)非空,默认0,unsigned5计量单位mensurationChar(4)非空,默认“元”6描述descriptionText3) 供应商SUPPLIER_INFONO.字段名代码类型约束1编号SUPPLIER_CODEvarchar(5)主键2供应商SUPPLIER_NAMEVarchar(25)非空3电话号码LINK_PHONEVarchar(15)非空4地址addressText4) 使用者USER_TABLENO.字段名代码类型约束1用户名DUSER_NAMEVARCHAR(30)主键2密码
7、USER_PWDVarchar(20)非空3用户级别USER_LEVELVarchar(15)5) 入库LIST_INFONO.字段名代码类型约束0入库编号LIST_CODEvarchar(5)主键1时间LIST_DATEdatetime2物品数量PRO_NUMint3物品单位UNITvarchar(4)4物品号PRO_CODESmallint 非空5库位代码PLACE_CODEVarchar(20)非空6操作员号OPERATOR_IDVarchar(20)非空6) 操作员OPERATOR_INFONO.字段名代码类型约束0操作员号OPERATOR_IDVARCHAR(5)主键1姓名DNAME
8、Char(3)非空2性别SEXChar(3)非空3等级LEVEL1Char(7)4电话PHONESmallint 非空5地点ADDRESSVarchar(20)非空7) 库位表PLACE_INFONO.字段名代码类型约束0库位号PLACE_CODEsmallint主键1区域名AREA_NAMEChar(3)2物品编号PRO_CODEChar(7)主键,3货架号SHELF_NUMSmallint 非空4层号FLOOR_NUMVarchar(20)非空5列号LINE_NUMVarchar(20)非空6高度HEIGHTVarchar(20)非空7长度LENGTHTimestamp非空8宽度WIDTH
9、5.系统流图定货报告入库信息处理出库信息处理购货商需求表采购货物入库仓库管理系统存储文件入库信息出库信息表库存报表供货商出入库库存报表6.设计存储过程库存盘点存储过程设计思路:1、 判断是否期初盘点,期初盘点则根据已有的入仓数据和出仓数据,计算现库存数量,如果没有入仓数据和出仓数据,则数量计为0,把结果数据插入盘点信息表,返回成功标志,程序结束;2、 非期初盘点,则根据当前时间点找到最近一期的盘点数据,再根据从该期盘点时间到当前时间点所有的入仓数据和出仓数据,计算现库存数量,把结果数据插入盘点信息表,返回成功标志,程序结束;3、 考虑到货品信息表会不定时更新,盘点表也要以最新的货品信息表进行盘
10、点。实时库存情况存储过程实时库存情况存储过程与库存盘点存储过程设计思路类似,但计算结果不需写到数据表,直接以数据集形式返回。设计思路:1、 判断是否已存在盘点数据,如否则根据已有的入仓数据和出仓数据,计算现库存数量,如果没有入仓数据和出仓数据,则数量计为0,返回结果数据集,程序结束;2、 如已存在盘点数据,则根据当前时间点找到最近一期的盘点数据,再根据从该期盘点时间到当前时间点所有的入仓数据和出仓数据,计算现库存数量,返回结果数据集,程序结束;3、 考虑到货品信息表会不定时更新,盘点表也要以最新的货品信息表进行盘点。查询库存异常情况存储过程查询库存异常情况存储过程是以设置库存上下限数据,对实时
11、库存情况进行计算,返回低于库存下限或高于上限的货品数据设计思路:1、 根据库存上下限的数据,限定计算实时库存的货品范围;2、 判断是否已存在盘点数据,如否则根据已有的入仓数据和出仓数据,计算现库存数量,返回低于库存下限或高于上限的货品数据集,程序结束;3、 如已存在盘点数据,则根据当前时间点找到最近一期的盘点数据,再根据从该期盘点时间到当前时间点所有的入仓数据和出仓数据,计算现库存数量,返回低于库存下限或高于上限的货品数据集,程序结束。7.Delphi前台演示1、登录2主界面3供应商信息管理4操作员信息管理5物品信息管理、6库位信息管理7入库信息管理8.出库信息管理9物资借出管理10物资归还管
12、理11.库存信息初始化12库位信息查询13库盘点操作管理14.某时间段库存信息查询15.按时间盘点库存信息操作16入库信息查询17.出库信息查询18当前库存信息查询19.用户账号管理20.账号密码修改8.数据库的实施和维护-创建数据库名为Material_DB的数据库-CREATE DATABASE Material_DBON PRIMARY(NAME = Material_DB1,FILENAME = C:Program FilesMicrosoft SQL ServerMSSQLDATAMaterial_DB1.mdf,SIZE = 10MB,MAXSIZE = 500MB,FILEGRO
13、WTH = 20MB),(NAME = Material_DB2,FILENAME = C:Program FilesMicrosoft SQL ServerMSSQLDATAMaterial_DB2.mdf,SIZE = 1MB,MAXSIZE = 100MB,FILEGROWTH = 10MB)LOG ON(NAME = Material_DB_Log,FILENAME = C:Program FilesMicrosoft SQL ServerMSSQLDATAMaterial_DB_Log.ldf,SIZE = 10MB,MAXSIZE = 100MB,FILEGROWTH = 10%)
14、;GO-创建各实体与联系的关系表-供应商管理SQL语句create procedure FindAllSupplier asselect supplier_code 供应商代码,supplier_name 供应商名称,link_man 联系人,link_phone 联系电话,supplier_address 供应商地址,remark 备注from supplier_infocreate proc InsertSupplier SUPPLIER_CODEED varchar(5),SUPPLIER_NAMEED varchar(25),LINK_MANED varchar(8),LINK_PHO
15、NEED varchar(15),SUPPLIER_ADDRESSED varchar(50),REMARKED varchar(255)asinsert 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_COD
16、EED varchar(5),SUPPLIER_NAMEED varchar(25),LINK_MANED varchar(8),LINK_PHONEED varchar(15),SUPPLIER_ADDRESSED varchar(50),REMARKED varchar(255)asupdate supplier_info set supplier_code=supplier_codeed,supplier_name=supplier_nameed,link_man=link_maned,link_phone=link_phoneed,supplier_address=supplier_a
17、ddressed,remark=remarkedwhere supplier_code=supplier_codeedcreate proc DeleteSupplier Supplier_codeed varchar(5)asdelete from supplier_info where supplier_code=supplier_codeed-物品管理SQL语句create procedure FindAllProasselect pro_code 物品编码,pro_name 物品名称,unit 计量单位,pro_type 物品类型,pro_size 物品规格,pro_price 单位价
18、格,supplier_code 供应商代码,order_num 订货批量,order_time 订货提前期from pro_infocreate 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 intasinsert into pro_info(pro_co
19、de,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 var
20、char(5),united varchar(4),pro_sizeed varchar(15),order_numed int,pro_priceed int,order_timeed intasupdate 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=orde
21、r_timeedwhere pro_code=pro_codeedcreate proc DeletePro pro_codeed varchar(5)asdelete 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
22、,WIDTHED INTasinsert 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_COD
23、EED VARCHAR(5),SHELF_NUMED INT,FLOOR_NUMED INT,LINE_NUMED INT,HEIGHTED INT,LENGTHED INT,WIDTHED INTasupdate 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=widthedwh
24、ere place_code=place_codeedcreate proc DeletePlace place_codeed varchar(5)asdelete from place_info where place_code=place_codeedcreate procedure FindAllPlaceasselect place_code 库位号,area_name 区域名,pro_code 物品编号,shelf_num 货架号码,floor_num 层号,line_num 列号,height 货格高度,length 货格长度,width 货格宽度from place_info-操
25、作员信息管理SQL语句create proc InsertOperator OPERATOR_IDED VARCHAR(5),NAMEED VARCHAR(8),SEXED VARCHAR(2),LEVEL1ED VARCHAR(10),PHONEED VARCHAR(15),ADDRESSED VARCHAR(30)asinsert into operator_info(OPERATOR_ID,DNAME,SEX,LEVEL1,PHONE,ADDRESS) values(OPERATOR_IDED,NAMEED,SEXED,LEVEL1ED,PHONEED,ADDRESSED)create
26、proc ModifyOperator OPERATOR_IDED VARCHAR(5),NAMEED VARCHAR(8),SEXED VARCHAR(2),LEVEL1ED VARCHAR(10),PHONEED VARCHAR(15),ADDRESSED VARCHAR(30)asupdate operator_info set OPERATOR_ID=OPERATOR_IDED,DNAME=NAMEED,SEX=SEXED,LEVEL1=LEVEL1ED,PHONE=PHONEED,ADDRESS=ADDRESSEDwhere operator_id=OPERATOR_IDEDcrea
27、te proc DeleteOperator operator_ided varchar(5)asdelete from operator_info where operator_id=operator_idedcreate procedure FindAllOperatorasselect OPERATOR_ID 操作员ID,DNAME 姓名,LEVEL1 级别,SEX 性别,PHONE 联系电话,ADDRESS 住址from operator_info-入库信息管理SQL语句create procedure FindAllList asselect LIST_CODE 入库单编号,OPER
28、ATOR_ID 操作员代号,LIST_DATE 入库时间,PRO_CODE 入库物品编码,PRO_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号from list_infocreate procedure FindAllList_1 asselect LIST_CODE 入库单编号,OPERATOR_ID 操作员代号,LIST_DATE 入库时间,PRO_CODE 入库物品编码,PRO_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号from list_infowhere list_code like 1%create proc InsertList
29、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)asinsert 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
30、_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)asupdate list_info set LIST_CODE=list_codeed,LIST_DATE=list_dateed,PRO_NUM=pro_numed,UNIT=united,PRO_CODE=pro
31、_codeed,PLACE_CODE=place_codeed,OPERATOR_ID=operator_idedwhere list_code=list_codeedcreate proc DeleteList List_codeed varchar(5)asdelete from list_info where list_code=list_codeed-出库信息管理SQL语句create procedure FindAllList_0 asselect LIST_CODE 出库单编号,OPERATOR_ID 操作员代号,LIST_DATE 出库时间,PRO_CODE 出库物品编码,PRO
32、_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号from list_infowhere list_code like 0%create proc FindStore_Pro_Place PRO_CODEED VARCHAR(5),PLACE_CODEED VARCHAR(5)asselect * from store_info where pro_code=pro_codeed and place_code=place_codeed-借出信息管理SQL语句create procedure FindAllList_o asselect LIST_CODE 借出单编号,OPE
33、RATOR_ID 操作员代号,LIST_DATE 借出时间,PRO_CODE 借出物品编码,PRO_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号from list_infowhere list_code like o%-归还信息管理SQL语句create procedure FindAllList_i asselect LIST_CODE 归还单编号,OPERATOR_ID 操作员代号,LIST_DATE 归还时间,PRO_CODE 归还物品编码,PRO_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号from list_infowhere list
34、_code like i%-库存信息管理SQL语句create procedure FindAllStore asselect PRO_CODE 入库物品编码,STORE_PRO_NUM 库存数量,STORE_UP_NUM 库存上限,STORE_DOWN_NUM 库存下限,UNIT 物品单位,PLACE_CODE 库位代号from store_infocreate proc InsertStore PRO_CODEED VARCHAR(5),STORE_PRO_NUMED INT,STORE_UP_NUMED INT,STORE_DOWN_NUMED INT,UNITED VARCHAR(4)
35、,PLACE_CODEED VARCHAR(5)asinsert 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_N
36、UMED INT,UNITED VARCHAR(4),PLACE_CODEED VARCHAR(5)asupdate 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_CODEEDwhere pro_code=pro_codeed and place_code=place_codeedcreate proc InsertStore_List
37、 PRO_CODEED VARCHAR(5),STORE_PRO_NUMED INT,UNITED VARCHAR(4),PLACE_CODEED VARCHAR(5)asinsert 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_CO
38、DEED VARCHAR(5)asupdate store_info set PRO_CODE=PRO_CODEED,STORE_PRO_NUM=STORE_PRO_NUMED,UNIT=UNITED,PLACE_CODE=PLACE_CODEEDwhere pro_code=pro_codeed and place_code=place_codeedcreate proc DeleteStore PRO_CODEED VARCHAR(5),PLACE_CODEED VARCHAR(5)asdelete from store_info where pro_code=pro_codeed and
39、 place_code=place_codeed-库盘点作业管理SQL语句create proc ModifyStore_ProNum PRO_CODEED VARCHAR(5),PLACE_CODEED VARCHAR(5),STORE_PRO_NUMED INTasupdate store_info set STORE_PRO_NUM=STORE_PRO_NUMEDwhere pro_code=pro_codeed and place_code=place_codeedcreate proc FindStore_Pro PRO_CODEED VARCHAR(5)asselect * fro
40、m store_info where pro_code=pro_codeedcreate proc FindAllStore_Operateas 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 datetimeasselect LIST_CODE 入库单编号,
41、OPERATOR_ID 操作员代号,LIST_DATE 入库时间,PRO_CODE 入库物品编码,PRO_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号from list_infowhere list_code like 1% and list_date between list_dateed1 and list_dateed2create proc FindAllList_1_Pro_code PRO_CODEED varchar(5)asselect LIST_CODE 入库单编号,OPERATOR_ID 操作员代号,LIST_DATE 入库时间,PRO_CODE 入
42、库物品编码,PRO_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号from list_infowhere list_code like 1% and pro_code=pro_codeedcreate proc FindAllList_1_Ope_id OPERATOR_IDED VARCHAR(5)asselect LIST_CODE 入库单编号,OPERATOR_ID 操作员代号,LIST_DATE 入库时间,PRO_CODE 入库物品编码,PRO_NUM 物品数量,UNIT 物品单位,PLACE_CODE 库位代号from list_infowhere list_code like 1% and operator_id=operator_idedcreate proc FindList_1_ListCode LIST_CODEED VARCHAR(5)asselect LIST_CODE 入库单编号,OPERATOR_ID 操作员代号,LIST_DATE 入库时间,PRO_CODE 入库物品编码,PR