庫存管理系統(tǒng)(下)_第1頁
庫存管理系統(tǒng)(下)_第2頁
庫存管理系統(tǒng)(下)_第3頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

庫存管理系統(tǒng)(下)

第五章系統(tǒng)實施5.1、開發(fā)工具簡介本系統(tǒng)的前端開發(fā)工具,我選擇了VisualBasic6.0,后臺數(shù)據(jù)庫采用Access2000。5.1.1VB簡介Visual意為“可視化的”,指的是一種開發(fā)圖形用戶界面的方法,所以VisualBasic是基于Basic的可視化的程序設(shè)計語言。在VisualBasic中,一方面繼承了Basic所具有的程序設(shè)計語言簡單易用的特點,另一方面在其編程系統(tǒng)中采用了面向?qū)ο?、事件?qū)動的編程機制,用一種巧妙的方法把Windows的編程復(fù)雜性封裝起來,提供了一種所見即所得的可視化程序設(shè)計方法。5.1.2VB功能特點具有面向?qū)ο蟮目梢暬O(shè)計工具在VB中,應(yīng)用面向?qū)ο蟮某绦蛟O(shè)計方法(OOP),把程序和數(shù)據(jù)封裝起來視為一個對象,每個對象都是可視的。程序員在設(shè)計時只需用現(xiàn)有工具根據(jù)界面設(shè)計要求,直接在屏幕上“畫”出窗口、菜單、按鈕、滾動條等不同類型的對象,并為每個對象設(shè)置屬性。程序員的編程工作僅限于編寫相關(guān)對象要完成的功能程序,因而程序設(shè)計的效率可大大提高。事件驅(qū)動的編程機制事件驅(qū)動是非常適合圖形用戶界面的編程方式。在圖形用戶界面的應(yīng)用程序中,是由用戶的動作即事件掌握著程序運行的流向,每個事件都能驅(qū)動一段程序的運行。程序員只要編寫響應(yīng)用戶動作的代碼,而各個動作之間不一定有聯(lián)系。提供了易學(xué)易用的應(yīng)用程序集成開發(fā)環(huán)境在VB集成開發(fā)環(huán)境中,用戶可設(shè)計界面、編寫代碼、調(diào)試程序,直至把應(yīng)用程序編譯成可執(zhí)行文件在Windows中運行,使用戶在友好的開發(fā)環(huán)境中工作。結(jié)構(gòu)化的程序設(shè)計語言VB具有豐富的數(shù)據(jù)類型和結(jié)構(gòu)化程序結(jié)構(gòu),作為一種程序設(shè)計語言,它還有如下一些特點:強大的數(shù)值和字符串處理功能豐富的圖形指令,可方便地繪制各種圖形提供靜態(tài)和動態(tài)數(shù)組,有利于簡化內(nèi)存的管理過程可遞歸調(diào)用,使程序更為簡練支持隨機文件和順序文件的訪問提供了一個可供應(yīng)用程序調(diào)用的包含多種類型的圖標(biāo)庫具有完善的運行出錯處理支持多種數(shù)據(jù)庫系統(tǒng)的訪問利用數(shù)據(jù)控件可訪問的數(shù)據(jù)庫系統(tǒng)有:MicrosoftAccess、Btrieve、DBASE、MicrosfotFoxPro和Paradox等,也可以訪問MicrosoftExcel、Lotus1-2-3等多種電子表格。支持動態(tài)數(shù)據(jù)交換(DDE)、動態(tài)鏈接庫(DLL)和對象的鏈接與嵌入(OLE)技術(shù)完備的HELP聯(lián)機幫助功能與Windows環(huán)境下的軟件一樣,在VB中,利用幫助菜單和F1功能鍵,用戶可以隨時方便地得到所需要的幫助信息。VB幫助窗口中顯示了有關(guān)的示例代碼,通過復(fù)制、粘貼操作可獲取大量的示例代碼,為用戶的學(xué)習(xí)和使用提供了極大的方便。VB程序設(shè)計的概念就是面向?qū)ο蟮母拍?,對象就是?shù)據(jù)(DATA)和代碼(CODE)互相結(jié)合的綜合體。Windows上面的每一個圖標(biāo),包括窗口本身都是對象,如果沒有任何事情發(fā)生,對象處于停頓狀態(tài)。當(dāng)存在外來事件時,程序段執(zhí)行,它的執(zhí)行是由外來事件決定的。因此是“事件”驅(qū)動的。編寫VB程序較為簡單,首先將各個對象放在空白窗體上,然后將程序代碼分別添加給對象或圖標(biāo),將它們組合起來就可以隨意運行了。在VB中,窗體實際上是一個對象,VB的窗體含有許多內(nèi)嵌特性,這使得用戶界面部分的建立像是從一個目錄中挑選一個個合適的控件,而不是從零開始一步一步地建立控件。這種開發(fā)者能親眼看到的程序設(shè)計過程就是“可視化程序設(shè)計”(VisualProgramming)5.1.3VB中的基本概念

