




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 4155.4-2021全民健康信息平臺(tái)共享數(shù)據(jù)集規(guī)范第4部分:家醫(yī)簽約
- DB32/T 4150-2021自然資源所信息化建設(shè)規(guī)范
- DB32/T 4039-2021工貿(mào)企業(yè)安全風(fēng)險(xiǎn)管控實(shí)施評(píng)價(jià)規(guī)范
- DB32/T 3969-2021人力資源服務(wù)機(jī)構(gòu)信用評(píng)價(jià)服務(wù)規(guī)范
- DB32/T 3899-2020蘿卜F1雜交種種子良繁技術(shù)規(guī)程
- DB32/T 3773-2020稻田工業(yè)化生態(tài)綜合種養(yǎng)技術(shù)規(guī)程
- DB32/T 3761.17-2020新型冠狀病毒肺炎疫情防控技術(shù)規(guī)范第17部分:建筑工地
- DB32/T 3743-2020油用牡丹-鳳丹栽培技術(shù)規(guī)程
- DB32/T 3723-2020高標(biāo)準(zhǔn)農(nóng)田建設(shè)項(xiàng)目工程概算編制規(guī)程
- DB32/T 3599-2019增材制造鈦合金零件激光選區(qū)熔化用粉末通用技術(shù)要求
- 頸靜脈血栓的護(hù)理
- TCANSI 119-2023 船載水下機(jī)器人選用與操作一般要求
- 《高速鐵路客運(yùn)服務(wù)禮儀》試題及答案 項(xiàng)目5 試題庫(kù)
- 2024屆高考語(yǔ)文復(fù)習(xí):現(xiàn)代文閱讀 課件
- 《GIS地理信息系統(tǒng)》課件
- 全口咬合重建與牙齒位置調(diào)整
- 創(chuàng)新思維與創(chuàng)業(yè)實(shí)驗(yàn)-東南大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 國(guó)際素食日介紹PPT
- 預(yù)制構(gòu)件及其連接的識(shí)圖與構(gòu)造
- 2020譯林版新教材高二英語(yǔ)全四冊(cè)單詞表(單詞默寫(xiě))
- 低壓加熱器檢修工藝規(guī)程
評(píng)論
0/150
提交評(píng)論