企業(yè)工資管理系統(tǒng)(下)_第1頁
企業(yè)工資管理系統(tǒng)(下)_第2頁
企業(yè)工資管理系統(tǒng)(下)_第3頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

企業(yè)工資管理系統(tǒng)(下)

選擇“工資信息設(shè)置”—>“基本工資設(shè)置”菜單設(shè)置員工的基本工資,可以根據(jù)員工的編號,或者根據(jù)員工職務(wù)設(shè)置基本工資,設(shè)置的基本工資為每個小時的工資。Setrs=getrs(sql,"salary")Ifrs.EOF=FalseThensql="deletefromsalarysettingwherestuffid='"&Mstuffid.Text&"'"Calltransactsql(sql,"salary")EndIfrs.Closeid=Mstuffid.TextCalladdrecordMsgBox"已經(jīng)設(shè)置基本工資",vbOKOnly+vbExclamation,"添加結(jié)果"Callinitsql="select*fromsalarysetting"Callfrmresult.basictopicCallfrmresult.showbasic(sql)frmresult.Showfrmresult.ZOrder0Me.ZOrder0選擇“工資信息設(shè)置”—>“其他項目設(shè)置”菜單,在其他項目設(shè)置的窗體中,設(shè)置員工當(dāng)月的獎金、津貼、福利等項目。sql="select*fromsalaryother"Ifichangeflag=1ThenCalladdMsgBox"已經(jīng)添加記錄",vbOKOnly+vbExclamation,"提示"Callfrmresult.othertopicCallfrmresult.showother(sql)frmresult.ShowUnloadMeElseIfMe.optionbonus.Value=TrueThenitype=1ElseIfMe.optionallowance.Value=TrueThenitype=2ElseIfMe.optionwelfare.Value=TrueThenitype=3ElseIfMe.optionabatement.Value=TrueThenitype=4ElseIfMe.optionothers.Value=TrueThenitype=5resumdate=recordtimesql="deletefromsalaryotherwherestuffid='"&Mid.Textsql=sql&"'andYearMonth=#"&recordtime&"#and"sql=sql&"Type="&itypeCalltransactsql(sql,"Salary")CalladdCallfrmsumsalary.resumsalary(resumdate)sql="select*fromsalaryother"Callfrmresult.othertopicCallfrmresult.showother(sql)frmresult.ShowUnloadMeEndIf選擇“工資信息設(shè)置”—>“工資計算公式設(shè)置”菜單,在這個計算公式窗體中設(shè)置員工實際發(fā)放工資的計算公式。IfMe.textovertimecom=""AndIsNumeric(Me.textovertimecom)=TrueThenMsgBox"請輸入正常加班工資百分比",vbOKOnly+vbExclamation,"提示"Me.textovertimecom=""Me.textovertimecom.SetFocusElseIfMe.textovertimespe=""AndIsNumeric(Me.textovertimespe)=FalseThenMsgBox"請輸入特殊加班工資百分比",vbOKOnly+vbExclamation,"提示"Me.textovertimespe=""Me.textovertimespe.SetFocusElseIfMe.texterrand=""AndIsNumeric(Me.texterrand)=FalseThenMsgBox"請輸入出差工資",vbOKOnly+vbExclamation,"提示"Me.texterrand=""Me.texterrand.SetFocusElseIfMe.textabsent=""AndIsNumeric(Me.textabsent)=FalseThenMsgBox"請輸入曠工扣發(fā)工資",vbOKOnly+vbExclamation,"提示"Me.textabsent=""Me.textabsent.SetFocusElseIfMe.textle=""AndIsNumeric(Me.textle)=FalseThenMsgBox"請輸入遲到早退扣發(fā)工資",vbOKOnly+vbExclamation,"提示"Me.textle=""Me.textle.SetFocusElseCallsetvalueCallinitEndIf選擇“工資信息管理”—>“出勤統(tǒng)計”菜單,在統(tǒng)計出勤記錄窗體中選擇需要統(tǒng)計記錄的月份。firstday=Year(Date)&"-"&Mmonth.Text&"-1"days=DateDiff("d",Year(Date)&"-"&Mmonth.Text&"-1",_Year(Date)&"-"&Mmonth.Text+1&"-1")lastday=Year(Date)&"-"&Mmonth.Text&"-"&dayssql="select*fromattendancestatisticswhererecordmonthbetween#"sql=sql&firstday&"#and#"&lastday&"#"Setrsrecord=getrs(sql,"salary")Ifrsrecord.EOF=FalseThenMsgBox"已經(jīng)統(tǒng)計",vbOKOnly+vbExclamation,"提示"frmaresult.Showfrmaresult.ZOrder0rsrecord.CloseUnloadMeExitSubEndIfsql="select*fromattendanceinfowhereadatebetween#"sql=sql&firstday&"#and#"&lastday&"#"Setrsrecord=getrs(sql,"person")Ifrsrecord.EOF=FalseThensql="selectsid,snamefromstuffinfoorderbysid"Setrsperson=getrs(sql,"person")選擇月份后單擊“確定”按鈕,如果系統(tǒng)已經(jīng)統(tǒng)計過該月份的記錄,那么會出現(xiàn)如下圖所示的統(tǒng)計結(jié)果信息列表。如果系統(tǒng)沒有統(tǒng)計過,那么系統(tǒng)就會開始統(tǒng)計記錄,然后顯示如圖所示的統(tǒng)計結(jié)果信息列表。Ifstrusername<>"admin"Thensql="selectsidfromstuffinfowheresname='"&strusername&"'"Setrs=getrs(sql,"salary")sd=rs(0)sql="select*fromattendancestatisticswherestuffid='"&sd&"'"Me.Adodc1.ConnectionString="provider=microsoft.jet.oledb.4.0;Datasource="&App.Path&"salary.mdb"Me.Adodc1.RecordSource=sqlMe.Adodc1.RefreshSetMe.DataGrid1.DataSource=Me.Adodc1.RecordsetMe.DataGrid1.RefreshElsesql="select*fromattendancestatistics"Me.Adodc1.ConnectionString="provider=microsoft.jet.oledb.4.0;Datasource="&App.Path&"salary.mdb"Me.Adodc1.RecordSource=sqlMe.Adodc1.RefreshSetMe.DataGrid1.DataSource=Me.Adodc1.RecordsetMe.DataGrid1.RefreshEndIf選擇“工資信息管理”—>“計算實發(fā)工資”菜單,在這個窗體中選擇需要統(tǒng)計的月份。選擇統(tǒng)計月份后,單擊“開始統(tǒng)計”按鈕,系統(tǒng)如果已經(jīng)統(tǒng)計了該月份的工資,系統(tǒng)會顯示工資信息列表窗體。如果系統(tǒng)還沒有統(tǒng)計工資,那么系統(tǒng)開始統(tǒng)計工資,然后在信息結(jié)果列表窗體中顯示統(tǒng)計結(jié)果。IfMmonth.Text=4Thenfirstday=Year(Date)&"-"&Mmonth.Text&"-1"days=DateDiff("d",Year(Date)&"-"&Mmonth.Text&"-1",_Year(Date)&"-"&Mmonth.Text+1&"-1")lastday=Year(Date)&"-"&Mmonth.Text&"-"&daysCallsumsalary(firstday,lastday)sql="select*fromsalarystatistics"frmresult.SSTab1.Caption="員工工資統(tǒng)計列表"Callfrmresult.listtopicCallfrmresult.showdata(sql)frmresult.Caption="統(tǒng)計結(jié)果列表"frmresult.ZOrder0UnloadMeElseMsgBox"這個月的工資未統(tǒng)計",vbOKOnly+vbExclamation,"提示"EndIf選擇“工資信息管理”—>“查詢工資”菜單,系統(tǒng)顯示如圖的查詢信息窗體,系統(tǒng)默認(rèn)的是查詢出數(shù)據(jù)庫中所有的記錄(當(dāng)管理員進(jìn)入的時候),當(dāng)從“員工編號”下拉列表中選擇一個員工編號后,單擊“查詢單人”按鈕,就會查詢出符合這個員工編號的記錄;如果需要返回查詢所有信息,單擊“查詢所有”按鈕,系統(tǒng)就會返回所有員工的信息。在“員工工資統(tǒng)計列表”中單擊鼠標(biāo)右鍵,會彈出下圖的菜單,在“員工其他項目列表”中單擊鼠標(biāo)右鍵也會出現(xiàn)下圖的菜單。如果要選擇“刪除基本工資設(shè)置”,出現(xiàn)如下的提示:具體的操作這里就不詳細(xì)介紹。選擇“工資信息管理”—>“導(dǎo)出工資表”菜單,會出現(xiàn)下圖的“導(dǎo)出記錄”窗體中選擇需要導(dǎo)出工資的月份。選擇月份和保存位置后,單擊“導(dǎo)出”按鈕,系統(tǒng)會開始導(dǎo)出數(shù)據(jù)。單擊“確定”按鈕打開導(dǎo)出的文件,單擊“取消”按鈕回到系統(tǒng)。導(dǎo)出的工資記錄3.4各項子模塊編寫要點在登錄的這個窗體里,我做的特點是:只要在數(shù)據(jù)庫里有用戶信息的,都可以登錄,然后顯示相關(guān)自己的信息,而管理員顯示所有的信息。當(dāng)輸入的用戶名或密碼不正確的時候,會出現(xiàn)如下的對話框:或者在主窗體的設(shè)計中,我在系統(tǒng)的下拉菜單里包括有添加用戶、修改密碼和退出系統(tǒng)。在這個模塊里普通用戶只有修改自己的密碼的權(quán)利。在添加用戶的窗體里:添加3個標(biāo)簽、3個文本框和2個命令按鈕,然后設(shè)置它們相關(guān)的屬性。在修改密碼的窗體里:添加了3個標(biāo)簽,用來顯示信息;3個文本框用來輸入用戶名稱和用戶密碼;2個按鈕用來確定和取消操作,然后設(shè)置它們的屬性。在工資信息設(shè)置的下拉菜單里包括有基本工資信息設(shè)置、其他項目信息設(shè)置和計算公式設(shè)置。在這個模塊里,普通用戶沒有任何權(quán)利進(jìn)行相關(guān)的操作。在基本工資窗體里:添加了2個選項按鈕、2個下拉列表、2個標(biāo)簽、1個文本框和2個按鈕,然后設(shè)置它們的屬性。在其他項目設(shè)置的窗體里:使用了一個DTPicker控件獲得添加記錄的時間,要使用這個控件需要添加部件類庫,選擇“工程—>部件”命令,選擇MicrosoftWindowsCommonControls-26.0(sp4)項,然后設(shè)置相關(guān)的屬性。在工資信息管理的下拉菜單里包括有統(tǒng)計出勤信息、計算實發(fā)工資、查詢工資和導(dǎo)出工資表。在這個模塊里,普通用戶有統(tǒng)計出勤信息和查詢工資的權(quán)利,但是都顯示的是自己的信息。在出勤統(tǒng)計窗體里:添加一個下拉列表、一個標(biāo)簽和2個命令按鈕,然后設(shè)置相關(guān)的屬性。在出勤結(jié)果信息列表的窗體里:使用了Adodc控件和DataGrid控件,控件的Visible屬性一定要設(shè)置為False。在計算實發(fā)工資窗體里添加的控件和統(tǒng)計出勤記錄窗體的控件相同。在工資統(tǒng)計列表窗體里:使用了SSTab控件,在每一個標(biāo)簽上添加一個MSFlexGrid控件,然后設(shè)置它們的屬性。在導(dǎo)出工資表的窗體中使用了CommondDialog控件,要使用這個控件需要在“控件”窗體中,選擇MicrosoftCommonDialogControl6.0(sp3)項,同時因為數(shù)據(jù)表格是導(dǎo)出到Excel,所以需要添加引用。選擇“工程—>引用”菜單,在“引用”窗體中選擇MicrosoftExcel9.0ObjectLibrary項,這樣才能夠成功導(dǎo)入到Excel。在這個窗體里,我做的特點是:權(quán)利分工明確。當(dāng)管理員進(jìn)入的時候他有所有的權(quán)利,單擊哪個模塊就會彈出相對應(yīng)的窗體。而普通用戶則不能,我把它進(jìn)行了權(quán)限設(shè)置,會彈出權(quán)限的對話框。在添加用戶的窗體里,如果輸入的用戶密碼和確認(rèn)密碼不一致,將出現(xiàn)一個警告對話框:然后輸入與用戶密碼相同的密碼,我這里的密碼都是以*的形式表達(dá),是不可見的。添加的用戶將保存在數(shù)據(jù)庫的userinfo里。單擊“取消”按鈕就卸載此窗體,添加用戶的過程到此完成。在修改密碼的窗體里,我要注重講解一下:當(dāng)輸入的舊密碼與登錄時的密碼不一致將出現(xiàn)提示對話框(如圖一),當(dāng)輸入的“確認(rèn)新密碼”和“輸入新密碼”的密碼不一致時也將出現(xiàn)警告對話框(如圖二)。我在做這個窗體時遇到了一個問題:就是輸入的新密碼確認(rèn)后,當(dāng)你再一次的進(jìn)入修改密碼窗體輸入舊密碼時,如果輸入的是剛剛修改過的密碼,就會出現(xiàn)錯誤。經(jīng)過一段時間的思考,我發(fā)現(xiàn)原因是修改過的密碼沒有覆蓋登錄時的密碼,所以會出現(xiàn)問題。我覺得這是一個很大的問題,在別的書上可能沒注意到這一點,所以我要注重的講一下,這是我做這個窗體時的最大體會。在建立基本工資窗體時,這個窗體會在兩個地方使用到,一個就是添加,另一個就是修改,在窗體載入時系統(tǒng)應(yīng)自動判斷狀態(tài)。選擇員工編號或選擇職務(wù),然后填寫工資金額,單擊“確定”按鈕,系統(tǒng)就會按照選擇的方式,設(shè)置員工的基本工資。在做基本工資這個窗體時,我的想法是:當(dāng)你在修改基本工資的信息,首先都要從數(shù)據(jù)庫中調(diào)出相關(guān)的信息,然后把它刪除掉,再從數(shù)據(jù)庫中的員工信息表中調(diào)出所要的信息,然后再一次的添加所要設(shè)置的信息。當(dāng)你沒輸入員工編號的時候,會出現(xiàn)下圖的對話框;當(dāng)沒輸入員工的職務(wù)時會出現(xiàn)錯誤的信息。在建立其他項目設(shè)置的窗體時,也在兩個地方使用,即添加和修改,在載入時也需要判斷狀態(tài)。選擇員工編號,再選擇需要添加的項目和進(jìn)額,單擊“確定”按鈕,即可添加其他項目。在其他項目設(shè)置這個窗體里,我用了一個Frame控件和幾個optionButton控件,目的在于:在添加其他項目時,只能有一個設(shè)置是有效的,而且還可以添加其他的項目,還有備注等等,這些都便于記錄。這里還有一個DTPicker控件是用來記錄添加其他項目的時間,我覺得這個控件非常好。還有就是每次添加成功后,系統(tǒng)需要初始化,更新一下。在設(shè)置完這個窗體后將會彈出查詢工資的窗體。在建立工資計算公式的窗體時,輸入內(nèi)容后,單擊“確定”按鈕,設(shè)置計算公式中使用的數(shù)字。在計算公式設(shè)置的窗體里,單擊“恢復(fù)默認(rèn)值”按鈕系統(tǒng)將會恢復(fù)公式中的默認(rèn)值。這里的恢復(fù)默認(rèn)值功能采用的方法比較簡單,就是在一個函數(shù)中設(shè)置了固定的默認(rèn)值。如果需要使用可變的默認(rèn)值,可以在數(shù)據(jù)庫中設(shè)置一項默認(rèn)值字段,這樣可以方便的更改默認(rèn)值。當(dāng)輸入的格式與設(shè)定的格式不一致的時候,會彈出相關(guān)的對話框。建立出勤統(tǒng)計窗體,選擇月份后,單擊“確定”按鈕,開始統(tǒng)計出勤記錄。在統(tǒng)計出勤信息的窗體里,這要和出勤記錄的數(shù)據(jù)庫相連,如果輸入的月份沒有統(tǒng)計將如下的對話框:如果輸入的月份有統(tǒng)計記錄則彈出如下的對話框:然后彈出出勤結(jié)果的窗體,顯示數(shù)據(jù)庫中統(tǒng)計信息相關(guān)的記錄。管理員能看到的界面這是用戶登錄所顯示的用戶信息建立計算實發(fā)工資的窗體,這個窗體的建立和統(tǒng)計出勤記錄的窗體比較相似,選擇月份后,單擊“開始統(tǒng)計”按鈕,即可統(tǒng)計員工工資。在計算實發(fā)工資的窗體里,如果輸入的月份的工資沒統(tǒng)計會彈出如下的對話框:否則會出現(xiàn)如下的對話框:

單擊“確定”后,就會出現(xiàn)工資信息列表,這時你將看見所有關(guān)于你想要的信息。建立工資查詢的窗體,在選擇員工編號后,單擊“查詢單人”按鈕,返回選擇員工的相關(guān)信息。單擊“查詢?nèi)俊卑粹o,系統(tǒng)返回全部員工的信息。在建立工資查詢(即工資統(tǒng)計結(jié)果列表)的窗體時,我覺得這是一個最難的窗體。不僅是因為它的設(shè)置,還有就是它的代碼和數(shù)據(jù)庫相連的操作。在這個窗體中使用了SSTab控件,在每一個標(biāo)簽上添加一個MSFlexGrid控件。當(dāng)你是管理員登錄的時候,他的權(quán)限是所有,當(dāng)你是用戶登錄的時候,窗體只顯示登錄用戶本人的相關(guān)信息。他沒有任何權(quán)限,只能看到自己的信息,這是我做這個窗體的特色。窗體的部分代碼為:Ifstrusername="admin"Then

’管理員的權(quán)限sql="selectstuffidfromsalarysetting"Setrs=getrs(sql,"salary")Ifrs.EOF=FalseThenWhileNotrs.EOFMid.AddItemrs(0)rs.MoveNextWendrs.CloseEndIfMid.ListIndex=0SelectCaseMe.SSTab1.TabCase0sql="select*fromsalarysetting"CallbasictopicCallshowbasic(sql)Case1sql="select*fromsalaryother"CallothertopicCallshowother(sql)Case2sql="select*fromsalarystatisticsorderbyiddesc"CalllisttopicCallshowdata(sql)EndSelectElse’用戶的權(quán)限sql="selectsidfromstuffinfowheresname='"&strusername&"'"Setrs=getrs(sql,"salary")WhileNotrs.EOFMid.AddItemrs(0)rs.MoveNextWendrs.MoveFirstsd=rs(0)rs.CloseMid.ListIndex=0SelectCaseMe.SSTab1.TabCase0sql="select*fromsalarysettingwherestuffid='"&sd&"'"CallbasictopicCallshowbasic(sql)Case1sql="select*fromsalaryotherwherestuffid='"&sd&"'"CallothertopicCallshowother(sql)Case2sql="select*fromsalarystatisticswherestuffid='"&sd&"'"CalllisttopicCallshowdata(sql)EndSelectEndIfEndSub

