智慧管理計(jì)算機(jī)倉(cāng)庫(kù)自動(dòng)化系統(tǒng)_第1頁(yè)
智慧管理計(jì)算機(jī)倉(cāng)庫(kù)自動(dòng)化系統(tǒng)_第2頁(yè)
智慧管理計(jì)算機(jī)倉(cāng)庫(kù)自動(dòng)化系統(tǒng)_第3頁(yè)
智慧管理計(jì)算機(jī)倉(cāng)庫(kù)自動(dòng)化系統(tǒng)_第4頁(yè)
智慧管理計(jì)算機(jī)倉(cāng)庫(kù)自動(dòng)化系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

倉(cāng)庫(kù)管理系統(tǒng)

倉(cāng)庫(kù)管理是整個(gè)物資供應(yīng)管理系統(tǒng)的關(guān)鍵。本實(shí)例著重講解倉(cāng)庫(kù)管理模塊,給出數(shù)據(jù)庫(kù)

設(shè)計(jì)和程序?qū)崿F(xiàn)過(guò)程。

1、系統(tǒng)設(shè)計(jì)

1>1系統(tǒng)設(shè)計(jì)目的

系統(tǒng)開(kāi)發(fā)H勺總統(tǒng)任務(wù)是實(shí)現(xiàn)企'業(yè)物資設(shè)備管理的系統(tǒng)化、規(guī)范化和自動(dòng)化,從而到達(dá)

倉(cāng)庫(kù)管理效率H勺目的。

1、2開(kāi)發(fā)設(shè)計(jì)思想

在本系統(tǒng)的設(shè)計(jì)過(guò)程中,為「克服倉(cāng)庫(kù)管理信息處理量大的困難,滿足計(jì)算機(jī)管理U勺

需要,采用了下面的某些原則:

??統(tǒng)一多種原始單據(jù)的J格式,統(tǒng)一帳目和報(bào)表的格式。

??刪除不必要口勺管理冗余,實(shí)現(xiàn)管理規(guī)范化、科學(xué)化。

??程序代碼原則化,軟件統(tǒng)一化,保證軟件的可維護(hù)性和實(shí)用性。

??界面盡量簡(jiǎn)樸化,做到實(shí)用、以便,盡量滿足企業(yè)不一樣層次員工的需要。

??建立操作日志,系統(tǒng)自動(dòng)記錄所進(jìn)行的多種操作。

I、3系統(tǒng)功能分析

本例中的倉(cāng)庫(kù)管理系統(tǒng)需要完畢的功能重要有如下幾點(diǎn):

??倉(cāng)庫(kù)管理多種信息的輸入,包括入庫(kù)、出庫(kù)、還庫(kù)、需求信息的輸入等。

??倉(cāng)庫(kù)管理多種信息的查詢、修改和維護(hù),

??設(shè)備采購(gòu)報(bào)表H勺生成。

??在庫(kù)存管理中加入最高儲(chǔ)備和最低儲(chǔ)備字段,對(duì)倉(cāng)庫(kù)中的物資設(shè)備實(shí)現(xiàn)監(jiān)

控和報(bào)警。

??企業(yè)各部門(mén)日勺物資需求的管理。

??操作日志的管理。

??倉(cāng)庫(kù)管理系統(tǒng)H勺使用協(xié)助。

1、4系統(tǒng)功能模塊設(shè)計(jì)

在系統(tǒng)功能分析的基礎(chǔ)上,結(jié)合VisualC++程序編制的特點(diǎn),得到如圖1/所示的系統(tǒng)

功能模塊圖。

理塊塊塊塊

圖1-1系統(tǒng)功能模塊圖

2、數(shù)據(jù)庫(kù)設(shè)計(jì)

2、1數(shù)據(jù)庫(kù)需求分析

在仔細(xì)調(diào)查企業(yè)倉(cāng)庫(kù)物資設(shè)備管理過(guò)程口勺基礎(chǔ)上,得到本系統(tǒng)所處理的數(shù)據(jù)流程如圖

1-2所示:

圖1-2數(shù)據(jù)流程圖

本實(shí)例設(shè)計(jì)H勺數(shù)據(jù)項(xiàng)和數(shù)據(jù)構(gòu)造如卜.:

