數(shù)據(jù)庫課程設(shè)計(jì)之倉庫設(shè)備管理_第1頁
數(shù)據(jù)庫課程設(shè)計(jì)之倉庫設(shè)備管理_第2頁
數(shù)據(jù)庫課程設(shè)計(jì)之倉庫設(shè)備管理_第3頁
數(shù)據(jù)庫課程設(shè)計(jì)之倉庫設(shè)備管理_第4頁
數(shù)據(jù)庫課程設(shè)計(jì)之倉庫設(shè)備管理_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、銅陵學(xué)院 數(shù)學(xué)與計(jì)算機(jī)系數(shù)據(jù)庫課程設(shè)計(jì)設(shè)計(jì)題目:倉庫設(shè)備管理學(xué)生姓名:曹福利、郭賀、田輝學(xué) 號(hào):0906121001、15、30專業(yè)班級(jí):09信息管理與信息系統(tǒng)指導(dǎo)教師: 楊 慧 時(shí)間:2011年6月7日 至2011年6月10日指導(dǎo)教師對(duì)課程設(shè)計(jì)(論文)的評(píng)語(工作態(tài)度、任務(wù)完成情況、能力水平、設(shè)計(jì)說明書(論文)的撰寫和圖紙質(zhì)量等):成績 指導(dǎo)教師簽字 年 月 日一、 開發(fā)背景及設(shè)計(jì)思想1.開發(fā)背景 90年代中期,由于Internet 的迅速普及,使Intranet成為Internet技術(shù)在企業(yè)管理信息系統(tǒng)中的應(yīng)用和延伸,形成了集計(jì)算機(jī),計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)庫、分布式計(jì)算等于一體的信息技術(shù)綜合體,

2、它打破了時(shí)間和地域的界限,使信息交流變得快捷、準(zhǔn)確,為建立現(xiàn)代企業(yè)管理信息系統(tǒng)提供了充足的條件。由于計(jì)算機(jī)應(yīng)用的日益普及,倉庫設(shè)備管理的自動(dòng)化是提高工作效率的有效途徑,隨著企業(yè)對(duì)倉庫設(shè)備實(shí)行計(jì)算機(jī)管理,實(shí)現(xiàn)倉庫設(shè)備管理系統(tǒng)勢(shì)在必行。系統(tǒng)開發(fā)的總統(tǒng)任務(wù)是實(shí)現(xiàn)企業(yè)物資設(shè)備管理的系統(tǒng)化、規(guī)范化和自動(dòng)化,從而達(dá)到倉庫管理效率的目的。2.開發(fā)設(shè)計(jì)思想在本系統(tǒng)的設(shè)計(jì)過程中,為了克服倉庫管理信息處理量大的困難,滿足計(jì)算機(jī)管理的需要,采取了下面的一些原則:1、 統(tǒng)一各種原始單據(jù)的格式,統(tǒng)一帳目和報(bào)表的格式。2、 刪除不必要的管理冗余,實(shí)現(xiàn)管理規(guī)范化、科學(xué)化。3、 程序代碼標(biāo)準(zhǔn)化,軟件統(tǒng)一化,確保軟件的可維護(hù)性

