中盤商進銷存范例_第1頁
中盤商進銷存范例_第2頁
中盤商進銷存范例_第3頁
中盤商進銷存范例_第4頁
中盤商進銷存范例_第5頁
已閱讀5頁,還剩16頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第七章中盤商進銷存範例關於靜態的資料處理,本書已使用不少學生成績處理及電腦擇友等範例來說明,本章將舉一簡單典型的中盤商進銷存管理系統來與讀者分享使用VB設計程式的樂趣,讀者可依此模式作為擴充程式功能的參考範例。一、題目假設國勝電器公司為電器中盤批發商,其作業方式為向廠商整批訂購電器再分批賣給零售商,試規劃其進銷存管理系統。二、系統資料庫C:vbbook2trade.mdb1. 庫存資料表 stockA. 欄位結構如下:(欄位名稱請勿使用SQL保留字,如total、sum、year及date等等,以免使用SQL指令時,出現錯誤)欄位序號欄位意義欄位名稱欄位型態欄位長度已索引 0 產品編號stno

2、 Text 4 是 1 產品名稱name Text 是 2 庫存量 qty integer 8 否 3 進價 inprice integer 否 4 賣價 outpriceinteger 否 5 規格 spc Text 10 否 6 顏色 color Text 4 否 B. 記錄資料如下:2. 進貨資料表 inputA. 欄位結構如下:欄位序號欄位意義欄位名稱欄位型態欄位長度已索引 0 交易序號serial integer 是 1 廠商編號fano Text 4 是 2 商品編號stno Text 4 是 3 交易數量num integer 否 4 交易單價price integer 否 5

3、交易日期indate date 否 B. 記錄資料如下:3. 銷貨資料表 output同進貨表格,請讀者自行發揮。4. 廠商基本資料表 factoryA. 欄位結構如下:欄位序號欄位意義欄位名稱欄位型態欄位長度已索引 0 廠商名稱faname Text 20 否 1 廠商編號fano Text 4 是 2 負責人 name Text 8 否 3 統一編號number Text 10 否 4 電話 tel Text 9 否 5 地址 add Text 30 否 B. 記錄資料如下:5. 客戶基本資料表 customer與廠商基本資料相近,請讀者自行發揮。補充說明:建立資料庫應遵守資料正規化(Da

4、tabase Normalization),資料正規化常用的規則如下:1. 去掉重覆的欄位例如:資料表input只用廠商編號(fano)與商品編號(stno),其它有關商及貨品資料因已在資料表factory及stock出現,故不可重覆出現這些欄位,若要於input得到廠商或商品資料,只要應用“關聯”即可。2. 去掉多餘的資料例如:同一個欄位不要出現在不同的資料表,以免沒有更正全部欄位而出現資料庫的不一致性。3. 不要建立可由欄位計算而得的欄位例如:不要建立交易小計(交易數量×交易單價)這樣的欄位,因為交易小計是由前面已建立的“交易數量”乘以“交易種類”而得。三、系統功能1. 交易作業

5、A. 進貨登錄列印進貨單 input.frmB. 銷貨登錄列印出貨單 (請讀者自行發揮)C. 退貨廠商 backsto.frmD. 客戶退貨2. 交易管理A. 列印進貨日報表 drpinputday.dsrB. 列印銷貨日報表C. 列印廠商進貨月報表 drpinputmon.dsrD. 列印零售商銷貨月報表3. 資料表格管理(查詢、新增、刪除)A. 廠商基本資料 factory.frmB. 客戶基本資料C. 商品基本資料 stock.frm4. 報表管理A.庫存報表 stock.rptB. 採購建議書 stockbuy.rptC. 廠商名單D.客戶名單5. 交易分析A. 商品銷售排行榜B. 廠

6、商進貨排行榜C. 顧客購買金額排行榜D. 廠商進貨交叉分析6. 結束四、表單說明1. 檔案名稱 start.frmA.說明:主功能表選擇B. 表單畫面C. 程式列印Rem startPrivate Sub Form_Load() Set db = OpenDatabase("c:vbbook2trade.mdb") MsgBox "請確認打開印表機"End SubPrivate Sub mnuanalyze_Click(Index As Integer) (a) d = "c:vbbook2ch6" Select Case Index

7、 Case 0 ' Case 1 ' Case 2 ' Case 3 rpt.ReportFileName = "c:vbbook2ch6廠商進貨交叉分析.rpt" End Select rpt.Destination = 0 rpt.Action = 1End SubPrivate Sub mnuend_Click() EndEnd SubPrivate Sub mnuexchange_Click(Index As Integer) Select Case Index Case 0 Load frminput frminput.Show Case

8、1 ' Case 2 Load frmbacksto frmbacksto.Show Case 3 ' End SelectEnd SubPrivate Sub mnupaper_Click(Index As Integer) d = "c:vbbook2ch6" Select Case Index Case 0 rpt.ReportFileName = d & "stockday.rpt" (b) Case 1 ' Case 2 rpt.ReportFileName = d & "stockmon.rp