對象:面向?qū)ο缶幊蹋∣OP)的提法大家一定也很耳熟,雖然VisualBasic并不是完全的面向?qū)ο缶幊?,但也利用了對象編程技術(shù)。對象簡單地說就是大家經(jīng)??吹降母鞣N窗口、按鈕、文本框甚至打印機等。

屬性:如同電視有黑白、彩色之分一樣,作為對象的Windows中的窗口也是有大有小,文本框的位置不可能完全一樣,菜單要顯示出不同的功能,這些都是由對象的屬性決定的。不同對象的屬性可能不同。屬性一般決定了對象的位置、大小、顯示等情況。

方法:就是對象能夠做的事,如打印機對象就有打印(Print)方法、窗口對象支持隱藏(Hide)方法、很多對象支持移動(Move)方法等。

事件:就是對象對用戶各種操作的反映情況。如用戶用鼠標(biāo)按一下按鈕,就會觸發(fā)按鈕的“按”(Click)事件。

控件:控件就是VisualBasic提供的編程用的模塊,與對象有直接的聯(lián)系,如同積木的木塊,使用這樣的控件,就可以像拼圖或堆積木一樣“搭”、“拼”你的程序界面。VisualBasic中使用控件,簡化了Windows中的窗口、按鈕等對象的編程設(shè)計。每個控件都有各自的屬性、事件及方法。只需修改這些特征你就可以隨心所欲地編程了。最重要的是,你可以利用成千上萬的各種擴充的控件來快速構(gòu)造幾乎能滿足你任何要求的程序。例如,如果你不滿意Windows簡陋的媒體播放器,你就可以使用VB的多媒體控件在1小時以內(nèi)設(shè)計一個完全自己風(fēng)格的能夠播放CD、VCD的多媒體播放器,而功能完全與之相當(dāng)。5.1.4Access2000數(shù)據(jù)庫簡介作為Microsoft的office套件產(chǎn)品之一,access已經(jīng)成為世界上最流行的桌面數(shù)據(jù)庫系統(tǒng)。Access與許多優(yōu)秀的關(guān)系數(shù)據(jù)庫一樣,可以讓你很容易地連接相關(guān)的信息而且還對其他的數(shù)據(jù)庫系統(tǒng)有所補充。它能操作其它來源的資料,包括許多流行的PC數(shù)據(jù)庫程序(如dBASE,Paradox,MicrosoftFoxPro)和服務(wù)器、小型機及大型機上的許多SQL數(shù)據(jù)庫。Access還完全支持Microsoft的OLE技術(shù)。Access還提供windows操作系統(tǒng)的高級應(yīng)用程序開發(fā)系統(tǒng)。Access與其它數(shù)據(jù)庫開發(fā)系統(tǒng)之間相當(dāng)顯著的區(qū)別就是:您不用寫一行代碼,就可以在很短的時間里開發(fā)出一個功能強大而且相當(dāng)專業(yè)的數(shù)據(jù)庫應(yīng)用程序,并且這一愉快的過程是完全可視的!如果您能給它加上簡短的VBA代碼,那么您的程序決不比專業(yè)程序員潛心開發(fā)的程序差。Access的總體結(jié)構(gòu)Access將所有有名字的東西都成為對象(object),在Access2000中,最重要的對象有表,查詢,窗體,報表,宏和模塊。表用戶定義的存儲資料的對象。每一個表都包含有關(guān)某個主體的信息。表包括存儲不同種類資料的字段(列),而記錄(行)則收集特定主體實例的所有信息。查詢?yōu)閬碜砸粋€或多個表的資料提供定制視圖的對象。在Access中,可以利用圖形化的實例查詢機制(QBE)或通過SQL語句來建立查詢。你可以在查詢中選擇、更新、插入或刪除資料,也可以用查詢來建立新表。窗體窗體是主要的人機接口。大量的操作(幾乎所有)都要通過窗體完成。窗體通過運行宏(macro)或VisualBasicforApplicatinns(VBA)過程,來響應(yīng)大量的事件。Access2000為我們提供了強大的(同時也是相當(dāng)方便的向?qū)В﹣斫?biāo)準(zhǔn)的Windows窗體。報表為格式化、計算、打印選定資料而設(shè)計的對象。它是衡量一個優(yōu)秀的數(shù)據(jù)庫的重要標(biāo)準(zhǔn)(有時甚至是唯一的標(biāo)準(zhǔn))。宏為了響應(yīng)已定義的事件,需要讓Access去執(zhí)行一個或多個操作,而宏就是對這些操作的結(jié)構(gòu)化的定義對象。它可以讓你像堆積木一樣建立一個功能強大的程序,而無須寫大量的代碼。模塊包括用VBA編碼的定制過程的一個對象。模塊提供了獨立的動作流以捕獲錯誤,而宏做不到。模塊能直接響應(yīng)窗體或報表事件,也可以從應(yīng)用程序的任何地方被調(diào)用。Adodc1.RecordSource=frmLogin.Adodc1.RecordSourceAdodc1.RefreshSetText4.DataSource=Adodc1Text4.DataField="密碼"IfText1=""ThenMsgBox"請輸入原密碼!",,"修改密碼"ExitSubElseIfText1.Text<>Adodc1.Recordset.Fields("密碼")ThenMsgBox"原密碼錯誤!",,"修改密碼"ExitSubElseIfText2=""OrText3=""ThenMsgBox"請輸入新密碼??!",,"修改密碼"ExitSubElseIfText2<>Text3ThenMsgBox"密碼不一致??!",,"修改密碼"ExitSubElseText4.Text=Text2.TextAdodc1.Recordset.MoveFirstMsgBox"密碼修改成功??!",,"修改密碼"UnloadMeEndIfDimI,JAsIntegerDimSTRAsStringIfText1.Text=""OrText2=""OrCombo1.Text=""OrText4=""OrText5=""OrText6=""OrText7=""ThenMsgBox"請輸入完整信息!"ExitSubElse將記錄存入入庫記錄表設(shè)備入庫表.datPrimaryRS.Recordset.Fields("設(shè)備號")=Text1.Text設(shè)備入庫表.datPrimaryRS.Recordset.Fields("入庫數(shù)量")=Text2.Text設(shè)備入庫表.datPrimaryRS.Recordset.Fields("入庫時間")=Combo1.Text設(shè)備入庫表.datPrimaryRS.Recordset.Fields("供應(yīng)商")=Text4.Text設(shè)備入庫表.datPrimaryRS.Recordset.Fields("供應(yīng)商電話")=Text5.Text設(shè)備入庫表.datPrimaryRS.Recordset.Fields("價格")=Text6.Text設(shè)備入庫表.datPrimaryRS.Recordset.Fields("采購員")=Text7.TextMsgBox"已經(jīng)成功入庫!"EndIf設(shè)備入庫表.Adodc1.Refresh設(shè)備入庫表.DataGrid1.RefreshIf設(shè)備入庫表.Adodc1.Recordset.RecordCount>0Then將記錄加入現(xiàn)有庫存表中設(shè)備入庫表.Text9.Text=CInt(設(shè)備入庫表.Text9.Text)+CInt(Text2.Text)設(shè)備入庫表.Text9.RefreshJ=設(shè)備入庫表.Text9設(shè)備入庫表.Adodc1.Recordset.MoveFirst設(shè)備入庫表.Adodc1.Recordset.Fields.Refresh設(shè)備入庫表.DataGrid1.RefreshMsgBox"現(xiàn)有庫存量為:"&JElseSTR="現(xiàn)有庫存表中無此設(shè)備!"&vbCrLf&"請在設(shè)備代碼表和現(xiàn)有庫存表中手動添加記錄??!"MsgBoxSTRLoadfrm現(xiàn)有庫存表frm現(xiàn)有庫存表.ShowCallfrm現(xiàn)有庫存表.Command1_ClickFrmAddNewEqu.Text1.Text=frmInput.Text1.TextFrmAddNewEqu.Text2.Text=frmInput.Text2.TextLoadfrm設(shè)備代碼表frm設(shè)備代碼表.ShowEndIfEndSubPrivateSubcmdDelete_Click()刪除入庫表中記錄OnErrorGoToDeleteErrDimYesNoAsStringYesNo=MsgBox("刪除",vbYesNo,"刪除記錄")IfYesNo=vbYesThenWithdatPrimaryRS.Recordset.Delete.MoveNextIf.EOFThen.MoveLastEndWithElseExitSubEndIfDeleteErr:MsgBoxErr.DescriptionEndSubPrivateSubcmdUpdate_Click()更新紀(jì)錄程序OnErrorGoToUpdateErrdatPrimaryRS.Recordset.UpdateBatchadAffectAllExitSubUpdateErr:MsgBoxErr.DescriptionPrivateSubCommand1_Click()設(shè)備出庫程序Dimi,J,kAsIntegerDimSTRAsStringfrm設(shè)備出庫表.Adodc1.RecordSource="select*from現(xiàn)有庫存表where設(shè)備號='"&Text1.Text&"'"frm設(shè)備出庫表.Adodc1.Refreshfrm設(shè)備出庫表.DataGrid1.RefreshIfIsNumeric(Text2)=FalseThenMsgBox"數(shù)量必須是數(shù)字!"ExitSubEndIfIfText1.Text=""OrText2=""OrCombo1.Text=""OrText4=""OrText5=""OrText6=""OrText7=""ThenMsgBox"請輸入完整信息!"ExitSubElseIffrm設(shè)備出庫表.Adodc1.Recordset.RecordCount<=0ThenSTR="現(xiàn)有庫存表中無此設(shè)備!請檢查輸入是否正確??!"MsgBoxSTRExitSubElsefrm設(shè)備出庫表.datPrimaryRS.Recordset.Fields("設(shè)備號")=Text1.Textfrm設(shè)備出庫表.datPrimaryRS.Recordset.Fields("出庫數(shù)量")=Text2.Textfrm設(shè)備出庫表.datPrimaryRS.Recordset.Fields("出庫時間")=Combo1.Textfrm設(shè)備出庫表.datPrimaryRS.Recordset.Fields("經(jīng)手人")=Text4.Textfrm設(shè)備出庫表.datPrimaryRS.Recordset.Fields("領(lǐng)取人")=Text5.Textfrm設(shè)備出庫表.datPrimaryRS.Recordset.Fields("使用部門")=Text6.Textfrm設(shè)備出庫表.datPrimaryRS.Recordset.Fields("用途")=Text7.TextMsgBox"已經(jīng)成功存入設(shè)備出庫表庫!"EndIfIffrm設(shè)備出庫表.Adodc1.Recordset.RecordCount>0Thenk=CInt(frm設(shè)備出庫表.Text9.Text)-CInt(Text2.Text)Ifk>=0Thenfrm設(shè)備出庫表.Text9.Text=CInt(frm設(shè)備出庫表.Text9.Text)-CInt(Text2.Text)frm設(shè)備出庫表.Text9.RefreshJ=frm設(shè)備出庫表.Text9frm設(shè)備出庫表.Adodc1.Recordset.MoveFirstfrm設(shè)備出庫表.Adodc1.Recordset.Fields.Refreshfrm設(shè)備出庫表.DataGrid1.RefreshMsgBox"現(xiàn)有庫存量為:"&JElseMsgBox"現(xiàn)有庫存量不足!請輸入合適數(shù)量??!"ExitSubEndIfElseSTR="現(xiàn)有庫存表中無此設(shè)備!請檢查輸入是否正確??!"MsgBoxSTREndIfEndSubPrivateSubcmdDelete_Click()刪除出庫記錄OnErrorGoToDeleteErrDimYesNoAsStringYesNo=MsgBox("刪除",vbYesNo,"刪除記錄")IfYesNo=vbYesThenWithdatPrimaryRS.Recordset.Delete.MoveNextIf.EOFThen.MoveLastEndWithElseExitSubEndIfDeleteErr:MsgBoxErr.DescriptionEndSub更新記錄程序同入庫的更新程序相同,在此略5.2.5設(shè)備采購模塊實現(xiàn),程序略主要程序PrivateSubcmdAdd_Click()添加設(shè)備OnErrorGoToAddErrdatPrimaryRS.Recordset.AddNewExitSubAddErr:MsgBoxErr.DescriptionEndSub5.2.8庫存報警模塊實現(xiàn)主要程序PrivateSubCommand1_Click()顯示高于最大警戒庫存的設(shè)備datPrimaryRS.RecordSource="select*from現(xiàn)有庫存表where現(xiàn)有庫存>最大庫存"datPrimaryRS.RefreshgrdDataGrid.RefreshIfdatPrimaryRS.Recordset.RecordCount>0ThenBeepMsgBox"表中設(shè)備已過量!"ElseMsgBox"沒有設(shè)備庫存過量!"EndIfEndSubPrivateSubCommand2_Click()顯示低于于最小警戒庫存的設(shè)備datPrimaryRS.RecordSource="select*from現(xiàn)有庫存表where現(xiàn)有庫存<最小庫存"datPrimaryRS.RefreshgrdDataGrid.RefreshIfdatPrimaryRS.Recordset.RecordCount>0ThenBeepMsgBox"表中設(shè)備庫存量已過警戒線!請采購?。?ElseMsgBox"沒有設(shè)備庫存量過少!"EndIfEndsubPrivateSubTimer1_Timer()自動報警程序frmAlarm.datPrimaryRS.RecordSource="select*from現(xiàn)有庫存表where現(xiàn)有庫存>最大庫存"frmAlarm.datPrimaryRS.RefreshIffrmAlarm.datPrimaryRS.Recordset.RecordCount>0ThenBeepMsgBox"有設(shè)備庫存超過警戒庫存!"&vbCrLf&"請查看庫存報警記錄"Timer1.Enabled=F

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論