2、员工考勤信息表,其结构如表3-2所示。保存员工考勤信息的相关信息。此表数据只保存员工的出勤情况,并不包括每日生产产量的考勤信息。
表3-2 员工考勤信息表 AttendanceInfo 字段 工号 姓名 当前日期 出入标志 上班时间 下班时间 迟到次数 早退次数
文本 文本 文本 文本 类型 6 10 10 2 10 10 长度 是 是 是 是 是 是 否 否 必填字段 日期/时间 日期/时间 数字 数字 3、LeaveInfo员工请假信息表,其结构如表3-3所示。用户所有请假信息保存在此表中。工资结算时根据记录进行扣除。
表3-3 员工请假信息表 LeaveInfo 字段 工号 姓名 病假天数 事假天数 假期开始时间 类型 文本 文本 数字 数字 日期/时间 长度 5 10 长整型 长整型
必填字段 是 是 是 是 是
16
4、员工加班信息表,结构如表3-4所示。为了方便系统的管理,员工加班信息同样也作为一个独立的表存储。
表3-4 员工加班信息表 OverTimeInfo 字段 工号 姓名 特殊加班天数 正常加班天数 加班日期
类型 文本 文本 数字 数字 日期/时间 长度 5 10 长整型 长整型 必填字段 是 是 否 否 是 5、员工工资表,结构如表3-5所示。该表即完成每日产品考勤,同时也保存由系统自动计算出的每天的员工工资,月底时只要汇总出这些每天的工资和即可。然后转存到其它表作进一步处理。
表3-5 员工工资表 salary 字段 ID 工号 姓名 工作日 产品类型一 产品类型二 产品类型三 数量一 数量二 数量三 单价一 单价二 单价三 每日汇总
类型 自动编号 文本 文本 日期/时间 文本 文本 文本 数字 数字 数字 数字 数字 数字 数字 长度 5 10 必填字段 是 是 是 是 否 否 否 否 否 否 否 否 否 是
17
最后,设计数据库时,考虑数据库的安全性,防止非管理人员用第三方软件打开数据库,特对数据库文件也进行了处理,将数据库的扩展名mdb替换为ldl, 起到了一定的迷惑性。在改扩展名的同时也对数据库进行了加密。在用ACCESS数据库打开时要求输入打开密码,如图3-5所示。只有正确输入打开密码时才能打开数据库。为了方便记忆,本数据库的打开密码为:wlz。
图3-5 要求输入密码
18
第四章 各功能的实现
4.1、系统安全及权限的实现
为了确保系统的安全,对数据库进行加密处理,采用了用户和组管理,并记录用户登录信息。拥有高级权限的用户,可以创建不同的组,并可将全部或部分权限分配给创建用户。
为了实现该功能,系统采用了递归方式,使高一级别的用户可以管理低级用户,最高权限属于管理员。 具体描述如下:
4.2、登录窗口的实现
系统登陆时,要求正确输入用户名和密码。成功登陆后显示如图4-2所示工资管理系统主界面。用户名分为管理员用户和普通用户。如图4-1所示:
图4-1 登录窗口
实现功能的部分主要代码:
Private Sub Comok_Click() On Error GoTo Dealerror Dim strSql As String Dim strMsg As String 'On Error GoTo Dealerror Dim objCn As New Connection strcn = CS()
objCn.ConnectionString = strcn
19
objCn.Open
Set objRs = New Recordset Set objRs.ActiveConnection = objCn objRs.CursorLocation = adUseClient strSql = \系统用户\objRs.Open strSql
objRs.ActiveConnection = Nothing objCn.Close Set objCn = Nothing If Logontimes >= 3 Then
MsgBox \你已经超过最大登陆次数!退出系统\系统登录\ End Else
objRs.MoveFirst
objRs.Find \用户名='\ If objRs.EOF Then
MsgBox \用户名错误!\系统登录\ txtUserName.SetFocus txtUserName.Text = \ Else
If objRs!口令 <> txtPassword Then
MsgBox \密码错误!请重新输入!\系统登录\ txtPassword.SetFocus txtPassword.Text = \ Else
'MsgBox \欢迎使用工资管理系统\系统登录\ strusername = txtUserName userpassword = txtPassword
If CmbStatus = \ Else
If CmbStatus.ListIndex = 0 And objRs!admin = True Then
UserAdmin = 1
MsgBox \请选择登陆身份!\系统登录\CmbStatus.SetFocus
End If
If CmbStatus.ListIndex = 0 And objRs!admin = False Then
20