计算机毕业设计仓库管理系统Word格式文档下载.docx

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

计算机毕业设计仓库管理系统Word格式文档下载.docx

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

计算机毕业设计仓库管理系统Word格式文档下载.docx

本实例根据上面的设计规划出的实体有库存实体、入库实体、出库实体、采购实体、还库实体和需XX体,各实体的E-R图及其关系描述如下:

图1-3库存实体E-R图

图1-4入库实体E-R图

图1-5出库实体E-R图

图1-6部门需XX体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

设备号

in_date

DATE

NOTNULL

入库时间(主键)

provider

供应商

teleno

VARCHAR2(10)

in_number

NUMBER(6)

NULL

入库数量

price

价格

buyer

采购员

表1-3设备出库表device_out

department

使用部门

out_date

出库时间(主键)

out_state

NUMBER

(1)

出库状态

out_person

经手人

out_number

出库数量

taker

领取人

usage

用途

表1-4现有库存表device

now_number

现有库存

high_number

最大库存

low_number

最少库存

total_number

总数

表1-5部门需求表device_need

部门名称

need_number

需求数量

begin_date

需求开始时间

end_date

需求结束时间

表1-6设备还库表device_return

return_date

还库时间(主键)

keeper

仓库管理员

return_number

归还数量

return_date

归还人

表1-7操作日志表howdo

do_user

操作员

do_what

VARCHAR2(40)

操作内容

do_date

操作时间

表1-8设备采购计划表device_wantbuy

total_number

总库存

max_number

buy_number

购买数量

buy_date

计划采购时间(主键)

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\monfiles\system\ado\msado15.dll”no_namespace(”EOF”,”adoEOF”)

#include”icrsint.h”

inlinevoidTESTHR(HRESULTx){ifFAILED(x)__issue_error(x);

};

#defineDATEFMTCstring(“’%s”’)

5、操作日志模块的设计

(1)写日志模块

图1-10使应用程序支持自动化

先定义一个名为ClogMngr的类

//LogMngr.h

//定义一个Log管理器

classCLogMngr

{

public:

CLogMngr();

virtual~CLogMngr();

boolAddLog(LPCSTRop);

voidSetup(_ConnectionPtrnt,CString&

user)

{

m_DBt=nt;

m_user=user;

}

protected:

_ConnectionPtrm_DBt;

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_DBt->

Execute(sql,NULL,adCmdText);

catch(__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_DBt->

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

Holder=MySet->

do_date"

if(Holder.vt!

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

do_what"

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

MySet->

MoveNext();

}

MySet->

Close();

m_list.SetRedraw(TRUE);

return;

m_list.SetRedraw(TRUE);

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())

EndDialog(0);

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

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

图1-12登录界面

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

//DMSDlg.cpp

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

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

m_DBt.CreateInstance(__uuidof(Connection));

CStringsql_;

sql_.Format("

DSN=DMS;

UID=%s;

PWD=%s"

dlg.m_UsrName,dlg.m_UsrPwd);

_bstr_tsql=sql_;

//建立连接

Open(sql,"

"

"

-1);

//初始化日志管理器

m_logMngr.Setup(m_DBt,dlg.m_UsrName);

//记录此次登录

m_logMngr.AddLog("

登录数据库"

AfxMessageBox(e.ErrorMessage());

this->

EndDialog(0);

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

//关闭数据库连接

voidCDMSDlg:

OnDestroy()

OnDestroy();

m_DBt->

7、主对话框界面的设计

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

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

图1-13主对话框界面

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

代码如下:

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

OnBtnDevcode()

CDlgDevcodedlg;

dlg.Setup(m_DBt,&

m_logMngr);

this->

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

//读取已有数据

//DlgDevcode.cpp

//消息映射部分

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_DBt=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

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

当前位置:首页 > 解决方案 > 学习计划

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

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