9、t" Case 3 ' End Select rpt.Destination = 0 rpt.Action = 1End SubPrivate Sub mnustock_Click(Index As Integer) d = "c:Vbbook2Ch6" Select Case Index Case 0 rpt.ReportFileName = d & "stock.rpt" Case 1 rpt.ReportFileName = d & "stockbuy.rpt" Case 2 ' Cas

10、e 3 ' End Select rpt.Destination = 0 rpt.Action = 1End SubPrivate Sub mnutable_Click(Index As Integer) Select Case Index Case 0 Load frmfactory frmfactory.Show Case 1 ' Case 2 Load frmstock frmstock.Show End SelectEnd Sub程式說明(a) 功能表物件,請參考拙著Visual Basic範例入門。(b) 報表物件,請參考5-9。2. frminput 檔案名稱inp

11、ut.frmA. 說明:處理廠商進貨作業,並列印進貨單。B.表單畫面,如下圖。C. 執行畫面,如圖右。D.操作說明a. 於雙併盒點選廠商名稱。b. 於商品列表盒點選商品。c. 於數量列表盒點選數量(品名、數量及小計自動出現)。d. 於輸出列表盒按一下可刪除該筆記錄。e. 於印表按鈕按一下可列印進貨單。E. 輸出結果春德 0003 -進貨單-品 名 編號 單價 數量 小計電冰箱 B001 13000 3 39000電視機 A001 20000 2 40000總計 79000國勝電氣有限公司 簽收_02-25-1999F. 程式列印Rem inputDim source As StringDim

12、recfactory As RecordsetDim recstock As RecordsetDim recinput As RecordsetPrivate Sub cmdexit_Click() Unload frminput frmstart.ShowEnd SubPrivate Sub cmdprint_Click() Printer.Scale (0, 0)-(80, 80) Printer.FontSize = 16 Printer.CurrentX = 14 Printer.Print cbo.Text & " -進 貨 單-" Printer.Pr

