基于vb的企业人力资源管理系统内容摘要:

如下图: 图 服务端主窗体菜单项 完成菜单项的添加后,在 MDIFORM 窗体采用 ADO 的方式访问数据库,添加三个ADODC 控件。 添加一个 WINSOCK 控件,用来进行支持网络数据传输,协 议使用 TCP 协议。 添加 3 个 TIMER 控件,一个用来提供 STATUSBAR 控件中远程连接人数的扫描, 2 个用来支持客户端请求用户列表的处理过程。 添加一个 COMMONDIALOG 控件,为数据库备份提供路径选择。 主窗体布局如下: 7 图 服务端主窗体 当服务端被载入内存时,应该主动完成数据库的连接工作,并接受远程客户的连接和数据请求。 代码如下 Private Sub MDIForm_Load() = False = False If Winsock1(0).State 0 Then Winsock1(0).Close End If Winsock1(0).LocalPort = 50400 Winsock1(0).Listen linkcount = 0 = provider=。 amp。 persist security info= false。 amp。 data source = C:\Documents and Settings\Administrator\桌面 \ = adCmdTable = 用户信息 = False = provider=。 amp。 persist security info= false。 amp。 data source = C:\Documents and Settings\Administrator\桌面 \ = adCmdTable = 员工资料 8 = False = provider=。 amp。 persist security info= false。 amp。 data source = C:\Documents and Settings\Administrator\桌面 \ = adCmdTable = 留言 = False If And Then Exit Sub While Not (在线 ).Value = 0 (IP).Value = 0 Wend End Sub 接受客户端的连接 如果有客户端连接到服务器,那么就会激活 Winsock 的 Winsock1_ConnectionRequest事件过程,代码如下: Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long) linkcount = linkcount + 1 Load Winsock1(linkcount) Winsock1(linkcount).LocalPort = 0 Winsock1(linkcount).Accept requestID End Sub 程序首先将连接到服务端的客户端的数目加 1,然后通过 Load 方法为 Winsock 控件数组添加一个新的 Winsock 控件元素,并且通过 Winsock1(linkcount).Accept requestID 语句设置这个新控件元素专门对应这个客户端的连接。 服务端与客户端的数据交互 ( 1)命令号: 1 ( 2)内容: “用户 ID;用户密码 “ 允许登陆 ( 1)命令号: 30(普通员工), 31(管理员) 拒绝登陆 ( 1) 命令号: 20 用户名已登录 ( 1)命令号: 40 ( 1)命令号: 2 ( 2)内容: “用户 ID;时间;内容 ” 9 ( 1)命令号: 3 ( 2)内容: “所要删除的用户名 ” ( 1)命令号: 4 服务端响应 ( 1)命令号: 50 ( 2)内容: “员工名 ” 服务端发送完毕 ( 1) 命令号: 60 ( 1)命令号: 5 ( 2)内容: “要查询的员工名 ” 服务端响应 ( 1)命令号: 70 ( 2)内容: “姓名;所属部门;联系方式;住址 ” 未找到 (1)命令号: 80 ( 1)命令号: 6 ( 2)内容: “用户名;密码;权限 ” ( 1)命令号: 7 ( 2)内容: “用户名;密码;权限 ” 如果用户名存在 ( 1)命令号: 90 ( 1)命令号: 8 ( 2)内容: “姓名;所 属部门;联系方式;住址 ” ( 1)命令号: 9 ( 2)内容: “姓名;所属部门;联系方式;住址 ” IP 获取过程 ( 1)命令号: 0 ( 2)内容: “用户名; IP 地址 “ 详细的信息处理过程代码: Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long) Dim s As String Dim x As String Dim y As String Dim z As String Dim name As String Dim password As String Dim time As String 10 Dim msge As String Dim temp As String Dim temp1 As String Dim temp2 As String Dim temp3 As String Dim temp4 As String Winsock1(Index).GetData s x = Val(Left(s, 1)) y = Mid(s, 3) Select Case x Case 1 z = InStr(1, y,。 , vbBinaryCompare) name = Left(y, z 1) password = Mid(y, z + 1) userID= amp。 39。 amp。 name amp。 39。 If Then Winsock1(Index).SendData 20 Else If (password).Value = password Then If (在线 ).Value = 0 Then Winsock1(Index).SendData 30 amp。 amp。 (管理员 ).Value (在线 ).Value = 1 Winsock1(Index).Tag = name Else Winsock1(Index).SendData 40 End If Else Winsock1(Index).SendData 20 End If End If Case 2 z = InStr(1, y,。 , vbBinaryCompare) name = Left(y, z 1) temp = Mid(y, z + 1) temp1 = InStr(1, temp,。 , vbBinaryCompare) time = Left(temp, temp1 1) msge = Mid(temp, temp1 + 1) (UserID).Value = name (Time).Value = time (message).Value = msge 11 Case 4 = True = True Case 5 姓名 = amp。 39。 amp。 y amp。 39。 If Then Winsock1(Index).SendData 80 Else Winsock1(Index).SendData 70 amp。 amp。 (姓名 ) amp。 amp。 (所属部门 ).Value amp。 amp。 (联系 方式 ) amp。 amp。 (住址 ) End If Case 6 z = InStr(1, y,。 , vbBinaryCompare) name = Left(y, z 1) temp = Mid(y, z + 1) temp1 = InStr(1, temp,。 , vbBinaryCompare) time = Left(temp, temp1 1) msge = Mid(temp, temp1 + 1) userID= amp。 39。 amp。 name amp。 39。 (password).Value = time (管理员 ).Value = msge Case 7 z = InStr(1, y,。 , vbBinaryCompare) name = Left(y, z 1) temp = Mid(y, z + 1) temp1 = InStr(1, temp,。 , vbBinaryCompare) time = Left(temp, temp1 1) msge = Mid(temp, temp1 + 1) userID= amp。 39。 amp。 name amp。 39。 If Then (userID).Value = name (password).Value = time (管理员 ).Value = msge (在线 ).Value = 0 Else Winsock1(Index).SendData 90 End If Case 8 12 temp = InStr(1, y,。 , vbBinaryCompare) temp1 = Left(y, temp 1) temp2 = Mid(y, temp + 1) name = temp1 temp1 = InStr(1, temp2,。 , vbBinaryCompare) temp3 = Left(temp2, temp1 1) temp4 = Mid(temp2, temp1 + 1) time = temp3 z = InStr(1, temp4,。 , vbBinaryCompare) msge = Left(temp4, z 1) password = Mid(temp4, z + 1) 姓名 = amp。 39。 amp。 name amp。 39。 (所属部门 ).Value = time (联系方式 ).Value = msge (住址 ).Value = password Case 9 temp = InStr(1, y,。 , vbBinaryCompare) temp1 = Left(y, temp 1) temp2 = Mid(y, temp + 1) name = temp1 temp1 = InStr(1, temp2,。 , vbBinaryCompare) temp3 = Left(temp2, temp1 1) temp4 = Mid(temp2, temp1 + 1) time = temp3 z = InStr(1, temp4,。 , vbBinaryCompare) msge = Left(temp4, z 1) password = Mid(temp4, z + 1) (姓名 ).Value = name (所属部门 ).Value = time (联系方式 ).Value = msge (住址 ).Value = password Case 3 . Find 姓名 = amp。 39。 amp。 y amp。 39。 Case 0 z = InStr(1, y,。 , vbBinaryCompare) name = Left(y, z 1) temp = Mid(y, z + 1) userID= amp。 39。 amp。 name amp。 39。 13 (IP).Value = temp amp。 amp。 CStr( 1) End Select End Sub 在上述代码中,每当客户端的信息到来时,服务端先提取命令号,将命令号存在变量 X中,而余下信息存在变量 Y 中。 然后利用循环根据 X 的不同值进入到不同信息处理过程,对 Y 的信息在进一步处理。 在列表获取过程中,利用两个定时器,来不停的检验服务端发送信息是否已经完毕, Timer1 代码如下: Private Sub Timer1_Timer() Dim temp2 As String temp2 = (姓名 ).Value Winsock1(linkcount).SendData 50 amp。 amp。 temp2 If Not Then = True Else = False End If End Sub 这个 Timer1 是用来不停的对客户端发送员工的姓名,当名单完毕时 Timer1 停止工作。 Timer2 的代码如下: Private Sub Timer2_Timer() If = False Then Win。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。