3、和實(shí)用性。4、 界面盡量簡(jiǎn)單化,做到實(shí)用、方便,盡量滿足企業(yè)不同層次員工的需要。5、 建立操作日志,系統(tǒng)自動(dòng)記錄所進(jìn)行的各種操作。二功能描述1、系統(tǒng)功能分析 本例中的倉庫管理系統(tǒng)需要完成的功能主要有以下幾點(diǎn):1. 新的設(shè)備信息的錄入;2. 借出、歸還、維修時(shí)對(duì)設(shè)備信息的修改;3. 對(duì)報(bào)廢設(shè)備信息的刪除;4. 按照一定的條件查詢、統(tǒng)計(jì)符合條件的設(shè)備信息;查詢功能至少應(yīng)該包括設(shè)備基本信息的查詢、按時(shí)間段(如在2004年1月1日到2004年10月10日購買、借出、維修的設(shè)備等)查詢、按時(shí)間點(diǎn)(借入時(shí)間,借出時(shí)間,歸還時(shí)間)查詢等,統(tǒng)計(jì)功能至少包括按時(shí)間段(如在2004年1月1日到2004年10月10

4、日購買、借出、維修的設(shè)備等)統(tǒng)計(jì)、按設(shè)備基本信息的統(tǒng)計(jì)等;5. 對(duì)查詢、統(tǒng)計(jì)的結(jié)果打印輸出。2、系統(tǒng)功能模塊設(shè)計(jì) 在系統(tǒng)功能分析的基礎(chǔ)上,結(jié)合Visual C+程序編制的特點(diǎn),得到如圖所示的系統(tǒng)功能模塊圖。倉庫管理系統(tǒng)系統(tǒng)模塊輸入模塊維護(hù)模塊查看模塊報(bào)表模塊幫助模塊日志管理需求模塊還庫模塊出庫模塊入庫模塊三數(shù)據(jù)庫需求分析 在仔細(xì)調(diào)查企業(yè)倉庫物資設(shè)備管理過程的基礎(chǔ)上,得到本系統(tǒng)所處理的數(shù)據(jù)流程如圖設(shè)備入庫設(shè)備采購設(shè)備還庫設(shè)備出庫倉庫現(xiàn)有庫存各部門需求企業(yè)生產(chǎn)計(jì)劃匯總本實(shí)例設(shè)計(jì)的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)如下:1、 設(shè)備代碼信息,包括的數(shù)據(jù)項(xiàng)有設(shè)備號(hào)、設(shè)備名稱。2、  現(xiàn)有庫存信息,包括的數(shù)據(jù)項(xiàng)有

5、設(shè)備、現(xiàn)有數(shù)目、總數(shù)目、最大庫存和最小庫存。3、 設(shè)備使用信息,包括的數(shù)據(jù)項(xiàng)有使用的設(shè)備、使用部門、數(shù)目、使用時(shí)間和出庫時(shí)狀態(tài)等。4、  設(shè)備采購信息,包括的數(shù)據(jù)項(xiàng)有采購的設(shè)備、采購員、供應(yīng)商、采購數(shù)目和采購時(shí)間等。 5、 設(shè)備歸還信息,包括的數(shù)據(jù)項(xiàng)有歸還設(shè)備、歸還部門、歸還數(shù)目、歸還時(shí)間和經(jīng)手人等。四、數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì) 本實(shí)例根據(jù)上面的設(shè)計(jì)規(guī)劃出的實(shí)體有庫存實(shí)體、入庫實(shí)體、出庫實(shí)體、采購實(shí)體、還庫實(shí)體和需求實(shí)體,各實(shí)體的E-R圖及其關(guān)系描述如下: 庫存實(shí)體E-R圖現(xiàn)有庫存 入庫 出庫還庫設(shè)備號(hào) 入庫實(shí)體E-R圖入庫供應(yīng)商信息采購價(jià)格數(shù)量采購員設(shè)備號(hào) 出庫實(shí)體E-R圖出庫使用部門數(shù)

