倉庫管理系統(tǒng)的VISAUL FOXPRO實現(xiàn) (下)_第1頁
倉庫管理系統(tǒng)的VISAUL FOXPRO實現(xiàn) (下)_第2頁
倉庫管理系統(tǒng)的VISAUL FOXPRO實現(xiàn) (下)_第3頁
倉庫管理系統(tǒng)的VISAUL FOXPRO實現(xiàn) (下)_第4頁
倉庫管理系統(tǒng)的VISAUL FOXPRO實現(xiàn) (下)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、倉庫管理系統(tǒng)的VISAUL FOXPRO實現(xiàn) 下44設(shè)備還庫模塊的設(shè)計在設(shè)備還庫模塊中將實現(xiàn)設(shè)備還庫數(shù)據(jù)的添加和修改庫存等功能,按照前面介紹的步驟設(shè)計設(shè)備還庫表。設(shè)備還庫表所可能用到的控件的屬性如表所示:1Fr1控件的主要屬性:selet現(xiàn)有庫存表*先在該表單的數(shù)據(jù)環(huán)境中添加現(xiàn)有庫存表getid=thisfr.設(shè)備號1.text1.valuesetrdert設(shè)備號seekgetid*在現(xiàn)有庫存表中查找設(shè)備號等于getid的紀(jì)錄iffund()getnu=thisfr.歸還數(shù)量1.text1.valueupdate現(xiàn)有庫存表;set現(xiàn)有庫存=(現(xiàn)有庫存-getnu)here(設(shè)備號=getid)

2、insertint操作日志表(操作員,操作內(nèi)容,操作時間);values(thisfr.歸還人1.text1.value,設(shè)備還庫,date()*假如庫存表中有該項設(shè)備,那么更新庫存表,同時更新操作日志elseessagebx(出錯,1,錯誤的設(shè)備號)*假如沒有該設(shè)備號那么報告出錯信息endif保存后運行表單,可得到如下圖的設(shè)備還庫表。45設(shè)備需求模塊的設(shè)計在設(shè)備需求模塊中將實現(xiàn)設(shè)備需求數(shù)據(jù)的添加和保存日志等功能。首先通過VisualFxpr的表單向?qū)伤璧脑O(shè)備需求表單,選擇部門需求表的所有可用字段,然后為保持程序風(fēng)格的一致,繼續(xù)采用表單的陰影式和圖片按鈕的風(fēng)格。在“步驟3-排序次序時。選