這是用戶登錄所顯示的用戶信息建立導(dǎo)出工資表窗體的時候,這是工資管理的最重要的一步。這個窗體中使用了CommondDialog控件,通過設(shè)置Flags屬性,使CommondDialog控件的對話框中顯示一個幫助按鈕,但是,程序員必須在這個位置提供相關(guān)的幫助主題。對于所有的公共對話框,當(dāng)CancelError屬性為true,而且用戶單擊了對話框的“取消”按鈕時將生成一個錯誤。可以在顯示對話框的同時捕獲此錯誤以檢驗是否按下了“取消”按鈕。這個控件可以顯示“打開”和“另存為”對話框,可以在打開對話框之前用Filter屬性指定在“文件類型”列表框中顯示的文件過濾器列表。這個窗體還引用了MicrosoftExcel9.0ObjectLibrary,目的是為了把建立的工資表導(dǎo)入到Excel表格中。這個窗體的制作是非常復(fù)雜的,尤其是從VB導(dǎo)入到表格中。建立導(dǎo)出工資表的窗體,當(dāng)單擊“保存為”文本框右邊的按鈕,會提示用戶選擇保存路徑,然后單擊“導(dǎo)出”,會導(dǎo)到你所要保存的文件夾里。這樣就可以在你保存的路徑里看到導(dǎo)出的Excel表格了。第四章結(jié)束語企業(yè)工資管理系統(tǒng)是一個典型的信息管理系統(tǒng),其主要通過軟件工程方面的選擇課題、需求分析、總

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論