??設(shè)備代碼信息,包括的數(shù)據(jù)項(xiàng)有設(shè)備號(hào)、設(shè)備名稱。

??既有庫(kù)存信息,包括的數(shù)據(jù)項(xiàng)有設(shè)備、既有數(shù)目、總數(shù)目、最大庫(kù)存和最

小庫(kù)存。

??設(shè)備使用信息,包括的數(shù)據(jù)項(xiàng)有使用日勺設(shè)備、使用部門(mén)、數(shù)目、使用時(shí)間

和出庫(kù)時(shí)狀態(tài)等。

??設(shè)備采購(gòu)信息,包括的數(shù)據(jù)項(xiàng)有采購(gòu)的設(shè)備、采購(gòu)員、供應(yīng)商、采購(gòu)數(shù)目

和采購(gòu)時(shí)間等。

??設(shè)備償還信息,包括的數(shù)據(jù)項(xiàng)有償還設(shè)備、償還部門(mén)、償還數(shù)目、償還時(shí)

間和經(jīng)手人等。

??設(shè)備需求信息,包括的數(shù)據(jù)項(xiàng)有需求的部門(mén)、需求設(shè)備、需求數(shù)目和需求

時(shí)間等。

2、2數(shù)據(jù)庫(kù)概念構(gòu)造設(shè)計(jì)

本實(shí)例根據(jù)上面的設(shè)計(jì)規(guī)劃出的實(shí)體有庫(kù)存實(shí)體、入庫(kù)實(shí)體、出庫(kù)實(shí)體、采購(gòu)實(shí)體、還

庫(kù)實(shí)體和需求實(shí)體,各實(shí)體的E-R圖及其關(guān)系描述如下:

圖1-3庫(kù)存實(shí)體E-R圖

圖1-4入庫(kù)實(shí)體E-R圖

圖1-5出庫(kù)實(shí)體E-R圖

圖1-6部門(mén)需求實(shí)體E-R圖

圖1-7還庫(kù)實(shí)體E-R圖

圖1-8計(jì)劃采購(gòu)實(shí)體E-R圖

圖1-9實(shí)體和實(shí)體之間口勺關(guān)系E-R圖

2、3數(shù)據(jù)庫(kù)邏輯構(gòu)造設(shè)計(jì)

在上面的實(shí)體以及實(shí)體之間的關(guān)系的基礎(chǔ)上,形成數(shù)據(jù)庫(kù)中的表格和各個(gè)表格之間的

關(guān)系。倉(cāng)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)中各個(gè)表格的設(shè)計(jì)成果如下面的幾種表格所示。每個(gè)表格表達(dá)在

數(shù)據(jù)庫(kù)中日勺一種表。

表1-1設(shè)備代碼表device_code

列名數(shù)據(jù)類(lèi)型可否為空闡明

codeVARCHAR2(6)NOTNULL設(shè)備號(hào)(主鍵)

nameVARCHAR2(20)NULL設(shè)備名稱

表1-2設(shè)備入庫(kù)表dcvice_in

列名數(shù)據(jù)類(lèi)型可否為空闡明

codeVARCHAR2(6)NOTNULL設(shè)備號(hào)

in_daleDATENOTNULL入庫(kù)時(shí)間(主鍵)

providerVARCHAR2(20)NULL供應(yīng)商

telenoVARCHAR2(10)NULL供應(yīng)商

in_numbcrNUMBER(6)NULL入庫(kù)數(shù)量

priceNUMBER(6)NULL價(jià)格

buyerVARCHAR2(10)NULL采購(gòu)員

表1-3設(shè)備出庫(kù)表device_out

列名數(shù)據(jù)類(lèi)型可否為空闡明

codeVARCHAR2(6)NOTNULL設(shè)備號(hào)

departmentVARCHAR2(20)NULL使用部門(mén)

out_dateDATENULL出庫(kù)時(shí)間(主鍵)

out_stateNUMBER(1)NULL出庫(kù)狀態(tài)

out_personVARCHAR2(10)NULL經(jīng)手人

out_numberNUMBER(6)NOTNULL出庫(kù)數(shù)量