3、擇設(shè)備號的升序排列。最后單擊“完成按鈕,把表單保存在“:倉庫管理目錄下,名為“設(shè)備需求.sx。通過表單向?qū)傻谋韱稳缦聢D,我們可以調(diào)節(jié)控件的位置,修改表單中控件的屬性,最后結(jié)果所以下圖所示:在表單設(shè)計器中,雙擊“保存日志命令按鈕。添加lik事件代碼如下:insertint操作日志表(操作員,操作內(nèi)容,操作時間)values(usernae,設(shè)備需求,date()雙擊回主界面命令按鈕,添加lik事件代碼如下:thisfr.releasedfr倉庫管理保存對表單所作的修改。46設(shè)備采購模塊的設(shè)計在設(shè)備采購模塊中將實現(xiàn)設(shè)備采購數(shù)據(jù)的添加和保存日志等功能。1由數(shù)據(jù)表生成表單通過VisualFxpr的

4、表單向?qū)?,生成設(shè)備采購方案表單。在選擇數(shù)據(jù)庫和表時,選擇倉庫管理數(shù)據(jù)庫和設(shè)備采購方案表。在選擇字段時,選擇所有可用字段,選擇陰影式和圖片按鈕作為設(shè)備采購方案表的款式。選擇方案采購時間的升序排列作為設(shè)備采購方案表的索引。2為窗體修改和添加命令按鈕添加2個命令按鈕“保存日志和“回主界面。設(shè)置表單中控件的屬性。下面的表列出了需要修改的控件的名稱以及屬性值。1Fr1控件的主要屬性:3為按鈕添加lik事件代碼:在表單設(shè)計器中,雙擊保存日志命令按鈕。添加lik事件代碼如下:insertint操作日志表(操作員,操作內(nèi)容,操作時間)values(usernae,設(shè)備需求,date()*把設(shè)備需求寫入操作日志

5、表中雙擊回主界面按鈕,添加lik事件代碼如下:thisfr.release*釋放本表單dfr倉庫管理*運行倉庫管理界面保存對表單所作的修改,表單運行效果如下圖:47顯示報表模塊的設(shè)計在該模塊中,一共要顯示3個報表,分別提供庫存缺乏,庫存過多和操作日志等信息。1設(shè)計顯示報表表單在工程管理器的文檔視圖下選擇“新建,然后選擇新建表單,如下圖。在如下圖的空白表單中添加一個頁框控件,并按照下表設(shè)置頁框的屬性,同時在數(shù)據(jù)環(huán)境里添加現(xiàn)有庫存表和操作日志表。操作日志表設(shè)置表格控件的屬性,如表所示:grid1控件的主要屬性表:2代碼設(shè)計定義Pagefrae1.Page1.grid1的init事件運行“顯示報表表

6、單,界面所圖所示:lalusts1selet設(shè)備號,最大庫存,現(xiàn)有庫存fr現(xiàn)有庫存表here(現(xiàn)有庫存最大庫存)intursrusts1thisfr.頁框.庫存過多.庫存過多表.rerdsure=usts1定義Pagefrae1.Page2.grid1的init事件lalusts2selet設(shè)備號,最小庫存,現(xiàn)有庫存fr現(xiàn)有庫存表here(現(xiàn)有庫存最小庫存)intursrusts2thisfr.頁框.庫存缺乏.庫存缺乏表.rerdsure=usts2定義Pagefrae1.Page3.grid1的init事件lalusts3selet*fr操作日志表intursrusts3thisfr.頁框.

7、操作日志.操作日志表1.rerdsure=usts3運行“顯示報表表單,界面如下圖。48開發(fā)中的難點和解決技巧VisualFxPr6.0中的向?qū)Оū硐驅(qū)А?shù)據(jù)庫向?qū)?、表單向?qū)?、查詢向?qū)?、報表向?qū)А?biāo)簽向?qū)?、郵件合并向?qū)?、?shù)據(jù)透視表向?qū)А?dǎo)入向?qū)?、文檔向?qū)А惭b向?qū)А⑸w向?qū)?、?yīng)用程序向?qū)?、EB發(fā)表向?qū)У?、我們合理?yīng)用向?qū)Э梢栽诰幊讨羞M(jìn)步效率。為了快速開發(fā)高效的軟件,本設(shè)計中的多數(shù)表單的設(shè)計采用利用表單設(shè)計向?qū)?,然后在生成的表單的根底上修改。?shù)據(jù)庫軟件用來管理數(shù)據(jù)的優(yōu)勢在于可以迅速從成千上萬的數(shù)據(jù)中找到我們需要的數(shù)據(jù),而查詢功能的設(shè)計也是數(shù)據(jù)庫應(yīng)用軟件設(shè)計過程中的重點也是難點。本設(shè)計過程中

