仓库管理系统.docx
《仓库管理系统.docx》由会员分享,可在线阅读,更多相关《仓库管理系统.docx(44页珍藏版)》请在冰豆网上搜索。
仓库管理系统
仓库管理系统
仓库管理是整个物资供应管理系统的核心。
本实例着重讲解仓库管理模块,给出数据库设计和程序实现过程。
1、系统设计
1、1系统设计目标
系统开发的总统任务是实现企业物资设备管理的系统化、规范化和自动化,从而达到仓库管理效率的目的。
1、2开发设计思想
在本系统的设计过程中,为了克服仓库管理信息处理量大的困难,满足计算机管理的需要,采取了下面的一些原则:
●● 统一各种原始单据的格式,统一帐目和报表的格式。
●● 删除不必要的管理冗余,实现管理规范化、科学化。
●● 程序代码标准化,软件统一化,确保软件的可维护性和实用性。
●● 界面尽量简单化,做到实用、方便,尽量满足企业不同层次员工的需要。
●● 建立操作日志,系统自动记录所进行的各种操作。
1、3系统功能分析
本例中的仓库管理系统需要完成的功能主要有以下几点:
●● 仓库管理各种信息的输入,包括入库、出库、还库、需求信息的输入等。
●● 仓库管理各种信息的查询、修改和维护。
●● 设备采购报表的生成。
●● 在库存管理中加入最高储备和最低储备字段,对仓库中的物资设备实现监控和报警。
●● 企业各部门的物资需求的管理。
●● 操作日志的管理。
●● 仓库管理系统的使用帮助。
1、4系统功能模块设计
在系统功能分析的基础上,结合VisualC++程序编制的特点,得到如图1-1所示的系统功能模块图。
图1-1系统功能模块图
2、数据库设计
2、1数据库需求分析
在仔细调查企业仓库物资设备管理过程的基础上,得到本系统所处理的数据流程如图1-2所示:
图1-2数据流程图
本实例设计的数据项和数据结构如下:
●● 设备代码信息,包括的数据项有设备号、设备名称。
●● 现有库存信息,包括的数据项有设备、现有数目、总数目、最大库存和最小库存。
●● 设备使用信息,包括的数据项有使用的设备、使用部门、数目、使用时间和出库时状态等。
●● 设备采购信息,包括的数据项有采购的设备、采购员、供应商、采购数目和采购时间等。
●● 设备归还信息,包括的数据项有归还设备、归还部门、归还数目、归还时间和经手人等。
●● 设备需求信息,包括的数据项有需求的部门、需求设备、需求数目和需求时间等。
2、2数据库概念结构设计
本实例根据上面的设计规划出的实体有库存实体、入库实体、出库实体、采购实体、还库实体和需求实体,各实体的E-R图及其关系描述如下:
图1-3库存实体E-R图
图1-4入库实体E-R图
图1-5出库实体E-R图
图1-6部门需求实体E-R图
图1-7还库实体E-R图
图1-8计划采购实体E-R图
图1-9实体和实体之间的关系E-R图
2、3数据库逻辑结构设计
在上面的实体以及实体之间的关系的基础上,形成数据库中的表格和各个表格之间的关系。
仓库管理系统数据库中各个表格的设计结果如下面的几个表格所示。
每个表格表示在数据库中的一个表。
表1-1设备代码表device_code
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号(主键)
name
VARCHAR2(20)
NULL
设备名称
表1-2设备入库表device_in
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号
in_date
DATE
NOTNULL
入库时间(主键)
provider
VARCHAR2(20)
NULL
供应商
teleno
VARCHAR2(10)
NULL
供应商电话
in_number
NUMBER(6)
NULL
入库数量
price
NUMBER(6)
NULL
价格
buyer
VARCHAR2(10)
NULL
采购员
表1-3设备出库表device_out
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号
department
VARCHAR2(20)
NULL
使用部门
out_date
DATE
NULL
出库时间(主键)
out_state
NUMBER
(1)
NULL
出库状态
out_person
VARCHAR2(10)
NULL
经手人
out_number
NUMBER(6)
NOTNULL
出库数量
taker
VARCHAR2(10)
NULL
领取人
usage
VARCHAR2(20)
NULL
用途
表1-4现有库存表device
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号(主键)
now_number
NUMBER(6)
NULL
现有库存
high_number
NUMBER(6)
NULL
最大库存
low_number
NUMBER(6)
NULL
最少库存
total_number
NUMBER(6)
NULL
总数
表1-5部门需求表device_need
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号
department
VARCHAR2(20)
NOTNULL
部门名称
need_number
NUMBER(6)
NULL
需求数量
begin_date
DATE
NULL
需求开始时间
end_date
DATE
NULL
需求结束时间
表1-6设备还库表device_return
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号
return_date
DATE
NULL
还库时间(主键)
keeper
VARCHAR2(20)
NULL
仓库管理员
return_number
NUMBER(6)
NULL
归还数量
return_date
VARCHAR2(10)
NULL
归还人
表1-7操作日志表howdo
列名
数据类型
可否为空
说明
do_user
VARCHAR2(10)
NOTNULL
操作员
do_what
VARCHAR2(40)
NOTNULL
操作内容
do_date
DATE
NOTNULL
操作时间
表1-8设备采购计划表device_wantbuy
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号
now_number
NUMBER(6)
NULL
现有库存
total_number
NUMBER(6)
NULL
总库存
max_number
NUMBER(6)
NULL
最大库存
buy_number
NUMBER(6)
NULL
购买数量
provider
VARCHAR2(10)
NULL
供应商
price
NUMBER(6)
NULL
价格
buy_date
DATE
NULL
计划采购时间(主键)
3、数据库结构的实现
4、创建应用程序
(1)
(1) 选择“FileNew”中的“新建项目”选项卡中“MFCAppWizard(exe)”,设置合适的目录和项目名,比如“E:
\Project”目录下的“DMS”项目。
(2)
(2) 创建一个对话框应用程序(“DialogBased”),单击“Next”按钮。
(3)(3) 由于在这个项目中将要使用ADO,所以在MFCAppWizard的第二步,需要选中“Automation”选项,使应用程序能够支持自动化对象。
如图1-10所示
(4)(4) 单击“Finish”按钮结束项目的创建。
主对话框名为CDMSDlg。
(5)(5) 项目创建完毕后,在头文件stdafx.h中加入下面4行:
#import“c:
\programfiles\commonfiles\system\ado\msado15.dll”no_namespace(”EOF”,”adoEOF”)
#include”icrsint.h”
inlinevoidTESTHR(HRESULTx){ifFAILED(x)_com_issue_error(x);};
#defineDATEFMTCstring(“’%s”’)
5、操作日志模块的设计
(1)写日志模块
图1-10使应用程序支持自动化
先定义一个名为ClogMngr的类
//LogMngr.h
//定义一个Log管理器
classCLogMngr
{
public:
CLogMngr();
virtual~CLogMngr();
public:
boolAddLog(LPCSTRop);
voidSetup(_ConnectionPtrcnnt,CString&user)
{
m_DBCnt=cnnt;
m_user=user;
}
protected:
_ConnectionPtrm_DBCnt;
CStringm_user;
};
下面是ClogMngr:
:
AddLog内部实现详细过程。
//LogMngr.cpp
//向数据库中添加Log记录的代码。
boolCLogMngr:
:
AddLog(LPCSTRop)
{
CTimetm=CTime:
:
GetCurrentTime();
CStringsql_;
sql_.Format("INSERTINTOHOWDO(do_user,do_what,do_date)VALUES('%s','%s','%d-%d-%d%d:
%d:
%d')",
m_user,op,
tm.GetYear(),tm.GetMonth(),tm.GetDay(),
tm.GetHour(),tm.GetMinute(),tm.GetSecond());
_bstr_tsql=sql_;
t