lakerVARCHAR2(10)NULL領(lǐng)取人

usageVARCHAR2(20)NULL用途

表1-4既有庫(kù)存表device

列名數(shù)據(jù)類(lèi)型可否為空闡明

codeVARCHAR2(6)NOTNULL設(shè)備號(hào)(主鍵)

now_numberNUMBER(6)NULL既有庫(kù)存

high_numberNUMBER(6)NULL最大庫(kù)存

low_numberNUMBER(6)NULL至少庫(kù)存

total_numberNUMBER(6)NULL總數(shù)

表1-5部門(mén)需求表device_need

列名數(shù)據(jù)類(lèi)型可否為空闡明

codeVARCHAR2(6)NOTNULL設(shè)備號(hào)

departmentVARCHAR2(20)NOTNULL部門(mén)名稱

need_numberNUMBER(6)NULL需求數(shù)量

begin_dateDATENULL需求開(kāi)始時(shí)間

end_dateDATENULL需求結(jié)束時(shí)間

表1-6設(shè)備還庫(kù)表device_relum

列名數(shù)據(jù)類(lèi)型可否為空闡明

codeVARCHAR2(6)NOTNULL設(shè)備號(hào)

retum_dateDATENULL還庫(kù)時(shí)間(主鍵)

keeperVARCHAR2(20)NULL倉(cāng)庫(kù)管理員

return_numberNUMBER(6)NULL償還數(shù)量

relum_dateVARCHAR2(10)NULL償還人

表1-7操作口志表howdo

列名數(shù)據(jù)類(lèi)型可否為空闡明

do_uscrVARCHAR2(10)NOTNULL操作員

do_whalVARCHAR2(40)NOTNULL操作內(nèi)容

do_dateDATENOTNULL操作時(shí)間

表1-8設(shè)備采購(gòu)計(jì)劃表devicc_wantbuy

列名數(shù)據(jù)類(lèi)型可否為空闡明

codeVARCHAR2(6)NOTNULL設(shè)備號(hào)

now_numberNUMBER(6)NULL既有庫(kù)存

total_numberNUMBER(6)NULL總庫(kù)存

max_numberNUMBER(6)NULL最大庫(kù)存

buy_numbcrNUMBER(6)NULL購(gòu)置數(shù)量

providerVARCHAR2(10)NULL供應(yīng)商

priceNUMBER(6)NULL價(jià)格

buy_dateDATENULL計(jì)劃采購(gòu)時(shí)間(主鍵)

3、數(shù)據(jù)庫(kù)構(gòu)造的實(shí)現(xiàn)

4、創(chuàng)立應(yīng)用程序

(1)(1)選擇“FileNew”中的“新建項(xiàng)目”選項(xiàng)卡中“MFCAppWizard

(exe)”,設(shè)置合適的目錄和項(xiàng)目名,例如“E:\Project”目錄下的“DMS”

項(xiàng)目。

(2)(2)創(chuàng)立一種對(duì)話框應(yīng)用程序(“DialogBased"),單擊“Next”按鈕。

(3)(3)由于在這個(gè)項(xiàng)目中將要使用ADO,因此在MFCAppWizard曰勺第

二步,需要選中“Aulomalion”選項(xiàng),使應(yīng)用程序可以支持自動(dòng)化對(duì)象。如

圖1/0所示

(4)(4)單擊“Finish”按鈕結(jié)束項(xiàng)目6勺創(chuàng)立。主對(duì)話框名為CDMSDlg。

(5)(5)項(xiàng)目創(chuàng)立完畢后,在頭文獻(xiàn)sidafx.h中加入下面4行:

#import“c:\programfiles\commonfiles\syslem\ado\msadol5.dll"no_namespace(“EOF",“adoEOF")

#inckidc”icrsint.h"

inlinevoidTESTHR(HRESULTx){ifFAILED(x)_com_issue_error(x);};

^defineDATEFMTCstnng(“'%s”')

5、操作日志模塊Fl勺設(shè)計(jì)

(1)寫(xiě)日志模塊

MFCAppWizard-Step2of4

Whatfeatureswouldyouliketoinclude?

“Aboutbox

「Context-sensitiveHelp

曠3Dcontrols

Whatothersupportwouldyouliketoinclude?

PAutomation"

EditingControl:|RecordPActiveXControls

|xCheckBoi(?RadioB?tto?WouldyouliketoincludeWOSAsupport?

「RadioBMtoa

廠WindowsSockets

Pleaseenteratitleforyourdialog:

DMS

<BackNext>FinishCancel

圖1-1()使應(yīng)用程序支持自動(dòng)化

先定義一種名為CIogMngrH勺類(lèi)

//LogMngr.h

〃定義一種Log管理器

classCLogMngr

{

public:

CLogMngr();

virtual-CLogMngr。;

public:

boolAddLog(LPCSTRop);

voidSetupLConnectionPlrcnnt,CString&user)

m_DBCnt=emit;

m_user=user;

protected:

_ConneclionPlrm_DBCnl;

CStringm_user;

};

下面是ClogMngr::AddLog內(nèi)部實(shí)現(xiàn)詳細(xì)過(guò)程。

//LogMngr.cpp

〃向數(shù)據(jù)庫(kù)中添加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.GetDayO,

tm.GetHourO,tmGetMinute(),tm.GetSecondO);

