福清龍華職業(yè)中專學(xué)校 吳章貴
?
進銷存管理系統(tǒng)的設(shè)計與實現(xiàn)
福清龍華職業(yè)中專學(xué)校 吳章貴
進銷存管理是商業(yè)企業(yè)經(jīng)營管理中的核心環(huán)節(jié),也是一個企業(yè)能否取得效益的關(guān)鍵。如果能做到合理生產(chǎn)、及時銷售、庫存量最小,減少積壓,那么企業(yè)就能取得最佳的效益。面對一些工廠、企業(yè)對進銷存相關(guān)數(shù)據(jù)的混亂管理,利用數(shù)據(jù)庫技術(shù)來解決,必然會大大提高工廠、企業(yè)的管理效率和競爭力。
進銷存 ACCESS 信息管理系統(tǒng)
下面介紹使用ACCESS 2003開發(fā)的使用于企業(yè)的進銷存管理系統(tǒng)。
在開始設(shè)計數(shù)據(jù)庫之前,需要確定數(shù)據(jù)庫的目的以及如何使用,盡量多了解一些有關(guān)數(shù)據(jù)庫的設(shè)計要求,弄清用戶需要明確希望從數(shù)據(jù)庫得到什么信息,經(jīng)過實際的研究和分析,對目標(biāo)系統(tǒng)形成初步的說明。
目標(biāo)是一個包括訂單管理、產(chǎn)品管理等功能在內(nèi)的管理信息系統(tǒng),能及時地為企業(yè)決策層中的主要領(lǐng)導(dǎo)、業(yè)務(wù)員、質(zhì)檢員以及其他的相關(guān)人員提供有關(guān)資料。目標(biāo)系統(tǒng)必須具有可靠性、可維護性、可移植性等,定期地進行數(shù)據(jù)備份,系統(tǒng)還必須為以后整個企業(yè)的信息化提供良好的接口,以備功能擴充。
在創(chuàng)建一個數(shù)據(jù)庫之前必須明確以下幾點:
(1)數(shù)據(jù)庫必須能夠管理、生成用戶期望的信息。
(2)數(shù)據(jù)庫中不保存不必要的信息。
(3)弄清數(shù)據(jù)庫應(yīng)該為用戶所做的操作和應(yīng)解決的問題。
(4)明確用戶通過什么樣的界面來操作數(shù)據(jù)庫中的數(shù)據(jù)和輸出。
1.2.1產(chǎn)品管理子系統(tǒng)
產(chǎn)品管理子系統(tǒng)可以實現(xiàn)對各種產(chǎn)品進行管理,包括產(chǎn)品的型號、價格、供應(yīng)商等。這個子系統(tǒng)包括:產(chǎn)品輸入功能、產(chǎn)品的刪除功能、產(chǎn)品的修改功能、產(chǎn)品統(tǒng)計報表的功能。
1.2.2訂單管理子系統(tǒng)
訂單管理在產(chǎn)品管理中具有舉足輕重的作用,該子系統(tǒng)把訂單處理流程加以電子化,以提供對訂單的管理、處理和查詢,提高訂單處理的效率,通過該子系統(tǒng)可以提高管理的準(zhǔn)確性和及時性,減少操作人員的工作壓力,減少人為出錯、降低成本,從而實現(xiàn)對訂單的有效控制。子系統(tǒng)主要包括訂單輸入、訂單確認(rèn)、訂單修改、訂單刪除、訂單查詢等功能。
1.2.3出貨管理子系統(tǒng)
出貨管理子系統(tǒng)向用戶提供了發(fā)貨的時間、客戶、出貨數(shù)量、出貨價格等信息。
1.2.4進庫管理子系統(tǒng)
進庫管理子系統(tǒng)向用戶提供了進庫號、進庫數(shù)量、進庫時間和負(fù)責(zé)人等信息,包括添加進庫記錄和修改庫存等。
1.2.5庫存管理子系統(tǒng)
向用戶提供了貨物的庫存量、庫存地點等信息。
先啟動ACCESS 2003,進入ACCESS 2003的設(shè)計界面。再新建一個數(shù)據(jù)庫,數(shù)據(jù)庫文件名為“進銷存管理系統(tǒng)”。
下面分別建立所需的數(shù)據(jù)表,數(shù)據(jù)表的結(jié)構(gòu)如下:
① 產(chǎn)品表。產(chǎn)品表的邏輯結(jié)構(gòu)如下表所示。
字段名數(shù)據(jù)類型長度備注 產(chǎn)品編號產(chǎn)品名稱供應(yīng)商編號生產(chǎn)地點單價型號文本文本文本文本貨幣文本10201030缺省20 與供應(yīng)商表有關(guān)
設(shè)置“產(chǎn)品編號”為主鍵。
② 訂單表。訂單表的邏輯結(jié)構(gòu)如下表所示。
字段名數(shù)據(jù)類型長度備注 訂單號訂單日期客戶代號產(chǎn)品數(shù)量訂單金額目的地訂單業(yè)務(wù)員確認(rèn)標(biāo)識文本日期/時間文本數(shù)字貨幣文本文本是/否10缺省10缺省缺省3010缺省 與客戶表有關(guān) 記錄客戶是否對訂單確認(rèn)
設(shè)置“訂單號”為主鍵。
③ 出貨表。出貨表的邏輯結(jié)構(gòu)如下表所示。
字段名數(shù)據(jù)類型長度備注 訂單號出貨日期客戶代號產(chǎn)品編號出貨數(shù)量出貨價格目的地出貨負(fù)責(zé)人文本日期/時間文本文本數(shù)字貨幣文本文本10缺省1010缺省缺省3010 與客戶表有關(guān)
設(shè)置“訂單號”為主鍵。
④ 進庫表。進庫表的邏輯結(jié)構(gòu)如下表所示。
字段名數(shù)據(jù)類型長度備注 進庫號產(chǎn)品編號進庫數(shù)量進庫日期負(fù)責(zé)人文本文本數(shù)字日期/時間文本1010缺省缺省20
設(shè)置“進庫號”為主鍵。
⑤ 庫存表。庫存表的邏輯結(jié)構(gòu)如下表所示。
字段名數(shù)據(jù)類型長度備注 產(chǎn)品編號庫存量存放地點文本數(shù)字文本10缺省50
設(shè)置“產(chǎn)品編號”為主鍵。
這樣,初步完成了數(shù)據(jù)表的設(shè)計。
使用“進銷存管理系統(tǒng)”的用戶,要查看各方面的數(shù)據(jù),就要使用“查詢”。通過設(shè)計查詢,使用“進銷存管理系統(tǒng)”的用戶可以瀏覽全部數(shù)據(jù)或部分該用戶想查看的數(shù)據(jù)。
對應(yīng)于需要經(jīng)常輸入及更改數(shù)據(jù)的表,有必要創(chuàng)建相應(yīng)的窗體對表中的數(shù)據(jù)進行操作,下面介紹有關(guān)窗體的創(chuàng)建。
4.1.1產(chǎn)品表窗體的創(chuàng)建
結(jié)果如下圖所示。
4.1.2為產(chǎn)品表窗體加入命令按鈕
加入“添加記錄”和“查看庫存”按鈕,這樣就實現(xiàn)添加記錄和查看庫存記錄的功能了。結(jié)果如下圖所示。
4.1.3編寫代碼
“產(chǎn)品表”窗體具有“添加記錄”、“查看庫存”兩項功能,可通過編寫VBA代碼來實現(xiàn):
輸入如下代碼:
Option Compare Database
Private Sub cmdAdd_Click()
On Error GoTo Err_cmdAdd_Click
DoCmd.GoToRecord,,acNewRec
cmdMod.Enabled=True
cmdMod.SetFocus
cmdAdd.Enabled=False
Exit_cmdAdd_Click:
Exit Sub
Err_cmdAdd_Click:
MsgBox Err.Description
Resume Exit_cmdAdd_Click
End Sub
Private Sub cmdMod_click()
DoCmd.OpenReport "庫存報表", acViewPreview
End Sub
4.2.1訂單表窗體的創(chuàng)建
結(jié)果如下圖所示:
4.2.2為訂單表窗體加入命令按鈕
加入“打印訂單”按鈕,這樣就實現(xiàn)了訂單表的打印功能,結(jié)果如下圖所示。
4.2.3編寫代碼
“打印訂單”的功能由編寫VBA代碼來實現(xiàn):
輸入如下代碼:
Option Compare Database
Private Sub 命令16_Click()
On Error GoTo err_printinvoice_click
Dim strdocname As String
strdocname = "訂單表"
DoCmd.OpenReport strdocname, acViewPreview, "訂單報表"
exit_printinvoice_click:
Exit Sub
err_printinvoice_click:
Const conErrDoCmdCancelled = 2501
If (Err = conErrDoCmdCancelled) Then
Resume exit_printinvoice_click
Else
MsgBox Err.Description
Resume exit_printinvoice_click
End If
End Sub
結(jié)果如下圖所示:
4.4.1進庫表窗體的創(chuàng)建
結(jié)果如下圖所示:
4.4.2為進庫表窗體加入命令按鈕
加入“添加記錄”和“修改庫存”按鈕,這樣就實現(xiàn)添加記錄和修改庫存記錄的功能了。結(jié)果如下圖所示:
4.4.3編寫代碼
“進庫表”窗體,具有“添加記錄”和“修改庫存”的功能,可通過編寫VBA代碼來實現(xiàn):
輸入如下代碼:
Option Compare Database
Private Sub cmdAdd_Click()
On Error GoTo Err_cmdAdd_Click
DoCmd.GoToRecord , , acNewRec
cmdMod.Enabled = True
cmdMod.SetFocus
cmdAdd.Enabled = False
Exit_cmdAdd_Click:
Exit Sub
Err_cmdAdd_Click:
MsgBox Err.Description
Resume Exit_cmdAdd_Click
End Sub
Private Sub cmdMod_click()
Dim curdb As Database
Dim curRs As Recordset
Dim deviceCnt As Integer
Dim selectstring As String
Set curdb = CurrentDb
Set curRs = New Recordset
selectstring = "select * from 庫存表 where 產(chǎn)品編號='" & 產(chǎn)品編號.Value & "'"
curRs.Open selectstring, CurrentProject.Connection, , adLockPessimistic
If Not curRs.EOF Then
deviceCnt = curRs.Fields("庫存量")
deviceCnt = deviceCnt + CInt(進庫數(shù)量.Value)
curdb.Execute "update 庫存表 set 庫存量=" & deviceCnt & " where 產(chǎn)品編號='" & 產(chǎn)品編號.Value & "'"
Else
With curRs
.AddNew
.Fields("產(chǎn)品編號") = 產(chǎn)品編號.Value
.Fields("庫存量") = CInt(進庫數(shù)量.Value)
.Fields("存放地點") = "廣州"
.Update
End With
End If
cmdAdd.Enabled = True
cmdAdd.SetFocus
cmdMod.Enabled = False
End Sub
結(jié)果如下圖所示:
現(xiàn)在這個系統(tǒng)就可以進行發(fā)布了,只要把這個數(shù)據(jù)庫完全地拷貝到其他任何支持ACCESS的環(huán)境中,就可以啟動這個系統(tǒng)了。
[1] [美]Cary N.Prague,Michael R.Irwin. 林麗閩、李文義等譯. 中文版Access 2000寶典[M]. 北京: 電子工業(yè)出版社, 1999.
[2] 孫瑞新, 費昀, 孫億圳. 數(shù)據(jù)庫應(yīng)用基礎(chǔ)——Access[M]. 北京: 高等教育出版社, 2002.