8、利用表單向?qū)?qiáng)大的功能,輕松完成了數(shù)據(jù)的查詢功能。而且表單向?qū)傻牟樵児δ芊浅?qiáng)大,完全可以滿足數(shù)據(jù)庫應(yīng)用軟件的需要。第五章系統(tǒng)的編譯和發(fā)行51設(shè)置主文件用主圖標(biāo)標(biāo)記的文件是用戶在啟動.app或者.exe時被調(diào)用的文件。它可以是一個表單、菜單或者程序,建議使用程序作為主文件。52構(gòu)造主文件假如主文件是一個程序,它將調(diào)用應(yīng)用程序框架中的各個功能組件,然后由這些組件調(diào)用應(yīng)用程序的其余局部。假如要建立一個簡單的主程序,可以按以下步驟進(jìn)展。1現(xiàn)設(shè)置應(yīng)用環(huán)境界面。2建立初始用戶界面。3建立事件循環(huán)。4恢復(fù)環(huán)境,退出應(yīng)用程序。例如,可以建立下面的程序作為主程序:為了防止無限循環(huán),必須在READEVENT

9、S命令之前安排LEAREVENTS命令。可以在主菜單或者主表單中添加一個“退出項,該項發(fā)出LEAREVENTS命令。53在.app和.exe文件中包含和排除文件假如在發(fā)布的應(yīng)用程序中不想再更改這些文件,可把它們放在工程中并設(shè)置為“包含。那么這些文件變成只讀的,不能修改。假如想修改這些文件,把它們放在工程中并設(shè)置為“排除,然后作為獨立文件隨著應(yīng)用程序一起發(fā)布。在默認(rèn)情況下,VisualFxPr6.0在嵌放的過程中排除了數(shù)據(jù)庫、表格、成為.ff的庫文件和.app文件。建議除了一些特定的表格,最好不要包含這類文件。數(shù)據(jù)庫和表格需要變化和添加,而假如編譯后包含自.exe或者是.app文件中,由于這二個

10、文件被創(chuàng)立后都是靜態(tài)的,因此被包含的文件也是靜態(tài)的和只讀的。把數(shù)據(jù)庫和表格包含在這些文件中很明顯會帶來問題。因為這些文件不能被包含在文件.exe或者是.app文件中,所以要在發(fā)布一個應(yīng)用程序之前為這些文件做好準(zhǔn)備。如要排除可修改的文件,首先在工程管理器中,選擇可修改的文件,然后從“工程菜單中選擇“排除命令。在一個文件被排除后,那么在文件的左方參加一個排除符號。小結(jié)一個完好的倉庫管理系統(tǒng)到此就制作完成了。在本例中詳細(xì)的講述了從創(chuàng)立數(shù)據(jù)庫到系統(tǒng)設(shè)計和各模塊的創(chuàng)立、面向?qū)ο蟮谋韱蔚脑O(shè)計、根本功能如查詢的實現(xiàn)、主程序的編寫。致謝在本次畢業(yè)設(shè)計的過程中,我的導(dǎo)師和學(xué)院的教師們給了我很大的指導(dǎo)和幫助。不僅

11、使我在規(guī)定的時間內(nèi)完成了系統(tǒng)的設(shè)計,同時還使我學(xué)到了很多有益的經(jīng)歷。在此,我謹(jǐn)向他表示最衷心的感謝。同時,學(xué)校給了我這次畢業(yè)設(shè)計的時機(jī),使我得到了很好的鍛煉,在此,我也向?qū)W校的各位教師表示最誠摯的感謝。主要參考文獻(xiàn)作者.書名.出版社.出版日期1李加福VisualFxPr6.0北京清華大學(xué)出版社1999年6月2周建成FxPr2.5命令與函數(shù)專輯北京人們郵電出版社1994年7月3梁杰、效英、殷咸青Fxpr2.6frinds使用詳解西安西安電子科技大學(xué)出版社1995年5月附錄:程序運行界面:1:主界面:附錄2:主要控件的源代碼清單:1:主程序源代碼:SETTALKffsetsysenuffseten

12、tn_sreen.indstate=2_sreen.in=inshappy.i_sreen.axbuttn=0_sreen.inbuttn=1_sreen.lsable=.f.difyindsreennlseDIFYINDSREENTITLE倉庫管理信息系統(tǒng)ZINDSREENAXsetdefaulttdatadfr登錄表單readeventslearlseallreturnendif2:登錄表單確實定按鈕控件的lik源代碼:latefralltri(用戶名)=alltri(thisfr.b1.value)andalltri(密碼)=alltri(thisfr.text1.value)if!ef