_bstr_tsql=sql_;

try

{

ni_DBCnt->Exec'Jte(sql,NULL,adCmdText);

)

catch(_com_error&e)

CStringError=e.ErrorMessage();

AfxMessageBox(e.ErrorMessageO);

returnfalse;

returntrue;

(2)讀日志模塊

有巖債作日右

操作員1株操作日期I操傣作內(nèi)內(nèi)容容q▲明細(xì)

數(shù)

據(jù)

1112001-9-1...

據(jù)操作員|

1112001-9-1...

數(shù)

據(jù)

1112001-9-1...

數(shù)

據(jù)

1112001-9-1...

數(shù)

據(jù)

2001-9-1...

111數(shù)

據(jù)曰期

2001-9-1...卷錄數(shù)據(jù)

111數(shù)

據(jù)f

2001-9-1...登錄數(shù)據(jù)L

111錄

據(jù)

1112001-9-1...

庫(kù)

登錄改數(shù)據(jù)]

存操作內(nèi)容

PzkpfwIV2001-9-1...

庫(kù)

PzkpfwIV

庫(kù)

PzkpfwIV2001-9-1...除

PzkpfwIV2001-9-1...改庫(kù)

PzkpftwIV2001--9S--1l...加設(shè)

PzkpfwIV2001-9-1...新設(shè)

PzkpfwIV2001-9-1...加設(shè)

PzkpfwIV2001-9-1...除設(shè)

PzkpfwIV備

加設(shè)

PzkpfwIV2001-9-1...缶

除設(shè)

PzkpfwIV2001-9-1...缶

加設(shè)

PzkpfwIV2001-9-1...備

除設(shè)

PzkpfwIV2001-9-1...備

新設(shè)

PzkpflwIV2001-9-1...備

錄數(shù)

PzkpfwIV2001-9-1...據(jù)

錄數(shù)

PzkpfwIV2001-9-1...據(jù)

除離清空日志記錄

PzkpfwIV2001-9-1...求

除福

Tom2002-8-1...求

脛史

Tom2002-8-1...擊

pnnp-fl-iI>退出

?1

圖1-11查看日志窗口

初始化界面代碼如F:

BOOLCDlgViewLog::OnlnitDialog()

(

CDialog::OnlnitDialog();

m」isl.【n$crlColumn(0,"操作員");

m」ist.InsertColumn(l,"操作日期");

m」ist.InsertColumn(2,"操作內(nèi)容");

RECTrect;

inlisl.GetWindowRect(&rect);

intwid=rcct.right-reel.left;

m_list.SetColumnWidth(0.\vid/3);

m_list.SetColumnWidth(1.wid/3);

m_Iist.SetColumnWidth(2,wid/3);

m_lisl.SciExtcndcdStylc(LVS_EX_FULLROWSELECT);

RefreshDataO;

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

//EXCEPTION:OCXPropertyPagesshouldreturnFALSE

}

voidCDlgViewLog::RefreshData()