6、量、時(shí)間經(jīng)手人設(shè)備號(hào) 企業(yè)部門需求實(shí)體E-R圖部門需求需求部門需求數(shù)量需求時(shí)間設(shè)備號(hào) 還庫實(shí)體E-R圖設(shè)備還庫還庫時(shí)間人還庫數(shù)量經(jīng)手人設(shè)備號(hào) 計(jì)劃采購實(shí)體E-R圖計(jì)劃采購庫存信息供應(yīng)信息時(shí)間設(shè)備號(hào) 實(shí)體和實(shí)體之間的關(guān)系E-R圖入庫 現(xiàn)有庫存 出庫 還庫 部門需求設(shè)備采購五、數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)及優(yōu)化在上面的實(shí)體以及實(shí)體之間的關(guān)系的基礎(chǔ)上,形成數(shù)據(jù)庫中的表格和各個(gè)表格之間的關(guān)系。倉庫管理系統(tǒng)數(shù)據(jù)庫中各個(gè)表格的設(shè)計(jì)結(jié)果如下面的幾個(gè)表格所示。每個(gè)表格表示在數(shù)據(jù)庫中的一個(gè)表。表1-1 設(shè)備基本信息代碼表device_code 列名數(shù)據(jù)類型可否為空說明codeVARCHAR2(6)NOTNULL設(shè)備號(hào)(主

7、鍵)nameVARCHAR2(20)NULL設(shè)備名稱表1-2 企業(yè)部門基本信息表class_node 列名 數(shù)據(jù)類型可否為空說明 nodeVARCHAR2(6)NOTNULL部門編號(hào)(主鍵) departmentVARCHAR2(20)NOTNULL部門名稱表1-3 供應(yīng)商設(shè)備信息表provider_node 列名 數(shù)據(jù)類型可否為空說明 nodeVARCHAR2(6)NOTNULL供應(yīng)商編號(hào)(主鍵) providerVARCHAR2(20)NOTNULL供應(yīng)商名稱 telenodeVARCHAR2(10)NULL供應(yīng)商電話 nameVARCHAR2(20)NULL設(shè)備名稱 表1-4 設(shè)備入庫表

8、device_in列名數(shù)據(jù)類型可否為空說明codeVARCHAR2(6)NOTNULL設(shè)備號(hào)in_dateDATE NOTNULL入庫時(shí)間(主鍵)providerVARCHAR2(20)NULL供應(yīng)商in_numberNUMBER(6) NULL入庫數(shù)量 priceNUMBER(6) NULL價(jià)格 buyerVARCHAR2(10)NULL采購員 表1-5 設(shè)備出庫表device_out列名數(shù)據(jù)類型可否為空說明codeVARCHAR2(6)NOTNULL設(shè)備號(hào)departmentVARCHAR2(20)NULL使用部門out_dateDATE NULL出庫時(shí)間(主鍵)out_stateNUMB

9、ER(1) NULL出庫狀態(tài)out_personVARCHAR2(10) NULL經(jīng)手人out _numberNUMBER(6) NOTNULL出庫數(shù)量 takerVARCHAR2(10) NULL領(lǐng)取人 usageVARCHAR2(20) NULL用途 表1-6 現(xiàn)有庫存表device列名數(shù)據(jù)類型可否為空說明codeVARCHAR2(6)NOTNULL設(shè)備號(hào)(主鍵)now_numberNUMBER(6) NULL現(xiàn)有庫存high _numberNUMBER(6) NULL最大庫存low _numberNUMBER(6) NULL最少庫存total _numberNUMBER(6) NULL總

10、數(shù) 表1-7 部門需求表device_need列名數(shù)據(jù)類型可否為空說明codeVARCHAR2(6)NOTNULL設(shè)備號(hào)departmentVARCHAR2(20)NOTNULL部門名稱need _numberNUMBER(6) NULL需求數(shù)量begin_dateDATE NULL需求開始時(shí)間end_dateDATE NULL需求結(jié)束時(shí)間 表1-8 設(shè)備還庫表device_return列名數(shù)據(jù)類型可否為空說明codeVARCHAR2(6)NOTNULL設(shè)備號(hào)return_dateDATE NULL還庫時(shí)間(主鍵) keeperVARCHAR2(20) NULL倉庫管理員 return_ nu