13、int Printer.FontSize = 12 Printer.CurrentX = 10 Printer.Print " 品 名 編 號 單 價 數 量 小 計 " Printer.CurrentX = 10 Printer.Print "-" Sum = 0 For i = 0 To lstout.ListCount - 1 Printer.CurrentX = 10 Printer.Print lstout.List(i) Sum = Sum + Val(Right$(lstout.List(i), 10) (a) Next i Printer

14、.CurrentX = 10 Printer.Print "-" Printer.CurrentX = 10 Printer.Print "總計" & Space$(64 - Len(Str$(Sum) & Str$(Sum) (b) Printer.Print Printer.CurrentX = 10 Printer.Print "國勝電氣有限公司 簽收人 _ " & Date$ Printer.EndDoc Set recinput = db.OpenRecordset("input"

15、) recinput.MoveLast ser = recinput(0) For i = 0 To lstout.ListCount - 1 (c) recinput.AddNew recinput(0) = ser + 1 + i recinput(1) = Mid$(cbo.Text, 11, 4) recinput(2) = Mid$(lstout.List(i), 11, 4) recinput(3) = Val(Mid$(lstout.List(i), 31, 10) recinput(4) = Val(Mid$(lstout.List(i), 21, 10) recinput(5

16、) = Date$ recinput.Update s2 = "select qty from stock where stno='" & recinput(2) & "'" Set recstock = db.OpenRecordset(s2) recstock.Edit (d) newqty = recstock(0) + recinput(3) recstock(0) = newqty recstock.Update recstock.Close Next i recinput.Close lstout.ClearE

17、nd SubPrivate Sub Form_Load() s1 = "select * from factory" Set recfactory = db.OpenRecordset(s1) Do Until recfactory.EOF (e) cbo.AddItem recfactory(0) & Space$(10 - Len(recfactory(0) & recfactory(1) & Space$(10 - Len(recfactory(1) recfactory.MoveNext Loop recfactory.Close s2 =

18、"select * from stock" Set recstock = db.OpenRecordset(s2) Do Until recstock.EOF (f) lststno.AddItem recstock(1) & Space$(10 - Len(recstock(1) & recstock(0) & Space$(10 - Len(recstock(0) & recstock(3) & Space$(10 - Len(Str$(recstock(3) recstock.MoveNext Loop recstock.Clo

19、se For i = 1 To 20 lstnum.AddItem i (g) Next iEnd SubPrivate Sub lstnum_Click() (h) num = lstnum.Textlstout.AddItem source & Space$(10 - Len(Str$(num) & Str$(num) & Space$(10 - Len(Str$(num * Val(Right$(source, 10) & Str$(num * Val(Right$(source, 10)End SubPrivate Sub lstout_Click()

20、lstout.RemoveItem lstout.ListIndex (i)End SubPrivate Sub lststno_Click() source = lststno.TextEnd SubG. 程式說明(a) sum用來累加小計的和。(b) 處理數字對齊。(c) 將列表盒內的交易明細逐項儲存於交易資料表格input。(d) 至庫存資料表stock加入進貨數量。(e) 將廠商名稱及編號加至列表盒,提供使用者點選。(f) 將商品名稱、編號及單價加至列表盒,提供使用者點選。(g) 將數量加至列表盒,提供使用者點選。(h) 使用者依序點選商品名稱及數量後,將商品名稱、編號、單價、數量及單

21、價乘以數量之和加至輸出列表盒,請參考拙著Visual Basic 6.0程式設計實務與應用範例3-17。(i) 將使用者所點選輸出列表盒資料刪除,請參考拙著Visual Basic 6.0程式設計與實務應用範例3-17。3. frmbacksto 檔案名稱 backsto.frmA. 說明:將不良品退還給供應廠商。B. 表單畫面,如下圖左。C. 執行畫面,如下圖。D. 程式列印:Rec backstoDim recinput As RecordsetDim recstock As RecordsetPrivate Sub cbo_Change() filldataEnd SubPrivate

22、Sub cbo_Click() filldataEnd SubPrivate Sub cmdedit_Click() '修正進貨資料表 input If txt.Text = Null Then txt.Text = 0 End If newqty = recinput(3) - txt.Text recinput.Edit recinput(3) = newqty recinput.Update '修正存貨資料表 stock Set recstock = db.OpenRecordset("stock") recstock.Index = "st

23、no" recstock.Seek "=", recinput(2) newqty = recstock(2) - txt.Text recstock.Edit recstock(2) = newqty recstock.Update txt.Text = ""End SubPrivate Sub cmdend_Click() Unload frmbacksto frmstart.ShowEnd SubPrivate Sub filldata() recinput.Index = "serial" recinput.Seek

24、 "=", cbo.Text For i = 1 To 5 lbl(i) = recinput(i) Next iEnd SubPrivate Sub Form_Load() Set recinput = db.OpenRecordset("input") Do Until recinput.EOF cbo.AddItem recinput(0) recinput.MoveNext LoopEnd Sub4. frmfactory 檔案名稱 factory.frmA. 說明:處理廠商基本資料增加、更正及刪除。B. 表單畫面,如下圖左。C. 執行畫面,如下

25、圖右。D. 程式列印:與範例3-7-3C相近,請自行參考學習磁片factory.frm。5. frmstock 檔案名稱 stockA. 說明:處理商品基本資料的增加、更正及刪除。B. 表單畫面,如下圖左。C. 執行畫面:D. 程式列印:請自行參考學習磁片。6. trade.vbp專案檔Trade.vbp成員如下圖左,DataEnvironment設計師如下圖右。7. module1.bas模組檔 module1.bas列印如下:Rem module1.basGlobal db As database五、報表檔 1. drpinputday.dsrA. 說明:列印進貨日報表,使用DataEnv

26、ironment設計師的cominputday指令。B. 編輯畫面:C. cominputday設定如下圖。D. 檔案聯結方式如下(上圖按一下“建立SQL陳述式”)。a.交易資料表(input)的廠商編號(fano)連結廠商資料表(factory),如此可由廠商資料表的廠商編號(fano)查得廠商名稱(faname)。b. 同理交易資料表(input)使用商品編號(stno)至庫存資料表(stock)查得商品名稱(name)。c. 上圖執行結果如下(按一下快顯功能表“執行”)。E. 輸出結果:2. stockmon.rptA. 說明:列印廠商進貨月報表,以廠商為分群條件作為付帳依據。B.編輯畫

27、面:C.以“廠商名稱(faname)”分群如下(使用cominputmon指令)。D. 聯結方式:同stockday.rpt。E. SQL陳述式如下圖左,“分組”設定如下圖右。F. 輸出結果:3. stock.rptA. 說明:列印商品庫存基本資料。B. 編輯畫面:C. 使用comstock如下圖。E. 輸出結果:範例7B設某人銀行存款結餘如下,若年息2%,試計算至6/20/97的利息為何。日 期結 餘1/2/97 30000 3/22/97 60000 5/18/97 50000 執行結果程式列印Rem 7BDim a(10, 2)Const rate = 2Const n = 3Const

28、 date1 = #6/20/97#Private Sub cmd_Click() a(n + 1, 1) = date1 For i = 1 To n k = DateDiff("d", a(i, 1), a(i + 1, 1) Debug.Print k 'k 為2個日期之間的日數 Sum = Sum + k * rate * 0.01 / 365 * a(i, 2) '將年利率化為日利率*每日結餘 Next i txt.Text = Int(Sum)End SubPrivate Sub Form_Load() a(1, 1) = #1/2/97#: a(1, 2) = 30000 a(2, 1) = #3/22/97#: a(2,

溫馨提示

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

評論

0/150

提交評論