版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
開發(fā)背景及意義隨著現(xiàn)代圖書流通市場競爭的愈演愈烈,如何以一種新的管理方式提高圖書流通信息的反饋速度,降低庫存占用,加快資金周轉(zhuǎn),提高工作效率,已經(jīng)成為圖書企業(yè)提高競爭的關(guān)鍵。信息技術(shù)的發(fā)展給圖書企業(yè)的管理帶了新的力氣,通過圖書管理系統(tǒng)對圖書企業(yè)經(jīng)營運(yùn)作的全程管理,不僅使企業(yè)拜托了人工管理帶來的一系列的問題,更重要的是提高了工作效率,進(jìn)而提高了企業(yè)的經(jīng)濟(jì)效益。通過管理系統(tǒng)對企業(yè)的管理,為企業(yè)的發(fā)展供應(yīng)了大量的、關(guān)鍵性的數(shù)據(jù),企業(yè)依據(jù)這些數(shù)據(jù),剛好作出決策,進(jìn)行調(diào)整,使之能夠更好的把握市場的銷售規(guī)律,適應(yīng)市場改變,在激烈的行業(yè)競爭中取得一席之地。需求分析2.1、功能分析:主要利用計(jì)算機(jī)系統(tǒng)實(shí)現(xiàn)圖書的信息化管理。圖書管理涉及基本信息,庫存信息,銷售信息等多種數(shù)據(jù)管理。在基本信息管理中須要實(shí)現(xiàn)添加、修改和刪除,包括操作員信息管理、圖書信息管理、圖書種類信息管理、供應(yīng)商信息管理、倉庫信息管理、柜臺信息管理。在庫存信息管理中須要實(shí)現(xiàn)添加,包括圖書的入庫、入庫退貨、庫存調(diào)撥管理。在圖書價格信息管理中須要實(shí)現(xiàn)添加和刪除,包括圖書定價管理、圖書調(diào)價管理。在圖書銷售信息管理中主要實(shí)現(xiàn)添加和刪除,包括圖書銷售、銷售退貨管理。⑤在查詢信息管理中主要實(shí)現(xiàn)入庫查詢管理、入庫退貨查詢管理、銷售查詢管理、銷售退貨查詢管理。2.2、工作流圖:圖書管理系統(tǒng)的結(jié)構(gòu)圖如圖所示:圖書管理系統(tǒng)的業(yè)務(wù)流程圖如圖所示2.3、數(shù)據(jù)流圖:在該系統(tǒng)中主要的數(shù)據(jù)記錄有:圖書、倉庫、入庫、入庫退貨、銷售、銷售退貨、調(diào)撥、定價等信息;主要的數(shù)據(jù)流有:圖書信息數(shù)據(jù)流、入庫信息數(shù)據(jù)流、入庫退貨數(shù)據(jù)流、銷售數(shù)據(jù)流、銷售退貨信息流、調(diào)撥信息流、倉庫信息流;主要的數(shù)據(jù)處理有:對圖書入庫、入庫退貨、入庫退貨結(jié)賬、入庫結(jié)賬、銷售、銷售結(jié)賬、銷售退貨、銷售退貨結(jié)賬、調(diào)撥信息的處理。由該分析得數(shù)據(jù)流圖如下:2.4、數(shù)據(jù)字典:重要數(shù)據(jù)庫及其簡要描述:1、數(shù)據(jù)項(xiàng)名稱說明條形碼唯一標(biāo)識一種圖書,形式隨意書籍種類把圖書歸成幾類,方面查找操作員名稱管理員,運(yùn)用系統(tǒng)時,擁有系統(tǒng)賬戶的人供應(yīng)商名稱唯一標(biāo)識一個供應(yīng)商銷售單號以此記錄一次銷售記錄。唯一標(biāo)識每次銷售記錄,形式如:XS20050812001入庫單號以此記錄一次入庫登記,唯一標(biāo)識每次入庫登記,形式如:EQ20060208001退貨單號以此記錄一次入庫退貨登記,唯一標(biāo)識每次入庫退貨登記,形式如:EQ20060209001調(diào)撥單號以此記錄每一次調(diào)貨登記,唯一標(biāo)識每次調(diào)貨登錄,形式如:AD20060210002銷售退貨單號以此記錄一次銷售退貨記錄。唯一標(biāo)識每次銷售退貨記錄,形式如:EQ20060211001倉庫名稱唯一標(biāo)識某個倉庫柜臺名稱唯一標(biāo)識某個柜臺2、數(shù)據(jù)存儲名稱說明圖書信息表記錄圖書的基本信息圖書種類信息表記錄圖書種類倉庫信息表記錄倉庫的基本信息操作員信息表記錄操作員的用戶名,密碼,等級供應(yīng)商信息表記錄供應(yīng)商的基本信息柜臺圖書表記錄柜臺圖書的基本信息柜臺信息表記錄柜臺的基本信息入庫單記錄入庫時的圖書及數(shù)量,單價等信息入庫結(jié)賬單記錄入庫結(jié)賬的金額,操作員,日期等信息入庫退貨單記錄入庫退貨時的圖書及數(shù)量信息入庫退貨結(jié)賬單記錄入庫退貨時的供應(yīng)商,金額,時間等信息圖書銷售單記錄銷售時的圖書及數(shù)量信息圖書銷售結(jié)賬單記錄銷售結(jié)賬的金額,操作員,金額,銷售時間等信息圖書倉庫表記錄圖書條形碼,數(shù)量及倉庫名稱圖書調(diào)撥單記錄調(diào)撥時的單號,條形碼,數(shù)量,操作員,調(diào)撥時間,倉庫名稱等信息圖書定價表記錄圖書銷售價格信息銷售退貨單記錄銷售時的條形碼,數(shù)量等信息銷售退貨結(jié)賬單記錄銷售退貨結(jié)賬的金額,操作員,日期等信息3、處理過程名稱說明銷售登記進(jìn)行銷售交易,即出庫銷售退貨登記進(jìn)行銷售退貨交易入庫登記進(jìn)行入庫交易,也可以稱為選購 登記入庫退貨登記進(jìn)行入庫退貨交易入庫結(jié)賬登記入庫結(jié)賬操作,也可以稱為選購 結(jié)賬銷售結(jié)賬登記銷售結(jié)賬操作入庫退貨結(jié)賬登記入庫退貨結(jié)賬操作,也可以稱為選購 退貨結(jié)賬銷售退貨結(jié)賬登記銷售退貨結(jié)賬操作調(diào)撥登記在倉庫之間重新安排庫存量概念模型設(shè)計(jì)這一設(shè)計(jì)階段是在需求分析的基礎(chǔ)上進(jìn)行的,目的是設(shè)計(jì)出能夠設(shè)計(jì)出能夠滿意用戶需求的各種實(shí)體以及它們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計(jì)打下基礎(chǔ)。依據(jù)以上的分析設(shè)計(jì)的結(jié)果,得到以下實(shí)體:圖書、操作員、供應(yīng)商、倉庫、柜臺圖書、入庫單、入庫退貨單、銷售單、調(diào)撥單、定價單、銷售退貨單、入庫退貨結(jié)賬單、銷售結(jié)構(gòu)單、入庫結(jié)賬單、銷售退貨結(jié)賬單下圖為圖書實(shí)體E-R圖:下圖為操作員實(shí)體E-R圖:操作員操作員等級密碼名稱等級密碼名稱下圖為供應(yīng)商實(shí)體E-R圖:下圖為倉庫實(shí)體E-R圖:倉倉庫數(shù)量數(shù)量倉庫名稱條形碼下圖為柜臺圖書實(shí)體E-R圖:柜臺圖書柜臺名稱數(shù)量條形碼柜臺名稱數(shù)量條形碼下圖為入庫單實(shí)體E-R圖:下圖為入庫退貨單實(shí)體E-R圖:下圖為銷售單實(shí)體E-R圖:下圖為調(diào)撥單實(shí)體E-R圖:下圖為定價單實(shí)體E-R圖:定價單定價單銷售價格條形碼銷售價格條形碼下圖為銷售退貨單實(shí)體E-R圖:下圖為入庫退貨結(jié)賬單實(shí)體E-R圖:下圖為銷售結(jié)賬單實(shí)體E-R圖:下圖為入庫結(jié)賬單實(shí)體E-R圖:下圖為銷售退貨結(jié)賬單實(shí)體E-R圖:下圖為銷售單與操作員相關(guān)的E-R圖:銷售單銷售銷售操作員操作員下圖為入庫單與操作員相關(guān)的E-R圖:入庫單選購 操作員下圖為入庫相關(guān)的E-R圖:入庫結(jié)賬單入庫結(jié)賬單mm結(jié)賬供應(yīng)商1111圖書入庫m1入庫單圖書入庫m1入庫單選購 nn11mm圖書倉庫圖書倉庫退貨mm1nm1nm圖書出庫入庫退貨單圖書出庫入庫退貨單11結(jié)賬結(jié)賬mm入庫退貨結(jié)賬單入庫退貨結(jié)賬單下圖為銷售相關(guān)的E-R圖:銷售結(jié)賬單銷售結(jié)賬單mm顧客結(jié)賬顧客結(jié)賬11m111m1圖書出庫銷售單銷售圖書出庫銷售單銷售nn1m1m退貨倉庫圖書退貨倉庫圖書mmnmmn圖書入庫銷售退貨單圖書入庫銷售退貨單11結(jié)賬結(jié)賬mm銷售退貨結(jié)賬單銷售退貨結(jié)賬單邏輯結(jié)構(gòu)設(shè)計(jì)4.1、E-R圖向關(guān)系模型的轉(zhuǎn)換:圖書信息表(tb_bookinfo):字段名稱字段類型主鍵外鍵允許為空描述booknamevarchar(30)書籍名稱shortnamevarchar(10)簡碼barcodevarchar(30)是條形碼authorvarchar(30)作者bookconcernvarchar(30)出版社pricemoney價格memovarchar(100)是備注kindvarchar(30)是種類圖書種類信息表(tb_bookkinds):字段名稱字段類型主鍵外鍵允許為空描述bookkindvarchar(30)是書籍種類倉庫信息表(tb_storageinfo):字段名稱字段類型主鍵外鍵允許為空描述storagenamevarchar(30)是倉庫名稱操作員信息表(tb_operator):字段名稱字段類型主鍵外鍵允許為空描述namevarchar(30)是名稱passwordvarchar(50)密碼levelsmallint等級供應(yīng)商信息表(tb_providerinfo):字段名稱字段類型主鍵外鍵允許為空描述providervarchar(30)是供應(yīng)商名稱corporationvarchar(30)法人principalvarchar(10)負(fù)責(zé)人phonevarchar(30)聯(lián)系電話addervarchar(50)地址webvarchar(50)是網(wǎng)址e_mailvarchar(30)是電子郵件柜臺圖書表(tb_counterbook):字段名稱字段類型主鍵外鍵允許為空描述barcodevarchar(30)外鍵條形碼countervarchar(30)外鍵柜臺名稱booknumfloat數(shù)量柜臺信息表(tb_counterinfo):字段名稱字段類型主鍵外鍵允許為空描述countervarchar(30)是柜臺名稱入庫單表(tb_instock_sub):字段名稱字段類型主鍵外鍵允許為空描述instockidvarchar(30)外鍵入庫單號barcodevarchar(30)外鍵條形碼unitPricemoney單價numbersfloat數(shù)量rebatefloat折扣paymoneymoney應(yīng)付金額stocknamevarchar(30)外鍵倉庫名稱入庫退貨單表(tb_cancelinstock_sub):字段名稱字段類型主鍵外鍵允許為空描述CancelIDvarchar(30)是退貨單價barcodevarchar(30)是條形碼unitPricemoney單價numbersfloat數(shù)量rebatefloat折扣paymoneymoney金額stocknamevarchar(30)是倉庫名稱圖書倉庫表(tb_bookstorage):字段名稱字段類型主鍵外鍵允許為空描述barcodevarchar(30)是條形碼storagenamevarchar(30)是倉庫名稱booknumfloat數(shù)量圖書調(diào)撥明細(xì)表(tb_bookmove_sub):字段名稱字段類型主鍵外鍵允許為空描述moveIDvarchar(30)是調(diào)撥單號barcodevarchar(30)是條形碼booknumfloat數(shù)量圖書調(diào)撥主表(tb_bookmove_main):字段名稱字段類型主鍵外鍵允許為空描述moveIDvarchar(30)是調(diào)撥單號storagevarchar(30)是倉庫名稱countervarchar(30)是柜臺名稱operatorvarchar(30)是操作員movetimedatetime調(diào)撥時間入庫退貨結(jié)賬表(tb_cancelinstock_main):字段名稱字段類型主鍵外鍵允許為空描述CancelIDvarchar(30)是退貨單號providervarchar(50)是供應(yīng)商operatorvarchar(30)是操作員rebatefloat折扣sumtotalfloat總計(jì)paymoneymoney應(yīng)付金額factmoneymoney實(shí)付金額inttimedatetime退貨金額圖書銷售單表(tb_sell_sub):字段名稱字段類型主鍵外鍵允許為空描述SellIDvarchar(30)是銷售單號barcodevarchar(30)是條形碼unitPricemoney單價numbersfloat數(shù)量rebatefloat折扣paymoneymoney金額圖書銷售結(jié)賬表(tb_sell_main):字段名稱字段類型主鍵外鍵允許為空描述SellIDvarchar(30)是銷售單號Customervarchar(30)是顧客operatorvarchar(30)是操作員rebatefloat折扣sumtoalmoney總計(jì)paymoneymoney應(yīng)付金額factmoneymoney實(shí)付金額intimedatetime銷售時間countervarchar(30)是柜臺名稱圖書定價表(tb_fixprice):字段名稱字段類型主鍵外鍵允許為空描述barcodevarchar(30)是條形碼sellpricemoney銷售價格圖書入庫結(jié)賬表(tb_instorage_main):字段名稱字段類型主鍵外鍵允許為空描述IDvarchar(30)是入庫單號providervarchar(50)是供應(yīng)商operatevarchar(30)是操作員rebatefloat折扣sumtoalmoney總計(jì)paymoneymoney應(yīng)付金額factmoneymoney實(shí)付金額intimedatetime入庫時間銷售退貨單表(tb_cancelsell_sub):字段名稱字段類型主鍵外鍵允許為空描述SellCancelIDvarchar(30)是銷售退貨單號barcodevarchar(30)是條形碼unitPricemoney單價numbersfloat數(shù)量rebatefloat折扣paymoneymoney金額銷售退貨結(jié)賬表(tb_cancelsell_main):字段名稱字段類型主鍵外鍵允許為空描述SellCancelIDvarchar(30)是銷售退貨單號Customervarchar(30)是顧客operatorvarchar(30)是操作員rebatefloat折扣sumtoalmoney總計(jì)paymoneymoney應(yīng)付金額factmoneymoney實(shí)付金額intimedatetime退貨時間countervarchar(30是柜臺名稱4.2、說明:以上表中均不存在非主屬性和主屬性對碼的部分函數(shù)依靠和傳遞函數(shù)依靠,每一個非平凡函數(shù)依靠的確定因素都包含有候選鍵,因此滿意BC范式。源代碼及查詢截圖5.1源代碼:1、登錄窗口:為了防止非法用戶進(jìn)入系統(tǒng),程序中設(shè)計(jì)了一個系統(tǒng)登錄窗口。在程序啟動時,首先顯示登錄窗口,進(jìn)行用戶身份驗(yàn)證,假如用戶輸入的用戶名稱和密碼不正確,將禁止進(jìn)入系統(tǒng)。(用戶名:宗吉密碼:123456)程序相關(guān)代碼:設(shè)計(jì)思路:首先推斷用戶名和密碼是否為空,假如為空,則提示用戶輸入用戶名和密碼,否則以用戶名和密碼為條件,從數(shù)據(jù)庫中查詢數(shù)據(jù),有數(shù)據(jù)返回,證明用戶身份合法;反之,身份不合法。voidCDlgLogin::OnButton1(){ CStringc_user,c_password; m_user.GetWindowText(c_user); m_password.GetWindowText(c_password); if(c_user.IsEmpty()||c_password.IsEmpty()) { MessageBox("用戶名稱或密碼不能為空","用戶登錄信息"); return; } CStringsql; sql.Format("select*fromtb_operatorwherename='%s'andpassword='%s'",c_user,c_password); m_pRs->raw_Close(); m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); if(m_pRs->RecordCount>0) { Flag=true; user=m_pRs->GetCollect("name").bstrVal; password=m_pRs->GetCollect("password").bstrVal; //PostMessage(WM_CLOSE,0,0); EndDialog(0); } else { user=""; password=""; MessageBox("用戶名或密碼不正確.","提示",64); return; }}2、主窗體:圖書管理系統(tǒng)主界面由菜單和客戶區(qū)域兩部分組成?;拘畔⒐芾恚翰僮鲉T信息的添加、修改和刪除程序相關(guān)代碼:利用函數(shù)LoadOperatorInfo()加載操作員信息。在窗口初始化時,調(diào)用該函數(shù)將全部操作員信息添加到列表中。voidCDlgOperator1::LoadOperatorInfo(){ m_list.DeleteAllItems(); m_pRs->raw_Close(); CStringsql; sql.Format("select*fromtb_operator");//設(shè)置SQL語句 m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); introw=0; CStringitemtext; while(!m_pRs->adoEOF)//利用循環(huán)向表中添加數(shù)據(jù) { m_list.InsertItem(100,""); for(intindex=0;index<m_pRs->Fields->Count;index++) { itemtext=(TCHAR*)(_bstr_t)m_pRs->GetFields()->GetItem((long)index)->Value; m_list.SetItemText(row,index,itemtext); } row+=1; m_pRs->MoveNext();//向下移動記錄 }}voidCDlgOperator1::AddOperator(){ //推斷基礎(chǔ)信息是否為空 if(!InfoIsNull()) { CStringc_operator,c_password,c_level; m_operator.GetWindowText(c_operator); m_password.GetWindowText(c_password); m_level.GetWindowText(c_level); intlevel=atoi(c_level); CStringsql; sql.Format("insertintotb_operatorvalues('%s','%s',%d)",c_operator,c_password,level); if(m_pRs->State==adStateOpen) m_pRs->raw_Close(); try { m_pRs->Open((_bstr_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); LoadOperatorInfo(); ClearInterface(); MessageBox("操作勝利.","提示",MB_OK); } catch(_com_error*e) { MessageBox("操作失敗.","提示",MB_OK|MB_ICONERROR); } } else MessageBox("基礎(chǔ)信息不能為空.","提示",MB_OK+MB_ICONINFORMATION);}boolCDlgOperator1::InfoIsNull(){ CStringc_operator,c_password,c_level; m_operator.GetWindowText(c_operator); m_password.GetWindowText(c_password); m_level.GetWindowText(c_level); if(c_operator.IsEmpty()||c_password.IsEmpty()||c_level.IsEmpty()) returntrue; returnfalse;}voidCDlgOperator1::OnDblclkList1(NMHDR*pNMHDR,LRESULT*pResult){ introw=m_list.GetSelectionMark(); if(row!=-1) { m_operator.SetWindowText(m_list.GetItemText(row,0)); m_password.SetWindowText(m_list.GetItemText(row,1)); m_level.SetCurSel(m_level.FindString(0,m_list.GetItemText(row,2))); } *pResult=0;}voidCDlgOperator1::ClearInterface(){ m_operator.SetWindowText(""); m_password.SetWindowText(""); m_level.SetCurSel(-1);}voidCDlgOperator1::UpdateOperator(){ if(!InfoIsNull()) { if(m_list.GetSelectionMark()!=-1) { if(MessageBox("的確要修改數(shù)據(jù)嗎?","提示",MB_YESNO|MB_ICONINFORMATION)==IDYES) { CStringc_operator,c_password,c_level; m_operator.GetWindowText(c_operator); m_password.GetWindowText(c_password); m_level.GetWindowText(c_level); intlevel=atoi(c_level); inti=m_list.GetSelectionMark(); CStringc_name=m_list.GetItemText(i,0); CStringsql; sql.Format("updatetb_operatorsetname='%s',password='%s',[level]=%dwherename='%s'",c_operator,c_password,level,c_name); m_pRs->raw_Close(); try { m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); ClearInterface(); LoadOperatorInfo(); MessageBox("操作勝利.","提示",64); } catch(...) { MessageBox("操作失敗.","提示",MB_OK|MB_ICONERROR); } } } else MessageBox("請選擇欲修改的信息.","提示",MB_OK|MB_ICONINFORMATION); } else MessageBox("基礎(chǔ)信息不完整.","提示",MB_OK|MB_ICONINFORMATION);}boolCDlgOperator1::InfoIsExist(LPTSTRname){ CStringsql; sql.Format("select*fromtb_operatorwherename='%s'",name); m_pRs->raw_Close(); m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); if(m_pRs->RecordCount>1) returntrue; returnfalse;}voidCDlgOperator1::DeleteOperator(){ if(m_list.GetSelectionMark()!=-1) { if(MessageBox("的確要刪除數(shù)據(jù)嗎?","提示",MB_YESNO|MB_ICONINFORMATION)==IDYES) { inti=m_list.GetSelectionMark(); CStringc_name=m_list.GetItemText(i,0); CStringsql; sql.Format("deletetb_operatorwherename='%s'",c_name); m_pRs->raw_Close(); try { m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); ClearInterface(); LoadOperatorInfo(); MessageBox("操作勝利.","提示",64); } catch(...) { MessageBox("操作失敗.","提示",MB_OK|MB_ICONERROR); } } } else MessageBox("請選擇欲刪除的信息.","提示",MB_OK|MB_ICONINFORMATION);}圖書信息的添加、修改和刪除相關(guān)代碼:BOOLCDlgBookInfo1::PreTranslateMessage(MSG*pMsg){ if(pMsg->message==WM_KEYDOWN) if(pMsg->wParam==13) pMsg->wParam=9; returnCDialog::PreTranslateMessage(pMsg);}BOOLCDlgBookInfo1::OnInitDialog(){ CDialog::OnInitDialog();//設(shè)置表格風(fēng)格 m_list.ModifyStyle(LVS_EDITLABELS,0); m_list.ModifyStyle(0,LVS_REPORT); m_list.ModifyStyle(0,LVS_SHOWSELALWAYS); m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES|LVS_EX_ONECLICKACTIVATE|LVS_EX_FLATSB); //添加列 m_list.InsertColumn(0,"書籍名稱"); m_list.InsertColumn(1,"助記碼"); m_list.InsertColumn(2,"條形碼"); m_list.InsertColumn(3,"作者"); m_list.InsertColumn(4,"出版社"); m_list.InsertColumn(5,"價格"); m_list.InsertColumn(6,"備注"); m_list.InsertColumn(7,"種類"); //設(shè)置列寬度 m_list.SetColumnWidth(0,100); m_list.SetColumnWidth(1,60); m_list.SetColumnWidth(2,80); m_list.SetColumnWidth(3,60); m_list.SetColumnWidth(4,80); m_list.SetColumnWidth(5,60); m_list.SetColumnWidth(6,80); m_list.SetColumnWidth(7,60); //加載圖書種類 AddBookkinds(); //加載圖書信息 LoadBookInfo(); returnTRUE;//returnTRUEunlessyousetthefocustoacontrol //EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCDlgBookInfo1::OnOK(){//}voidCDlgBookInfo1::OnCancel(){//}voidCDlgBookInfo1::AddBookkinds(){ m_kinds.ResetContent(); m_pRs->raw_Close(); CStringsql; sql.Format("select*fromtb_bookkinds"); m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); while(!m_pRs->adoEOF) { m_kinds.AddString((TCHAR*)(_bstr_t)m_pRs->GetFields()->GetItem((long)0)->Value); m_pRs->MoveNext(); }}/***********************************************************************************說明:清空界面數(shù)據(jù)***********************************************************************************/voidCDlgBookInfo1::ClearInterface(){ m_list.DeleteAllItems(); m_author.SetWindowText(""); m_barcode.SetWindowText(""); m_bookname.SetWindowText(""); m_kinds.SetWindowText(""); m_list.SetWindowText(""); m_memo.SetWindowText(""); m_price.SetWindowText(""); m_public.SetWindowText(""); m_shortcode.SetWindowText(""); m_kinds.SetCurSel(-1);}/***************************************************************************************說明:推斷信息是否為空****************************************************************************************/boolCDlgBookInfo1::InfoIsNull(){ CWnd*temp; temp=this; CStringtext; for(intindex=0;index<8;index++) { temp=this->GetNextDlgTabItem(temp); temp->GetWindowText(text); if(text.IsEmpty()) returntrue; } returnfalse;}/***************************************************************************************說明:加載圖書信息****************************************************************************************/voidCDlgBookInfo1::LoadBookInfo(){ m_pRs->raw_Close(); CStringsql; sql.Format("select*fromtb_bookinfo"); m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); introw=0; m_list.DeleteAllItems(); while(!m_pRs->adoEOF) { m_list.InsertItem(100,""); for(intcol=0;col<8;col++) { m_list.SetItemText(row,col,(TCHAR*)(_bstr_t)m_pRs->GetFields()->GetItem((long)col)->Value); } row+=1; m_pRs->MoveNext(); }}/***************************************************************************************說明:推斷條形碼是否存在****************************************************************************************/boolCDlgBookInfo1::BarcodeIsExist(LPTSTRbarcode){ m_pRs->raw_Close(); CStringsql; sql.Format("select*fromtb_bookinfowherebarcode='%s'",barcode); m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); if(m_pRs->RecordCount>0) returntrue; returnfalse;}/***************************************************************************************說明:添加圖書信息****************************************************************************************/voidCDlgBookInfo1::AddBookInfo(){ if(InfoIsNull()) { MessageBox("圖書信息不能為空.","提示",MB_OK|MB_ICONINFORMATION); return; } CStringc_barcode; m_barcode.GetWindowText(c_barcode); if(BarcodeIsExist((_bstr_t)c_barcode)) { MessageBox("條形碼已經(jīng)存在.","提示",MB_OK|MB_ICONINFORMATION); return; } CStringc_name,c_shortname,c_author,c_press,c_price,c_memo,c_kinds; m_bookname.GetWindowText(c_name); m_shortcode.GetWindowText(c_shortname); m_author.GetWindowText(c_author); m_public.GetWindowText(c_press); m_price.GetWindowText(c_price); m_memo.GetWindowText(c_memo); m_kinds.GetWindowText(c_kinds); CStringsql; sql.Format("Insertintotb_bookinfovalues('%s','%s','%s','%s','%s',%f,'%s','%s')",c_name,c_shortname,c_barcode,c_author,c_press,atof(c_price),c_memo,c_kinds); try { m_pRs->raw_Close(); m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); MessageBox("操作勝利.","提示",MB_OK|MB_ICONINFORMATION); ClearInterface(); LoadBookInfo(); } catch(...) { MessageBox("操作失敗.","提示",MB_OK|MB_ICONERROR); } }voidCDlgBookInfo1::UpdateBookInfo(){ if(!InfoIsNull()) { if(m_list.GetSelectionMark()!=-1) { if(MessageBox("的確要修改數(shù)據(jù)嗎?","提示",MB_YESNO|MB_ICONINFORMATION)==IDYES) { CStringc_barcode; c_barcode=m_list.GetItemText(m_list.GetSelectionMark(),2); CStringc_name,c_newcode,c_shortname,c_author,c_press,c_price,c_memo,c_kinds; m_bookname.GetWindowText(c_name); m_barcode.GetWindowText(c_newcode); m_shortcode.GetWindowText(c_shortname); m_author.GetWindowText(c_author); m_public.GetWindowText(c_press); m_price.GetWindowText(c_price); m_memo.GetWindowText(c_memo); m_kinds.GetWindowText(c_kinds); CStringsql; sql.Format("updatetb_bookinfosetbookname='%s',shortname='%s',barcode='%s',author='%s',bookconcern='%s',price=%f,memo='%s',kind='%s'wherebarcode='%s'" ,c_name,c_shortname,c_newcode,c_author,c_press,atof(c_price),c_memo,c_kinds,c_barcode); m_pRs->raw_Close(); try { m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); ClearInterface(); LoadBookInfo(); MessageBox("操作勝利.","提示",64); } catch(...) { MessageBox("操作失敗.","提示",MB_OK|MB_ICONERROR); } } } else MessageBox("請選擇欲修改的信息.","提示",MB_OK|MB_ICONINFORMATION); } else MessageBox("基礎(chǔ)信息不完整.","提示",MB_OK|MB_ICONINFORMATION);}voidCDlgBookInfo1::OnDblclkList1(NMHDR*pNMHDR,LRESULT*pResult){ introw=m_list.GetSelectionMark(); if(row!=-1) { m_bookname.SetWindowText(m_list.GetItemText(row,0)); m_shortcode.SetWindowText(m_list.GetItemText(row,1)); m_barcode.SetWindowText(m_list.GetItemText(row,2)); m_author.SetWindowText(m_list.GetItemText(row,3)); m_public.SetWindowText(m_list.GetItemText(row,4)); m_price.SetWindowText(m_list.GetItemText(row,5)); m_memo.SetWindowText(m_list.GetItemText(row,6)); m_kinds.SetCurSel(m_kinds.FindString(0,m_list.GetItemText(row,7))); } *pResult=0;}voidCDlgBookInfo1::DeleteBookInfo(){ if(m_list.GetSelectionMark()!=-1) { if(MessageBox("的確要刪除數(shù)據(jù)嗎?","提示",MB_YESNO|MB_ICONINFORMATION)==IDYES) { inti=m_list.GetSelectionMark(); CStringc_barcode=m_list.GetItemText(i,2); CStringsql; sql.Format("deletetb_bookinfowherebarcode='%s'",c_barcode); m_pRs->raw_Close(); try { m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); ClearInterface(); LoadBookInfo(); MessageBox("操作勝利.","提示",64); } catch(...) { MessageBox("操作失敗.","提示",MB_OK|MB_ICONERROR); } } } else MessageBox("請選擇欲刪除的信息.","提示",MB_OK|MB_ICONINFORMATION);}voidCDlgBookInfo1::OnPaint(){ CPaintDCdc(this);//devicecontextforpainting}供應(yīng)商信息的添加、修改和刪除相關(guān)代碼:BOOLCDlgProviderInfo1::OnInitDialog(){ CDialog::OnInitDialog(); m_list.ModifyStyle(0,LVS_SHOWSELALWAYS); m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_FLATSB); m_list.InsertColumn(0,"供應(yīng)商名稱",LVCFMT_LEFT,100); m_list.InsertColumn(1,"法人",LVCFMT_LEFT,80); m_list.InsertColumn(2,"負(fù)責(zé)人",LVCFMT_LEFT,80); m_list.InsertColumn(3,"聯(lián)系電話",LVCFMT_LEFT,80); m_list.InsertColumn(4,"具體地址",LVCFMT_LEFT,100); m_list.InsertColumn(5,"網(wǎng)址",LVCFMT_LEFT,100); m_list.InsertColumn(6,"郵箱",LVCFMT_LEFT,100); LoadProviderInfo();//加載供應(yīng)商信息 returnTRUE;}voidCDlgProviderInfo1::LoadProviderInfo(){ m_list.DeleteAllItems(); m_pRs->raw_Close(); CStringsql,temp; sql.Format("select*fromtb_providerinfo"); m_pRs=m_pCon->Execute((_bstr_t)sql,NULL,adCmdText); introw=0; while(!m_pRs->adoEOF) { m_list.InsertItem(100,""); for(inti=0;i<m_pRs->GetFields()->Count;i++) { temp=(TCHAR*)(_bstr_t)m_pRs->GetFields()->GetItem((long)i)->Value; m_list.SetItemText(row,i,temp); } row+=1; m_pRs->MoveNext(); } }BOOLCDlgProviderInfo1::PreTranslateMessage(MSG*pMsg){ if(pMsg->message== WM_KEYDOWN) if(pMsg->wParam==13) pMsg->wParam=9; returnCDialog::PreTranslateMessage(pMsg);}boolCDlgProviderInfo1::InfoIsNull(){ CWnd*temp; temp=this; CStringtext; for(intindex=0;index<7;index++) { temp=this->GetNextDlgTabItem(temp); temp->GetWindowText(text); if(text.IsEmpty()) returntrue; } returnfalse;}voidCDlgProviderInfo1::AddProvider(){ if(InfoIsNull()) { MessageBox("供應(yīng)商信息不能為空.","提示",MB_OK|MB_ICONINFORMATION); return; } CStringc_provider,c_principal,c_phone,c_corporation,c_addr,c_netaddr,c_email; m_addr.GetWindowText(c_addr); m_corporation.GetWindowText(c_corporation); m_email.GetWindowText(c_email); m_netaddr.GetWindowText(c_netaddr); m_phone.GetWindowText(c_phone); m_principal.GetWindowText(c_principal); m_provider.GetWindowText(c_provider); CStringsql; sql.Format("Insertintotb_providerinfovalues('%s','%s','%s','%s','%s','%s','%s')",c_provider,c_corporation,c_principal,c_phone,c_addr,c_netaddr,c_email); try { m_pRs->raw_Close(); m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); MessageBox("操作勝利.","提示",MB_OK|MB_ICONINFORMATION); ClearInterface(); LoadProviderInfo(); } catch(...) { MessageBox("操作失敗.","提示",MB_OK|MB_ICONERROR); }}voidCDlgProviderInfo1::ClearInterface(){ CWnd*temp; temp=this; CStringtext; for(intindex=0;index<8;index++) { temp=this->GetNextDlgTabItem(temp); temp->SetWindowText(""); }}voidCDlgProviderInfo1::DeleteProvider(){ if(m_list.GetSelectionMark()!=-1) { if(MessageBox("的確要刪除數(shù)據(jù)嗎?","提示",MB_YESNO|MB_ICONINFORMATION)==IDYES) { inti=m_list.GetSelectionMark(); CStringc_provider=m_list.GetItemText(i,0); CStringsql; sql.Format("deletetb_providerinfowhereprovider='%s'",c_provider); m_pRs->raw_Close(); try { m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); ClearInterface(); LoadProviderInfo(); MessageBox("操作勝利.","提示",64); } catch(...) { MessageBox("操作失敗.","提示",MB_OK|MB_ICONERROR); } } } else MessageBox("請選擇欲刪除的信息.","提示",MB_OK|MB_ICONINFORMATION);}voidCDlgProviderInfo1::UpdateProvider(){ if(!InfoIsNull()) { if(m_list.GetSelectionMark()!=-1) { if(MessageBox("的確要修改數(shù)據(jù)嗎?","提示",MB_YESNO|MB_ICONINFORMATION)==IDYES) { CStringc_provider; c_provider=m_list.GetItemText(m_list.GetSelectionMark(),0); CStringc_provider1,c_principal,c_phone,c_corporation,c_addr,c_netaddr,c_email; m_addr.GetWindowText(c_addr); m_corporation.GetWindowText(c_corporation); m_email.GetWindowText(c_email); m_netaddr.GetWindowText(c_netaddr); m_phone.GetWindowText(c_phone); m_principal.GetWindowText(c_principal); m_provider.GetWindowText(c_provider1); CStringsql; sql.Format("updatetb_providerinfosetprovider='%s',corporation='%s',principal='%s',phone='%s',addr='%s',web='%s',e_mail='%s'whereprovider='%s'" ,c_provider1,c_corporation,c_principal,c_phone,c_addr,c_netaddr,c_email,c_provider); m_pRs->raw_Close(); try { m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); ClearInterface(); LoadProviderInfo(); MessageBox("操作勝利.","提示",64); } catch(...) { MessageBox("操作失敗.","提示",MB_OK|MB_ICONERROR); } } } else MessageBox("請選擇欲修改的信息.","提示",MB_OK|MB_ICONINFORMATION); } else MessageBox("基礎(chǔ)信息不完整.","提示",MB_OK|MB_ICONINFORMATION); }voidCDlgProviderInfo1::OnDblclkList1(NMHDR*pNMHDR,LRESULT*pResult){ introw=m_list.GetSelectionMark(); if(row!=-1) { CWnd*temp; temp=this; CStringtext; for(intindex=0;index<7;index++) { temp=this->GetNextDlgTabItem(temp); text=m_list.GetItemText(row,index); temp->SetWindowText(text); } } // *pResult=0;}查詢管理:入庫查詢的相關(guān)代碼:voidCDlgInputQuery3::Query(){ if((m_check1.GetCheck()==false)&&(m_check2.GetCheck()==false)) { MessageBox("請?jiān)O(shè)置查詢條件","提示",64); return; } if((m_check1.GetCheck()==true)&&(m_check2.GetCheck()==false)) { CStringc_field,c_value; m_fields.GetWindowText(c_field); m_value.GetWindowText(c_value); if(c_field.IsEmpty()||(c_value.IsEmpty())) { MessageBox("請?jiān)O(shè)置查詢條件","提示",64); return; } CStringsql; m_list.DeleteAllItems(); switch(m_fields.GetCurSel()) { case0: { c_field="bookname"; sql.Format("selecta.instockid,b.bookname,b.barcode,b.author,b.bookconcern,a.unitprice,a.numbersfromtb_instock_subainnerjointb_bookinfobona.barcode=b.barcodeandb.%s='%s'",c_field,c_value); break; } case1: { c_field="barcode"; sql.Format("selecta.instockid,b.bookname,b.barcode,b.author,b.bookconcern,a.unitprice,a.numbersfromtb_instock_subainnerjointb_bookinfobona.barcode=b.barcodeandb.%s='%s'",c_field,c_value); break; } case2: { c_field="instockid"; sql.Format("selecta.instockid,b.bookname,b.barcode,b.author,b.bookconcern,a.unitprice,a.numbersfromtb_instock_subainnerjointb_bookinfobona.barcode=b.barcodeanda.%s='%s'",c_field,c_value); break; } case3: { c_field="Operator"; sql.Format("selecta.instockid,b.bookname,b.barcode,b.author,b.bookconcern,a.unitprice,a.numbersfromtb_instock_subainnerjointb_bookinfobona.barcode=b.barcodeinnerjointb_instorage_maincona.instockid=c.idandc.%s='%s'",c_field,c_value); break; } case4: { c_field="provider"; sql.Format("selecta.instockid,b.bookname,b.barcode,b.author,b.bookconcern,a.unitprice,a.numbersfromtb_instock_subainnerjointb_bookinfobona.barcode=b.barcodeinnerjointb_instorage_maincona.instockid=c.idandc.%s='%s'",c_field,c_value); break; } } m_pRs->raw_Close(); m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); introw=0; while(!m_pRs->adoEOF) { CStringtemp; m_list.InsertItem(1000,""); for(inti=0;i<7;i++) { temp=(TCHAR*)(_bstr_t)m_pRs->GetFields()->GetItem((long)i)->Value; m_list.SetItemText(row,i,temp); } m_pRs->MoveNext(); row+=1; } } elseif((m_check1.GetCheck()==false)&&(m_check2.GetCheck()==true)) { m_list.DeleteAllItems(); CStringsql,c_starttime,c_endtime; m_strtime.GetWindowText(c_starttime); m_endtime.GetWindowText(c_endtime); sql.Format("selecta.instockid,b.bookname,b.barcode,b.author,b.bookconcern,a.unitprice,a.numbersfromtb_instock_subainnerjointb_bookinfobona.barcode=b.barcodeinnerjointb_instorage_maincona.instockid=imebetween'%s'and'%s'",c_starttime,c_endtime); m_pRs->raw_Close(); m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); introw=0; while(!m_pRs->adoEOF) { CStringtemp; m_list.InsertItem(1000,""); for(inti=0;i<7;i++) { temp=(TCHAR*)(_bstr_t)m_pRs->GetFields()->GetItem((long)i)->Value; m_list.SetItemText(row,i,temp); } m_pRs->MoveNext(); row+=1; } } else { CStringc_field,c_value; m_fields.GetWindowText(c_field); m_value.GetWindowText(c_value); if(c_field.IsEmpty()||(c_value.IsEmpty())) { MessageBox("請?jiān)O(shè)置查詢條件","提示",64); return; } CStringsql,c_starttime,c_endtime; m_strtime.GetWindowText(c_starttime); m_endtime.GetWindowText(c_endtime); if(c_field.IsEmpty()||(c_value.IsEmpty())) { MessageBox("請?jiān)O(shè)置查詢條件","提示",64); return; } m_list.DeleteAllItems(); switch(m_fields.GetCurSel()) { case0: { c_field="bookname"; sql.Format("selecta.instockid,b.bookname,b.barcode,b.author,b.bookconcern,a.unitprice,a.numbersfromtb_instock_subainnerjointb_bookinfobona.barcode=b.barcodeandb.%s='%s'innerjointb_instorage_maincona.instoc
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電梯井施工后期驗(yàn)收方案
- 倉庫屋頂分布式電站建設(shè)方案
- 實(shí)驗(yàn)室安全演練實(shí)施方案
- 2024高考化學(xué)一輪復(fù)習(xí)第十二章有機(jī)化學(xué)基礎(chǔ)第40講醛羧酸酯學(xué)案
- 2024年專用版鋼筋訂購協(xié)議
- 安徽省蕪湖市2023-2024學(xué)年高一上學(xué)期期末考試 數(shù)學(xué) 含解析
- 2024年個人借款合同及還款協(xié)議
- 北京市海淀區(qū)2023-2024學(xué)年高二下學(xué)期期末考試數(shù)學(xué)試卷 含答案
- 移動電子商務(wù)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 地源熱泵在游泳池中的應(yīng)用方案
- 華電人才測評試題在線測試
- 《帶壓堵漏技術(shù)》課件
- 銅礦礦山規(guī)劃與布局
- 備考2023高考語文二輪 高中語文 山水田園類詩歌閱讀專項(xiàng)練習(xí)(解析)
- 人教版二年級上冊口算練習(xí)1000題及答案
- 2024年浙江建銀工程咨詢有限責(zé)任公司招聘筆試參考題庫含答案解析
- 醫(yī)院感染管理培訓(xùn)課件消毒劑的選擇與使用
- 平臺分銷返傭合作協(xié)議
- 水痘護(hù)理課件
- 肩關(guān)節(jié)鏡術(shù)的健康宣教
- 2024年廣西鋁業(yè)集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
評論
0/150
提交評論