[摘 要] 本文使用Visual Basic編程語言,開發和設計了工資管理系統。該系統實現了一般工資管理系統對員工工資信息的瀏覽、添加、刪除、修改和查詢功能,能夠完成對員工工資的結算,減少大量的人工操作的工作量,降低數據出現錯誤的概率,加強工資記錄的安全性和完整性。
[關鍵詞] 工資管理;VB;設計;開發
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2013 . 17. 013
[中圖分類號] F232 [文獻標識碼] A [文章編號] 1673 - 0194(2013)17-0026-04企業職工工資關系到每一個職工的切身利益,是保障企業穩健運行的重要環節。工資核算是所有單位財務部門最基本的業務之一,是一項重要的經常性的工作。在傳統的手工方式下,為了完成工資核算,需要財務人員花費大量的時間和精力,并且在計算過程中非常容易出錯。本文基于Visual Basic語言開發的工資管理系統采用計算機處理,保證了工資核算的準確性和及時性。
1 系統功能與可行性分析
工資管理系統的基本功能就是為企業提供工資核算和管理的有關信息,附帶提供有關職工個人檔案的基本資料,一方面,通過各種資料和計算公式得到每名職工工資數據;另一方面,通過工資分攤將工資分配到各種費用中去。
1.1 系統功能分析
為完成工資管理功能,系統應完成的主要功能包括:
1.1.1 系統管理
系統管理包括操作員管理、權限管理、安全管理等功能,這些功能主要通過操作員編碼、姓名、權限以及登錄密碼等來實現。
1.1.2 檔案管理
檔案管理包括員工信息管理和部門信息管理。應實現對員工和部門的基本信息的瀏覽、添加、刪除和修改。
1.1.3 工資管理
(1)基本工資設置:對員工的基本工資信息進行添加、刪除和修改。
(2)考勤信息統計:對員工的考勤信息進行添加、刪除和修改。
(3)工資結算:根據員工的基本工資信息和考勤信息,以及本月獎金和補助等的輸入金額,計算出員工的個人所得稅并結算出該月的工資。
(4)固定工資調整:對于企業員工的固定工資,進行統一的調整。
1.1.4 信息查詢
(1)查詢員工工資信息:按照員工編號或員工姓名,或二者組合查詢員工的工資信息。
(2)查詢部門工資信息:按照部門編號或部門名稱,或二者組合查詢工資信息。
系統功能模塊圖如圖1所示。
1.2 系統設計可行性分析
1.2.1 經濟可行性
利用VB語言開發的工資管理系統成本低,時間短,符合現代企業財務管理的利潤最大化的目標。應用工資管理系統,節省了許多人力、物力上的開支,使工資管理工作更加簡化,使其更加合理化、規范化。
1.2.2 操作可行性
系統是使用VB語言開發的,易于操作。而且系統還采用了可視化面向對象的開發工具,其窗口、界面簡潔易懂,所以系統在操作上是可行的。
1.2.3 技術可行性
從目前IT業界比較流行的數據庫開發、管理軟件來看,對于比較簡單的中小型數據庫,Visual Basic 6.0和Access 2007的結合無疑是在實際應用中較為成功的一種解決方案。為用戶提供了非常友好、操作簡單的用戶界面,完善強大的數據庫操作功能和簡潔明了的數據庫接口,所以技術應用相對容易。
2 系統詳細設計與實現
本系統的數據庫設計如下數據項和數據結構。
2.1 主要數據庫表
要進行工資系統的設計,首先設計好數據庫表,主要的數據庫表包括:用戶信息表,主要用來存儲用戶的信息;部門信息表,主要用來存儲各個部門的信息;職工信息表,主要用來存儲職工的詳細信息;職工工資明細表,主要用來存儲職工工資的詳細信息;職工工資結算表;主要用來存儲職工工資結算的詳細信息等。其中,職工工資明細表如表1所示。
2.2 系統登錄界面設計
系統登錄主要用于驗證工作人員登錄系統時的用戶名稱、密碼是否正確。系統登錄窗體運行圖如圖2所示。
2.3 系統主界面的設計
經過用戶身份驗證后,進入系統主界面,系統主界面有系統管理、檔案管理、工資管理、查詢、打印報表5個模塊。
系統主界面如圖3所示。
2.4 系統設計
系統功能主要包括系統管理、檔案管理、工資管理、查詢、打印報表,部分功能的實現如下:
2.4.1 建立員工基本工資設置窗體
添加一個普通窗體,caption屬性設置為“基本工資設置”,其窗體運行如圖4所示。
其窗體命令按鈕的增加、刪除、保存的部分代碼如下:
增加按鈕代碼:
Private Sub Command1_Click()
Adodc1.Recordset.AddNew
Text1(0).SetFocus
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = True
End Sub
刪除按鈕代碼:
Private Sub Command2_Click()
If MsgBox(\"確定刪除當前資料嗎?\", vbInformation + vbYesNo, \"刪除資料?\") = vbYes Then
Adodc1.Recordset.Delete
Adodc1.Recordset.MovePrevious
End If
End Sub
保存:
Private Sub Command4_Click()
For i = 0 To 11
If Text1(i) = \"\" Then
MsgBox \"輸入不完整!\", vbOKOnly + vbExclamation, \"警告\"
Text1(i).SetFocus
Exit Sub
End If
Next i
If MsgBox(\"確定保存當前資料嗎?\", vbInformation + vbYesNo, \"保存資料?\") = vbYes Then
Adodc1.Recordset.Update
Adodc1.Recordset.MovePrevious
End If
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = False
Command7.Enabled = True
End Sub
2.4.2 建立考勤信息統計窗體
添加一個普通窗體,Caption屬性設為“考勤信息統計”,其窗體運行如圖5所示。
考勤信息統計代碼如下:
Private Sub Form_Load()
Command1.Enabled = True
Command2.Enabled = True
Command4.Enabled = True
Command7.Enabled = True
Combo1.AddItem \"1\"
Combo1.AddItem \"2\"
Combo1.AddItem \"3\"
Combo1.AddItem \"4\"
Combo1.AddItem \"5\"
Combo1.AddItem \"6\"
Combo1.AddItem \"7\"
Combo1.AddItem \"8\"
Combo1.AddItem \"9\"
Combo1.AddItem \"10\"
Combo1.AddItem \"11\"
Combo1.AddItem \"12\"
connstr = \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=database\企業工資管理系統.mdb;Persist Security Info=False\"
conn.Open connstr
mysql = \"select * from 考勤信息表\"
End Sub
2.4.3 建立工資結算窗體
普通窗體,Caption屬性設為“工資結算”。其窗體運行圖如圖6所示。
其工資的結算的部分代碼如下:
Private Sub Command2_Click() '計算
If Text4(2) = \"\" Then
MsgBox \"請輸入獎金金額!\", vbOKOnly + vbExclamation, \"提示\"
Text4(2).SetFocus
Else
If Text4(3) = \"\" Then
MsgBox \"請輸入其他補助金額!\", vbOKOnly + vbExclamation, \"提示\"
Text4(3).SetFocus
Else
Text4(11) = Date
Dim GL As Integer
GL = Val(Year(Date) - Year(Label1(10).Caption)) '計算工齡
Label2(8).Caption = Val(Label2(11).Caption)*GL '計算工齡工資
Text4(1).Text = Val(Label2(12).Caption)*Val(Label3(10).Caption) '計算加班工資
Text4(4).Text = Val(Label2(15).Caption)*Val(Label3(11).Caption) '計算遲到扣款
Text4(5).Text = Val(Label2(13).Caption)*Val(Label3(9).Caption) '計算病假扣款
Text4(6).Text = Val(Label2(14).Caption)*Val(Label3(8).Caption) '計算事假扣款
Text4(0).Text = Val(Text4(4).Text) + Val(Text4(5).Text) + Val(Text4(6).Text) 計算考勤扣款
Dim money As Integer '應發金額
money = Val(Label2(9).Caption) + Val(Label2(10).Caption) + Val(Label2(8).Caption) _
+ Val(Text4(1).Text) + Val(Text4(2).Text) + Val(Text4(3).Text) - Val(Text4(0).Text) - Val(Text4(7).Text)
計算實發金額:
Text4(9).Text = money - Val(Text4(8).Text)
計算基本工資額,包括職務津貼、基本工資、工齡工資:
JBGZE = Val(Label2(10).Caption) + Val(Label2(9).Caption) + Val(Label2(8).Caption)
計算本月補助,包括加班工資、獎金、其他補助:
BYBZ = Val(Text4(1).Text) + Val(Text4(2).Text) + Val(Text4(3).Text)
計算其他扣款,包括違紀罰款和個人所得稅:
QTKK = Val(Text4(7).Text) + Val(Text4(0).Text)
End Sub
2.4.4 建立員工固定工資調整窗體
重點描述確定按鈕的代碼如下:
Private Sub Command1_Click()
Dim m As Integer
If Combo1.Text = \"基本工資\" Then m = 1
If Combo1.Text = \"職務津貼\" Then m = 2
If Combo1.Text = \"工齡津貼/年\" Then m = 3
If Combo1.Text = \"加班工資/天\" Then m = 4
If Combo1.Text = \"事假扣款/天\" Then m = 5
If Combo1.Text = \"病假扣款/天\" Then m = 6
If Combo1.Text = \"遲到扣款/天\" Then m = 7
If Combo1.Text = \"\" Then
MsgBox \"請選擇需調整的工資項目!\", vbOKOnly + vbExclamation, \"提示\"
Else
If Combo2.Text = \"\" Then
MsgBox \"請選擇調整的條件!\", vbOKOnly + vbExclamation, \"提示\"
Else
If Text1.Text = \"\" Then
MsgBox \"請輸入調整值!\", vbOKOnly + vbExclamation, \"提示\"
Exit Sub
End If
Adodc1.Recordset.MoveFirst
Do While Not Adodc1.Recordset.EOF
if adodc1.Recordset.Fields(\"職務\")=Combo2.Text then
Adodc1.Recordset.Fields(Combo1.Text) = Text1.Text
dodc1.Recordset.MoveNext '職工工資明細表
Loop
End If
End If
MsgBox \"修改成功!\", vbOKOnly + vbExclamation , \"信息\"
End Sub
2.4.5 建立查詢員工工資窗體
查詢員工工資窗體運行如圖7所示:
該窗體是一個職工工資查詢窗體,表示當符合某一查詢條件時所進行的查詢操作,部分代碼如下:
If flag = 1 Then Adodc2.RecordSource = \" select*from 職工工資結算表 where 員工編號=” Text1.Text \"'\"
If flag = 2 Then Adodc2.RecordSource = \" select*from 職工工資結算表 where 員工姓名=\" Text2.Text \"'\"
If flag = 3 Then Adodc2.RecordSource = \" select*from 職工工資結算表 where 員工編號=\" Text1.Text \" and 員工姓名=\" Text2.Text \"'\"
輸入查詢條件后,單擊“查詢”按鈕,顯示查詢結果,代碼(部分)如下:
以員工編號和員工姓名查詢
Adodc1.Recordset.MoveFirst
Do While Adodc1.Recordset.EOF <> True
If Text1.Text = Adodc1.Recordset.Fields(\"員工編號\").Value _
And Text2.Text = Adodc1.Recordset.Fields(\"員工姓名\").Value Then
i = 1
flag = 3
Exit Do
End If
Adodc1.Recordset.MoveNext
Loop