13、()ifalltri(級別)=管理員publijb,usernaejb=1usernae=alltri(thisfr.b1.value)elsepublijb,usernaejb=0usernae=alltri(thisfr.b1.value)endifdenu.prthisfr.releasedfr倉庫管理else#defineissath_l用戶或口令錯,請重新登錄!aitindissath_ltieut1thisfr.b1.value=thisfr.text1.value=thisfr.text1.setfusnuunt=nuunt+1ifnuunt=4nuunt=0ess=essage

14、bx(三次口令錯,將退出程序!,4+16+2,退出)leareventreleasethisfrendifendif3:密碼修改表單的修改按鈕的lik事件源代碼:ifepty(thisfr.text4.value)ess=essagebx(用戶名不能為空!,48,警告)elseifepty(thisfr.text1.value)ess=essagebx(舊密碼不能為空!,48,警告)elseifepty(thisfr.text2.value)ess=essagebx(新密碼不能為空!,48,警告)elseifepty(thisfr.text3.value)ess=essagebx(重復(fù)密碼不能

15、為空!,48,警告)elseifalltri(thisfr.text2.value)alltri(thisfr.text3.value)rlen(alltri(thisfr.text2.value)len(alltri(thisfr.text3.value)ess=essagebx(二次密碼不一致!,48,警告)elselatefralltri(用戶名)=alltri(thisfr.text4.value)andalltri(密碼)=alltri(thisfr.text1.value)ifef()ess=essagebx(密碼錯誤,系統(tǒng)將取消你的修改權(quán)利!,48,警告)thisfr.relea

16、seelserepl密碼ithalltri(thisfr.text3.value)ess=essagebx(密碼修改成功!,48,信息)thisfr.releaseendif4:添加操作員表單的最首按鈕的lik事件源代碼:gtpthisfr.grid1.setfusthisfr.grid1.refresh5:添加操作員表單的上一個按鈕的lik事件源代碼:skip-1ifbf()?hr(7)=essagebx(警告,這已經(jīng)是第一條記錄!,48,信息窗口)gtpendifthisfr.grid1.setfusthisfr.grid1.refresh6:添加操作員表單的下一個按鈕的lik事件源代碼:

17、skipifef()?hr(7)=essagebx(警告,這已經(jīng)是最后一條記錄!,48,信息窗口)gbttendifthisfr.grid1.setfusthisfr.grid1.refresh7:添加操作員表單的最末按鈕的lik事件源代碼:gbttthisfr.grid1.setfusthisfr.grid1.refresh8:添加操作員表單的修改按鈕的lik事件源代碼:ifthisfr.and5.aptin=修改thisfr.text1.readnly=.f.thisfr.text2.readnly=.f.thisfr.text3.readnly=.f.thisfr.b1.readnly=

18、.f.thisfr.and5.aptin=保存thisfr.and1.enabled=.f.thisfr.and2.enabled=.f.thisfr.and3.enabled=.f.thisfr.and4.enabled=.f.thisfr.and6.enabled=.f.thisfr.and7.enabled=.f.thisfr.and8.enabled=.f.elsethisfr.and5.aptin=修改thisfr.text1.readnly=.t.thisfr.text2.readnly=.t.thisfr.text3.readnly=.t.thisfr.b1.readnly=.t

19、.thisfr.and1.enabled=.t.thisfr.and2.enabled=.t.thisfr.and3.enabled=.t.thisfr.and4.enabled=.t.thisfr.and6.enabled=.t.thisfr.and7.enabled=.t.thisfr.and8.enabled=.t.endifthisfr.grid1.setfusthisfr.grid1.refresh9:添加操作員表單的添加按鈕的lik事件源代碼:ifthisfr.and6.aptin=添加thisfr.text1.readnly=.f.thisfr.text2.readnly=.f.

20、thisfr.text3.readnly=.f.thisfr.b1.readnly=.f.thisfr.and6.aptin=保存thisfr.and1.enabled=.f.thisfr.and2.enabled=.f.thisfr.and3.enabled=.f.thisfr.and4.enabled=.f.thisfr.and5.enabled=.f.thisfr.and7.enabled=.f.thisfr.and8.enabled=.f.appeblanelsethisfr.and6.aptin=添加thisfr.text1.readnly=.t.thisfr.text2.readn

21、ly=.t.thisfr.text3.readnly=.t.thisfr.b1.readnly=.t.thisfr.and1.enabled=.t.thisfr.and2.enabled=.t.thisfr.and3.enabled=.t.thisfr.and4.enabled=.t.thisfr.and5.enabled=.t.thisfr.and7.enabled=.t.thisfr.and8.enabled=.t.endifthisfr.grid1.setfusthisfr.grid1.refresh10:添加操作員表單的刪除按鈕的lik事件源代碼:essageTitle=系統(tǒng)警告ess

22、ageText=確認(rèn)要刪除嗎?nDialgType=4+32nanser=essagebx(essageText,nDialgType,essageTitle)ifnanser=6delethisfr.grid1.setfusthisfr.grid1.refreshendif11:類basefr的pirerd的源代碼:IFTYPE(THIS.APP_EDIATR.Baselass)#RETURNENDIFIFTHIS.APP_EDIATR.PikRerdTrkn()IFTHIS.APP_EDIATR.lAddingAND!EPTY(ALIAS()THIS.REFRESH()*hekifehav

23、eblankrerdalreadyfrtxtbtnsIFGETFLDSTATE(1)#3THIS.AddRerd()ENDIFENDIFENDIF12:類basefr的queryunlad的源代碼:IFTYPE(THIS.APP_EDIATR.Baselass)#IF!THIS.Reslvenflits()NDEFAULTRETURN.F.ENDIFRETURNENDIFIFDDEFAULT()IFNTTHIS.App_ediatr.QueryUnlad()NDEFAULTRETURN.F.ENDIFELSENDEFAULTRETURN.F.ENDIF13:類basefr的release的源代

24、碼:IF!THIS.Queryunlad()NDEFAULTRETURN.F.ENDIF14:類basefr的reslvenflits的源代碼:#DEFINEPRPTTSAVE_LDatahasbeenhanged.uldyuliketsavehanges?IF!THIS.lSaveBufferedDataRETURNENDIFLALnDEursrs,aDEursrs,DataEnvRef,lPrptSave,lHadPrptLALlAlias,lnFields,nPrptSave,i,lurrentntrl*FlushurrentntrlIFTYPE(THIS.Ativentrl.basel

25、ass)=AND;PESTATUS(THIS.Ativentrl,value,5)AND;PESTATUS(THIS.Ativentrl,ntrlsure,5)AND;!EPTY(THIS.Ativentrl.ntrlsure)lurrentntrl=THIS.Ativentrl*hekifdataatuallyhangedIF!EVAL(lurrentntrl.ntrlsure)=lurrentntrl.Valuelurrentntrl.Value=lurrentntrl.ValueENDIFlurrentntrl=ENDIFnDEursrs=0DataEnvRef=DIENSINaDEursrs1DASEASETYPE(THISFR.DataEnvirnent)=nDEursrs=AEBERS(aDEursrs,THISFR.DataEnvirnent,2)DataEnvRef=THISFR.DataEnvirnentASETYPE(THISFRSET.DataEnvirnent)=nDEursrs=AEBERS(aDEursrs,THISFRSET.DataEnvirnent,2)DataEnvRef=THISFRSET.DataEnvirnentASETHIS.lUpdateAllBuffe

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論