【正文】
致謝非常感謝我的導(dǎo)師 給我的悉心關(guān)懷,讓我順利地完成了畢業(yè)論文,當(dāng)然,也感謝母校辛勤培育之恩,各位領(lǐng)導(dǎo)、老師和同學(xué)的大力幫助之情,使我學(xué)到了許多新的。同學(xué)們之間的交流也十分重要,交流就是進(jìn)步,有時進(jìn)會帶你走入一種柳暗花明的欣喜境界。由此我就想到了在做這個系統(tǒng)時,有的同學(xué)用了ACCESS ,有的同學(xué)用了SQL 等來建不同的數(shù)據(jù)庫,這樣就導(dǎo)致有的是系統(tǒng)自帶的代碼,而有的則是我們寫進(jìn)去的純代碼,當(dāng)然也就出現(xiàn)了各種各樣的問題。我們要在以后的實(shí)踐中去檢驗它的可用性,特別要考慮它的實(shí)時性和安全性,這才是我們最值得考慮的問題??偨Y(jié)經(jīng)過兩個多月的畢業(yè)設(shè)計,一個完整的倉庫管理系統(tǒng)終于設(shè)計完成了,但也正在這時我真正意識到所學(xué)知識的不足,可以說關(guān)于這方面的接觸才剛剛開始,深有感觸,無以言表。同時也可以換用戶登錄,但此時會重新啟動數(shù)據(jù)庫。 用戶管理對登陸用戶的管理,可以修改用戶名,操作權(quán)限,新增,刪除用戶等。每天首次運(yùn)行會自動備份,這個功能可以還原到自動備份的數(shù)據(jù)庫,這樣就可以還原到昨天數(shù)據(jù)庫。 還原數(shù)據(jù)庫和還原到昨天數(shù)據(jù)庫 備份數(shù)據(jù)庫至文件(加密)。 圖614數(shù)據(jù)清除窗體界面 系統(tǒng)初始化將數(shù)據(jù)庫置空,只保留一個擁有所有操作權(quán)限,密碼為空的用戶admin。對于系統(tǒng)產(chǎn)生的無用數(shù)據(jù)可以刪除。它的界面設(shè)計如圖613。 查看日志查看職員的操作日志,可以清楚地知道職員在工作中對倉庫進(jìn)行了哪些管理??梢赃M(jìn)行職員的信息管理,增加,刪除,修改等。 圖612 打印月盤點(diǎn)窗體 維護(hù)設(shè)置模塊設(shè)計 維護(hù)設(shè)置模塊是為了倉庫管理系統(tǒng)的穩(wěn)定性和安全性而設(shè)計的,它完成的主要功能有: ●公司和職員信息 ●查看日志 ●數(shù)據(jù)清除 ●系統(tǒng)初始化 ●備份數(shù)據(jù)庫 ●還原數(shù)據(jù)庫(包括還原到昨天數(shù)據(jù)庫) ●用戶管理 公司和職員信息611打印入庫單窗體 創(chuàng)建打印月盤點(diǎn)窗體 它的界面設(shè)計如圖612所示。在圖611中選擇了某一入庫單之后,點(diǎn)擊“打印入庫單”按鈕,會進(jìn)入入庫單打印界面,它和新增入庫單是同一界面,也即圖64。界面設(shè)計如圖610所示。它的界面設(shè)計如圖69所示。它的界面設(shè)計如圖68所示。圖67 單據(jù)查詢 創(chuàng)建庫存查詢窗體 圖66月盤點(diǎn)窗體 查詢統(tǒng)計模塊設(shè)計查詢統(tǒng)計模塊主要完成的功能有:●單據(jù)查詢●庫存查詢●貨物出入統(tǒng)計●職員操作統(tǒng)計 創(chuàng)建單據(jù)查詢窗體單據(jù)的查詢,支持模糊查詢。它對于企業(yè)的管理者和決策者非常重要。另外,還有出庫單、借入單、借出單、調(diào)撥單、報損單的新增和管理,由于它們和入庫類似,這里不再一一列出。雖然退出,但入庫所有的其它金額依然存在。圖64 新增入庫單窗體 創(chuàng)建入庫單管理窗體入庫單的管理對于企業(yè)倉庫管理尤為重要,它的界面設(shè)計如圖65所示。保存完后可以打印,當(dāng)然也可以以后再打印,入庫貨物數(shù)量要按庫存最高限量確定。其它金額和備注由用戶選擇。在新增入庫單窗體中貨物編號、供應(yīng)商、倉庫、經(jīng)辦人均可通過單擊相關(guān)的數(shù)據(jù)框來選擇,數(shù)據(jù)選擇框會進(jìn)行動態(tài)智能化統(tǒng)計信息,使選擇更方便。圖63庫存狀況信息窗體由于篇幅有限,供應(yīng)商信息窗體和窗客戶信息窗體這里叢略。圖62 倉庫信息窗體 創(chuàng)建庫存狀況信息窗體通過限定倉庫查看倉庫庫存狀況,可以清楚地知道企業(yè)各個倉庫的庫存情況。它同時規(guī)定:新增倉庫不能同名,通過更換保管員按鈕來更換保管員,不能直接進(jìn)行編輯倉庫名稱、地點(diǎn),備注可以直接編。它的界面設(shè)計如圖61所示。圖56主窗體的狀態(tài)欄在主窗體中為狀態(tài)欄添加的代碼如下:Private Sub Timer1_Timer() If Len((1).Text) (1).width / 80 Then (1).Text = + (1).Text Else (1).Text = LTrim((1).Text) End If End Sub6 系統(tǒng)模塊設(shè)計 基本信息模塊設(shè)計基本信息模塊主要包括:●貨物信息●倉庫信息●供應(yīng)商信息●往來客戶信息●庫存狀況信息 創(chuàng)建貨物信息窗體貨物信息窗體可以進(jìn)行貨物管理,如:增加貨物類別、貨物種類,對貨物基本信息可以進(jìn)行編輯。狀態(tài)欄的添加比較簡單,這里不再詳細(xì)說明。圖54 工具欄屬性對話框通過以上步驟,創(chuàng)建的主窗體工具欄如圖55所示。若“圖像”輸入框設(shè)為1,即ImageList控件的第一個圖形作為按鈕1的圖形。單擊,單擊“插入”按鈕后,“索引”文本框中出現(xiàn)數(shù)字1,其它輸入框也變?yōu)榭捎谩A硗膺x定了圖形列表控件后,ButtonHeight和ButtonWidth屬性值,由圖形的大小決定,用戶不要改變其設(shè)置。這樣ImageList控件就和“工具欄”控件發(fā)生了聯(lián)系。彈出如圖54所示的“屬性頁”對話框。 設(shè)置工具欄屬性 向窗體添加工具欄控件后,然后按下列步驟操作:(1)設(shè)置Align屬性值為1,即工具攔放在窗體的頂部。2 工具欄控件常用事件 工具欄控件常用事件主要有ButtonClick和Click兩個。Wrappable:設(shè)置如果窗口尺寸發(fā)生變化,是否自動包括本控件按鈕。ToolTipText:設(shè)置鼠標(biāo)指針在工具欄某一按鈕暫停時所顯示的提示文本。該屬性被設(shè)置后,可以向工具欄按鈕中添加圖形。 Align:讀出或設(shè)置對象在窗體中的顯示位置,它有5個值可供選擇,用來設(shè)置工具欄放置在窗體的上部、下部、左邊或右邊等。下面首先簡要介紹工具欄控件的常用屬性和事件。Private Sub M職員信息_Click() vbModalEnd Sub 創(chuàng)建主窗體工具欄同樣,熟悉Windows下應(yīng)用程序的用戶對工具欄也一定有比較深的印象。點(diǎn)擊“職員操作統(tǒng)計”會彈出職員操作統(tǒng)計窗口。點(diǎn)擊“進(jìn)行月盤點(diǎn)”會彈出月盤點(diǎn)窗口。點(diǎn)擊“新增入庫單”會彈出新增入庫單窗口。點(diǎn)擊“新增借入單”會彈出新增借入單窗口。點(diǎn)擊“新增借出單”會彈出新增借出單窗口。點(diǎn)擊“新增調(diào)撥單”會彈出新增調(diào)撥單窗口。點(diǎn)擊“新增出庫單”會彈出新增報損單窗口。點(diǎn)擊“新增報損單”會彈出新增報損單窗口。增加一個管理員admin = select * from 用戶管理 (用戶名) = admin (用戶密碼) = (用戶權(quán)限) = 131071 39。刪除系統(tǒng)日志 = select * from 系統(tǒng)日志 DeleteRecordData 39。刪除職員信息 = select * from 職員信息 DeleteRecordData 39。刪除貨物類別 = select * from 貨物類別 DeleteRecordData 39。刪除供應(yīng)商 = select * from 供應(yīng)商 DeleteRecordData 39。刪除盤點(diǎn)單 = select * from 盤點(diǎn)單 DeleteRecordData 39。刪除報損單 = select * from 報損單 DeleteRecordData 39。刪除借出單 = select * from 借出單 DeleteRecordData 39。刪除出庫單 = select * from 出庫單 DeleteRecordData 39。Private Sub M系統(tǒng)初始化_Click() If MsgBox(這將刪除您所有的數(shù)據(jù)信息,整個數(shù)據(jù)庫將全部清空,您確信要系統(tǒng)初始化嗎?, vbYesNo Or vbExclamation) = vbNo Then Exit Sub On Error Resume Next 39。Private Sub M往來客戶_Click() vbModalEnd Sub “維護(hù)設(shè)置”菜單下的“系統(tǒng)初始化”子菜單的Click事件的程序代碼如下。Private Sub M數(shù)據(jù)清除_Click() vbModalEnd Sub “基本信息”菜單下的“往來客戶信息”子菜單的Click事件的程序代碼如下。Private Sub M入庫單_Click() vbModalEnd Sub“維護(hù)設(shè)置”菜單下的“數(shù)據(jù)清除”子菜單的Click事件的程序代碼如下。Private Sub M庫存狀況_Click() vbModalEnd Sub “單據(jù)中心”菜單下的“入庫單管理”子菜單的Click事件的程序代碼如下。Private Sub M庫存查詢_Click() vbModalEnd Sub“基本信息”菜單下的“庫存狀況信息”子菜單的Click事件的程序代碼如下。Private Sub M借入單_Click() vbModalEnd Sub“查詢統(tǒng)計”菜單下的“庫存查詢”子菜單的Click事件的程序代碼如下。點(diǎn)擊“借出單管理”會彈出借出單管理窗口Private Sub M借出單_Click() vbModalEnd Sub“單據(jù)中心”菜單下的“借入單管理”子菜單的Click事件的程序代碼如下。點(diǎn)擊“貨物出入統(tǒng)計”會彈貨物出入統(tǒng)計窗口Private Sub M貨物出入統(tǒng)計_Click() vbModalEnd Sub “基本信息”菜單下的“貨物信息”子菜單的Click事件的程序代碼如下。登錄失敗,退出應(yīng)用程序 End If Unload fLoginUnload Me 39。Private Sub M換用戶登陸_Click() 39。Private Sub M供應(yīng)商_Click() vbModalEnd Sub “維護(hù)設(shè)置”菜單下的“換用戶登錄”子菜單的Click事件的程序代碼如下。Private Sub M公司信息_Click() vbModalEnd Sub “基本信息”菜單下的“供應(yīng)商信息”子菜單的Click事件的程序代碼如下。Private Sub M調(diào)拔單_Click() vbModalEnd Sub“維護(hù)設(shè)置”菜單下的“公司信息”子菜單的Click事件的程序代碼發(fā)如下。Private Sub M單據(jù)查詢_Click() vbModalEnd Sub“單據(jù)中心”菜單下的“調(diào)撥單管理”子菜單的Click事件的程序代碼如下。Private Sub M出庫單_Click() vbModalEnd Sub “查詢統(tǒng)計”菜單下的“單據(jù)查詢”子菜單的Click事件的程序代碼如下。Private Sub M倉庫信息_Click() vbModalEnd Sub “單據(jù)中心”菜單下的“出庫單管理”子菜單的Click事件的程序代碼如下。初始化還原后的信息 MsgBox 還原成功! Elsefailure: MsgBox 還原失敗! End If End WithEnd Sub“基本信息”菜單下的“倉庫信息”子菜單的Click事件的程序代碼如下。點(diǎn)擊“還原數(shù)據(jù)”系統(tǒng)會還原你想還原的數(shù)據(jù)庫。Private Sub M還原到昨天數(shù)據(jù)庫_Click() On Error GoTo failure If MsgBox(還原數(shù)據(jù)庫將導(dǎo)致現(xiàn)在數(shù)據(jù)庫數(shù)據(jù)丟失,您確信要還原數(shù)據(jù)庫嗎?, vbYesNo Or vbQuestion) = vbNo Then Exit Sub If ResumeData(DataPath, + \) = 1 Then InitAfterResume 39。Private Sub M打印月盤點(diǎn)_Click() vbModalEnd Sub “維護(hù)設(shè)置”菜單下的“還原到昨天數(shù)據(jù)庫”子菜單的Click事件的程序代碼如下。Private Sub M打印入庫單_Click() Dim f As New 入庫單 = = = False = False = False vbModalUnload fEnd Sub“打印報表”菜單下的“打印月盤點(diǎn)”子菜單的Click事件的程序代碼如下。Private Sub M打印借入單_Click() Dim f As New 借入單 = = = False = False = False vbModal Unload f End Sub“打印報表”菜單下的“打印入庫單”子菜單的Click事件的程序代碼如下。Private Sub M打印借出單_Click() Dim f As New 借出單 = = = False = False = False