精品仓库管理计算机毕业设计仓库管理系统Word下载.docx

上传人:b****5 文档编号:19772580 上传时间:2023-01-10 格式:DOCX 页数:30 大小:69.48KB
下载 相关 举报
精品仓库管理计算机毕业设计仓库管理系统Word下载.docx_第1页
第1页 / 共30页
精品仓库管理计算机毕业设计仓库管理系统Word下载.docx_第2页
第2页 / 共30页
精品仓库管理计算机毕业设计仓库管理系统Word下载.docx_第3页
第3页 / 共30页
精品仓库管理计算机毕业设计仓库管理系统Word下载.docx_第4页
第4页 / 共30页
精品仓库管理计算机毕业设计仓库管理系统Word下载.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

精品仓库管理计算机毕业设计仓库管理系统Word下载.docx

《精品仓库管理计算机毕业设计仓库管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《精品仓库管理计算机毕业设计仓库管理系统Word下载.docx(30页珍藏版)》请在冰豆网上搜索。

精品仓库管理计算机毕业设计仓库管理系统Word下载.docx

●●设备采购信息,包括的数据项有采购的设备、采购员、供应商、采购数目和采购时间等。

●●设备归还信息,包括的数据项有归还设备、归还部门、归还数目、归还时间和经手人等。

●●设备需求信息,包括的数据项有需求的部门、需求设备、需求数目和需求时间等。

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

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

now_number,NUMBER(6),NULL,现有库存

high_number,NUMBER(6),NULL,最大库存

low_number,NUMBER(6),NULL,最少库存

total_number,NUMBER(6),NULL,总数

表1-5部门需求表device_need

department,VARCHAR2(20),NOTNULL,部门名称

need_number,NUMBER(6),NULL,需求数量

begin_date,DATE,NULL,需求开始时间

end_date,DATE,NULL,需求结束时间

表1-6设备还库表device_return

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

total_number,NUMBER(6),NULL,总库存

max_number,NUMBER(6),NULL,最大库存

buy_number,NUMBER(6),NULL,购买数量

provider,VARCHAR2(10),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();

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'

'

%d-%d-%d%d:

%d:

%d'

)"

m_user,op,

tm.GetYear(),tm.GetMonth(),tm.GetDay(),

tm.GetHour(),tm.GetMinute(),tm.GetSecond());

_bstr_tsql=sql_;

try

m_DBCnt->

Execute(sql,NULL,adCmdText);

catch(_com_error&

e)

CStringError=e.ErrorMessage();

AfxMessageBox(e.ErrorMessage());

returnfalse;

returntrue;

(2)读日志模块

图1-11查看日志窗口

初始化界面代码如下:

BOOLCDlgViewLog:

OnInitDialog()

CDialog:

OnInitDialog();

m_list.InsertColumn(0,"

操作员"

);

