(仓库管理)计算机毕业设计仓库管理系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Holder = MySet->GetCollect("do_date");
if (Holder.vt!=VT_NULL)
m_list.SetItemText(i, 1, (char*)(_bstr_t)Holder);
Holder = MySet->GetCollect("do_what");
if(Holder.vt!=VT_NULL)
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
设备号
return_date
DATE
NULL
还库时间(主键)
keeper
VARCHAR2(20)
NULL
仓库管理员
return_ number
NUMBER(6)
NULL
归还数量
return_date
VARCHAR2(10)
NULL
归还人
表1-7操作日志表howdo
列名
数据类型
可否为空
说明
do_user
VARCHAR2(20)
NOTNULL
部门名称
need _number
NUMBER(6)
NULL
需求数量
begin_date
DATE
NULL
需求开始时间
end_date
DATE
NULL
需求结束时间
表1-6设备还库表device_return
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
RefreshData();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDlgViewLog::RefreshData()
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
high _number
NUMBER(6)
NULL
最大库存
low _number
NUMBER(6)
NULL
最少库存
total _number
NUMBER(6)
NULL
总数
表1-5部门需求表device_need
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号
department
仓库管理系统
仓库管理是整个物资供应管理系统的核心。本实例着重讲解仓库管理模块,给出数据库设计和程序实现过程。
1、系统设计
1、1系统设计目标
系统开发的总统任务是实现企业物资设备管理的系统化、规范化和自动化,从而达到仓库管理效率的目的。
1、2开发设计思想
在本系统的设计过程中,为了克服仓库管理信息处理量大的困难,满足计算机管理的需要,采取了下面的一些原则:
#import“c:\programfiles\commonfiles\system\ado\msado15.dll”no_namespace(”EOF”,”adoEOF”)
#include”icrsint.h”
inline void TESTHR(HRESULT x){if FAILED(x)_com_issue_error(x);};
●●设备需求信息,包括的数据项有需求的部门、需求设备、需求数目和需求时间等。
2、2数据库概念结构设计
本实例根据上面的设计规划出的实体有库存实体、入库实体、出库实体、采购实体、还库实体和需求实体,各实体的E-R图及其关系描述如下:
图1-3库存实体E-R图
图1-4入库实体E-R图
图1-5出库实体E-R图
●●现有库存信息,包括的数据项有设备、现有数目、总数目、最大库存和最小库存。
●●设备使用信息,包括的数据项有使用的设备、使用部门、数目、使用时间和出库时状态等。
●●设备采购信息,包括的数据项有采购的设备、采购员、供应商、采购数目和采购时间等。
●●设备归还信息,包括的数据项有归还设备、归还部门、归还数目、归还时间和经手人等。
NUMBER(6)
NOTNULL
出库数量
taker
VARCHAR2(10)
NULL
领取人
usage
VARCHAR2(20)
NULL
用途
表1-4现有库存表device
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号(主键)
now_number
NUMBER(6)
NULL
现有库存
int wid = rect.right - rect.left;
m_list.SetColumnWidth(0,wid/3);
m_list.SetColumnWidth(1,wid/3);
m_list.SetColumnWidth(2,wid/3);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
表1-1设备代码表device_code
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号(主键)
name
VARCHAR2(20)
NULL
设备名称
表1-2设备入库表device_in
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号
in_date
DATE
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号
department
VARCHAR2(20)
NULL
使用部门
out_date
DATE
NULL
出库时间(主键)
out_state
NUMBER(1)
NULL
出库状态
out_person
VARCHAR2(10)
NULL
经手人
out _number
m_user, op,
tm.GetYear(), tm.GetMonth(), tm.GetDay(),
tm.GetHour(), tm.GetMinute(), tm.GetSecond());
_bstr_t sql = sql_;
try
{
m_DBCnt->Execute(sql,NULL,adCmdText);
m_list.SetItemText(i, 2, (char*)(_bstr_t)Holder);
MySet->MoveNext();
}
MySet->Close();
}
catch(_com_error& e)
public:
bool AddLog(LPCSTR op);
void Setup(_ConnectionPtr cnnt, CString& user)
{
m_DBCnt = cnnt;
m_user = user;
}
protected:
_ConnectionPtr m_DBCnt;
CString m_user;
{
CDialog::OnInitDialog();
m_list.InsertColumn(0,"操作员");
m_list.InsertColumn(1,"操作日期");
m_list.InsertColumn(2,"操作内容");
RECT rect;
m_list.GetWindowRect(&rect);
●●统一各种原始单据的格式,统一帐目和报表的格式。
●●删除不必要的管理冗余,实现管理规范化、科学化。
●●程序代码标准化,软件统一化,确保软件的可维护性和实用性。
●●界面尽量简单化,做到实用、方便,尽量满足企业不同层次员工的需要。
●●建立操作日志,系统自动记录所进行的各种操作。
1、3系统功能分析
本例中的仓库管理系统需要完成的功能主要有以下几点:
MySet = m_DBCnt->Execute(strSQL,NULL,adCmdText);
_variant_t Holder;
while(!MySet->adoEOF)
{
Holder = MySet->GetCollect("do_user");
if(Holder.vt!=VT_NULL)
m_list.InsertItem(i, (char*)(_bstr_t)Holder);
(3)(3)由于在这个项目中将要使用ADO,所以在MFC AppWizard的第二步,需要选中“Automation”选项,使应用程序能够支持自动化对象。如图1-10所示
(4)(4)单击“Finish”按钮结束项目的创建。主对话框名为CDMSDlg。
(5)(5)项目创建完毕后,在头文件stdafx.h中加入下面4行:
图1-6部门需求实体E-R图
图1-7还库实体E-R图
图1-8计划采购实体E-R图
图1-9实体和实体之间的关系E-R图
2、3数据库逻辑结构设计
在上面的实体以及实体之间的关系的基础上,形成数据库中的表格和各个表格之间的关系。仓库管理系统数据库中各个表格的设计结果如下面的几个表格所示。每个表格表示在数据库中的一个表。
计划采购时间(主键)
3、数据库结构的实现
4、创建应用程序
(1)(1)选择“FileNew”中的“新建项目”选项卡中“MFC AppWizard(exe)”,设置合适的目录和项目名,比如“E:\Project”目录下的“DMS”项目。
(2)(2)创建一个对话框应用程序(“Dialog Based”),单击“Next”按钮。
VARCHAR2(10)
NOTNULL
操作员
do_what
VARCHAR2(40)
NOTNULL
操作内容
do_date
DATE
NOTNULL
操作时间
表1-8设备采购计划表device_wantbuy
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号
now_number
NUMBER(6)
};
下Βιβλιοθήκη Baidu是ClogMngr::AddLog内部实现详细过程。
//LogMngr.cpp
//向数据库中添加Log记录的代码。
bool CLogMngr::AddLog(LPCSTR op)
{
CTime tm = CTime::GetCurrentTime();
CString sql_;
sql_.Format("INSERT INTO HOWDO (do_user,do_what,do_date) VALUES('%s','%s','%d-%d-%d %d:%d:%d')",
#define DATEFMT Cstring(“’%s”’)
5、操作日志模块的设计
(1)写日志模块
图1-10使应用程序支持自动化
先定义一个名为ClogMngr的类
//LogMngr.h
//定义一个Log管理器
class CLogMngr
{
public:
CLogMngr();
virtual ~CLogMngr();
●●仓库管理各种信息的输入,包括入库、出库、还库、需求信息的输入等。
●●仓库管理各种信息的查询、修改和维护。
●●设备采购报表的生成。
●●在库存管理中加入最高储备和最低储备字段,对仓库中的物资设备实现监控和报警。
●●企业各部门的物资需求的管理。
●●操作日志的管理。
●●仓库管理系统的使用帮助。
1、4系统功能模块设计
{
m_list.DeleteAllItems();
m_list.SetRedraw(FALSE);
_bstr_t strSQL("SELECT * FROM HOWDO");
_RecordsetPtr MySet;
int i = 0;
try
{
MySet.CreateInstance(__uuidof(Recordset));
在系统功能分析的基础上,结合Visual C++程序编制的特点,得到如图1-1所示的系统功能模块图。
图1-1系统功能模块图
2、数据库设计
2、1数据库需求分析
在仔细调查企业仓库物资设备管理过程的基础上,得到本系统所处理的数据流程如图1-2所示:
图1-2数据流程图
本实例设计的数据项和数据结构如下:
●●设备代码信息,包括的数据项有设备号、设备名称。
}
catch(_com_error& e)
{
CString Error = e.ErrorMessage();
AfxMessageBox(e.ErrorMessage());
return false;
}
return true;
}
(2)读日志模块
图1-11查看日志窗口
初始化界面代码如下:
BOOL CDlgViewLog::OnInitDialog()
if (Holder.vt!=VT_NULL)
m_list.SetItemText(i, 1, (char*)(_bstr_t)Holder);
Holder = MySet->GetCollect("do_what");
if(Holder.vt!=VT_NULL)
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
设备号
return_date
DATE
NULL
还库时间(主键)
keeper
VARCHAR2(20)
NULL
仓库管理员
return_ number
NUMBER(6)
NULL
归还数量
return_date
VARCHAR2(10)
NULL
归还人
表1-7操作日志表howdo
列名
数据类型
可否为空
说明
do_user
VARCHAR2(20)
NOTNULL
部门名称
need _number
NUMBER(6)
NULL
需求数量
begin_date
DATE
NULL
需求开始时间
end_date
DATE
NULL
需求结束时间
表1-6设备还库表device_return
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
RefreshData();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDlgViewLog::RefreshData()
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
high _number
NUMBER(6)
NULL
最大库存
low _number
NUMBER(6)
NULL
最少库存
total _number
NUMBER(6)
NULL
总数
表1-5部门需求表device_need
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号
department
仓库管理系统
仓库管理是整个物资供应管理系统的核心。本实例着重讲解仓库管理模块,给出数据库设计和程序实现过程。
1、系统设计
1、1系统设计目标
系统开发的总统任务是实现企业物资设备管理的系统化、规范化和自动化,从而达到仓库管理效率的目的。
1、2开发设计思想
在本系统的设计过程中,为了克服仓库管理信息处理量大的困难,满足计算机管理的需要,采取了下面的一些原则:
#import“c:\programfiles\commonfiles\system\ado\msado15.dll”no_namespace(”EOF”,”adoEOF”)
#include”icrsint.h”
inline void TESTHR(HRESULT x){if FAILED(x)_com_issue_error(x);};
●●设备需求信息,包括的数据项有需求的部门、需求设备、需求数目和需求时间等。
2、2数据库概念结构设计
本实例根据上面的设计规划出的实体有库存实体、入库实体、出库实体、采购实体、还库实体和需求实体,各实体的E-R图及其关系描述如下:
图1-3库存实体E-R图
图1-4入库实体E-R图
图1-5出库实体E-R图
●●现有库存信息,包括的数据项有设备、现有数目、总数目、最大库存和最小库存。
●●设备使用信息,包括的数据项有使用的设备、使用部门、数目、使用时间和出库时状态等。
●●设备采购信息,包括的数据项有采购的设备、采购员、供应商、采购数目和采购时间等。
●●设备归还信息,包括的数据项有归还设备、归还部门、归还数目、归还时间和经手人等。
NUMBER(6)
NOTNULL
出库数量
taker
VARCHAR2(10)
NULL
领取人
usage
VARCHAR2(20)
NULL
用途
表1-4现有库存表device
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号(主键)
now_number
NUMBER(6)
NULL
现有库存
int wid = rect.right - rect.left;
m_list.SetColumnWidth(0,wid/3);
m_list.SetColumnWidth(1,wid/3);
m_list.SetColumnWidth(2,wid/3);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
表1-1设备代码表device_code
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号(主键)
name
VARCHAR2(20)
NULL
设备名称
表1-2设备入库表device_in
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号
in_date
DATE
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号
department
VARCHAR2(20)
NULL
使用部门
out_date
DATE
NULL
出库时间(主键)
out_state
NUMBER(1)
NULL
出库状态
out_person
VARCHAR2(10)
NULL
经手人
out _number
m_user, op,
tm.GetYear(), tm.GetMonth(), tm.GetDay(),
tm.GetHour(), tm.GetMinute(), tm.GetSecond());
_bstr_t sql = sql_;
try
{
m_DBCnt->Execute(sql,NULL,adCmdText);
m_list.SetItemText(i, 2, (char*)(_bstr_t)Holder);
MySet->MoveNext();
}
MySet->Close();
}
catch(_com_error& e)
public:
bool AddLog(LPCSTR op);
void Setup(_ConnectionPtr cnnt, CString& user)
{
m_DBCnt = cnnt;
m_user = user;
}
protected:
_ConnectionPtr m_DBCnt;
CString m_user;
{
CDialog::OnInitDialog();
m_list.InsertColumn(0,"操作员");
m_list.InsertColumn(1,"操作日期");
m_list.InsertColumn(2,"操作内容");
RECT rect;
m_list.GetWindowRect(&rect);
●●统一各种原始单据的格式,统一帐目和报表的格式。
●●删除不必要的管理冗余,实现管理规范化、科学化。
●●程序代码标准化,软件统一化,确保软件的可维护性和实用性。
●●界面尽量简单化,做到实用、方便,尽量满足企业不同层次员工的需要。
●●建立操作日志,系统自动记录所进行的各种操作。
1、3系统功能分析
本例中的仓库管理系统需要完成的功能主要有以下几点:
MySet = m_DBCnt->Execute(strSQL,NULL,adCmdText);
_variant_t Holder;
while(!MySet->adoEOF)
{
Holder = MySet->GetCollect("do_user");
if(Holder.vt!=VT_NULL)
m_list.InsertItem(i, (char*)(_bstr_t)Holder);
(3)(3)由于在这个项目中将要使用ADO,所以在MFC AppWizard的第二步,需要选中“Automation”选项,使应用程序能够支持自动化对象。如图1-10所示
(4)(4)单击“Finish”按钮结束项目的创建。主对话框名为CDMSDlg。
(5)(5)项目创建完毕后,在头文件stdafx.h中加入下面4行:
图1-6部门需求实体E-R图
图1-7还库实体E-R图
图1-8计划采购实体E-R图
图1-9实体和实体之间的关系E-R图
2、3数据库逻辑结构设计
在上面的实体以及实体之间的关系的基础上,形成数据库中的表格和各个表格之间的关系。仓库管理系统数据库中各个表格的设计结果如下面的几个表格所示。每个表格表示在数据库中的一个表。
计划采购时间(主键)
3、数据库结构的实现
4、创建应用程序
(1)(1)选择“FileNew”中的“新建项目”选项卡中“MFC AppWizard(exe)”,设置合适的目录和项目名,比如“E:\Project”目录下的“DMS”项目。
(2)(2)创建一个对话框应用程序(“Dialog Based”),单击“Next”按钮。
VARCHAR2(10)
NOTNULL
操作员
do_what
VARCHAR2(40)
NOTNULL
操作内容
do_date
DATE
NOTNULL
操作时间
表1-8设备采购计划表device_wantbuy
列名
数据类型
可否为空
说明
code
VARCHAR2(6)
NOTNULL
设备号
now_number
NUMBER(6)
};
下Βιβλιοθήκη Baidu是ClogMngr::AddLog内部实现详细过程。
//LogMngr.cpp
//向数据库中添加Log记录的代码。
bool CLogMngr::AddLog(LPCSTR op)
{
CTime tm = CTime::GetCurrentTime();
CString sql_;
sql_.Format("INSERT INTO HOWDO (do_user,do_what,do_date) VALUES('%s','%s','%d-%d-%d %d:%d:%d')",
#define DATEFMT Cstring(“’%s”’)
5、操作日志模块的设计
(1)写日志模块
图1-10使应用程序支持自动化
先定义一个名为ClogMngr的类
//LogMngr.h
//定义一个Log管理器
class CLogMngr
{
public:
CLogMngr();
virtual ~CLogMngr();
●●仓库管理各种信息的输入,包括入库、出库、还库、需求信息的输入等。
●●仓库管理各种信息的查询、修改和维护。
●●设备采购报表的生成。
●●在库存管理中加入最高储备和最低储备字段,对仓库中的物资设备实现监控和报警。
●●企业各部门的物资需求的管理。
●●操作日志的管理。
●●仓库管理系统的使用帮助。
1、4系统功能模块设计
{
m_list.DeleteAllItems();
m_list.SetRedraw(FALSE);
_bstr_t strSQL("SELECT * FROM HOWDO");
_RecordsetPtr MySet;
int i = 0;
try
{
MySet.CreateInstance(__uuidof(Recordset));
在系统功能分析的基础上,结合Visual C++程序编制的特点,得到如图1-1所示的系统功能模块图。
图1-1系统功能模块图
2、数据库设计
2、1数据库需求分析
在仔细调查企业仓库物资设备管理过程的基础上,得到本系统所处理的数据流程如图1-2所示:
图1-2数据流程图
本实例设计的数据项和数据结构如下:
●●设备代码信息,包括的数据项有设备号、设备名称。
}
catch(_com_error& e)
{
CString Error = e.ErrorMessage();
AfxMessageBox(e.ErrorMessage());
return false;
}
return true;
}
(2)读日志模块
图1-11查看日志窗口
初始化界面代码如下:
BOOL CDlgViewLog::OnInitDialog()