版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
企業(yè)工資管理系統(tǒng)(下)
選擇“工資信息設置”—>“基本工資設置”菜單設置員工的基本工資,可以根據(jù)員工的編號,或者根據(jù)員工職務設置基本工資,設置的基本工資為每個小時的工資。Setrs=getrs(sql,"salary")Ifrs.EOF=FalseThensql="deletefromsalarysettingwherestuffid='"&Mstuffid.Text&"'"Calltransactsql(sql,"salary")EndIfrs.Closeid=Mstuffid.TextCalladdrecordMsgBox"已經(jīng)設置基本工資",vbOKOnly+vbExclamation,"添加結果"Callinitsql="select*fromsalarysetting"Callfrmresult.basictopicCallfrmresult.showbasic(sql)frmresult.Showfrmresult.ZOrder0Me.ZOrder0選擇“工資信息設置”—>“其他項目設置”菜單,在其他項目設置的窗體中,設置員工當月的獎金、津貼、福利等項目。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選擇“工資信息設置”—>“工資計算公式設置”菜單,在這個計算公式窗體中設置員工實際發(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)計結果信息列表。如果系統(tǒng)沒有統(tǒng)計過,那么系統(tǒng)就會開始統(tǒng)計記錄,然后顯示如圖所示的統(tǒng)計結果信息列表。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)計工資,然后在信息結果列表窗體中顯示統(tǒng)計結果。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)計結果列表"frmresult.ZOrder0UnloadMeElseMsgBox"這個月的工資未統(tǒng)計",vbOKOnly+vbExclamation,"提示"EndIf選擇“工資信息管理”—>“查詢工資”菜單,系統(tǒng)顯示如圖的查詢信息窗體,系統(tǒng)默認的是查詢出數(shù)據(jù)庫中所有的記錄(當管理員進入的時候),當從“員工編號”下拉列表中選擇一個員工編號后,單擊“查詢單人”按鈕,就會查詢出符合這個員工編號的記錄;如果需要返回查詢所有信息,單擊“查詢所有”按鈕,系統(tǒng)就會返回所有員工的信息。在“員工工資統(tǒng)計列表”中單擊鼠標右鍵,會彈出下圖的菜單,在“員工其他項目列表”中單擊鼠標右鍵也會出現(xiàn)下圖的菜單。如果要選擇“刪除基本工資設置”,出現(xiàn)如下的提示:具體的操作這里就不詳細介紹。選擇“工資信息管理”—>“導出工資表”菜單,會出現(xiàn)下圖的“導出記錄”窗體中選擇需要導出工資的月份。選擇月份和保存位置后,單擊“導出”按鈕,系統(tǒng)會開始導出數(shù)據(jù)。單擊“確定”按鈕打開導出的文件,單擊“取消”按鈕回到系統(tǒng)。導出的工資記錄3.4各項子模塊編寫要點在登錄的這個窗體里,我做的特點是:只要在數(shù)據(jù)庫里有用戶信息的,都可以登錄,然后顯示相關自己的信息,而管理員顯示所有的信息。當輸入的用戶名或密碼不正確的時候,會出現(xiàn)如下的對話框:或者在主窗體的設計中,我在系統(tǒng)的下拉菜單里包括有添加用戶、修改密碼和退出系統(tǒng)。在這個模塊里普通用戶只有修改自己的密碼的權利。在添加用戶的窗體里:添加3個標簽、3個文本框和2個命令按鈕,然后設置它們相關的屬性。在修改密碼的窗體里:添加了3個標簽,用來顯示信息;3個文本框用來輸入用戶名稱和用戶密碼;2個按鈕用來確定和取消操作,然后設置它們的屬性。在工資信息設置的下拉菜單里包括有基本工資信息設置、其他項目信息設置和計算公式設置。在這個模塊里,普通用戶沒有任何權利進行相關的操作。在基本工資窗體里:添加了2個選項按鈕、2個下拉列表、2個標簽、1個文本框和2個按鈕,然后設置它們的屬性。在其他項目設置的窗體里:使用了一個DTPicker控件獲得添加記錄的時間,要使用這個控件需要添加部件類庫,選擇“工程—>部件”命令,選擇MicrosoftWindowsCommonControls-26.0(sp4)項,然后設置相關的屬性。在工資信息管理的下拉菜單里包括有統(tǒng)計出勤信息、計算實發(fā)工資、查詢工資和導出工資表。在這個模塊里,普通用戶有統(tǒng)計出勤信息和查詢工資的權利,但是都顯示的是自己的信息。在出勤統(tǒng)計窗體里:添加一個下拉列表、一個標簽和2個命令按鈕,然后設置相關的屬性。在出勤結果信息列表的窗體里:使用了Adodc控件和DataGrid控件,控件的Visible屬性一定要設置為False。在計算實發(fā)工資窗體里添加的控件和統(tǒng)計出勤記錄窗體的控件相同。在工資統(tǒng)計列表窗體里:使用了SSTab控件,在每一個標簽上添加一個MSFlexGrid控件,然后設置它們的屬性。在導出工資表的窗體中使用了CommondDialog控件,要使用這個控件需要在“控件”窗體中,選擇MicrosoftCommonDialogControl6.0(sp3)項,同時因為數(shù)據(jù)表格是導出到Excel,所以需要添加引用。選擇“工程—>引用”菜單,在“引用”窗體中選擇MicrosoftExcel9.0ObjectLibrary項,這樣才能夠成功導入到Excel。在這個窗體里,我做的特點是:權利分工明確。當管理員進入的時候他有所有的權利,單擊哪個模塊就會彈出相對應的窗體。而普通用戶則不能,我把它進行了權限設置,會彈出權限的對話框。在添加用戶的窗體里,如果輸入的用戶密碼和確認密碼不一致,將出現(xiàn)一個警告對話框:然后輸入與用戶密碼相同的密碼,我這里的密碼都是以*的形式表達,是不可見的。添加的用戶將保存在數(shù)據(jù)庫的userinfo里。單擊“取消”按鈕就卸載此窗體,添加用戶的過程到此完成。在修改密碼的窗體里,我要注重講解一下:當輸入的舊密碼與登錄時的密碼不一致將出現(xiàn)提示對話框(如圖一),當輸入的“確認新密碼”和“輸入新密碼”的密碼不一致時也將出現(xiàn)警告對話框(如圖二)。我在做這個窗體時遇到了一個問題:就是輸入的新密碼確認后,當你再一次的進入修改密碼窗體輸入舊密碼時,如果輸入的是剛剛修改過的密碼,就會出現(xiàn)錯誤。經(jīng)過一段時間的思考,我發(fā)現(xiàn)原因是修改過的密碼沒有覆蓋登錄時的密碼,所以會出現(xiàn)問題。我覺得這是一個很大的問題,在別的書上可能沒注意到這一點,所以我要注重的講一下,這是我做這個窗體時的最大體會。在建立基本工資窗體時,這個窗體會在兩個地方使用到,一個就是添加,另一個就是修改,在窗體載入時系統(tǒng)應自動判斷狀態(tài)。選擇員工編號或選擇職務,然后填寫工資金額,單擊“確定”按鈕,系統(tǒng)就會按照選擇的方式,設置員工的基本工資。在做基本工資這個窗體時,我的想法是:當你在修改基本工資的信息,首先都要從數(shù)據(jù)庫中調出相關的信息,然后把它刪除掉,再從數(shù)據(jù)庫中的員工信息表中調出所要的信息,然后再一次的添加所要設置的信息。當你沒輸入員工編號的時候,會出現(xiàn)下圖的對話框;當沒輸入員工的職務時會出現(xiàn)錯誤的信息。在建立其他項目設置的窗體時,也在兩個地方使用,即添加和修改,在載入時也需要判斷狀態(tài)。選擇員工編號,再選擇需要添加的項目和進額,單擊“確定”按鈕,即可添加其他項目。在其他項目設置這個窗體里,我用了一個Frame控件和幾個optionButton控件,目的在于:在添加其他項目時,只能有一個設置是有效的,而且還可以添加其他的項目,還有備注等等,這些都便于記錄。這里還有一個DTPicker控件是用來記錄添加其他項目的時間,我覺得這個控件非常好。還有就是每次添加成功后,系統(tǒng)需要初始化,更新一下。在設置完這個窗體后將會彈出查詢工資的窗體。在建立工資計算公式的窗體時,輸入內(nèi)容后,單擊“確定”按鈕,設置計算公式中使用的數(shù)字。在計算公式設置的窗體里,單擊“恢復默認值”按鈕系統(tǒng)將會恢復公式中的默認值。這里的恢復默認值功能采用的方法比較簡單,就是在一個函數(shù)中設置了固定的默認值。如果需要使用可變的默認值,可以在數(shù)據(jù)庫中設置一項默認值字段,這樣可以方便的更改默認值。當輸入的格式與設定的格式不一致的時候,會彈出相關的對話框。建立出勤統(tǒng)計窗體,選擇月份后,單擊“確定”按鈕,開始統(tǒng)計出勤記錄。在統(tǒng)計出勤信息的窗體里,這要和出勤記錄的數(shù)據(jù)庫相連,如果輸入的月份沒有統(tǒng)計將如下的對話框:如果輸入的月份有統(tǒng)計記錄則彈出如下的對話框:然后彈出出勤結果的窗體,顯示數(shù)據(jù)庫中統(tǒng)計信息相關的記錄。管理員能看到的界面這是用戶登錄所顯示的用戶信息建立計算實發(fā)工資的窗體,這個窗體的建立和統(tǒng)計出勤記錄的窗體比較相似,選擇月份后,單擊“開始統(tǒng)計”按鈕,即可統(tǒng)計員工工資。在計算實發(fā)工資的窗體里,如果輸入的月份的工資沒統(tǒng)計會彈出如下的對話框:否則會出現(xiàn)如下的對話框:
單擊“確定”后,就會出現(xiàn)工資信息列表,這時你將看見所有關于你想要的信息。建立工資查詢的窗體,在選擇員工編號后,單擊“查詢單人”按鈕,返回選擇員工的相關信息。單擊“查詢?nèi)俊卑粹o,系統(tǒng)返回全部員工的信息。在建立工資查詢(即工資統(tǒng)計結果列表)的窗體時,我覺得這是一個最難的窗體。不僅是因為它的設置,還有就是它的代碼和數(shù)據(jù)庫相連的操作。在這個窗體中使用了SSTab控件,在每一個標簽上添加一個MSFlexGrid控件。當你是管理員登錄的時候,他的權限是所有,當你是用戶登錄的時候,窗體只顯示登錄用戶本人的相關信息。他沒有任何權限,只能看到自己的信息,這是我做這個窗體的特色。窗體的部分代碼為:Ifstrusername="admin"Then
’管理員的權限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’用戶的權限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
這是用戶登錄所顯示的用戶信息建立導出工資表窗體的時候,這是工資管理的最重要的一步。這個窗體中使用了CommondDialog控件,通過設置Flags屬性,使CommondDialog控件的對話框中顯示一個幫助按鈕,但是,程序員必須在這個位置提供相關的幫助主題。對于所有的公共對話框,當CancelError屬性為true,而且用戶單擊了對話框的“取消”按鈕時將生成一個錯誤??梢栽陲@示對話框的同時捕獲此錯誤以檢驗是否按下了“取消”按鈕。這個控件可以顯示“打開”和“另存為”對話框,可以在打開對話框之前用Filter屬性指定在“文件類型”列表框中顯示的文件過濾器列表。這個窗體還引用了MicrosoftExcel9.0ObjectLibrary,目的是為了把建立的工資表導入到Excel表格中。這個窗體的制作是非常復雜的,尤其是從VB導入到表格中。建立導出工資表的窗體,當單擊“保存為”文本框右邊的按鈕,會提示用戶選擇保存路徑,然后單擊“導出”,會導到你所要保存的文件夾里。這樣就可以在你保存的路徑里看到導出的Excel表格了。第四章結束語企業(yè)工資管理系統(tǒng)是一個典型的信息管理系統(tǒng),其主要通過軟件工程方面的選擇課題、需求分析、總
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級語文下冊 【分層作業(yè)】6《飛向藍天的恐龍》課時練 基礎篇(含答案)(部編版)
- 福建師范大學《班級管理》2023-2024學年第一學期期末試卷
- 成都中醫(yī)藥大學《消費者行為學》2022-2023學年第一學期期末試卷
- 學生減肥計劃書
- Isoorientin-Standard-生命科學試劑-MCE
- 亮化工程技術施工方案
- 家居建材配送承攬合同
- 建筑工程石料供應運輸協(xié)議
- 4S店木工修繕承包協(xié)議
- 家電配送物流合同模板
- 模板支撐體系工程施工方案
- 部編版五年級上冊語文閱讀理解及答案
- 江蘇省蘇州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細
- 整體道床施工作業(yè)指導書模板
- 應急產(chǎn)業(yè)的現(xiàn)狀及發(fā)展趨勢淺析課件
- 2023屆清華大學中學生標準學術能力診斷性測試(11月)數(shù)學(理)試卷及答案
- (完整)污水清運合同
- 金壇區(qū)蘇科版二年級上冊勞動《06樹葉書簽》課件
- 教師課堂教學技能大賽試題題庫及答案
- APC電子凸輪在平剪伺服供料機的應用
- 商標專用權價值資產(chǎn)評估方法.
評論
0/150
提交評論