企业工资管理系统(下)_第1页
企业工资管理系统(下)_第2页
企业工资管理系统(下)_第3页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

企业工资管理系统(下)

选择“工资信息设置”—>“基本工资设置”菜单设置员工的基本工资,可以根据员工的编号,或者根据员工职务设置基本工资,设置的基本工资为每个小时的工资。Setrs=getrs(sql,"salary")Ifrs.EOF=FalseThensql="deletefromsalarysettingwherestuffid='"&Mstuffid.Text&"'"Calltransactsql(sql,"salary")EndIfrs.Closeid=Mstuffid.TextCalladdrecordMsgBox"已经设置基本工资",vbOKOnly+vbExclamation,"添加结果"Callinitsql="select*fromsalarysetting"Callfrmresult.basictopicCallfrmresult.showbasic(sql)frmresult.Showfrmresult.ZOrder0Me.ZOrder0选择“工资信息设置”—>“其他项目设置”菜单,在其他项目设置的窗体中,设置员工当月的奖金、津贴、福利等项目。sql="select*fromsalaryother"Ifichangeflag=1ThenCalladdMsgBox"已经添加记录",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选择“工资信息设置”—>“工资计算公式设置”菜单,在这个计算公式窗体中设置员工实际发放工资的计算公式。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"请输入旷工扣发工资",vbOKOnly+vbExclamation,"提示"Me.textabsent=""Me.textabsent.SetFocusElseIfMe.textle=""AndIsNumeric(Me.textle)=FalseThenMsgBox"请输入迟到早退扣发工资",vbOKOnly+vbExclamation,"提示"Me.textle=""Me.textle.SetFocusElseCallsetvalueCallinitEndIf选择“工资信息管理”—>“出勤统计”菜单,在统计出勤记录窗体中选择需要统计记录的月份。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"已经统计",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")选择月份后单击“确定”按钮,如果系统已经统计过该月份的记录,那么会出现如下图所示的统计结果信息列表。如果系统没有统计过,那么系统就会开始统计记录,然后显示如图所示的统计结果信息列表。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选择“工资信息管理”—>“计算实发工资”菜单,在这个窗体中选择需要统计的月份。选择统计月份后,单击“开始统计”按钮,系统如果已经统计了该月份的工资,系统会显示工资信息列表窗体。如果系统还没有统计工资,那么系统开始统计工资,然后在信息结果列表窗体中显示统计结果。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="员工工资统计列表"Callfrmresult.listtopicCallfrmresult.showdata(sql)frmresult.Caption="统计结果列表"frmresult.ZOrder0UnloadMeElseMsgBox"这个月的工资未统计",vbOKOnly+vbExclamation,"提示"EndIf选择“工资信息管理”—>“查询工资”菜单,系统显示如图的查询信息窗体,系统默认的是查询出数据库中所有的记录(当管理员进入的时候),当从“员工编号”下拉列表中选择一个员工编号后,单击“查询单人”按钮,就会查询出符合这个员工编号的记录;如果需要返回查询所有信息,单击“查询所有”按钮,系统就会返回所有员工的信息。在“员工工资统计列表”中单击鼠标右键,会弹出下图的菜单,在“员工其他项目列表”中单击鼠标右键也会出现下图的菜单。如果要选择“删除基本工资设置”,出现如下的提示:具体的操作这里就不详细介绍。选择“工资信息管理”—>“导出工资表”菜单,会出现下图的“导出记录”窗体中选择需要导出工资的月份。选择月份和保存位置后,单击“导出”按钮,系统会开始导出数据。单击“确定”按钮打开导出的文件,单击“取消”按钮回到系统。导出的工资记录3.4各项子模块编写要点在登录的这个窗体里,我做的特点是:只要在数据库里有用户信息的,都可以登录,然后显示相关自己的信息,而管理员显示所有的信息。当输入的用户名或密码不正确的时候,会出现如下的对话框:或者在主窗体的设计中,我在系统的下拉菜单里包括有添加用户、修改密码和退出系统。在这个模块里普通用户只有修改自己的密码的权利。在添加用户的窗体里:添加3个标签、3个文本框和2个命令按钮,然后设置它们相关的属性。在修改密码的窗体里:添加了3个标签,用来显示信息;3个文本框用来输入用户名称和用户密码;2个按钮用来确定和取消操作,然后设置它们的属性。在工资信息设置的下拉菜单里包括有基本工资信息设置、其他项目信息设置和计算公式设置。在这个模块里,普通用户没有任何权利进行相关的操作。在基本工资窗体里:添加了2个选项按钮、2个下拉列表、2个标签、1个文本框和2个按钮,然后设置它们的属性。在其他项目设置的窗体里:使用了一个DTPicker控件获得添加记录的时间,要使用这个控件需要添加部件类库,选择“工程—>部件”命令,选择MicrosoftWindowsCommonControls-26.0(sp4)项,然后设置相关的属性。在工资信息管理的下拉菜单里包括有统计出勤信息、计算实发工资、查询工资和导出工资表。在这个模块里,普通用户有统计出勤信息和查询工资的权利,但是都显示的是自己的信息。在出勤统计窗体里:添加一个下拉列表、一个标签和2个命令按钮,然后设置相关的属性。在出勤结果信息列表的窗体里:使用了Adodc控件和DataGrid控件,控件的Visible属性一定要设置为False。在计算实发工资窗体里添加的控件和统计出勤记录窗体的控件相同。在工资统计列表窗体里:使用了SSTab控件,在每一个标签上添加一个MSFlexGrid控件,然后设置它们的属性。在导出工资表的窗体中使用了CommondDialog控件,要使用这个控件需要在“控件”窗体中,选择MicrosoftCommonDialogControl6.0(sp3)项,同时因为数据表格是导出到Excel,所以需要添加引用。选择“工程—>引用”菜单,在“引用”窗体中选择MicrosoftExcel9.0ObjectLibrary项,这样才能够成功导入到Excel。在这个窗体里,我做的特点是:权利分工明确。当管理员进入的时候他有所有的权利,单击哪个模块就会弹出相对应的窗体。而普通用户则不能,我把它进行了权限设置,会弹出权限的对话框。在添加用户的窗体里,如果输入的用户密码和确认密码不一致,将出现一个警告对话框:然后输入与用户密码相同的密码,我这里的密码都是以*的形式表达,是不可见的。添加的用户将保存在数据库的userinfo里。单击“取消”按钮就卸载此窗体,添加用户的过程到此完成。在修改密码的窗体里,我要注重讲解一下:当输入的旧密码与登录时的密码不一致将出现提示对话框(如图一),当输入的“确认新密码”和“输入新密码”的密码不一致时也将出现警告对话框(如图二)。我在做这个窗体时遇到了一个问题:就是输入的新密码确认后,当你再一次的进入修改密码窗体输入旧密码时,如果输入的是刚刚修改过的密码,就会出现错误。经过一段时间的思考,我发现原因是修改过的密码没有覆盖登录时的密码,所以会出现问题。我觉得这是一个很大的问题,在别的书上可能没注意到这一点,所以我要注重的讲一下,这是我做这个窗体时的最大体会。在建立基本工资窗体时,这个窗体会在两个地方使用到,一个就是添加,另一个就是修改,在窗体载入时系统应自动判断状态。选择员工编号或选择职务,然后填写工资金额,单击“确定”按钮,系统就会按照选择的方式,设置员工的基本工资。在做基本工资这个窗体时,我的想法是:当你在修改基本工资的信息,首先都要从数据库中调出相关的信息,然后把它删除掉,再从数据库中的员工信息表中调出所要的信息,然后再一次的添加所要设置的信息。当你没输入员工编号的时候,会出现下图的对话框;当没输入员工的职务时会出现错误的信息。在建立其他项目设置的窗体时,也在两个地方使用,即添加和修改,在载入时也需要判断状态。选择员工编号,再选择需要添加的项目和进额,单击“确定”按钮,即可添加其他项目。在其他项目设置这个窗体里,我用了一个Frame控件和几个optionButton控件,目的在于:在添加其他项目时,只能有一个设置是有效的,而且还可以添加其他的项目,还有备注等等,这些都便于记录。这里还有一个DTPicker控件是用来记录添加其他项目的时间,我觉得这个控件非常好。还有就是每次添加成功后,系统需要初始化,更新一下。在设置完这个窗体后将会弹出查询工资的窗体。在建立工资计算公式的窗体时,输入内容后,单击“确定”按钮,设置计算公式中使用的数字。在计算公式设置的窗体里,单击“恢复默认值”按钮系统将会恢复公式中的默认值。这里的恢复默认值功能采用的方法比较简单,就是在一个函数中设置了固定的默认值。如果需要使用可变的默认值,可以在数据库中设置一项默认值字段,这样可以方便的更改默认值。当输入的格式与设定的格式不一致的时候,会弹出相关的对话框。建立出勤统计窗体,选择月份后,单击“确定”按钮,开始统计出勤记录。在统计出勤信息的窗体里,这要和出勤记录的数据库相连,如果输入的月份没有统计将如下的对话框:如果输入的月份有统计记录则弹出如下的对话框:然后弹出出勤结果的窗体,显示数据库中统计信息相关的记录。管理员能看到的界面这是用户登录所显示的用户信息建立计算实发工资的窗体,这个窗体的建立和统计出勤记录的窗体比较相似,选择月份后,单击“开始统计”按钮,即可统计员工工资。在计算实发工资的窗体里,如果输入的月份的工资没统计会弹出如下的对话框:否则会出现如下的对话框:

单击“确定”后,就会出现工资信息列表,这时你将看见所有关于你想要的信息。建立工资查询的窗体,在选择员工编号后,单击“查询单人”按钮,返回选择员工的相关信息。单击“查询全部”按钮,系统返回全部员工的信息。在建立工资查询(即工资统计结果列表)的窗体时,我觉得这是一个最难的窗体。不仅是因为它的设置,还有就是它的代码和数据库相连的操作。在这个窗体中使用了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表格了。第四章结束语企业工资管理系统是一个典型的信息管理系统,其主要通过软件工程方面的选择课题、需求分析、总

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论