工资管理系统模块中的代码和界面.docx
- 文档编号:25957535
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:26
- 大小:120.99KB
工资管理系统模块中的代码和界面.docx
《工资管理系统模块中的代码和界面.docx》由会员分享,可在线阅读,更多相关《工资管理系统模块中的代码和界面.docx(26页珍藏版)》请在冰豆网上搜索。
工资管理系统模块中的代码和界面
工资管理系统模块中的代码和界面:
PublicFunctionconnectstring()AsString
'返回一个数据库连接
'将字符串赋给用户自定义函数名,即可返回
connectstring="Provider=SQLOLEDB;lntegratedSecurity=SSPI;PersistSecurity
Info=False;UserID=sa;InitialCatalog=员工薪资管理系统;DataSource=127.0.0.1"
'DataSource=.也可以
'IntegratedSecurity:
用于指定采用的集成安全机制
'PersistSecurityInfo:
是否支持安全信息(是否保存密码)
'Initialcatalog:
用于指定要连接的数据库名称
'DataSource:
用于指定连接的计算机sql服务器名,或写成本地计算机
'Microsoft建议所有的基于Win32的应用程序开发者在进行安全分布式应用程序的开发时使
用SSPI的集成安全特性
EndFunction
1.创建系统登陆窗体,具体方法如下。
系统登陆窗体中需要输入登陆用户名和密码,并可以请求验证或退出登陆。
在
工程中添加一个标准窗体,按照图5-1设计需要的登陆窗体。
将窗体命名为
“frm_login",窗体文件保存为“frmSysLogon.frm"。
图5-1用户登录
2.实现系统登陆功能,具体方法如下。
(1)定义窗体级变量。
在窗体代码通用声明部分定义保存允许用户验证登陆信息最大次数的窗体级变量,语句如下所示:
ConstMaxLogTimesAsInteger=3'定义允许用户验证登陆信息的最大次数
(2)实现登陆身份验证。
在用户输入用户名和密码之后,单击登陆按钮提交登陆信息,在按钮的单击事件过程完成所有验证操作,实现代码如下:
PrivateSubcmdOK_Click()
DimintcheckedAsInteger
DimstrnameAsString,strpasswordAsString
'静态常量intLogTimes用于保存用户请求验证的次数
StaticintlogtimesAsInteger
intlogtimes=intlogtimes+1'保存登陆次数
Ifintlogtimes>maxlogtimesThen
'超过允许的登陆次数,显示提示信息
MsgBox"你已经超过允许的登录验证次数!
"&vbcr_&"应用程序将结束!
"vbCritical,"登录验证"
End'结束应用程序
Else
'进一步验证登录信息的合法性
strname=Trim(txtlog(0).Text)'获得用户名
strpassword=Trim(txtlog
(1).Text)'获得口令
'检验用户名和口令的合法性,并根据检验返回值执行相应的操作
SelectCasecheck_password(strname,strpassword)
Case0
'用户不是系统用户
MsgBox"用户不是系统用户,请检查用户名是否输入正确!
",vbCritical,"登录验证"
txtlog(0).SetFocus
txtlog(0).SelStart=0
txtlog(0).SelLength=Len(txtlog(0))
Case1
'口令错误
MsgBox"口令错误,请重新输入!
",vbCritical,"登录验证"txtlog
(1)=""
txtlog
(1).SetFocus
Case2
UnloadMe'口令正确,卸载登录窗体
MsgBox"登陆成功,将启动系统程序!
",vbInformation,"登录验证"frmmain.Show
CaseElse
'登录验证未正常完成
MsgBox"登录验证未正常完成!
请重新运行登陆程序,"&vbcrlf_&"如果仍不能登录,请报告系统管理员!
",vbCritical,"登录验证"
EndSelect
EndIf
EndSub
(3)实现退出登陆功能。
单击取消按钮,退出登陆程序,实现代码如下:
PrivateSubcmdCancel_Click()'请求用户确认是否真的退出系统登陆
IfMsgBox(“你选择了退出系统登陆,退出将不能启动管理系统!
”
&vbCRIF_&“是否真的退出?
”,vbYesNO,“登陆验证”)=vbYesThen
UnloadMe‘卸载登陆窗体
EndIf
EndSub
3.实现员工信息管理功能员工信息管理功能包括员工与工资相关信息的添加、修改和删除以及记录浏
览等操作。
第一步,创建数据环境命令,具体方法如下。
员工信息管理需要使用"员工信息"数据表,所以需要在数据环境中创建一
个命令来访问该表。
在数据环境设计器中为连接对象Wage_Manage_Con添加一个命令,将其命
名为StuffData,CommandType属性设置为2(表示使用表对象),CommandText
属性设置为“员工信息”,LockType属性设置为3(表示开放式锁定)。
该命令返回的记录集使用Wage_Manage_Data.rsStuffData进行访问。
第二步,创建员工信息管理窗体,具体方法如下。
员工信息管理操作的所有操作设计都在一个窗体中完成,如图5-3-1所示。
图5-1
第三步,实现员工信息管理功能,具体方法如下。
(1)定义窗体级变量。
定义一个窗体级变量用于标识是否处于添加记录状
态,当窗体处于添加记录状态时,必须完成保存操作之后才能执行其他管理操作,定义语句如下:
DimisAddingAsBoolean'定义窗体状态标志
(2)实现窗体初始化。
在窗体加载时,窗体中默认显示“系统用户”数据表中的第一个记录数据,为了使txtNews文本框显示当前记录编号和记录总
Hl
PrivateSubForm_Load()
CmdMove(0).Value=True'触发按钮单击事件
EndSub
(3)实现记录导航。
为实现记录导航,使用pictureBox控件、命令按钮和
文本框模拟实现了ADOData控件的导航条,该导航条具有浏览记录、显示当前记录编号和记录总数功能。
实现记录导航功能的代码如下:
PrivateSubcmdMove_Click(lndexAsInteger)
WithWage_Manage_Data.rsSysUsers
SelectCaseIndex'切换当前记录
Case0'使第一个记录成为当前记录
If.RecordCount>0AndNot.BOFThen.MoveFirst
Case1'使上一个记录成为当前记录
If.RecordCount>0AndNot.BOFThen.MovePrevious
If.BOFThen.MoveFirst
EndIf
Case2'使下一个记录成为当前记录
If.RecordCount>0AndNot.EOFThen.MoveNext
If.EOFThen.MoveLast
EndIf
Case3'使最后一个记录成为当前记录
If.RecordCount>0AndNot.EOFThen.MoveLast
Endselect
If.BOFAnd.EOFThen
txtNews=“记录:
无”’显示当前记录编号和记录总数
Else
txtNews=“记录:
”&.AbsolutePosition&“/”&.RecordCount
EndIf
EndWith
EndSub
(4)验证用户信息输入。
在输入员工编号时,只允许输入数字作为编号,实现代码如下:
验证员工编号输入
PrivateSubtxtUser_KeyPress(KeyAsciiAsInteger)
IfNot(Chr(KeyAscii)Like"[0-9]"OrKeyAscii=vbKeyBack)Then
KeyAscii=0‘输入不是数字,英文字母或退格键,取消输入EndIf
picNavigation.Enabled=False
cmdAdd.Enabled=False
cmdDelete.Enabled=False
EndSub
在验证输入时,将picNavigation的Enabled设置为False禁用导航条,这样在用户输入或修改当前记录数据时,不能通过导航条切换显示其他记录,必须在执行保存操作之后才行,从而避免出错。
(5)强制保存当前记录修改。
当用户修改当前记录数据时,禁用添加、删除按钮和导航条,在执行保存操作后再启用,这样可在执行保存操作时验证记录数据是否合法。
实现代码如下:
PrivateSubcmbTitle_KeyPress(KeyAsciiAsInteger)picNavigation.Enabled=False
cmdAdd.Enabled=False
cmdDelete.EnabledFalse
EndSub
PrivateSubcmbDuty_KeyPress(KeyAsciiAsInteger}picNavigation.EnabIed=False
cmdAdd.Enabled=False
cmdDelete.Enabled=False
EndSub
PrivateSubtxtTime_KeyPress(KeyAsciiAsInteger)piclVavigaEion.Enabled=FalsecmdAdd.Enabled=False
cmdDelete.Enabled=False
EndSub
PrivateSubtxtlFser_KeyPress(KeyAsciiAsInteger)picNa}igation.Ena6led=False
cmddAdd.Enalaled=FalsecmdDelete.Enabled=False
EndSub
PrivateSubtxtDeptesKeyPress(KeyAsciiAsInteger)picNavigation.Enabled=False
cmdAdd.Enabled=FalsecmdDelete.Enabled=False
(6)实现添加操作。
在用户单击添加按钮时,向“员工信息”数据表中添加一条新记录,实现代码如下:
PrivateSubcmdAdd_Click()
WithWage_Manage_Data.rsSteffLData
.AddNew'添加新记录txtNews="记录:
"&.AbsolutePosition&"/"&.ReordCount
EndWithtxtNum=Format(Date,"yyyymmdd")&-"001"'设置默认职工号
cmbDuty="无"'设置默认职务
cmbTide="初级"'设置默认职称txtTime=Format(Date,"LongDate")'设置默认工作时间
isAdding=TruecmdAdd.Enahled=False'在保存新记录之前禁用控件
cmdDelete.Enabled=False
picNavigation.Enabled=False
EndSub在添加新记录时将添加、删除按钮和导航条禁用,在执行保存操作时再启用。
(7)实现删除操作。
在用户单击删除按钮时,删除当前记录,实现代码如下:
PrivateSubcmdDelete_Click()
WithWage_Manage_Data.rsStuffData
IfNot.EOFThen
IfMsgBox("将删除<"&Trim(txtUser)&">的员工数据,是否继续?
",_vbCritical+vbYesNa,"系统用户管理")=vbYesThen
.Delete
.MoveNext
If.EQFAnd.RecordCount>0Then.MoveLast
EndIf
EndIf
EndWith
EndSub
(8)实现刷新操作。
在用户单击刷新按钮时,执行刷新数据操作,实现代码如下:
PrivateSubcmdRefresh_Click()
OnErrorResumeNext
WithWage_Manage_Data.rsStuffData
If.RecordCount>0Then
.CancelUpdate'取消前一步执行的操作
.Requer'重新读取记录集数据
'重新执行数据绑定
SettxtUser.DataSource=Wage_Manage_DatatxtUser.DataMember="StufFData"
txtUser.DataField=”姓名"
SettxtNum.DataSource=Wage_Manage_DatatxtNum.DataMember="StuffData"
txtNum.DataField="职工编号"
SettxtDept.DataSource=Wage_Manage_DatatxtDept.DataMember="StuffData"txtDept.DataField="部门"
SettxtTime.DataSource=Wage_Manage_DatatxtTime.DataMember="StuffData"
txtTime.DataField="工作时间"
SetcmbDuty.DataSource=Wage_Manage_DatacmbDuty.DataMember="StuffData"
cmbDuty.DataField="职务"
EcmdAdd.Enabled=TruecmdDelete.Enabled=TrueisAdding=FalsepicNavigation.Enabled=TruecmdMove(0).Value=True
EndSub
在执行Requery方法刷新记录集时,必须重新执行数据绑定操作,否则文本框和组合框将不能绑定到刷新后的记录集上。
(9)实现保存操作。
在用户单击保存按钮时,保存被修改的当前记录数据。
首先检查各个数据项是否包含合法数据,然后检查指定的编号是否被使用,在所有验证通过时执行保存操作。
实现代码如下:
PrivateSubcmdSave_Click()
DimobjCogyAsNewRecordset
ifTrim(txtUser)=""Then
MsgBox"员工姓名不能为空!
",vbCritical,"员工信息管理"txtUser.SetFocustxtUser.Se1Start=0
txtUser.SelLength=Len(txtUser)
E1selfLen(Trim(txtNum))<>11Then
MsgBox"员工编号必须为11的数字!
",vbCritical,"员工信息管理"
txlNum.SetFncus
txtNum.SelStart=0
txtNum.SelLength=Len(txtNum)
E1seIfTrim(txtDept)=""Then
MsgBox"员工姓名不能为空!
",vbCritical,"员工信息管理"txtDept.SetFocus
txtDept=""
ElselfIsDate(txtTime)Then
MsgBox"不是有效日期!
",vbCritical,"员工信息管理"txtTime.SetFocustxtTime.SelStart=0
txtTime.SelLength=Len(txtTime)
E1seIfTrim(cmbDuty)=""Then
MsgBox"职务不能为空",vbCritical,"员工信息管理"cmbDuty=""
cmbDuty.SetFocus
ElselfTrim(cmbTitle)=""Then
MsgBox"职称不能为空",vbCritical,"员工信息管理"cmbTitle=""cmbTitle.SetFocus
Else
SetobjCopy=Wage_Manage_Data.rsStuffData.Clone
WithobjCopy
If.RecordCount>0Then
.MoveFirst
.Find"编号"=""&Trim(txtNum)&""
'检查编号是否被使用
IfNot.EOFAnd.AbsolutePosition<>_Wage_Manage_DaEa.rsStuffData.AbsolutePositionThen
MsgBox"编号:
"&Trim(txtNum)_&"已被使用,请使用其他编号!
",_vbCritical,"员工信息管理"
txtNum.SetFocus
txtNum.SelStart=0txtNum.SelLength=Len(txtNum)Else
'保存记录
Wage_Manage_Data.rsStuffData.Update
MsgSox"数据保存成功!
",vbInformation,"员工信息管理”
cmdAdd.Enabled=TruecmdDelete.Enabled=True
isAdding二False
picNavigation.Enabled=True
Endif
Endif
EndWith
Endif
EndSub
在验证员工编号是否已被使用时,定义了一个记录级变objCopy用来复制
Wage_Manage_Data.rsStuffData如果执行Find方法在objCopy没有找到指定的员工编号,则说明该编号没有被使用;如果找到,并且objCopy中的当前记录指针与rsStuffData位置相同,说明该编号也没有被使用:
否则说明编号已经被使用。
(10)实现关闭窗体操作。
在用户单击关闭按钮时,关闭系统用户管理窗体,实现代码如下:
PrivateSubcmdExit_Click()
UnioadMe'关闭系统用户管理窗体
EndSub
8•实现员工工资设置功能
员工工资设置对“基本工资”数据表中的各种其他工资进行设置或修改。
第一步,创建访问“基本工资”数据表的数据环境命令,具体方法如下。
在数据环境设计器中为连接对象Wage_Manage_Cor添加一个命令,将其
命名为“TitleWage",CommandType属性设置为2CommandText属性设置为“员工工资”,LockType属性设置为3。
该命令返回的记录集使用Wage_Manage_Data.rsTitleWage进行访问。
第二步,创建员工工资设置窗体具体方法如下。
•
员工工资设置窗体如图5-2所示,窗体文件保存为"frmTItleWage.frm"。
ms
Textl
咼级
关闭
图5-2
第三步,实现员工工资设置功能,具体方法如下。
(1)实现窗体初始化功能。
在窗体加载时显示原始的其他工资标准,如果没有其他工资标准记录则设置各项其他上资标准的默认值,实现代码如下:
PrivateSubForm_Load()
Dimi%
WithWage_Manage_Data.rsElseWage
If.State=adStateClosedThen.Open
IfNat(.BQFAnd.EOF)Then'判断有无其他工资标准记录
txtSE(0)=Fields("专家津贴"-):
txtSE
(1)=Fields("独补")
txtSE
(2)=.Fields("房贴")
txtSE(3)=Fields("一次性补发")
txtSE(4)=.Fields("其他补贴")
txtDE(0)=.Fields("扣公积金")
txtDE
(1)=.Fields("扣失业险")
txtDE
(2)=.Fields("扣医疗险")
txtDE(3)=.Fields("扣垃圾费")
txtDE(4)=.Fields("扣房租")
txtDE(5)=.Fields("扣其他")
Else
Fori=0To4
txtSE(i)=txtDE(i)=0
Nexti
txtDE(5)=0
EndIf
EndWith
EndSub
(2)保存修改后的其他工资标准。
单击保存按钮保存修改后的其他工资标准,如果还没有设定过其他工资标准,则向“员工工资”数据表中添加一个新记录来保存当前设定的其他工资标准,实现代码如下:
PrivateSubcmdSave_Click()
DimstrNews,i%
Fori=0To4'检验各项工资标准设置
IfTrim(txtSE(i))=""ThentxtSE(i)=0
IfTrim(txtDE(i))=""ThentxtDE(i)=0
Next
IfTrim(txtDE(5))=””ThentxtDE(5)=0
WithWage_Manage_Data.rsElseWage'保存工资标准设置
If.RecordCount=0Then.AddNew
Fields("独补")=txtSE
(1)
.Fields("房贴")=txtSE
(2)
Fields("一次性补发")=txtSE(3)
.Fields("其他补贴")=txtSE(4)
.Fields("扣公积金")=txtDE(0)
.Fields("扣失业险")=txtDE
(1)
.Fields("扣医疗险")=txtDE
(2)
.Fields("扣垃圾费")=txtDE(3)
.Fields("扣房租")=txtDE(4)
.Fields("扣其他')=txtDE(5)
Update
EndWith
MsgBox"数据保存成功!
",vbInformation,"其他工资标准设定"
EndSub
4.实现工资查询功能
工资查询是根据指定员工姓名或编号查询“员工信息”数据表,然后显示查询结果中的员工工资信息。
第一步,设计工资查询窗体,具体方法如下。
工资查询窗体如图5-3所示,窗体文件保存为”frmQueryWage.frm"。
图5-3
第二步,实现工资查询功能,具体方法如下。
工资查询功能的实现根据指定的查询条件和查询方式,设置“员工信息”数
据表的过滤条件,然后根据过滤后的记录显示员工工资,实现代码如下:
PrivateSubcmdQuery_Click()
Wit
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工资管理 系统 模块 中的 代码 界面