【《倉庫管理系統(tǒng)的設(shè)計與實現(xiàn)》19000字(論文)】_第1頁
【《倉庫管理系統(tǒng)的設(shè)計與實現(xiàn)》19000字(論文)】_第2頁
【《倉庫管理系統(tǒng)的設(shè)計與實現(xiàn)》19000字(論文)】_第3頁
【《倉庫管理系統(tǒng)的設(shè)計與實現(xiàn)》19000字(論文)】_第4頁
【《倉庫管理系統(tǒng)的設(shè)計與實現(xiàn)》19000字(論文)】_第5頁
已閱讀5頁,還剩70頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

倉庫現(xiàn)有庫存匯總、處理原料入庫原料出庫各種信息查詢倉庫最低庫存?zhèn)}庫最高庫存原料采購供貨渠道分析2.3可行性分析1.技術(shù)可行性。倉庫管理軟件在一定程度上讓倉庫的工作人員的操作流程變簡化了。通過結(jié)合實際倉庫管理工作流程進行設(shè)計,而開發(fā)生成一款實用性強的軟件。2.效益方面:原來手工記帳方式需要多人干的工作,通過倉庫管理軟件的實現(xiàn),大大節(jié)約人力的成本,工作流程也變的簡便,工作量和勞動強度也大大降低了,為企業(yè)管理開發(fā)一個合理的、實用性強的倉庫管理子模塊。經(jīng)濟效益得到了很大的提高。3.操作可行性。本軟件針對對象是倉庫的管理者和倉庫的庫管員,設(shè)計的操作界面友好、操作界面簡化,倉庫的工作人員不需要了解本軟件的原理,只要會簡單的一些計算機操作知識就可以使用本軟件,倉庫的工作人員通過軟件的操作使用說明書步驟就可以運用本軟件。4.工具可行性。軟件方面:計算機應(yīng)用到各行各業(yè),在日常工作辦公中都要用計算機進行操作,計算機操作的部分屬于軟件的應(yīng)用,所以軟件的應(yīng)用對于現(xiàn)在人們來說不是難題。硬件方面:計算機越來越來普及的今天,擁有一臺計算機已經(jīng)常見的事,計算機的硬件方面滿足人們的操作應(yīng)用的需求。所以從以上技術(shù)上、效益上、操作上、工具上進行可行性分析來看,開發(fā)此倉庫管理軟件是完全可行的。第三章系統(tǒng)設(shè)計3.1系統(tǒng)總體設(shè)計前面完成需求分析、形成了可行性報告,形成了軟件的設(shè)計思想之后,下一步設(shè)計系統(tǒng)的功能和數(shù)據(jù)庫。3.1.1系統(tǒng)目標設(shè)計本軟件開發(fā)的總體實現(xiàn)目標是倉庫管理的規(guī)范化、簡化工作流程、計算機自動化,從而倉庫管理的工作人員的工作效率得到了提高,人力成本降低了,查詢方便快捷了。3.1.2開發(fā)設(shè)計思想倉庫管理主要是物料的管理。實現(xiàn)原料驗收入庫,原料出庫、原料的退貨、原料的退庫、原料的請購單、及各種信息數(shù)據(jù)報表的查詢。根據(jù)需要按照品種進行統(tǒng)計分析和查詢、按日期進行統(tǒng)計分析和查詢,按照品種和日期組合統(tǒng)計分析和查詢,產(chǎn)生相應(yīng)報表查詢。倉庫管理過程中要處理的信息量非常大,倉庫的原料種類繁多,每天發(fā)生入庫單、出庫單、退庫、請購單等單據(jù)信息量非常大,倉庫管理相關(guān)聯(lián)信息多,查詢和統(tǒng)計數(shù)據(jù)量大。給倉庫管理實現(xiàn)起來有一定的困難,給數(shù)據(jù)的查詢和匯總增加難度。在管理的過程中經(jīng)常會出現(xiàn)信息的重復(fù)傳遞。3.1.3系統(tǒng)功能分析本倉庫管理模塊需要完成的功能主要有以下幾點:實現(xiàn)倉庫管理各種信息的輸入,包括原料代碼初始化、原料入庫、原料出庫、原料還庫、采購?fù)素洝⒄堎弳蔚妮斎?、查詢條件的輸入等。實現(xiàn)倉庫數(shù)據(jù)操作過程中各種信息的增加、修改、刪除操作。實現(xiàn)倉庫管理過程中各種信息的查詢、修改及維護,通過輸入查詢條件進行查詢。通過對原料的價格、供貨的產(chǎn)品質(zhì)量、到貨及時性進行分析,實現(xiàn)供貨渠道最優(yōu)化采購。原料采購報表的生成。庫存管理引進了最高庫存和最低庫存字段,對倉庫的庫存情況實現(xiàn)監(jiān)控和報警,通過現(xiàn)有庫存與最高庫存和最低庫存進行比較來自動生成原料自動請購單。實現(xiàn)物資需求和管理。實現(xiàn)臨近保質(zhì)期物料的監(jiān)控和報警,通過輸入臨近的天數(shù)來查詢指定臨近天數(shù)的物料的保質(zhì)期情況。3.1.4系統(tǒng)功能設(shè)計通過上面系統(tǒng)的功能分析的基礎(chǔ)上,結(jié)合倉庫管理的功能需求,結(jié)合VisualC++開發(fā)環(huán)境程序編制的特點,得到如圖3-1所示的系統(tǒng)功能模塊圖。倉庫管理模塊倉庫信息模塊倉庫管理模塊倉庫信息模塊查詢模塊系統(tǒng)登錄模塊原料代碼管理原料入庫管理原料出庫管理采購?fù)素浌芾碓贤藥旃芾碓险堎弳螏齑鎴缶芾砼R近保質(zhì)期管理原料入庫列表查詢采購?fù)素浟斜聿樵冊贤藥炝斜聿樵冊铣鰩炝斜聿樵冊铣鰩炝斜聿樵儸F(xiàn)有庫存查詢供貨渠道分析庫管理模塊倉庫信息模塊查詢模塊系統(tǒng)登錄模塊原料入庫管理3.1.53.1.5原料出庫管原料請庫存報臨近保質(zhì)期管原料入庫采購?fù)素浟斜聿樵冊贤藥炝斜聿樵冊铣鰩炝斜聿樵冊铣鰩炝斜聿楝F(xiàn)有庫存查詢圖3-1系統(tǒng)功能模塊圖3.1.5系統(tǒng)各模塊說明1、原料代碼管理模塊包括原料信息的增加、修改、刪除。2、倉庫信息模塊原料的入庫和退貨管理。原料的出庫和退庫管理。根據(jù)現(xiàn)有庫存低于最低庫存時,申請采購物資。通過以往的數(shù)據(jù)的價格、供貨質(zhì)量級別、供貨的及時性對供貨渠道進行分析。3、查詢模塊輸入起始日期和截止日期,按輸入的日期進行查詢,既可以查到這一時段內(nèi)的出入庫信息。按原料查詢,直接輸入原料名進行查詢,也可以根據(jù)原料名稱和日期組合查詢。4、系統(tǒng)登錄管理3.2數(shù)據(jù)庫設(shè)計通過分析實際倉庫管理的內(nèi)容和倉庫管理流程,設(shè)計的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)如下:原料代碼信息:包括的數(shù)據(jù)項有id、原料的編號、原料的名稱、計量單位、最低庫存、最高庫存原料入庫信息:包括的數(shù)據(jù)項有id、供應(yīng)商編號、供應(yīng)商名稱、入庫日期、原料的編號、入庫數(shù)量、單價、生產(chǎn)日期、保質(zhì)期、制表人、質(zhì)量級別、供貨周期等原料出庫信息:包括的數(shù)據(jù)項有id、出庫日期、原料的編號、出庫數(shù)據(jù)、生產(chǎn)日期、領(lǐng)料人、制表人等采購?fù)素浶畔ⅲ喊ǖ臄?shù)據(jù)項有id、退貨日期、供應(yīng)商編號、供應(yīng)商名稱、原料編號、退貨的數(shù)據(jù)、單價、生產(chǎn)日期、制表人等原料退庫信息:包括的數(shù)據(jù)項有id、歸還時間、歸還的原料編號、歸還的數(shù)量、生產(chǎn)日期、歸還人、制表人等原料的自動采購信息:包括的數(shù)據(jù)項有id、需求的部門、需求原料、需求數(shù)量、需求時間、制表人等原料的采購申請信息:包括的數(shù)據(jù)項有id、需求的部門、需求原料、需求數(shù)量、申請日期、需求日期、申請人等模塊登錄信息:包括id、用戶名、密碼8、實體和實體之間的關(guān)系E-R圖如圖3-9所示:現(xiàn)有庫存現(xiàn)有庫存出庫入庫還庫部門需求原料采購最低、最高庫存圖3-9為實體和實體之間的關(guān)系E-R圖3.3系統(tǒng)主窗體設(shè)計3.3.1創(chuàng)建工程項目—倉庫管理子模塊打開VisualStudio2010后,單擊文件→新建→項目→VisualC++→MFC應(yīng)用程序→輸入項目名→基于對話框,將這個工程項目命名為TEST1。3.3.2公共模塊設(shè)計使用ADO技術(shù)用于連接數(shù)據(jù)源,并對數(shù)據(jù)庫的數(shù)據(jù)進行處理一些命令和事務(wù),在使用ADO技術(shù)訪問數(shù)據(jù)庫之前,必須先創(chuàng)建一個ADO連接對象,然后才能通過該對象打開到數(shù)據(jù)庫的連接,相當于在程序與數(shù)據(jù)庫服務(wù)器之間建立一條的通路。為了簡化程序的操作,把ADO對象封裝到類中。這樣做的好處是在程序的不同模塊中操作數(shù)據(jù)庫時,只要引用封裝類的頭文件,即可使用封裝過的ADO對象。在使用ADO連接訪問數(shù)據(jù)庫時,把連接代碼封裝成一個類,這樣在程序的各個模塊中想調(diào)用數(shù)據(jù)庫時都可以使用,可以降低代碼的重復(fù)使用,本實例封裝了一個CMyDBWork類,該類的主要功能是完成數(shù)據(jù)庫的連接、數(shù)據(jù)庫的打開和關(guān)閉,記錄集的打開與關(guān)閉操作,CMyDBWork類的頭文件如下:classCMyDBWork{public: CMyDBWork(); virtual~CMyDBWork();public: boolBindingRecord(CADORecordBinding*RsObject,char*szSQLStr); boolConnDB(void); //連接數(shù)據(jù)庫 int GetConnStr(char*szConnStr,intnBuffSize); //獲得連接數(shù)據(jù)庫的字符串 boolSetConnStr(void); //設(shè)置連接數(shù)據(jù)庫的字符串 boolSetConnStr(char*szConnStr); //設(shè)置連接數(shù)據(jù)庫的字符串 bool SelectSQL(constchar*szSQL); //執(zhí)行select語句 boolExecuteSQL(constchar*szSQLStr,long&nRefreshNum);//查詢數(shù)據(jù)的SQL語句 boolOpenDB(void); voidCloseDB(void); //關(guān)閉記錄集、連接對象 voidCloseRecord(void); };CMyDBWork類中的成員函數(shù)ConnDB用于連接數(shù)據(jù)庫,在該函數(shù)中調(diào)用ADO連接對象//連接SQLServer數(shù)據(jù)庫boolCMyDBWork::ConnDB(void)//{if(strlen(m_szConnStr)<5) if(!SetConnStr()){AfxMessageBox(L"數(shù)據(jù)庫連接子串設(shè)置錯誤");returnfalse;} boolbResult=false; if(NULL==m_pConn||adStateClosed==m_pConn->State){ if(strlen(m_szConnStr)>0){try {//Connecting if(!FAILED(m_pConn.CreateInstance(_uuidof(Connection)))){//設(shè)置連接超時時間 m_pConn->CommandTimeout=30; //insecondsif(!FAILED(m_pConn->Open((_bstr_t)(m_szConnStr),"","",adModeUnknown))) { bResult=true; //AfxMessageBox(L"打開數(shù)據(jù)成功"); } } } catch(_com_errore){ charszLog[MAX_BUFF];memset(szLog,0,MAX_BUFF); sprintf_s(szLog,"連接數(shù)據(jù)庫錯誤:%s\n",(char*)(e.Description())); m_WriteLog.WriteLog(szLog,strlen(szLog),LOG_ERR); }} } returnbResult;}//執(zhí)行select語句boolCMyDBWork::SelectSQL(constchar*szSQL){ boolbResult=false; if(strlen(szSQL)>0&&strlen(m_szConnStr)>0){ if(NULL!=m_pRecord/*||adStateClosed!=m_pRecord->State*/) m_pRecord->Close(); try { if(!FAILED(m_pRecord.CreateInstance(__uuidof(Recordset)))){ HRESULThr=0; if(NULL==m_pConn||adStateClosed==m_pConn->State) hr=m_pRecord->Open((_bstr_t)szSQL,_variant_t(m_szConnStr),adOpenKeyset,adLockOptimistic,adCmdText); else hr=m_pRecord->Open((_bstr_t)szSQL,m_pConn.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); if(SUCCEEDED(hr)) bResult=true; } } catch(_com_errore) { charszLog[MAX_BUFF];memset(szLog,0,MAX_BUFF); sprintf_s(szLog,"執(zhí)行SQL查詢命令錯誤:%s[%s]",(char*)(e.Description()),szSQL); m_WriteLog.WriteLog(szLog,strlen(szLog),LOG_ERR); } } returnbResult;}3.3.3主窗體設(shè)計倉庫管理子模塊的主窗體效果如圖3-10所示:圖3-10為倉庫管理子模塊的主窗體效果主窗體設(shè)計步驟如下:啟動VisualStudio2010,單擊文件→新建→項目→VisualC++→MFC應(yīng)用程序→輸入項目名→基于對話框,將這個工程項目命名為TEST1;單擊確定按鈕進入MFC應(yīng)用程序,選中“基于對話框”按鈕。單擊“完成”完成工程的創(chuàng)建。打開主窗口的屬性,將主窗口標題設(shè)置為“倉庫管理子模塊”。在主窗口添加2個組合框(GroupBox),1個組合框取名為倉庫信息模塊,1個組合框取名為查詢模塊。倉庫信息模塊增加7個命令按鈕,包括原料代碼管理、原料入庫管理、原料出庫管理、采購?fù)素浌芾?、原料退庫管理、原料自動采購、原料請購單、供貨渠道分析。查詢模塊增加8個命令按鈕,包括倉庫報警管理、監(jiān)控保質(zhì)期報警管理、原料入庫列表查詢、原料出庫列表查詢、采購?fù)素浟斜聿樵?、原料退庫列表查詢、現(xiàn)有庫存查詢、原料采購列表查詢。第四章系統(tǒng)實現(xiàn)4.1數(shù)據(jù)庫實現(xiàn)4.1.1連接數(shù)據(jù)庫在進行開發(fā)設(shè)計前,一個很重要的步驟就是連接數(shù)據(jù)庫訪問數(shù)據(jù)庫。VisualStudio2010提供了多種方式訪問數(shù)據(jù)庫,其中以O(shè)DBC與ADO訪問數(shù)據(jù)庫方式最常見。ODBC與ADO數(shù)據(jù)庫接口已經(jīng)將一些底層的操作都封裝在類中,用戶可以方便地使用這些接口,而無需編寫操作數(shù)據(jù)庫地底層代碼。具體ODBC及ADO詳見相關(guān)理論部分。本系統(tǒng)采用ADO方式訪問數(shù)據(jù)庫。1.創(chuàng)建一個MyDBWork類,封裝ADO對象。2.在StdAfx.h頭文件中加入一段代碼,用于導(dǎo)入ADO動態(tài)鏈接庫,代碼如下:#import"Lib\msado15.dll"no_namespacerename("EOF","adoEOF"),rename("BOF","adoBOF")3.使用ADO連接數(shù)據(jù)庫使用ADO對象連接數(shù)據(jù)庫,把連接數(shù)據(jù)庫操作封裝在一個類里,因為整個系統(tǒng)都會使用到這個數(shù)據(jù)庫,所以把數(shù)據(jù)庫的連接定義為全局變量。4.1.2建立數(shù)據(jù)表本軟件設(shè)計采用了SQLserver建立數(shù)據(jù)庫作為數(shù)據(jù)的服務(wù)器。先啟動SQLserver程序,建立一個數(shù)據(jù)庫名為“raw_store”的數(shù)據(jù)庫,在數(shù)據(jù)庫中表上右擊“新建表”來建立各表。數(shù)據(jù)庫各表如圖4-1所示:圖4-1為數(shù)據(jù)庫各表各個數(shù)據(jù)表格的設(shè)計結(jié)果如下面表格所示。每個表格所示在數(shù)據(jù)庫中的一個表。建立原料代碼表如下圖4-2所示:圖4-2為原料代碼表建立原料采購申請表如下圖4-3所示:圖4-3為原料采購申請表建立用戶登錄表如下圖4-4所示:圖4-4為用戶登錄表建立原料入庫表如下圖4-5所示:圖4-5為原料入庫表建立原料出庫表如下圖4-6所示:圖4-6為原料出庫表建立原料采購?fù)素洷砣缦聢D4-7所示:圖4-7為原料采購?fù)素洷斫⒃贤藥毂砣缦聢D4-8所示:圖4-8為原料退庫表建立原料自動采購表如下圖4-9所示:圖4-9為原料自動采購表4.2系統(tǒng)登錄界面1.設(shè)計思路與要點:用戶運行程序后,輸入用戶名與密碼,程序根據(jù)用戶名和密碼與后臺數(shù)據(jù)庫raw_enter查詢用戶名和密碼是否正確,如果正確,則調(diào)用主窗體模塊,執(zhí)行相應(yīng)的操作。2.系統(tǒng)登錄界面如圖4-10所示:圖4-10為系統(tǒng)登錄界面3.系統(tǒng)登錄界面實現(xiàn)代碼如下,建立對話框的類CLoginvoidCLogin::OnBnClickedOk(){ //TODO:在此添加控件通知處理程序代碼 UpdateData(TRUE);//MFC的窗口函數(shù) CMyDBWorkmydb; if(mydb.ConnDB()==false)return;//ConnDB()連接數(shù)據(jù)庫,初始化對話框中的數(shù)據(jù) CStringstr; str.Format(L"select*fromraw_enterwhereuser1='%s'andpwd='%s'",m_cName,m_cPwd);//查詢數(shù)據(jù)庫raw_enter if(!mydb.SelectSQL((_bstr_t)str)){AfxMessageBox(L"查詢錯誤!");return;} //AfxMessageBox(L"查詢成功!"); if(!mydb.IsRecordEOF()) { } else { m_cTip.Format(L"用戶名或密碼錯誤!"); UpdateData(false); return; } CDialogEx::OnOK();}4.3倉庫信息模塊倉庫信息模塊是倉庫管理的核心模塊,根據(jù)倉庫的日常操作共分成八個子模塊,基本上包括了倉庫管理的主要功能,子模塊分別包括:原料代碼管理原料入庫管理原料出庫管理采購?fù)素浌芾碓贤藥旃芾碓献詣硬少徳险堎弳喂┴浨婪治?.3.1原料代碼管理窗口原料代碼表格(raw_code)包含原料編號、原料名稱、計量單位、最低庫存、最高庫存,原料代碼表經(jīng)常被其他表格引用,如獲取合法原料編號,由設(shè)備編號查找設(shè)備名稱、最低最高庫存。該對話框類名為CrawCode,設(shè)計如圖4-11所示:圖4-11為原料代碼列表窗口2、原料代碼列表窗口包括一個列表框(listcontrol),一個“增加”按鈕、一個“刪除”按鈕、一個“修改”按鈕。3、列表框顯示原料代碼表的所有字段和數(shù)據(jù),無此原料代碼編號時點擊“增加”按鈕,調(diào)出增加原料代碼窗口,設(shè)計如圖4-12所示:圖4-12為增加原料代碼窗口4、原料代碼表的數(shù)據(jù)需要進行修改時,單擊一行點擊“修改”按鈕;或者雙擊要修改的行就調(diào)出增加原料代碼窗口,進行修改操作。5、原料代碼表的數(shù)據(jù)需要進行刪除時,單擊一行點擊“刪除”按鈕。6、原料代碼管理模塊實現(xiàn)功能包含在RawCode.cpp、RawCode.h、RawCodeAdd.cpp、RawCodeAdd.h文件中。7、“增加”“修改”按鈕的實現(xiàn)代碼如下。voidCRawCodeAdd::OnBnClickedOk(){ UpdateData(TRUE); CMyDBWorkmydb; if(mydb.ConnDB()==false)return; CStringstr; longnum; if(m_nID<=0) str.Format(L"insertintoraw_code(raw_number,raw_name,raw_dw,low_number,high_number)values('%s','%s','%s','%s','%s')",m_cCode,m_cName,m_cUnit,m_cLownumber,m_cHighnumber);//查詢數(shù)據(jù)庫raw_code elsestr.Format(L"updateraw_codesetraw_number='%s',raw_name='%s',raw_dw='%s',low_number='%s',high_number='%s'whereraw_id=%d",m_cCode,m_cName,m_cUnit,m_nID,m_cLownumber,m_cHighnumber); if(!mydb.ExecuteSQL((_bstr_t)str,num)){AfxMessageBox(L"數(shù)據(jù)庫執(zhí)行錯誤"+str);return;} AfxMessageBox(L"數(shù)據(jù)庫執(zhí)行成功"+str); CDialogEx::OnOK();}BOOLCRawCodeAdd::OnInitDialog(){ CDialogEx::OnInitDialog(); if(m_nID>0) { m_btnAdd.SetWindowTextW(L"保存"); CMyDBWorkmydb; if(mydb.ConnDB()==false)returnfalse; CStringstr; str.Format(L"select*fromraw_codewhereraw_id=%d",m_nID); if(!mydb.SelectSQL((_bstr_t)str)){returnfalse;} mydb.CollectMsg("raw_number",m_cCode); mydb.CollectMsg("raw_name",m_cName); mydb.CollectMsg("raw_dw",m_cUnit); mydb.CollectMsg("low_number",m_cLownumber); mydb.CollectMsg("high_number",m_cHighnumber); UpdateData(false); } returnTRUE;}4.3.2原料入庫管理窗口設(shè)計思路和要點:原料入庫操作依據(jù)訂單來核實原料名稱和數(shù)量等信息,經(jīng)質(zhì)檢員檢驗合格后的原料才能辦理入庫原料入庫的流程圖,如圖4-13所示:采購訂單核實原料數(shù)量采購訂單核實原料數(shù)量填寫原料報檢單質(zhì)檢員檢驗合格辦理原料入庫管理與原料代碼表核實此原料是否是新原料調(diào)用原料代碼管理是新增原料代碼信息原料入庫新增否調(diào)用原料代碼中原料名稱圖4-13原料入庫的流程圖3、原料入庫表格(raw_in)包含供應(yīng)商編號、供應(yīng)商名稱、入庫日期、原料編碼、入庫數(shù)量、單價、生產(chǎn)日期等字段,該對話框類名為CrawIn,設(shè)計如圖4-14所示:圖4-14原料入庫列表窗口4、原料入庫列表窗口包括一個列表框(listcontrol),一個“增加”按鈕、一個“刪除”按鈕、一個“修改”按鈕。5、列表框顯示原料入庫表的所有字段和數(shù)據(jù),原料入庫時點擊“增加”按鈕,調(diào)出增加原料入庫窗口,設(shè)計如圖4-15所示:圖4-15為原料入庫窗口6、原料入庫表的數(shù)據(jù)需要進行修改時,單擊一行點擊“修改”按鈕;或者雙擊要修改的行就調(diào)出增加原料修改窗口(同原料入庫窗口),進行修改操作。7、原料入庫表的數(shù)據(jù)需要進行刪除時,單擊一行點擊“刪除”按鈕。8、原料入庫管理模塊實現(xiàn)功能包含在RawIn.cpp、RawIn.h、RawInAdd.cpp、RawInAdd.h文件中。9、“增加”“修改”按鈕的實現(xiàn)部分代碼如下。CStringraw_number; CStringstr; str.Format(L"selectraw_numberfromraw_codewhereraw_id=%d",RawID); if(!mydb.SelectSQL((_bstr_t)str)){return;}if(!mydb.IsRecordEOF())//只處理第一條記錄 { mydb.CollectMsg("raw_number",raw_number); } mydb.CloseRecord();//關(guān)閉tb_SystemInfo記錄集 longnum; if(m_nID<=0)str.Format(L"insertintoraw_in(in_date,gybh,gymc,raw_number,in_number,price,sc_date,time,in_person)\ values('%s','%s','%s','%s',%s,'%s','%s',%d,'%s')",in_date,m_cGybh,m_cGymc,raw_number,m_dNum,m_dPrice,sc_date,m_nTime,m_cPerson);//查詢數(shù)據(jù)庫raw_in elsestr.Format(L"updateraw_insetin_date='%s',gybh='%s',gymc='%s',raw_number='%s',in_number='%s',price='%s'\,sc_date='%s',time=%d,in_person='%s'wherein_id=%d",in_date,m_cGybh,m_cGymc,raw_number,m_dNum,m_dPrice,sc_date,m_nTime,m_cPerson,m_nID);if(!mydb.ExecuteSQL((_bstr_t)str,num)){AfxMessageBox(L"數(shù)據(jù)庫執(zhí)行錯誤"+str);return;} AfxMessageBox(L"數(shù)據(jù)庫執(zhí)行成功"+str);4.3.3原料出庫管理窗口設(shè)計思路和要點:原料出庫操作依據(jù)生產(chǎn)的領(lǐng)料單、現(xiàn)有庫存等信息,選擇原料的生產(chǎn)日期時遵循先進先出的原則出庫。原料出庫的流程圖,如圖4-16所示:生產(chǎn)計劃生產(chǎn)計劃領(lǐng)料單原料出庫操作核實現(xiàn)有庫存信息原料請購單削減現(xiàn)有庫存夠不夠圖4-16原料出庫的流程圖原料出庫表格(raw_out)包含出庫日期、原料編碼、出庫數(shù)量、生產(chǎn)日期等字段,該對話框類名為CrawOut,設(shè)計如圖4-17所示:圖4-17原料出庫列表原料出庫列表窗口包括一個列表框(listcontrol),一個“增加”按鈕、一個“刪除”按鈕、一個“修改”按鈕。列表框顯示原料出庫表的所有字段和數(shù)據(jù),原料出庫時點擊“增加”按鈕,調(diào)出增加原料出庫窗口,設(shè)計如圖4-18所示:圖4-18原料出庫窗口原料出庫表的數(shù)據(jù)需要進行修改時,選中一行點擊“修改”按鈕;或者雙擊要修改的行就調(diào)出增加原料出庫窗口,進行修改操作。原料出庫表的數(shù)據(jù)需要進行刪除時,選中一行點擊“刪除”按鈕。原料出庫管理模塊實現(xiàn)功能包含在RawOut.cpp、RawOut.h、RawOutAdd.cpp、RawOutAdd.h文件中?!霸黾印薄靶薷摹卑粹o的實現(xiàn)部分代碼如下。longnum;if(m_nID<=0)str.Format(L"insertintoraw_out(out_date,raw_number,out_number,sc_date,taker,out_person)values('%s','%s',%s,'%s','%s','%s')",out_date,raw_number,m_cOutnumber,scdate,m_ctaker,m_cPerson);//查詢數(shù)據(jù)庫raw_outElsestr.Format(L"updateraw_outsetout_date='%s',raw_number='%s',out_number=%s,sc_date='%s',taker='%s',out_person='%s'whereout_id=%d",out_date,raw_number,m_cOutnumber,scdate,m_ctaker,m_cPerson,m_nID);if(!mydb.ExecuteSQL((_bstr_t)str,num)){AfxMessageBox(L"數(shù)據(jù)庫執(zhí)行錯誤"+str);return;}AfxMessageBox(L"數(shù)據(jù)庫執(zhí)行成功"+str);4.3.4采購?fù)素浌芾泶翱谠O(shè)計思路和要點:采購?fù)素浌芾硪罁?jù)質(zhì)檢員出具的原料不合格報告信息,倉庫管理員負責退貨原料的清點,對所退的原料進行退貨操作。。采購?fù)素浌芾淼牧鞒虉D,如圖4-19所示:原料檢驗報告原料檢驗報告原料入庫原料放置不合格區(qū)合格不合格原料的清點所退原料的清點采購部通知供應(yīng)商供應(yīng)商提貨倉庫開具退貨單圖4-19采購?fù)素浌芾淼牧鞒虉D采購?fù)素洷砀瘢╮aw_return1)包含供應(yīng)商編號、供應(yīng)商名稱、原料編號、退貨的數(shù)量等字段,該對話框類名為CrawPurreturn,設(shè)計如圖4-20所示:圖4-20采購?fù)素浟斜泶翱诓少復(fù)素浟斜泶翱诎ㄒ粋€列表框(listcontrol),一個“增加”按鈕、一個“刪除”按鈕、一個“修改”按鈕。列表框顯示采購?fù)素洷淼乃凶侄魏蛿?shù)據(jù),采購?fù)素洉r點擊“增加”按鈕,調(diào)出退貨窗口,設(shè)計如圖4-21所示:圖4-21采購?fù)素洿翱诓少復(fù)素洷淼臄?shù)據(jù)需要進行修改時,選中一行點擊“修改”按鈕;或者雙擊要修改的行就調(diào)出增加采購?fù)素洿翱?,進行修改操作。采購?fù)素洷淼臄?shù)據(jù)需要進行刪除時,選中一行點擊“刪除”按鈕。采購?fù)素浌芾砟K實現(xiàn)功能包含在RawPurreturn.cpp、RawPurreturn.h、RawPurreturnAdd.cpp、RawPurreturnAdd.h文件中?!霸黾印薄靶薷摹卑粹o的實現(xiàn)部分代碼如下。CStringraw_number; CStringstr; str.Format(L"selectraw_numberfromraw_codewhereraw_id=%d",RawID); if(!mydb.SelectSQL((_bstr_t)str)){return;}if(!mydb.IsRecordEOF())//只處理第一條記錄 { mydb.CollectMsg("raw_number",raw_number); } mydb.CloseRecord();//關(guān)閉tb_SystemInfo記錄集 longnum; if(m_nID<=0) str.Format(L"insertintoraw_return1(return_date,gybh,gymc,raw_number,return_number,price,sc_date,in_person)\ values('%s','%s','%s','%s',%s,%s,'%s','%s')",in_date,m_cGybh,m_cGymc,raw_number,m_cNum,m_cPrice,sc_date,m_cperson);//查詢數(shù)據(jù)庫raw_return1 elsestr.Format(L"updateraw_return1setreturn_date='%s',gybh='%s',gymc='%s',raw_number='%s',return_number=%s,price=%s,sc_date='%s',in_person='%s'wheregy_id=%d",in_date,m_cGybh,m_cGymc,raw_number,m_cNum,m_cPrice,sc_date,m_cperson,m_nID);4.3.5原料退庫管理窗口設(shè)計思路和要點:原料退庫操作依據(jù)退庫申請單、質(zhì)檢員對退料的檢驗合格單等信息,倉庫管理人員清點退庫的數(shù)量進行退庫操作。生產(chǎn)剩余原料申請復(fù)檢復(fù)檢不合格報廢處理生產(chǎn)剩余原料申請復(fù)檢復(fù)檢不合格報廢處理復(fù)檢合格原料退庫申請審核通過清點數(shù)量辦理原料退庫操作核算現(xiàn)有庫存圖4-22原料退庫的流程圖原料退庫表格(raw_return2)包含退庫日期、原料編碼、退庫數(shù)量、生產(chǎn)日期等字段,該對話框類名為CrawWreturn,設(shè)計如圖4-23所示:圖4-23原料退庫列表原料退庫列表窗口包括一個列表框(listcontrol),一個“增加”按鈕、一個“刪除”按鈕、一個“修改”按鈕。列表框顯示原料退庫表的所有字段和數(shù)據(jù),原料退庫時點擊“增加”按鈕,調(diào)出增加原料退庫窗口,設(shè)計如圖4-24所示:圖4-24原料退庫窗口原料退庫表的數(shù)據(jù)需要進行修改時,選中一行點擊“修改”按鈕;或者雙擊要修改的行就調(diào)出增加原料退庫窗口,進行修改操作。原料退庫表的數(shù)據(jù)需要進行刪除時,選中一行點擊“刪除”按鈕。原料退庫管理模塊實現(xiàn)功能包含在RawWreturn.cpp、RawWreturn.h、RawWreturnAdd.cpp、RawWreturnAdd.h文件中?!霸黾印薄靶薷摹卑粹o的實現(xiàn)部分代碼如下。CStringstr; str.Format(L"selectraw_numberfromraw_codewhereraw_id=%d",RawID); if(!mydb.SelectSQL((_bstr_t)str)){return;}if(!mydb.IsRecordEOF())//只處理第一條記錄 { mydb.CollectMsg("raw_number",raw_number); } mydb.CloseRecord();//關(guān)閉tb_SystemInfo記錄集 CStringscdate;//取得生產(chǎn)日期 m_comboDate.GetLBText(m_comboDate.GetCurSel(),scdate); longnum; if(m_nID<=0) str.Format(L"insertintoraw_return2(return_date,raw_number,return_number,sc_date,return_person,out_person)、 values('%s','%s','%s','%s','%s','%s')",out_date,raw_number,m_cNum,scdate,m_cRperson,m_cOutperson);//查詢數(shù)據(jù)庫raw_return2 elsestr.Format(L"updateraw_return2setreturn_date='%s',raw_number='%s',return_number='%s',sc_date='%s',return_person='%s',out_person='%s'whereret_id=%d",out_date,raw_number,m_cNum,scdate,m_cRperson,m_cOutperson,m_nID);4.3.6原料自動采購管理窗口設(shè)計思路和要點:原料自動采購操作依據(jù)最低庫存、最高庫存、現(xiàn)有庫存等信息,自動生成原料自動采購信息,為下一步做原料的采購申請單作為根據(jù),合理控制好庫存的庫容,一方面控制庫存不能高于最高庫存。原料自動采購的流程圖,如圖4-25所示:最低庫存最低庫存最高庫存現(xiàn)有庫存自動計算出自動采購數(shù)量作為申請采購依據(jù)圖4-25原料自動采購的流程圖計算公式:(最低庫存+最高庫存)/2-現(xiàn)有庫存。預(yù)警:倉庫管理人員要求進行庫存量核算時發(fā)現(xiàn)原料庫存低于“最低庫存”時對相關(guān)部門進行的信息通報。報警:倉庫管理人員要求進行庫存量核算時發(fā)現(xiàn)原材料、成品低于“安全庫存”時對相關(guān)部門進行的信息通報。原料自動采購管理模塊設(shè)計如圖4-26所示:圖4-26原料自動采購窗口原料自動采購管理模塊實現(xiàn)功能包含在AutoBuy.cpp、AutoBuy.h文件中。實現(xiàn)部分代碼如下。CStringstr; longnum; str.Format(L"deletefromraw_wantbuy");//刪除之前生成自動采購項 if(!mydb.ExecuteSQL((_bstr_t)str,num)){AfxMessageBox(L"數(shù)據(jù)庫執(zhí)行錯誤"+str);returnfalse;} COleDateTimetime=COleDateTime::GetCurrentTime(); CStringsTime=time.Format(L"%Y-%m-%d"); //自動生成采購記錄 str.Format(L"insertintoraw_wantbuy(dapart,raw_number,buy_number,buy_date,buy_person)\ select'采購部',c.raw_number,(c.high_number+c.low_number)/2-now,'%s','張三'fromv_Rawv,raw_codecwherev.raw_number=c.raw_numberandv.now<c.low_number",sTime);// if(!mydb.ExecuteSQL((_bstr_t)str,num)){AfxMessageBox(L"數(shù)據(jù)庫執(zhí)行錯誤"+str);returnfalse; InitFields(); LoadData();//載入ListCtrl數(shù)據(jù)NVR4.3.7原料請購單管理窗口設(shè)計思路和要點:原料請購單依據(jù)生產(chǎn)的計劃表、現(xiàn)有庫存、原料自動采購等信息,填寫原料請購單。原料請購單的流程圖,如圖4-27所示:生產(chǎn)計劃表生產(chǎn)計劃表核算原料的用量現(xiàn)有庫存原料自動采購表依據(jù)上面數(shù)量制定合理采購數(shù)量生成原料請購單采購部門實施采購圖4-27原料請購單的流程圖原料請購單表格(raw_buy)包含申請部門、原料編碼、原料名稱、申請數(shù)量、需求日期等字段,該對話框類名為CrawBuy,設(shè)計如圖4-28所示:圖4-28原料采購列表窗口原料請購單列表窗口包括一個列表框(listcontrol),一個“增加”按鈕、一個“刪除”按鈕、一個“修改”按鈕。列表框顯示原料請購單的所有字段和數(shù)據(jù),原料出庫時點擊“增加”按鈕,調(diào)出增加原料請購單窗口,設(shè)計如圖4-29所示:圖4-29原料采購窗口原料請購單表的數(shù)據(jù)需要進行修改時,選中一行點擊“修改”按鈕;或者雙擊要修改的行就調(diào)出增加原料采購單窗口,進行修改操作。原料請購單表的數(shù)據(jù)需要進行刪除時,選中一行點擊“刪除”按鈕。原料請購單管理模塊實現(xiàn)功能包含在RawBuy.cpp、RawBuy.h、RawBuyAdd.cpp、RawBuyAdd.h文件中。“增加”“修改”按鈕的實現(xiàn)部分代碼如下。if(m_nID<=0) str1.Format(L"insertintoraw_buy(dapart,raw_number,buy_num,filing_date,demanded_date,proposer)\ values('%s','%s','%s','%s','%s','%s')",m_cDepart,raw_number,m_cNum,in_date,sc_date,m_cPerson);//查詢數(shù)據(jù)庫raw_buy elsestr1.Format(L"updateraw_buysetdapart='%s',raw_number='%s',buy_num='%s',filing_date='%s',demanded_date='%s',proposer='%s'whereb_id=%d",m_cDepart,raw_number,m_cNum,in_date,sc_date,m_cPerson,m_nID);4.3.8供貨渠道分析設(shè)計思路和要點:依據(jù)以往發(fā)生過的數(shù)據(jù)的原料價格進行排序選擇相應(yīng)原料的價格性價比最高的供應(yīng)商;依據(jù)到貨的原料的質(zhì)量級別進行排序選擇級別最高的、性價比又最優(yōu)的供應(yīng)商;依據(jù)供應(yīng)的原料的供貨周期選擇用時最短的供應(yīng)商。供貨渠道分析的流程圖,如圖4-30所示:選擇原料名稱選擇原料名稱選擇一段時間按原料價格對比按質(zhì)量級別對比按供貨周期級別對比選擇性價比最高的供應(yīng)商選擇質(zhì)量最優(yōu)的供應(yīng)商選擇供貨周期最短的供應(yīng)商圖4-30供貨渠道分析的流程圖某種原料在指定一段時間內(nèi)按原料價格進行排序,來回切換排序按鈕實現(xiàn)升降序切換顯示,顯示如圖4-31所示:圖4-31按價格排序圖某種原料在指定一段時間內(nèi)按質(zhì)量級別進行排序,來回切換排序按鈕實現(xiàn)升降序切換顯示,顯示如圖4-32所示:圖4-32按質(zhì)量級別排序圖某種原料在指定一段時間內(nèi)按供貨周期進行排序,來回切換排序按鈕實現(xiàn)升降序切換顯示顯示如圖4-33所示:圖4-33按供貨周期排序圖6.供貨渠道分析窗口包括一個列表框(listcontrol),一個“按價格排序”按鈕、一個“按質(zhì)量級別排序”按鈕、一個“按供貨周期排序”按鈕。7.供貨渠道分析管理模塊實現(xiàn)功能包含在RawSupplyc.cpp、RawSupplyc.h文件中。8.“按價格排序”“按質(zhì)量級別排序”“按供貨周期排序”按鈕的實現(xiàn)部分代碼如下。m_cSortField=L"price"; if(m_cOrder==L"ASC")m_cOrder=L"DESC"; elsem_cOrder=L"ASC";str.Format(L"selectc.Raw_Number,c.Raw_Name,i.gybh,i.gymc,i.price,i.quality,i.leadtimefromraw_ini,raw_Codecwherec.Raw_Number=i.Raw_Number"); if(raw_number!=L"") { str.Format(L"%sandi.raw_number='%s'",str,raw_number); } str.Format(L"%sandin_date>='%s'",str,date1); str.Format(L"%sandin_date<='%s'",str,date2); //排序 str.Format(L"%sorderby%s%s",str,m_cSortField,m_cOrder);4.4查詢模塊查詢統(tǒng)計模塊主要完成的功能有:庫存報警管理臨近保質(zhì)期報警管理原料入庫列表查詢原料出庫列表查詢采購?fù)素浟斜聿樵冊贤藥炝斜聿樵儸F(xiàn)有庫存查詢原料請購單列表查詢4.4.1庫存報警管理設(shè)計思路和要點:為避免因訂單、生產(chǎn)作業(yè)、保管等因素疏忽引起的庫存不足或是庫存過剩;為確保生產(chǎn)的正常進行;為能及時向客戶方提供產(chǎn)品。分為按低于“最低庫存”查詢、按高于“最高庫存”查詢兩方面查詢,從而對庫存狀況提前預(yù)警和報警,便于及時了解庫容情況。2、原料庫存報警管理的流程圖,如圖4-34所示:現(xiàn)有數(shù)據(jù)現(xiàn)有數(shù)據(jù)制定原料最高最低庫存?zhèn)}庫及時準確錄入數(shù)據(jù)一段時間使用情況調(diào)整安全庫存提出《安全庫存原變更表》領(lǐng)導(dǎo)批準更改原料代碼表圖4-34原料庫存報警管理的流程圖3、按低于“最低庫存”查詢設(shè)計思路與要點:低于“最低庫存”就有可能形成短缺,影響正常生產(chǎn)或銷售活動。要求進行庫存量核算時發(fā)現(xiàn)原料低于“最低庫存”時對相關(guān)部門進行的信息通報。通過此功能,可能了解整個倉庫最低庫存情況,及時補充原料,以免因低于此數(shù)據(jù)造成無法正常生產(chǎn)供應(yīng)的情況發(fā)生。設(shè)計如圖4-35所示:圖4-35原料自動報警窗口4、按高于“最高庫存”查詢設(shè)計思路與要點:低于“最高庫存”就有可能形成積壓庫存,浪費原料成本。要求進行庫存量核算時發(fā)現(xiàn)原料高于“最高庫存”時對相關(guān)部門進行的信息通報。設(shè)計如圖4-36所示:圖4-36原料自動報警窗口5、原料庫存報警管理模塊實現(xiàn)功能包含在RawStockAlarm.cpp、RawStockAlarm.h、文件中。6、實現(xiàn)部分代碼如下。str.Format(L"selectc.*,r.nowfromraw_codec,v_Rawrwherer.Raw_Number=c.Raw_Number"); if(flag==1)str.Format(L"%sandnow>high_number",str); if(flag==2)str.Format(L"%sandnow<low_number",str);4.4.2臨近保質(zhì)期報警管理設(shè)計思路和要點:為進一步加強流通環(huán)節(jié)食品安全,臨近保質(zhì)期食品的經(jīng)營管理,有效防止和控制食品安全隱患,按臨近保質(zhì)期多少天對原料進行查詢,及時了解庫存的原料臨近保質(zhì)期情況,便于庫房管理,及時處理滯銷原料,達到降低庫存成本的同時,降低原料的損耗。截止日期當前日期臨近保質(zhì)期天數(shù)臨近保質(zhì)期的原料截止日期當前日期臨近保質(zhì)期天數(shù)臨近保質(zhì)期的原料圖4-37臨近保質(zhì)期報警管理的流程圖3、臨近保質(zhì)期報警頁面顯示如圖4-38所示:圖4-38臨近保質(zhì)期報警窗口實現(xiàn)過程:截止日期=生產(chǎn)日期+保質(zhì)期,截止日期-當前日期<=臨近保質(zhì)期的天數(shù)。臨近保質(zhì)期報警管理模塊實現(xiàn)功能包含在RawEXP.cpp、RawEXP.h、文件中。實現(xiàn)部分代碼如下。str0.Format(L"selecti.*,DATEADD(day,time,sc_Date)asDateExp,c.Raw_Namefromraw_ini,raw_Codec\ wherec.Raw_Number=i.Raw_Number"); str.Format(L"selectt.*,DATEDIFF(day,getdate(),DateExp)asdaysfrom(%s)twhereDATEADD(day,-%s,DateExp)<getdate()",str0,m_cTime);4.4.3原料入庫列表查詢1、設(shè)計思路和要點:從原料名稱、日期這兩方面查詢,從而對入庫信息進行查詢,輸入要查詢的原料名稱、入庫的起始日期和截止日期為查詢條件,符合一個條件或兩者條件的入庫信息顯示出來。2、原料入庫列表查詢的流程圖,如圖4-39所示:開始開始輸入查詢條件查找物資判斷信息正確顯示查詢結(jié)果重新輸入查詢條件是否圖4-39原料入庫列表查詢的流程圖3、臨近保質(zhì)期報警頁面顯示如圖4-40所示:圖4-40原料入庫列表查詢窗口原料入庫列表查詢模塊實現(xiàn)功能包含在RawInQuery.cpp、RawInQuery.h、文件中。實現(xiàn)部分代碼如下。str.Format(L"selecti.*,c.Raw_Number,c.Raw_Namefromraw_ini,raw_Codecwherec.Raw_Number=i.Raw_Number"); if(raw_number!=L"") { str.Format(L"%sandi.raw_number='%s'",str,raw_number); } str.Format(L"%sandin_date>='%s'",str,date1); str.Format(L"%sandin_date<='%s'",str,date2);4.4.4原料出庫列表查詢設(shè)計思路和要點:從原料名稱、日期這兩方面查詢,從而對出庫信息進行查詢,輸入要查詢的原料名稱、出庫的起始日期和截止日期為查詢條件,符合一個條件或兩者條件的出庫信息顯示出來。3、原料出庫列表查詢的流程圖,同原料入庫列表查詢的流程圖原料出庫列表查詢頁面顯示如圖4-41所示:圖4-41原料出庫列表查詢窗口原料出庫列表查詢模塊實現(xiàn)功能包含在RawOutQuery.cpp、RawOutQuery.h、文件中。實現(xiàn)部分代碼如下。CStringdate1=m_timeDate1.Format(L"%Y-%m-%d"); CStringdate2=m_timeDate2.Format(L"%Y-%m-%d"); str.Format(L"selecto.*,c.Raw_Number,c.Raw_Namefromraw_codec,raw_outowhereo.Raw_Number=c.Raw_Number"); if(raw_number!=L"") { str.Format(L"%sando.raw_number='%s'",str,raw_number); } str.Format(L"%sandout_date>='%s'",str,date1); str.Format(L"%sandout_date<='%s'",str,date2);4.4.5采購?fù)素浟斜聿樵冊O(shè)計思路和要點:從原料名稱、日期這兩方面查詢,從而對采購?fù)素浶畔⑦M行查詢,輸入要查詢的原料名稱、退貨的起始日期和截止日期為查詢條件,符合一個條件或兩者條件的采購?fù)素浶畔@示出來。采購?fù)素浟斜聿樵冺撁骘@示如圖4-42所示:圖4-42采購?fù)素浟斜聿樵兇翱诓少復(fù)素浟斜聿樵兡K實現(xiàn)功能包含在RawPurreturnQuery.cpp、RawPurreturnQuery.h、文件中。實現(xiàn)部分代碼如下。CStringdate1=m_timeDate1.Format(L"%Y-%m-%d"); CStringdate2=m_timeDate2.Format(L"%Y-%m-%d"); str.Format(L"selectr.*,c.Raw_Number,c.Raw_Namefromraw_return1r,raw_Codecwherer.Raw_Number=c.Raw_Number"); if(raw_number!=L"") { str.Format(L"%sandr.raw_number='%s'",str,raw_number); } str.Format(L"%sandreturn_date>='%s'",str,date1); str.Format(L"%sandreturn_date<='%s'",str,date2);4.4.6原料退庫列表查詢設(shè)計思路和要點:從原料名稱、日期這兩方面查詢,從而對原料退庫信息進行查詢,輸入要查詢的原料名稱、退庫的起始日期和截止日期為查詢條件,符合一個條件或兩者條件的原料退庫信息顯示出來。。原料退庫列表查詢頁面顯示如圖4-43所示:圖4-43原料退庫列表查詢窗口3、原料退庫列表查詢模塊實現(xiàn)功能包含在RawWreturnQuery.cpp、RawWreturnQuery.h、文件中。4.4.7現(xiàn)有庫存查詢1、設(shè)計思路和要點:按原料名稱進行現(xiàn)有庫存查詢,通過庫存管理的出入庫、退庫、退貨做到及時銷帳,得到每個原料的現(xiàn)有庫存,便于時時了解每個原料的庫存情況,合理的安排生產(chǎn),保障產(chǎn)品的正常供應(yīng)。2、現(xiàn)有庫存查詢頁面顯示如圖4-44所示:圖4-44現(xiàn)有庫存查詢窗口3、原料退庫列表查詢模塊實現(xiàn)功能包含在RawNowQuery.cpp、RawNowQuery.h、文件中。4、實現(xiàn)部分代碼如下。CStringrawnumber;//來自原料的下拉式列表 intindex=m_comboRaw.GetCurSel();//下拉列表取原料名稱值 CStringraw_number=L""; if(index>=0) { intRawID=m_comboRaw.GetItemData(index);//獲得原料的ID str.Format(L"selectraw_numberfromraw_codewhereraw_id=%d",RawID); if(!mydb.SelectSQL((_bstr_t)str)){return;} if(!mydb.IsRecordEOF())//只處理第一條記錄 { mydb.CollectMsg("raw_number",raw_number); } mydb.CloseRecord();//關(guān)閉tb_SystemInfo記錄集 } str.Format(L"selectr.now,c.Raw_Number,c.Raw_Namefromv_Rawr,raw_Codecwherec.Raw_Number=r.Raw_Number");4.4.8原料請購單列表查詢1、設(shè)計思路和要點:按原料名稱、請購日期進行查詢,從而對原料請購單信息進行統(tǒng)計,便于對指定原料、指定請購日期的原料的請購單信息的查詢。2、請購單列表查詢頁面顯示如圖4-45所示:圖4-45請購單列表查詢窗口3、原料請購單列表查詢模塊實現(xiàn)功能包含在RawBuyQuery1.cpp、RawBuyQuery1.h、文件中。4、實現(xiàn)部分代碼如下。CStringdate1=m_timeDate1.Format(L"%Y-%m-%d"); CStringdate2=m_timeDate2.Format(L"%Y-%m-%d"); str.Format(L"selectb.*,c.Raw_Number,c.Raw_Namefromraw_buyb,raw_Codecwhereb.Raw_Number=c.Raw_Number");4.4.9本章小結(jié)原料代碼管理的增、刪、改功能的實現(xiàn)。原料入庫管理的增、刪、改功能的實現(xiàn)。原料出庫管理的增、刪、改功能的實現(xiàn)。采購?fù)素浌芾淼脑觥h、改功能的實現(xiàn)。原料退庫管理的增、刪、改功能的實現(xiàn)。原料請購單的增、刪、改功能的實現(xiàn)。供貨渠道分析按價格、質(zhì)量級別、供貨周期進行分析。原料自動生成采購功能的實現(xiàn)。庫存報警管理的實現(xiàn)。臨近保質(zhì)期報警功能的實現(xiàn)。原料入庫列表查詢,按原料、入庫日期進行查詢。原料出庫列表查詢,按原料、出庫日期進行查詢。采購?fù)素浟斜聿樵?,按原料、退貨日期進行查詢。原料退庫列表查詢,按原料、退庫日期進行查詢。原料請購單列表查詢,按原料、請購日期進行查詢?,F(xiàn)有庫存列表查詢,按原料進行查詢。第五章系統(tǒng)功能介紹5.1運用SQL視圖生成原料的現(xiàn)有庫存5.1.1SQL視圖的特點視圖可以看作定義在SQLServer上的虛擬表。視圖正如其名字的含義一樣,是另一種查看數(shù)據(jù)的入口。常規(guī)視圖本身并不存儲實際的數(shù)據(jù),而僅僅是由SELECT語句組成的查詢定義的虛擬表。從數(shù)據(jù)庫系統(tǒng)內(nèi)部來看,視圖是由一張或多張表中的數(shù)據(jù)組成的,從數(shù)據(jù)庫系統(tǒng)外部來看,視圖就就象一張表一樣,可以象處理表一樣操作視圖。視圖可以象一般性的表格一樣可以進行查詢,插入,修改,刪除操作等,但插入、修改、刪除等的操作其實就是對原始數(shù)據(jù)表的操作。5.1.2SQL視圖的作用1、視圖隱藏了底層的表結(jié)構(gòu),簡化了數(shù)據(jù)訪問操作,客戶端不再需要知道底層表的結(jié)構(gòu)及其之間的關(guān)系2、視圖提供了一個統(tǒng)一訪問數(shù)據(jù)的接口。(即可以允許用戶通過視圖訪問數(shù)據(jù)的安全機制,而不授予用戶直接訪問底層表的權(quán)限)3、從而加強了安全性,使用戶只能看到視圖所顯示的數(shù)據(jù)。4、視圖還可以被嵌套,一個視圖中可以嵌套另一個視圖。5.1.3SQL視圖實現(xiàn)的過程1、原料入庫表(raw_in)、原料出庫表(raw_out)、采購?fù)素洷恚╮aw_return1)、原料退庫表(raw_return2)四個數(shù)據(jù)表通過原料編號(raw_number)建立索引。2、建立索引,如圖5-1所示:圖5-1索引表實現(xiàn)的SQL視圖的語句SELECTc.raw_number,c.raw_name,COALESCE(i.sumI,0)-COALESCE(o.sumO,0)-COALESCE(r1.sumR1,0)+COALESCE(r2.sumR2,0)ASnowFROMdbo.raw_codeAScLEFTOUTERJOIN(SELECTDISTINCTraw_number,COALESCE(SUM(in_number),0)ASsumIFROMdbo.raw_inGROUPBYraw_number)ASiONi.raw_number=c.raw_numberLEFTOUTERJOIN(SELECTDISTINCTraw_number,COALESCE(SUM(out_number),0)ASsumOFROMdbo.raw_outGROUPBYraw_number)ASoONi.raw_number=o.raw_numberLEFTOUTERJOIN(SELECTDISTINCTraw_number,COALESCE(SUM(return_number),0)ASsumR1FROMdbo.raw_return1GROUPBYraw_number)ASr1ONi.raw_number=r1.raw_numberLEFTOUTERJOIN(SELECTDISTINCTraw_number,COALESCE(SUM(return_number),0)ASsumR2FROMdbo.raw_return2生成現(xiàn)有庫存視圖表(v.Raw),如圖5-2所示:圖5-2現(xiàn)有庫存視圖表現(xiàn)有庫存查詢模塊,如圖5-3所示:圖5-3現(xiàn)有庫存查詢模塊5.2庫存報警提示功能5.2.1基本概念最低庫存:指貨品在倉庫中應(yīng)保存的最小數(shù)量,如果低于了這個最小存量就有可能形成短缺,貨品供應(yīng)不足,影響正常出庫。最高庫存:指貨品在倉庫中應(yīng)保存的最大數(shù)量,如果高于了這個最高庫存量就有可能形成貨品積壓過多,導(dǎo)致資金周轉(zhuǎn)不靈活。安全庫存:為了不擔誤生產(chǎn)及時滿足客戶的需求,有必要為倉庫制定一個安全庫存,為了防止由于不確定因素(如突發(fā)性大量訂貨或供應(yīng)商延期交貨等因素)影響客戶的訂貨需求而準備的緩沖庫存,這個緩沖庫存就是安全庫存。采購周期:采購方向供應(yīng)方下達訂貨訂單,供應(yīng)方組織生產(chǎn)備貨,供應(yīng)商發(fā)貨并到達采購方這整個過程需要的周期時間,定義為采購周期。5.2.2庫存報警的作用為了防止缺貨、斷貨的行為給公司的生產(chǎn)經(jīng)營造成影響,造成對客戶產(chǎn)品供應(yīng)不及時,有必要設(shè)置庫存報警提示功能,及時了解庫存消耗情況,及時補充安全庫存,保障公司生產(chǎn)經(jīng)營的正常有序地進行。為了預(yù)防由于原料斷缺無法滿足客戶訂單的需求,有必要設(shè)定最低庫存標準,這個標準就是“最低庫存量”。為了不讓庫存過多,造成積壓,浪費不必要的成本,增強資金的周轉(zhuǎn)率,必要制定“最高庫存量(庫存上限量)”。更好地發(fā)揮安全庫存抵卸因物料到貨延遲、產(chǎn)量不穩(wěn)定、突然增量帶來的采購風險。更好地降低原料因積壓造成原料成本的浪費,合理利用好庫容。5.2.3庫存報警功能實現(xiàn)的過程依據(jù)原料以往使用用量、此原料的采購周期制定原料的最低庫存和最高庫存。若此原料為新原料,根據(jù)市場的計劃生產(chǎn)量,預(yù)估此原料的使用用量和采購周期,事先制定出原料的最低庫存和最高庫存。最低庫存與現(xiàn)有庫存進行對比,現(xiàn)有庫存低于最低庫存時,根據(jù)生產(chǎn)計劃的安排申請原料請購單。最高庫存與現(xiàn)有庫存進行對比,現(xiàn)有庫存高于最高庫存時,匯報給相關(guān)部門。庫存報警查詢模塊頁面設(shè)計,如圖5-4所示:圖5-4原料自動報警窗口5.3臨近保質(zhì)期報警提示功能為了保障食品安全,超過保質(zhì)期食品和原料杜絕再使用,保障人民群眾的身體健康,有必要對臨近保質(zhì)期和超過保質(zhì)期食品的進行管理,時時關(guān)注保質(zhì)期,消除超過保質(zhì)期食品引發(fā)的社會危害,保障人民群眾身體健康。方便及時查看倉庫所有原料臨近保質(zhì)期的情況,提前預(yù)防、提前處理,超過保質(zhì)期的原料及時報廢處理。臨近天數(shù)可以手工輸入,查看輸入天數(shù)的臨近保質(zhì)期的原料。原料使用時按原料的生產(chǎn)日期先進先出進行使用。很好地杜絕了使用過期原料的食品安全問題。臨近保質(zhì)期報警提示查詢模塊頁面設(shè)計,如圖5-5所示:圖5-5臨近保質(zhì)期報警窗口5.4原料自動采購功能根據(jù)原料的現(xiàn)有庫存、原

溫馨提示

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

評論

0/150

提交評論