m_list.InsertColumn(1,"

操作日期"

m_list.InsertColumn(2,"

操作内容"

RECTrect;

m_list.GetWindowRect(&

rect);

intwid=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);

RefreshData();

returnTRUE;

//returnTRUEunlessyousetthefocustoacontrol

//EXCEPTION:

OCXPropertyPagesshouldreturnFALSE

voidCDlgViewLog:

RefreshData()

m_list.DeleteAllItems();

m_list.SetRedraw(FALSE);

_bstr_tstrSQL("

SELECT*FROMHOWDO"

_RecordsetPtrMySet;

inti=0;

MySet.CreateInstance(__uuidof(Recordset));

MySet=m_DBCnt->

Execute(strSQL,NULL,adCmdText);

_variant_tHolder;

while(!

MySet->

adoEOF)

Holder=MySet->

GetCollect("

do_user"

if(Holder.vt!

=VT_NULL)

m_list.InsertItem(i,(char*)(_bstr_t)Holder);

do_date"

m_list.SetItemText(i,1,(char*)(_bstr_t)Holder);

do_what"

m_list.SetItemText(i,2,(char*)(_bstr_t)Holder);

MoveNext();

Close();

m_list.SetRedraw(TRUE);

return;

OnClickListVllog(NMHDR*pNMHDR,LRESULT*pResult)

inti=m_list.GetSelectionMark();

m_opr=m_list.GetItemText(i,0);

m_date=m_list.GetItemText(i,1);

m_op=m_list.GetItemText(i,2);

UpdateData(FALSE);

*pResult=0;

//DlgViewLog.cpp

//删除所有日志记录的函数。

OnBtnVlrmall()

TRUNCATETABLEHOWDO"

EndDialog(0);

6、登录窗口的设计和程序初始化

在CDMSDlg:

OnInitDialog()中加入这样一段代码:

//DMSDlg.cpp

//弹出登录界面

CDlgLogIndlg;

do

if(!

dlg.DoModal())

}while(dlg.m_UsrName.GetLength()==0);

它的目的是弹出图1-12所示的登录对话框,并从中获得一个有效的用户名。

图1-12登录界面

得到有效用户名后,程序用如下代码:

//建立数据库连接,初始化成员变量

//登录数据库,若失败,则关闭程序。

m_DBCnt.CreateInstance(__uuidof(Connection));

DSN=DMS;

UID=%s;

PWD=%s"

dlg.m_UsrName,dlg.m_UsrPwd);

//建立连接

Open(sql,"

"

"

-1);

//初始化日志管理器

m_logMngr.Setup(m_DBCnt,dlg.m_UsrName);

//记录此次登录

m_logMngr.AddLog("

登录数据库"

this->

在程序结束时关闭数据库连接。

//关闭数据库连接

voidCDMSDlg:

OnDestroy()

OnDestroy();

7、主对话框界面的设计

登录完成后,显示出主对话框。

它的界面设计如图1-13所示,单击某个按钮就能弹出某个功能的界面。

图1-13主对话框界面

以其中“设备代码”按钮为例,说明它的事件处理函数。

代码如下:

//显示设备代码管理界面

OnBtnDevcode()

CDlgDevcodedlg;

dlg.Setup(m_DBCnt,&

m_logMngr);

ShowWindow(SW_HIDE);

dlg.DoModal();

ShowWindow(SW_SHOW);

其他按钮的事件处理函数,代码与“设备代码”按钮的事件处理函数相同。

8、设备代码管理窗口的建立

对话框类名为CdlgDevcode设计如图1-14所示

图1-14设备代码管理窗口

//DlgDevcode.cpp

//对话框的初始化

BOOLCDlgDevcode:

//切分列表控件

设备号"

设备名"

m_list.SetColumnWidth(0,wid/2);

m_list.SetColumnWidth(1,wid/2);

//读取已有数据

//消息映射部分

BEGIN_MESSAGE_MAP(CDlgDevcode,CDialog)

//{{AFX_MSG_MAP(CDlgDevcode)

ON_NOTIFY(NM_CLICK,IDC_LIST_DEVCODE,OnClickListDevcode)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

//事件处理部分

voidCDlgDevcode:

OnClickListDevcode(NMHDR*pNMHDR,LRESULT*pResult)

m_code=m_list.GetItemText(i,0);

m_name=m_list.GetItemText(i,1);

其余程序的清单如下:

//DlgDevcode.cpp:

implementationfile

//

#include"

stdafx.h"

DMS.h"

DlgDevcode.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

////////////////////////////////////////////////////////////////////////////

//CDlgDevcodedialog

CDlgDevcode:

CDlgDevcode(CWnd*pParent/*=NULL*/)

CDialog(CDlgDevcode:

IDD,pParent)

//{{AFX_DATA_INIT(CDlgDevcode)

m_code=_T("

m_name=_T("

//}}AFX_DATA_INIT

m_DBCnt=NULL;

m_log=NULL;

DoDataExchange(CDataExchange*pDX)

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CDlgDevcode)

DDX_Control(pDX,IDC_LIST_DEVCODE,m_list);

DDX_Text(pDX,IDC_EDIT_DCCODE,m_code);

DDX_Text(pDX,IDC_EDIT_DCNAME,m_name);

//}}AFX_DATA_MAP

ON_BN_CLICKED(IDC_BTN_DCADD,OnBtnDcadd)

ON_BN_CLICKED(IDC_BTN_DCDEL,OnBtnDcdel)

ON_BN_CLICKED(IDC_BTN_DCUPD,OnBtnDcupd)

//CDlgDevcodemessagehandlers

//负责读取已有数据的函数

SELECT*FROMDEVICE_CODE"

//执行SOL语句读取记录

{//取出code字段的数据

code"

//取出name字段的数据

name"

//负责添加记录的函数

voidCDlgDevcode

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1