11、mberNUMBER(6) NULL歸還數(shù)量 return_dateVARCHAR2(10) NULL歸還人 表1-9 操作日志表 howdo列名數(shù)據(jù)類型可否為空說明do_userVARCHAR2(10) NOTNULL操作員do_whatVARCHAR2(40) NOTNULL操作內(nèi)容do_dateDATE NOTNULL操作時(shí)間 六、 數(shù)據(jù)庫的物理設(shè)計(jì)和實(shí)施得到系統(tǒng)邏輯模型后,就該進(jìn)行數(shù)據(jù)庫的物理設(shè)計(jì)和實(shí)施數(shù)據(jù)庫了,物理設(shè)計(jì)主要是要確定數(shù)據(jù)庫的存儲(chǔ)路徑、存儲(chǔ)結(jié)構(gòu)以及如何建立索引等,可以采用系統(tǒng)的默認(rèn)設(shè)置。1.數(shù)據(jù)庫設(shè)計(jì)(1).創(chuàng)建設(shè)備基本信息代碼device_codeCREATE TABL

12、E “DMS”.device_code(code VARCHAR2(6) NOTNULL,name VARCHAR2(20) NOTNULL,CONSTRANT code_code_pk PRIMARY KEY(code)TABLESPACE”USER_DATA”;(2).創(chuàng)建企業(yè)部門基本信息代碼class_node CREATE TABLE “DMS”.class_node(node VARCHAR2(6) NOTNULL, Department VARCHAR2(20) NOTNULL,CONSTRANT node_node_pk PRIMARY KEY(node)TABLESPACE”U

13、SER_DATA”;(3).創(chuàng)建供應(yīng)商設(shè)備信息代碼provider_node CREATE TABLE “DMS”.provider_node(node VARCHAR2(6) NOTNULL, provider VARCHAR2(20)NOTNULL, teleno VARCHAR2(10) NULL, Code VARCHAR2(6) NOTNULL, CONSTRANT node_node_pk PRIMARY KEY(node)TABLESPACE”USER_DATA”;(4) .創(chuàng)建設(shè)備入庫表 device_inCREATE TABLE “DMS”.device_in(code VA

14、RCHAR2(6) NOT NULL,in_date DATE NOT NULL,provider VARCHAR2(20) NULL,in_number NUMBER(6) NULL,price NUMBER(6) NULL,buyer VARCHAR2(10) NULL,CONSTRAINT in_date_pk PRIMARY KEY(in_date)TABLESPACE “USER_DATA”;(5).創(chuàng)建設(shè)備出庫表 device_outCREATE TABLE “DMS”.device_out(code VARCHAR2(6) NOT NULL,department VARCHAR2

15、(20) NULL,out_date DATE NULL,out_state NUMBER(1) NULL,out_penson VARCHAR2(20) NULL,out_number NUMBER(6) NOT NULL,taker VARCHAR2(10) NULL,usage VARCHAR2(20) NULL,CONSTRAINT out_date_pk PRIMARY KEY(out_date)TABLESPACE”USER_DATA”;(6).創(chuàng)建現(xiàn)有庫存表 deviceCREATETABLE ”DMS”.device(code VARCHAR2(6) NULL,now_numb

16、er NUMBER(6) NULL,high_number NUMBER(6) NULL,low_ number NUMBER(6) NULL,total_ number NUMBER(6) NULL,CONSTRAINT device_code_pk PRIMARY KEY(code)TABLESPACE”USER_DATA”;(7).創(chuàng)建部門需求表 device_needCREATE TABLE “DMS”,device_need(code VARCHAR2(10) NOT NULL,department VARCHAR2(10) NOT NULL,need_number NUMBER(6

17、) NULL,begin_date DATE NULL,end_date DATE NULL,)TABLESPACE ”USER_DATA”;(8).創(chuàng)建設(shè)備還庫表device_returnCREATE TABLE “DMS”,device_return(code VARHAR2(6) NOT NULL,department VARCHAR2(20) NULL,return_date DATE NULL,keeper VARCHAR2(10) NULL,return_number NUMBER(6) NULL,return_person VARCHAR2(10) NULL,CONSTRAINT

18、 return_date_pk PRIMARY KEY (return_date)TABLESPACE ”USER_DATA”;(9).創(chuàng)建操作日志表 howdoCREATE TABLE “DMS”,howdo(do_user VARCHAR2(10) NOT NULL,do_what VARCHAR2(40) NOT NULL,do_date DATE NOT NULL,)TABLESPACE “USER_DATA”;2、系統(tǒng)實(shí)現(xiàn)2.1創(chuàng)建應(yīng)用程序(1)選擇“”中的“新建項(xiàng)目”選項(xiàng)卡中“MFC AppWizard(exe)”,設(shè)置合適的目錄和項(xiàng)目名,比如“E:Project”目錄下的“DMS

19、”項(xiàng)目。(2)創(chuàng)建一個(gè)對(duì)話框應(yīng)用程序(“Dialog Based”),單擊“Next”按鈕。(3)由于在這個(gè)項(xiàng)目中將要使用ADO,所以在MFC AppWizard的第二步,需要選中“Automation”選項(xiàng),使應(yīng)用程序能夠支持自動(dòng)化對(duì)象。如圖1-10所示(4)單擊“Finish”按鈕結(jié)束項(xiàng)目的創(chuàng)建。主對(duì)話框名為CDMSDlg。(5)項(xiàng)目創(chuàng)建完畢后,在頭文件stdafx.h中加入下面4行:#import“c:programfilescommonfilessystemadomsado15.dll”no_namespace(”EOF”,”adoEOF”)#include”icrsint.h”inl

20、ine void TESTHR(HRESULT x)if FAILED(x)_com_issue_error(x);#define DATEFMT Cstring(“%s”)2.2操作日志模塊的設(shè)計(jì)1、寫日志模塊 圖1-10 使應(yīng)用程序支持自動(dòng)化先定義一個(gè)名為ClogMngr的類/LogMngr.h/定義一個(gè)Log管理器class CLogMngr public:CLogMngr();virtual CLogMngr();public:bool AddLog(LPCSTR op);void Setup(_ConnectionPtr cnnt, CString& user)m_DBCnt

21、 = cnnt;m_user = user;protected:_ConnectionPtr m_DBCnt;CString m_user;下面是ClogMngr:AddLog內(nèi)部實(shí)現(xiàn)詳細(xì)過程。/LogMngr.cpp/向數(shù)據(jù)庫中添加Log記錄的代碼。bool CLogMngr:AddLog(LPCSTR op)CTime tm = CTime:GetCurrentTime();CString sql_; sql_.Format("INSERT INTO HOWDO (do_user,do_what,do_date) VALUES('%s','%s&

22、#39;,'%d-%d-%d %d:%d:%d')",m_user, op, tm.GetYear(), tm.GetMonth(), tm.GetDay(),tm.GetHour(), tm.GetMinute(), tm.GetSecond();_bstr_t sql = sql_; trym_DBCnt->Execute(sql,NULL,adCmdText);catch(_com_error& e) CString Error = e.ErrorMessage(); AfxMessageBox(e.ErrorMessage();retu

23、rn false;  return true;2、讀日志模塊圖1-11 查看日志窗口 初始化界面代碼如下:BOOL CDlgViewLog:OnInitDialog() CDialog:OnInitDialog();m_list.InsertColumn(0,"操作員");m_list.InsertColumn(1,"操作日期");m_list.InsertColumn(2,"操作內(nèi)容");RECT rect;m_list.GetWindowRect(&rect);int wid = rect.right - rec

24、t.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(); return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE void CDlgVie

25、wLog:RefreshData()m_list.DeleteAllItems();m_list.SetRedraw(FALSE); _bstr_t strSQL("SELECT * FROM HOWDO");_RecordsetPtr MySet;  int i = 0;tryMySet.CreateInstance(_uuidof(Recordset); MySet = m_DBCnt->Execute(strSQL,NULL,adCmdText);_variant_t Holder;while(!MySet->adoEOF) Holde

26、r = MySet->GetCollect("do_user");if(Holder.vt!=VT_NULL)m_list.InsertItem(i, (char*)(_bstr_t)Holder); Holder = MySet->GetCollect("do_date");if (Holder.vt!=VT_NULL)m_list.SetItemText(i, 1, (char*)(_bstr_t)Holder);  Holder = MySet->GetCollect("do_what");

27、if(Holder.vt!=VT_NULL)m_list.SetItemText(i, 2, (char*)(_bstr_t)Holder); MySet->MoveNext(); MySet->Close();catch(_com_error& e) AfxMessageBox(e.ErrorMessage();m_list.SetRedraw(TRUE);return; m_list.SetRedraw(TRUE);void CDlgViewLog:OnClickListVllog(NMHDR* pNMHDR, LRESULT* pResult) int i

28、= 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/刪除所有日志記錄的函數(shù)。void CDlgViewLog:OnBtnVlrmall() _bstr_t strSQL("TRUNCATE TABLE HOWDO"); trym_DBCnt->Exe

29、cute(strSQL,NULL,adCmdText);catch(_com_error& e) AfxMessageBox(e.ErrorMessage();EndDialog(0); RefreshData();2.3登錄窗口的設(shè)計(jì)和程序初始化在CDMSDlg:OnInitDialog()中加入這樣一段代碼:/DMSDlg.cpp/彈出登錄界面CDlgLogIn dlg;doif (!dlg.DoModal()EndDialog(0); while (dlg.m_UsrName.GetLength()=0);它的目的是彈出圖1-12所示的登錄對(duì)話框,并從中獲得一個(gè)有效的用戶名。圖1

30、-12 登錄界面得到有效用戶名后,程序用如下代碼:/ DMSDlg.cpp/建立數(shù)據(jù)庫連接,初始化成員變量/登錄數(shù)據(jù)庫,若失敗,則關(guān)閉程序。m_DBCnt.CreateInstance(_uuidof(Connection);CString sql_;sql_.Format("DSN=DMS;UID=%s;PWD=%s",dlg.m_UsrName,dlg.m_UsrPwd);_bstr_t sql=sql_;/建立連接m_DBCnt->Open(sql,"","",-1);/初始化日志管理器 m_logMngr.Se

31、tup(m_DBCnt,dlg.m_UsrName);/記錄此次登錄m_logMngr.AddLog("登錄數(shù)據(jù)庫");catch(_com_error& e) AfxMessageBox(e.ErrorMessage();this->EndDialog(0); 在程序結(jié)束時(shí)關(guān)閉數(shù)據(jù)庫連接。/ DMSDlg.cpp/關(guān)閉數(shù)據(jù)庫連接void CDMSDlg:OnDestroy() CDialog:OnDestroy();m_DBCnt->Close();2.4主對(duì)話框界面的設(shè)計(jì)登錄完成后,顯示出主對(duì)話框。它的界面設(shè)計(jì)如圖1-13所示,單擊某個(gè)按鈕就能彈出某

32、個(gè)功能的界面。圖1-13 主對(duì)話框界面以其中“設(shè)備代碼”按鈕為例,說明它的事件處理函數(shù)。代碼如下:/ DMSDlg.cpp/顯示設(shè)備代碼管理界面void CDMSDlg:OnBtnDevcode() CDlgDevcode dlg;dlg.Setup(m_DBCnt,&m_logMngr);this->ShowWindow(SW_HIDE);dlg.DoModal();this->ShowWindow(SW_SHOW);其他按鈕的事件處理函數(shù),代碼與“設(shè)備代碼”按鈕的事件處理函數(shù)相同。2.5設(shè)備代碼管理窗口的建立對(duì)話框類名為CdlgDevcode設(shè)計(jì)如圖1-14所示 設(shè)備代

33、碼管理窗口 /DlgDevcode.cpp/對(duì)話框的初始化BOOL CDlgDevcode:OnInitDialog() CDialog:OnInitDialog();/切分列表控件m_list.InsertColumn(0,"設(shè)備號(hào)");m_list.InsertColumn(1,"設(shè)備名");RECT rect;m_list.GetWindowRect(&rect);int wid = rect.right - rect.left;m_list.SetColumnWidth(0,wid/2);m_list.SetColumnWidth(1,w

34、id/2);m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);/讀取已有數(shù)據(jù) RefreshData();return TRUE; / DlgDevcode.cpp/消息映射部分BEGIN_MESSAGE_MAP(CDlgDevcode, CDialog) /AFX_MSG_MAP(CDlgDevcode)ON_NOTIFY(NM_CLICK, IDC_LIST_DEVCODE, OnClickListDevcode)/AFX_MSG_MAPEND_MESSAGE_MAP()/事件處理部分void CDlgDevcode:OnClickLis

35、tDevcode(NMHDR* pNMHDR, LRESULT* pResult) int i = m_list.GetSelectionMark(); m_code = m_list.GetItemText(i,0);m_name = m_list.GetItemText(i,1); UpdateData(FALSE);*pResult = 0;其余程序的清單如下:/ DlgDevcode.cpp : implementation file/ #include "stdafx.h"#include "DMS.h"#incl

36、ude "DlgDevcode.h" #ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CDlgDevcode dialogCDlgDevcode:CDlgDevcode(CWnd* pParent /*=NULL*/): CDialog(CDlgDevcode:IDD, pParent)/AFX_DATA_INIT(CDlgDevcode)m_code = _T("");m_name = _T(""

37、;);/AFX_DATA_INITm_DBCnt = NULL;m_log = NULL;  void CDlgDevcode:DoDataExchange(CDataExchange* pDX)CDialog: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

38、0; BEGIN_MESSAGE_MAP(CDlgDevcode, CDialog)/AFX_MSG_MAP(CDlgDevcode)ON_NOTIFY(NM_CLICK, IDC_LIST_DEVCODE, OnClickListDevcode)ON_BN_CLICKED(IDC_BTN_DCADD, OnBtnDcadd)ON_BN_CLICKED(IDC_BTN_DCDEL, OnBtnDcdel)ON_BN_CLICKED(IDC_BTN_DCUPD, OnBtnDcupd)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CDlgDevcode message

39、handlers/負(fù)責(zé)讀取已有數(shù)據(jù)的函數(shù)void CDlgDevcode:RefreshData()m_list.DeleteAllItems();m_list.SetRedraw(FALSE); _bstr_t strSQL("SELECT * FROM DEVICE_CODE");_RecordsetPtr MySet;  int i = 0;tryMySet.CreateInstance(_uuidof(Recordset); /執(zhí)行SOL語句讀取記錄MySet = m_DBCnt->Execute(strSQL,NULL,adCmdText

40、);_variant_t Holder;while(!MySet->adoEOF) /取出code字段的數(shù)據(jù) Holder = MySet->GetCollect("code");if(Holder.vt!=VT_NULL)m_list.InsertItem(i, (char*)(_bstr_t)Holder); /取出name字段的數(shù)據(jù) Holder = MySet->GetCollect("name");if(Holder.vt!=VT_NULL)m_list.SetItemText(i, 1, (char*)(_bstr_t)Ho

41、lder);MySet->MoveNext(); catch(_com_error& e) AfxMessageBox(e.ErrorMessage();m_list.SetRedraw(TRUE);return; m_list.SetRedraw(TRUE);/負(fù)責(zé)添加記錄的函數(shù)void CDlgDevcode:OnBtnDcadd() UpdateData(); CString sql_;sql_.Format("INSERT INTO DEVICE_CODE (code,name) VALUES('%s','%s')&qu

42、ot;, m_code, m_name);_bstr_t sql = sql_; trym_DBCnt->Execute(sql,NULL,adCmdText);catch(_com_error& e) AfxMessageBox(e.ErrorMessage();return; m_log->AddLog("添加設(shè)備記錄。"); RefreshData(); /負(fù)責(zé)刪除記錄的函數(shù)void CDlgDevcode:OnBtnDcdel() UpdateData(); CString sql_;sql_.Format("DEL

43、ETE FROM DEVICE_CODE WHERE CODE='%s'",m_code);_bstr_t sql = sql_;trym_DBCnt->Execute(sql,NULL,adCmdText); catch(_com_error& e) AfxMessageBox(e.ErrorMessage();return; m_log->AddLog("刪除設(shè)備記錄。"); RefreshData(); /負(fù)責(zé)更新數(shù)據(jù)的函數(shù)void CDlgDevcode:OnBtnDcupd() UpdateData(); C

44、String sql_;sql_.Format("UPDATE DEVICE_CODE SET NAME='%s' WHERE CODE='%s'",m_name,m_code);_bstr_t sql = sql_; trym_DBCnt->Execute(sql,NULL,adCmdText); catch(_com_error& e) AfxMessageBox(e.ErrorMessage();return; m_log->AddLog("更新設(shè)備記錄。"); RefreshData(

45、); 2.6庫存信息管理窗口的創(chuàng)建用戶可以在此新增、修改、刪除某種設(shè)備的記錄。單擊主對(duì)話框中的“庫存信息”按鈕,將出現(xiàn)圖1-15所示的界面。新增記錄時(shí),用戶在“設(shè)備號(hào)”組合框中選擇一個(gè)設(shè)備號(hào),在下面填入各種數(shù)量,之后單擊“新增”按鈕即可向表中增加記錄。修改記錄時(shí),用戶單擊列表中某一行,程序利用1、8提到的方法,在窗口下面把這一行記錄的詳細(xì)信息顯示出來,用戶即可對(duì)之修改。“設(shè)備號(hào)”這個(gè)子窗口初始化的時(shí)候有如下代碼:/DlgDev.cpp /對(duì)話框的初始化BOOL CDlgDev:OnInitDialog() CDialog:OnInitDialog();/切分列表控件m_list.InsertC

46、olumn(0,"設(shè)備號(hào)");m_list.InsertColumn(1,"現(xiàn)存數(shù)量");m_list.InsertColumn(2,"最大數(shù)量");m_list.InsertColumn(3,"最小數(shù)量");m_list.InsertColumn(4,"總數(shù)");RECT rect;m_list.GetWindowRect(&rect);int wid = rect.right - rect.left;m_list.SetColumnWidth(0,wid/5);m_list.SetC

47、olumnWidth(1,wid/5);m_list.SetColumnWidth(2,wid/5);m_list.SetColumnWidth(3,wid/5);m_list.SetColumnWidth(4,wid/5); m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT); _RecordsetPtr pRst = NULL;IADORecordBinding *picRs = NULL; /Interface Pointer declared.(VC+ Extensions) CDevCodeRs rs; try_b

48、str_t strSQL("SELECT * FROM DEVICE_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->BindToRecordset(&rs); i

49、nt i = 0;while (!pRst->adoEOF) /向組合框控件中添加所有的設(shè)備編號(hào)m_devs.AddString(rs.m_sz_code);pRst->MoveNext();picRs->Release();pRst->Close();catch(_com_error& e) AfxMessageBox(e.ErrorMessage();EndDialog(0);return TRUE;  RefreshData(); return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE圖1-15 庫存信息管理2.7設(shè)備入庫信息管理在主對(duì)話框中單擊“入庫信息”按鈕就進(jìn)入如圖所示的界面。 設(shè)備入庫信息管理界面下面是修改和刪除記錄的代碼:void CDlgViewDevIn:OnBtnViupdate() if (!UpdateData()return; CString sql_;sql_.Format(CString("SEL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論