(

m_list.DeleteAllItems();

m_list.SetRedniw(FALSE);

_bsir_tstrSQL("SELECT*FROMHOWDO");

_RccordsctP(rMyScl;

inti=0:

iry

{

MySet.Createlns(ance(_uuidof(Recordset));

MySet=m_DBCnt->Execute(strSQL,NULL,adCmdText);

_variant_tHolder;

while(!MySel->adoEOF)

(

Holder=MySei->GetCollect("do_user");

if(Holder.vt!=VT_NULL)

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

Holder=MySci->GetCollecl("do_dalc");

if(Holder.vt!=VT_NULL)

m_iist.SetItemText(i,I,(char*)(_bstr_t)Holderi;

Holder=MySci->GclCollcct("do_what");

if(Holdcr.vt!=VT_NULL)

m_list.SetItemText(i.2.(char*)(_bstr_t)Holden;

MySet->MoveNext();

I

MySet->Close();

}

catch(_com_error&e)

{

AfxMessageBox(e.EnorMessageO);

m_list.SetRedraw(TRUE);

return;

)

mJisl.SciRcdraw(TRUE);

}

voidCDlgViewLog::OnClickListVllog(NMHDR*pNMHDR,LRESULT*pResult)

]

inti=m」ist.Ge〔SeleclionMark();

m_opr=in_list.GetItemText(i,O);

in_datc=m_list.GctItcrnT2xt(i,1);

m_op=mJist.GethemText(i,2);

UjxlateData(FALSE);

?pResult=0;

}

//DlgViewLog.cpp

〃刪除所有H忐記錄的函數(shù)。

voidCDlgViewLog::OnBtnVlrmall()

_bstr_tstrSQL("TRUNCATETABLEHOWDO");

{

m_DBCnt->ExccutcJstrSQL.NULL.adCmdTcxt);

I

catch(_com_error&e)

{

AfxMessageBox(e.EnorMessage());

EndDialog(O);

)

RefreshDataO;

}

6、登錄窗口的設(shè)計(jì)和程序初始化

在CDMSDlg::OnInitDiak)g()中加入這樣一段代碼:

//DMSDlg.cpp

〃彈出登耒界面

CDlgLoglndig;

do

(

if(!dlg.DoModal())

EndDialog(O);

}while(dlg.m_UsrNaine.GetLength()==O);

它的目的是彈出圖1-12所示的登錄對(duì)話框,并從中獲得一種有效H勺顧客名。

圖1-12登錄界面

得到有效顧客名后,程序用如下代碼:

//DMSDIg.cpp

〃建立數(shù)據(jù)庫(kù)連接,初始億組員變量

〃登錄數(shù)據(jù)庫(kù),若失敗,則關(guān)閉程序。

{

m_DBCnt.CreateInstance(_uuidof(Connection));

CStringsql_;

sql_.Format("DSN=DMS;UID=%s;PWD=%s'\dlg.m_UsrName,dlg.m_UsrPwd);

_bsir_(sql=sql_;〃建立連接

m_DBCnt->Open(sql,初始化日志管理器

m」ogMngr.Selup(m_DBCnt,dlg.m_UsrName);//記錄本次登錄

mJogMngr.AddLog("登錄數(shù)據(jù)庫(kù)");

)

catch(_com_error&e)

(

AfxMessageBox(e.ErrorMessage());

this->EndDiaiog(0);

在程序結(jié)束時(shí)關(guān)閉數(shù)據(jù)庫(kù)連接。

//DMSDIg.cpp

〃關(guān)閉數(shù)據(jù)庫(kù)連接

voidCDMSDIg::OnDestroy()

{

CDialog::OnDestroy();

m_DBCnt->Close();

1

7、主對(duì)話框界面口勺設(shè)計(jì)

登錄完畢后,顯示出主對(duì)話框。它的界面設(shè)計(jì)如圖1-13所示,單擊某個(gè)按鈕就能彈出

某個(gè)功能的界面。

圖1-13主對(duì)話框界面

以其中“設(shè)備代碼”按鈕為例,闡明它的事件處理函數(shù)。代碼如下:

//DMSDIg.cpp

〃顯示設(shè)備代碼管理界面

voidCDMSDlg::OnBtnDevcode()

(

CDIgDcvcodcdig;

dlg.Sctup(ni_DBCnl.&m_logMngr);

this->ShowWindow(SW_HlDE);

dlg.DoModal();

this->ShowWindow(SW_SHOW);

)

其他按鈕的事件處理函數(shù),代碼與“設(shè)備代碼”按鈕日勺事件處理函數(shù)相似。

8、設(shè)備代碼管理窗口時(shí)建立

對(duì)話框類(lèi)名為CdlgDevcode設(shè)計(jì)如圖1-14所示

設(shè)濟(jì)代碼。?現(xiàn)

設(shè)備號(hào)I設(shè)備名

007Sting

006Me-263

005Stuka

004Bf-109

003Panther

002Tiger

001PzkpfwIV

圖1-14設(shè)備代碼管理窗口

//DlgDcvcodc.cpp

〃對(duì)話框口勺初始化

BOOLCDIgDevcode::OnInitDialog()

(

CDialog::OnInitDialogO;/;切分列表控件

m_list.InsertColumn(0,"設(shè)備號(hào)");

m_lisLlnsertColumn(l設(shè)備名");

RECTrect;

m_list.GetWindowRect(&rect);

intwid=rect.right-rect.left;

m_list.SetColumnWidth(0,wid/2);

m」isl.SeiColumnWid【h(l、wid/2);

m」ist.SetExtendedStyle(LVS_EX_FULLROWSELECT)以讀取已經(jīng)有數(shù)據(jù)

RefreshDataO;

returnTRUE;

)

//DlgDcvcode.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)

(

inti=rn」isl.GelSeleciionMark();

m_code=m」ist.GeUtemText(i,O);

m_name=m_list.GetI:emText(i,1);

UpdateData(FALSE);

*pResu!t=0;

其他程序的清單如下:

//DlgDevcode.cpp:implementationfile

//

#includc"stdafx.h"

#include"DMS.h"

#include"DlgDevcode.h"

#ifdef_DEBUG

#definenewDEBUG.NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=_FILE_;

#endif

〃〃/〃//〃/〃〃/〃//〃/〃〃/〃//〃//〃///〃/〃/〃〃/〃///〃/〃///〃/〃〃/〃

//CDlgDevcodedialog

CDIgDcvuudc;;CDlgDcvcoJc(CWnd+pPaicnl/*-NULLs7)

:CDialog(CDlgDevcode::IDD,pParent)

(

//{{AFX_DATA_INIT(CDlgDevcode)

m_code=_T("");

m_name=_T("");

//}}AFX_DATA_INIT

m_DBCnt=NULL;

mjog=NULL;

voidCDlgDevcode::DoDataExchange(CDataExchange*pDX)

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CDlgDevcode)

DDX_Control(pDX,IDC_LIST_DEVCODE,

DDX_Text(pDX,IDC_EDIT_DCCODE,m_code);

DDX_Text(pDX,IDC_EDIT_DCNAME,m_name);

//}}AFX_DATA_MAP

BEGIN_MESSAGE_MAP(CDlgDevcode,CDialog)

//{{AFX_MSG_MAP(CDlgDevcode)

ON_NOTIFY(NM_CLICK,IDC_LIST_DEVCODE,OnClickListDevcode)

ON_BN_CLICKED(IDC_BTN_DCADD,OnB(nDcadd)

ON_BN_CLICKED(IDC_BTN_DCDEL,OnBlnDcdel)

ON_BN_CLICKED(IDC_BTN_DCUPD,OnBtnDcupd)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/〃/〃//〃〃〃//〃///〃/〃///〃/〃///〃//〃/〃〃〃〃/〃//〃//〃//〃//〃//〃/

//CDlgDevcodemessagehandlers

〃負(fù)責(zé)讀取已經(jīng)有數(shù)據(jù)的函數(shù)

voidCDlgDevcode::RefreshData()

(

m_list.DeleteAnitems();

m_list.SetRedraw(FALSE);

_bs(r_tsuSQLC'SELECT*FROMDEVICE.CODE");

_RecordsetPtrMySet;

inti=0;

try

{

MySet.CreateInstance(_uuidof(Recordset));〃執(zhí)行SOL語(yǔ)句讀取記錄

MySet=m_DBCnt->Execute(strSQL,NULL,adCmdText);

_variant_tHolder;

while(!MySet->adoEOF)

{〃取出code字段的數(shù)據(jù)

Holder=MySet->GetCollect("code");

if(Holder.vt!=VT_NULL)

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

〃取出name字段的數(shù)據(jù)

Holder=MySet->GetCollect("name");

if(Holdcr.vt!=VT_NULL)

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

MySet->MoveNext();

)

I

catch(_com_error&e)

(

AfxMessageBox(e.ErrorMessage());

ni_list.SctRcdraw(TRUE);

return;

m_list.SetRcdraw(TRUE);

〃負(fù)責(zé)添加記錄的函數(shù)

voidCDIgDevcode::OnBtnDcadd()

(

UpdalcDataO;

CStringsql_;

sql_.Format("INSERTINTODEVICE_CODE()VALUES('%s'.'%s')".m_code,m_name);

_bstr_tsql=sql_;

iry

(

m_DBCni->Exccuie:sql,NULL,adCmdTex。;

}

catch(_com_error&e)

(

AfxMessageBox(e.ErrorMessageO);

return;

I

m」og->AddLog("添加設(shè)備記錄、");

RefreshData();

)

〃負(fù)責(zé)刪除記錄的函數(shù)

voidCDIgDevcode::OnBtnDcdel()

(

UpdatcDataO;

CStringsql_;

sql_.Format("DELETEFROMDEVICE_CODEWHERECODE='%s"'.m_code);

_bstr_tsql=sql_;

try

(

m_DBCnt->Exccute;sql,NULL,adCnidTcxt);

}

catch(_com_error&e)

I

AfxMessageBox(e.ErrorMessageO);

return;

}

m」og->AddLog("刪除設(shè)備記錄?!?;

RefreshData();

}

〃負(fù)責(zé)更新數(shù)據(jù)的函數(shù)

voidCDlgDevcode::OnBtnDcupd()

(

UpdateData();

CStringsql_;

sql_.Fonnat("UPDATEDEVICE.CODESETNAME='%s'WHERECODE='%s";m_namc,m_codc);

_bstr_tsql=sql_;

try

(

m_DBCnt->Execute;sql,NULL,adCmdText);

)

catch(_com_crror&c)

(

AfxMessageBox(e.ErrorMessageO);

return:

)

m」og,AddIx)g("更新設(shè)備記錄。

RefreshData();

}

9、庫(kù)存信息管理窗口的創(chuàng)立

顧客可以在此新增、修改、刪除某種設(shè)備U勺記錄。單擊主對(duì)話框中的“庫(kù)存信息”按鈕,

將出現(xiàn)圖1-15所示日勺界面。新增記錄時(shí),顧客在“設(shè)備號(hào)”組合框中選擇一種設(shè)備號(hào),在

下面填入多種數(shù)量,之后單擊“新增”按鈕即可向表中增長(zhǎng)記錄。

修改記錄時(shí),顧客單擊列表中某一行,程序運(yùn)用1、8提到的措施,在窗口下面把這一

行記錄II勺詳細(xì)信息顯示出來(lái),顧客即可對(duì)之修改。

“設(shè)備號(hào)”這個(gè)子窗「I初始化H勺時(shí)候有如卜代碼:

//DlgDcv.cpp

〃時(shí)話框的初始化

BOOLCDlgDev::OnInitDialog()

(

CDialog::OnIni(Dialog();

〃切分列表控件

11「后匕睡?口(20111口111(0,"設(shè)備號(hào)");

m_list.InsertColumn(1,"現(xiàn)存數(shù)量");

m_list.InsertColumn(2,"最大數(shù)量");

171_瓜.1|吠11?011111111(3,"最小數(shù)量");

m_list.InsertColumn(4,"總數(shù)");

RECTrect;

m_list.GetWindowRect(&rect);

intwid=rect.right-rect.left;

m」isl.SeiColumrWidth(0,wid/5);

m_list.SetColumr.Width(1,wid/5);

m_list.SetColumr.Width(2,wid/5);

m_list.SetColumr.Width(3,wid/5);

m」ist.SetColun】rWidlh(4,wid/5);

m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);

_RecordsetPtrpRst=NULL;

lADORecordBinding*picRs=NULL://InterfacePointerdeclared.(VC++

Excensions)

CDevCodeRsrs;

try

{

_bsir_tstrSQL("SELECT*FROMDEVICE.CODE");

TESTHR(pRst.CreateInstance(_uuidof(Recordset)));

//讀取所有的設(shè)備編號(hào)

pRst=m_DBCnt->Execute(strSQL,NULL.adCmdText);

〃數(shù)據(jù)綁定

TESTHR(pRst->QueryInterface(_uuidof(IADORecordBinding),(LPVOID*)&picRs));

TESTHR(picRs->BindTbRecordset(&rs));

inti=0;

while(!pRst->adoEOF)

{〃向組合框控件中添加所有的設(shè)備編號(hào)

m_devs.AddString(rs.m_sz_code);

pRst->MoveNext();

|

picRs->Release();

pRst->Closc();

}

catch(_com_eiTor&e)

{

AfxMessageBox(e.ErrorMessageO);

EndDialog(O);

returnTRUE;

)

RefreshDataO;

iclumTRUE.//icluinTRUEunlessyousetllicfucustoacuiiliul

//EXCEPTION:OCXPropertyPagesshouldreturnFALSE

圖1-15庫(kù)存信息管理

10、設(shè)備入庫(kù)信息管理

在主對(duì)話框中單擊“入庫(kù)信息”按鈕就進(jìn)入如圖1-16所示的界面。

查看入庫(kù)信息xj

設(shè)備號(hào)入庫(kù)時(shí)間供應(yīng)商供應(yīng)商電話數(shù)量I價(jià)格采購(gòu)員I

0041983-06-0...M.D.800-123321160.0...1700Deny

0061983-06-0...Grum...800-0000112.00...7100Bill

0021983-06-0...Lockh...800-5432110.50...1.990...Jack

0011983-06-0...G.D.800-12345100.0...1000Tom

IH

圖1-16設(shè)備入庫(kù)信息管理界面

下面是修改和刪除記錄的代碼:

voidCDlgViewDevIn::OnBtnViupdate()

{

if(!UpdatcData())

return;

CStringsql_;

sql_.Format(CString("SELECT*FROMDEVICE」NWHEREin_date=")+DATEFMT,

m_date);

bstr_tsql=sql_;

_RecordsetP(rpRsl=NULL;

lADORecordBinding*picRs=NULL://InterfacePointerdeclared.(VC++Extensions)

CDevInRsrs;

TESTHR(pRst.Createlnstance(_uuidof(Recordset)));

pRst->Open(sql,_variant_t((IDispatch*)m_DBCnt,

true),adOpenKeyset,adLockOptimistic,adCmdText);

〃數(shù)據(jù)綁定

TESTHR(pRst->QueryInterface(_uuidof(IADORecor(JBinding),(LPVOID*)&picRs));

TESTHR(picRs->BindToRecordset(&rs));

〃填寫(xiě)需要修改的數(shù)據(jù)

strcpy(rs.ni_sz_code,m_code);

strcpy(rs.m_sz_date,ni_date):

strcpy(rs.m_sz_provider,m_provider);

strcpy(rs.m_sz_tel,m_tel);

rs.ni_Cnumber=m_number;

rs.m_Lprice=m_price;

strcpy(rs.ni_sz_buyer,m_buyer);

〃開(kāi)始更新數(shù)據(jù)

TESTHR(picRs->Update(&rs));

〃釋放ADO對(duì)象

picRs->Release():

pRst->Close();

catch(_com_error&e)

AfxMessageBox(e.ErrorMessageO);

return;

)

MessageBox("完畢操作!");

m」og?>AddLog("修改入庫(kù)信息”);

RefreshData();

)

voidCDlgViewDevIn::OnBtnVidel()

{

if(!UpdateData())

return;

CStringsql_;

sql_.Format(CString("DELETEFROM

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論