第一章信息系统概况2
1.1 选题介绍2
1。2 课程设计小组基本情况介绍3
1。2.1课程设计小组成员的基本情况介绍3 1。2。2课程设计小组前期的准备情况3
1.2。3课程设计小组各成员所承担的课程设计的任务3
第二章信息系统分析3
2.1 可行性分析3
2.1.1 技术可行性分析4
2.1。3 社会因素可行性分析4 2.1。4 可行性分析结论5 2。2 客户需求分析5 2.3 系统分析部分6
2。3。1 业务流程图6 2。3.2 数据流程图7 2.3.3 E—R图8 2。3。4 数据字典9
第三章信息系统设计11
3.1 功能结构图设计11 3.2 输入输出设计11 3.3 数据库结构设计12
3。3。1 概念设计12
3。3。1 逻辑结构设计设计13 3。4 代码设计15
第四章信息系统实施16
4。1 源程序16
4.1.1 添加用户16 4.1.2 修改密码16 4.1.3 出差情况16 4。1。4 添加部门18 4.1.5 部门管理19 4.1.6 更新部门21
4.1.7 员工考勤登记22 4.1.8 请假情况34
4。1。9 上班时间设置35 4。1。10 上班情况36 4.1。11 用户登入38 4.1。12 添加员工39
4。1。13 员工管理41 4。1。14 修改员工44 4.1.15 主界面47 4。3 模拟运行数据49 4。4 系统使用说明书53
第五章参考书籍
第一章 信息系统概况
1.1 选题介绍
当今社会,计算机已经十分普及,性能也日趋完善.它已经被应用于许多领域.比如说,小到图书馆的图书管理,超市或网吧的收费管理,KTV的点歌系统,大到航空、铁路的售票,全国人口户籍的管理等等。
随着现代科技的进步,用计算机来进行考勤的管理也成为现代化企业运作必不可少的一部分.在过去我们的考勤工作都是人工完成的,不仅浪费了很多的人力跟物力,而且无法保证其准确性和透明度,给企业的管理带来了许多的不便。现在利用计算机来管理我们的考勤工作,大大降低了工作人员的工作量,提高了工作效率,使原本复杂和枯燥无味的工作变得简单而轻松了,而且也实用、安全。计算机技术特别是数据库技术的发展为企业建立管理信息系统,甚至对改变管理思想起着不可估量的作用.实践证明信息技术已在企业的管理层面扮演越来越重要的角色。通过考勤系统我们能很容易地对公司员工的信息有一个基本的了解,可以很方便地知道员工的出勤情况,通过对员工出勤信息的了解,就能计算出员工的实际工资。一切的统计和计算都由计算机代为管理了,考勤信息管理系统对企业的合理化管理起到了很大的作用,它为企业信息化的建设打响了头炮,而企业的信息化建设已成为现代各个企业发展的需要。所以说,考勤管理系统的开发具有非常重要的意义。
1.2 课程设计小组基本情况介绍
1。2。1课程设计小组成员的基本情况介绍 1。2。2课程设计小组前期的准备情况
一、仔细阅读课程设计指导书,了解实验内容,同时确定小组成员,确定信息管理系统主题,然后各自分工。
二、熟悉需要使用的软件的操作,包括:Microsoft Visual Basic 6.0 中文版、Microsoft Office Access 2003。
1.2.3课程设计小组各成员所承担的课程设计的任务
表1—1 小组成员及其所承担的任务
第二章 信息系统分析
2。1 可行性分析
目前,计算机在我国的考勤管理工作中,主要可用来进行报表处理,档案管理,文书编辑,信息查询,综合分析。查询统计作为考勤管理的一个重要组成部分,是通过对考勤情况的调查,整理和分析,了解考勤情况的发展趋势,为各级领导机关制定考出勤的方针,,加强干部管理,改革干部制度提供准确数字的依据。其工作除涉及到干部的基本情况统计之外,还包括职工的工资统计,职工的考勤情况统计,职工的奖惩情况统计,职工的出差情况统计,职工的请假情况统计等方面,其涉及的面之广,数据量之大可想而知,若利用手工进行考勤的统计工作,大致要经过考勤统计查询,考勤的统计资料的整理,考勤统计分析三个过程,但这种手工统计过程,存在着几个明显的问题,比如说统计资料缺乏准确性,及时性,需要花费大量的人力,物力,财力等.
手工方法所表现出来的种种劣势,使人们慢慢意识到管理现代化已成为当代社会发展的一股不可抗拒的洪流.在管理现代化的浪潮中,考勤管理现代化也势在必行。实现考勤管理现代化是一个复杂的系统工程,需要采取科学的管理方法和先进的科技手段。科学的管理方法在管理中一般是指数学方法、系统方法、信
息方法、控制论方法、社会学方法、心理学方法等科学方法,而先进的科技手段主要是运用当代最新科学技术之一的电子计算机来为考勤管理现代化服务。而且一个完善的考勤系统应做到以下几点:
• 提高了考勤管理效率,减轻劳动强度; • 提高信息处理速度和准确性;
• 为考勤负责人提供更方便、科学的服务项目
2.1。1 技术可行性分析
系统开发环境: Windows xp sp3 + vs2005 + sqlserver2000技术已经比较成熟,和其他应用开发语言比起来有很大的优势,所以利用这些技术是完全可以完成这些功能的。同时由于逻辑不是太复杂,估计可以按时完成此项目。
考勤管理系统是工作主要是在职工和管理都有之间架起一座桥梁,能相互沟通信息和处理信息。这一特点非常适合计算机特点,通过网络internet技术,发挥计算机的信息传输速度快、准确度高的优势.计算机硬件和软件技术的飞速发展,为系统的建议提供了技术条件。
2.1.2 经济可行性分析
(1) 支出
A、在基建投资上,只需要配置一台DELL服务器,大概2万左右; B、软件设计和开发费用:2.5万元
C、经常性指出:(主要是指软件的维护费用) (2) 收益
进一步实现办公自动化,减少人力投资和办公费用,极大提高办公效率,同时更好地控制考勤制度,降低成本。
(3) 投资回收周期
根据经验算法,收益的累计数开始超过支出的累计数的时间为1年。
2.1.3 社会因素可行性分析
对所建议系统的社会因素方面的可行性分析: (1)法律可行性
新系统的研制和开发,所有软件都选用正版,将不会侵犯他、集体和国家的利益,不会违反国家和法律。
(2)使用方面的可行性
由于新系统的客户端只要求用浏览器,管理者与人员完全有能力使用此系统,并且新系统的研制和开发是充分考虑工作人员对考勤的易于管理,提高工作效率,界面友好,操作简单方便,能完全满足职工的使用要求.
对传统管理理念的冲击,可能引起管理层的变动和人员调整。对于企业管理人员的要求提高,使企业在一定的可能下进行机构精简,迫使工作人员继续学习新知识,拓宽企业在市场竞争环境下的生存空间.对于企业的管理者与职工之间管理方式的转变和扩充。
2.1。4 可行性分析结论
结论意见:经上述可行性分析,系统研制和开发可以立即开始进行
2。2 客户需求分析
考勤系统应该便于管理者的查询、修改、更新、统计以及高层管理人员的查询等操作.能从整体上体现去每个员工每日,每月的出勤情况。基本信息管理包括节假日日期设置、部门信息管理和员工信息管理。
(1) 主要功能 a.员工
考勤签到:员工每天上班时需要登陆系统进行签到,如果当天已经签到了,则不执行重复操作!
考勤签退:员工每天下班时需要登陆系统进行签退,如果当天还没有签过到,则不执行签退操作,如果当天还没有到下班时间,也不执行签退操作!
节假日查看:员工可以登录查看节假日加班安排 系统管理:修改自己的密码, 查看系统简介. b.管理员
员工信息管理:管理员登陆系统后可以添加新的员工信息,可以对现有员工的信息进行修改和查询!可以删除某些员工信息,当删除员工信息时同时将删除他们的考勤信息
职位类别及上下班时间管理:不同的职位类别拥有不同的上下班时间,管理员可以添加新的职位类别,修改已经存在的职位类别的名称和上下班时间,
部门信息管理:管理员可以添加和删除部门信息,当部门下面存在员工信息时不执行删除操作。
系统管理:修改自己的登陆密码,查看系统简介。 节假日管理:节假日的设置和查看; (2) 特点
实现了管理员和员工登陆信息的自动判断!根据不同的身份显示不同的功能菜单。
程序使用三层架构思想,采用完全面向对象的思想方法设计。 系统在进行相关操作如删除员工信息时使用了存储过程。 (3) 数据
输入:通过登录系统输入职工上班下班,以及请假、出差等信息。 输出:职工考勤情况.(用户对相关职工的查询结果和报表) (4) 安全保密
系统对不同权限的用户提供不同的功能模块,对历史数据的更改和新数据的添加只有一定权限的用户才能操作,一般用户只能进行查询操作。对数据库的关键数据应要求保密。
系统默认管理员登陆信息: 帐号admin 密码admin
2。3 系统分析部分
2.3.1 业务流程图
图2—1 业务流程图
管理员设置上班时间表授予权限查询普通用户上班请假出差上班情况表请假情况表出差情况表 2。3。2 数据流程图
图2—2 顶层数据流程图
员工信息员工信息更查询员工信息员工信息部门信息添加用户信息添加新管理员部门信息更新查询部门信息档案管理系统上班时间普通用户工作状态查询员工部门信息工作状态工作状态上班时间设置 图2—3 一层数据流程图
新员工注册信息员工信息添加添加员工新员工信息员工信息更新修改员工信息员工信息员工表注册信息表注册信息查询员工信息员工信息查询员工信息员工信息用户信息身份验证上班登记部门信息添加工作状态出差登记添加部门新部门信息请假登记部门信息更新修改部门信息部门信息部门表上班情况表请假情况表出差情况表查询部门信息查询部门信息部门信息部门信息上班信息查询员工工作状态员工工作状态查询员工工作状态请假信息出差信息上班时间设置添加上班时间上班时间上班时间表上班时间
2.3.3E-R图
图2-5 E-R图
管理员部门P11M管理查询属于N请假单员工NN11出差单登记上班单NN管理员编号密码员工密码管理员部门ID部门名称部门2.3.4 数据字典
名字:上班时间数据 描述:关于每日上班时间的信息,用于员工对上班时间的确认 定义:上班时间数据=上午工作开始时间+上午工作离开时间+下午工作开始时间+下午工作离开时间 位置:输入到上班时间表
1员工姓名员工性别员工年龄进入公司时间员工
名字:部门数据描述:部门的信息,用于对部门的确认 定义:部门资料数据=部门代号+部门名称 位置:输入到部门表 名字:上班类型数据 描述:上班类型的信息,用于对员工上班时间类型的确认 定义:上班类型数据=类型代号+类型名称 位置:输入到上班类型表
名字:个人资料数据 描述:职工的个人信息,用于对职工的确认 定义:个人资料数据=员工ID+员工姓名+员工性别+出生日期 +职务+个人工作资料档案 位置:输入到员工表 名字:职工列表数据 描述:职工的部门信息,用于对职工部门的确认 定义:职工列表数据=员工ID +员工姓名+部门代码+部门名称 +员工类别+员工职位+查询密码 位置:输入到部门表、用户表 名字:考勤数据 描述:职工的考勤信息 定义:考勤数据=员工ID+年月+迟到+早退+请假+旷工 位置:输入到请假表、上班表、出差表 名字:用户名 名字:操作用户表 别名: 别名:操作用户信息 描述:惟一标识本系统的用户描述:是对使用本系统的用户进行身份 身份和权限验证用的 定义:用户名=5{字符}5 定义:用户名+密码+所属单位+权 限一+权限二+操作员 位置:所有表单 名字:密码 别名: 描述:验证本系统的用户身份 定义:密码=5{字符}5 位置:用户表 第三章 信息系统设计 名字:权限一 别名: 描述:标识本系统的用户对本系统3。1 功能结构图设计 管理权使用权限 定义:权限一=5{字符}5 图3-1 功能结构图 位置:用户表 主系统名字:权限二 别名: 描述:标识本系统的用户对本系统登记权的使用权限 定义:权限二=5{字符}5 位置:用户表 管理员功能用户功能添加删除修改用户添加修改删除部门设置上班下班时间查询工作状态工作登记出差登记请假登记 3.2 输入输出设计
表3-1 登录 名称、标识符 输入 输出 登录 填写用户的ID号和密码,点击确认按钮. 提示登录成功进入系统主页面 表3-2 员工上班 名称、标识符 输入 输出
表3—3 员工下班
上班 选择部门、姓名,点击上班 提示上班成功信息 名称、标识符 输入 输出
下班 输入部门、姓名,点击上班 提示下班成功信息 表3-4 修改密码 名称、标识符 输入 输出
修改密码 管理员输入用户名、原始密码、新设定的密码 提示修改密码成功信息 表3—5 申请请假 名称、标识符 输入 输出 申请请假 输入请假人姓名、所属部门、请假时间、请假时长、请假原因 提示请假申请已经提交信息
表3-6 申请出差 名称、标识符 输入 输出
申请出差 申请人姓名、所属部门、出差的开始时间、出差地点、出差原因 提示出差申请已经提交信息 表3—7 员工添加 名称、标识符 输入 输出
添加员工 输入部门、姓名、性别、年龄、进公司时间、个人密码 提示添加已完成 表3—8 部门添加 名称、标识符 输入 输出
部门添加 输入部门名称 提示添加已完成 表3—9 上下班时间设定 名称、标识符 输入 输出
上、下班时间设定 上、下班时间 提示设置成功 3。3 数据库结构设计
3.3.1 概念设计
数据库一般分为三级模式:外模式、概念模式和内模式。 在这里我们将要设计的是数据库的概念模式。
通过对职工出勤管理系统的内容和数据流程分析及E—R图,设计如下数据项和数据结构:
1.部门信息。包括部门编号、部门名称、部门人数等。
2.超级用户信息。包括用户名、密码、姓名、性别、出生日期、籍贯等。 3.普通用户信息。包括编号、部门名称、姓名、性别、出生日期、籍贯等信息。
4.考勤信息。包括序列号、编号、签到时间、签离时间等信息. 5。员工状态。包括员工请假、出差、早退、迟到、上班。
6。考勤历史信息。包括记录号、编号、日期、签到时间、签离时间、迟到、缺勤、早退等信息。
7.用户信息。包括用户名称、密码、所在单位、用户权限信息、操作员、最后修改时间.
3.3。1 逻辑结构设计设计
根据职工考勤管理系统的功能要求,选取SQLServer 2000作为后台数据库。 在上面的实体和实体之间的E-R图设计基础上,将ER图转化为关系模型,形成数据库中的表格及表格之间的关系。
该数据库由5个表组成,部门表、超级用户表、用户表、考勤表、考勤历史表。分别如下表所示:
表3—10出差表 类型 为空性 数字 数字 日期/时间 文本 数字 日期/时间 日期/时间 文本 表3-11部门表
名称 部门代号 部门名称 字段 departmentId 类型 数字 为空性 否 否
备注 唯一表示部门 部门名称 否 否 否 是 是 是 是 是 名称 部门代号 员工ID 出差时间 出差地点 出差天数 登记时间 销差时间 出差备注 字段 departmentId workerId ccTime ccArea ccLength dcTime xcTime ccContent 备注 departmentName 文本 名称 部门代号 员工ID 请假时间 请假天数 登记时间 请假原因 销假时间 是否旷工 字段 departmentId workerId qjTime qjLength djTime qjReason xjTime ynKg 表3-12 请假表 类型 为空性 数字 数字 日期/时间 数字 日期/时间 文本 日期/时间 是/否 否 否 否 是 是 是 是 是 备注 名称 部门代号 员工ID 工作日期 上午上班时间 下午上班时间 上午下班时间 下午下班时间 上班类型1 字段 departmentId workerId workday mstartTime astartTime mleaveTime aleaveTime workmsType 表3—13上班表 类型 为空性 数字 数字 日期/时间 日期/时间 日期/时间 日期/时间 日期/时间 数字 否 否 否 是 是 是 是 是 备注 存放工作类型表中的typeId 0:正常上班 1:请假 2:出差 3:早退 4:迟到 默认值为0,作为是否已经登记的标记 默认值为0,作为是否已经登记的标记 默认值为0,作为是否已经登记的标记 上班类型2 workmlType 数字 是 上班类型3 workasType 数字 是 上班类型4 workalType 数字 是 表3-14用户表 名称 用户名 密码 真实姓名 注册时间 权限 字段 username password realname regtime permission 类型 文本 文本 文本 日期/时间 数字 为空性 否 否 否 否 否 备注 0:管理员 1:普通用户 名称 部门代号 员工ID 员工姓名 员工性别 员工年龄 进入公司时间 员工密码 字段 departmentId workerId workerName workerSex workerAge workerPsw 表3—15员工表 类型 为空性 数字 数字 文本 文本 数字 文本 否 否 是 是 是 否 否 备注 进行出勤输入的最后验证 intoCompanyTime 日期/时间 名称 上午工作开始时间 上午工作离开时间 下午工作开始时间 下午工作离开时间 字段 mstartTime mleaveTime astartTime aleaveTime 表3—16上班时间表 类型 为空性 日期/时间 日期/时间 日期/时间 日期/时间 否 否 否 否 备注 名称 类型代号 类型名称 字段 typeId typeName
表3—17 上班类型表 类型 为空性 数字 文本 否 是 备注
3.4 代码设计
部门代号为两位数,按照创建时间早晚排行。例如:生产部为第七个创建的部门,所以他的编号为07。
员工ID一共分成6位,前两位表示部门代号,中间两位表示进入部门年份,后两位表示员工编号.例如:娄京兆是2013年生产部招收的第一位员工,那么他的ID就是071301.
上班类型代号为一位数,按照上班类型分为五类,0:正常上班 1:请假 2:出差 3:早退 4:迟到.
第四章 信息系统实施
4.1 源程序
4。1.1 添加用户
Dim m_clsUser As clsUser Private Sub cmdReg_Click() Set m_clsUser = New clsUser
m_clsUser。DoAddUser txtUserName, txtPassword, txtPasswordConfirm, txtRealName, comboPermission, txtRegTime, frmAddUser
End Sub
Private Sub Form_Load()
comboPermission.AddItem \"管理员”, 0 comboPermission.AddItem \"普通用户”, 1 comboPermission。ListIndex = 0 End Sub
Private Sub cmdClose_Click() Unload Me End Sub
4.1.2 修改密码
Dim m_clsUser As clsUser
Private Sub cmdChPwdOk_Click() Set m_clsUser = New clsUser m_clsUser。DoChPwd txtChUser, txtOldPwd, txtNewPwd, txtNewPwdagain, frmChPwd
End Sub
Private Sub Form_Load() End Sub
Private Sub cmdChPwdCancel_Click() Unload Me End Sub
4.1.3出差情况
Dim strSql As String
Dim rs As New Recordset Private Sub cboDept_Click()
cboName.Clear
strSql = \"Select * from TWorker where departmentId=\" & cboDept。ItemData(cboDept.ListIndex) & \" order by workerId\"
Set rs = TransactSQL(strSql) Do While Not rs。EOF
cboName。AddItem (rs.Fields(2).Value) cboName。ItemData(cboName。NewIndex) = rs。Fields(1)。Value rs。MoveNext Loop
rs.Close
cboName。ListIndex = 0 cboName.Refresh End Sub
Private Sub cmdPrint_Click()
Set drChuChai。DataSource = adodcChuChai。Recordset
drChuChai.Sections(1)。Controls(1).Caption = \"请假情况统计表” drChuChai。Sections(2)。Controls(1)。Caption = ”部门名称\" drChuChai.Sections(2)。Controls(2)。Caption = ”员工名称” drChuChai。Sections(2)。Controls(3)。Caption = \"出差时间” drChuChai。Sections(2).Controls(4)。Caption = \"出差地点”
drChuChai。Sections(2).Controls(5)。Caption = \"出差天数” drChuChai.Sections(2)。Controls(6).Caption = ”登记时间” drChuChai.Sections(2)。Controls(7).Caption = \"销差时间\" drChuChai。Sections(2)。Controls(8)。Caption = \"出差备注\" drChuChai.Sections(3).Controls(1).DataField = \"部门名称\"
drChuChai.Sections(3)。Controls(2)。DataField = ”员工名称\" drChuChai.Sections(3).Controls(3).DataField = \"出差时间\" drChuChai。Sections(3)。Controls(4).DataField = \"出差地点\" drChuChai。Sections(3).Controls(5).DataField = \"出差天数” drChuChai.Sections(3)。Controls(6).DataField = \"登记时间”
drChuChai。Sections(3)。Controls(7).DataField = ”销差时间” drChuChai.Sections(3).Controls(8)。DataField = ”出差备注” drChuChai。Show End Sub
Private Sub cmdQuery_Click()
strSql = ”select a.departmentName as 部门名称 ,b。workerName as 员工名称,c.ccTime as 出差时间,c。ccArea as 出差地点,c.ccLength as 出差天数,c。dcTime as 登记时间,c.xcTime as 销差时间,c.ccContent as 出差备注 from TDepartment a, TWorker b,TChuChai c where b。departmentId=” & cboDept.ItemData(cboDept。ListIndex) & \"and b。workerId=\" &
cboName.ItemData(cboName.ListIndex) & \" and a.departmentId=b。departmentId and b.departmentId=c.departmentId and b.workerId =c.workerId and c。ccTime between #” & dtpStartDate & ”# and #\" & dtpEndDate & ”# ”
ConnectToDB
RefushDataGrid adodcChuChai, dgChuChai, strSql DisConnect End Sub
Private Sub Form_Load()
strSql = \"Select * from TDepartment order by departmentId” Set rs = TransactSQL(strSql) Do While Not rs.EOF
cboDept.AddItem (rs.Fields(1).Value)
cboDept.ItemData(cboDept.NewIndex) = rs.Fields(0).Value rs.MoveNext Loop
rs.Close
cboDept.ListIndex = 0 cboDept.Refresh End Sub
4。1。4添加部门
Dim departId As Integer Dim departName As String If txtbmName。Text = ”\" Then
MsgBox \"部门名称不能有空值” Exit Sub Else
departId = Trim(txtaddbmId。Text)
departName = Trim(txtbmName。Text)
strSql = \"insert into TDepartment (departmentId,departmentName)_
& departId & \& departName & ”’)\" TransactSQL (strSql) MsgBox ”添加成功” End If End Sub
Public Sub init() txtbmName.Text = ”\" num = 0
strSql = \"select * from TDepartment order by departmentId\" Set rs = TransactSQL(strSql)
If Not rs.EOF And Not rs.BOF Then rs。MoveLast num = rs(0) num = num + 1
Me。txtaddbmId。Text = CStr(num) Else
values(\" Me.txtaddbmId.Text = 1 End If End Sub
Private Sub cmdreadd_Click() Call init End Sub
Private Sub Form_Load() num = 0
strSql = \"select * from TDepartment order by departmentId” Set rs = TransactSQL(strSql)
If Not rs。EOF And Not rs.BOF Then rs.MoveLast num = rs(0) num = num + 1
Me.txtaddbmId。Text = CStr(num) Else
Me。txtaddbmId。Text = 1 End If End Sub
4.1。5部门管理
Dim strSql As String
Dim RowNumber As Integer Private Sub cmdadd_Click() frmDepAdd。Show vbModal End Sub
Private Sub cmddel_Click()
If ConnectToDB() = False Then MsgBox ”数据库连接失败!” Exit Sub End If
If MsgBox(\"你真的要删除吗\, App.Title) = vbYes Then
strSql = ”delete from TDepartment where departmentId =” & RowNumber
TransactSQL (strSql) DisConnect
MsgBox ”删除成功”, vbInformation, App.Title
strSql = \"select departmentId as 部门编号, departmentName as 部门名称 from TDepartment”
RefreshData adodcDepManage, dgDepManage, strSql Exit Sub End If
End Sub
Private Sub cmdUpdate_Click() If RowNumber = -1 Then
MsgBox \"请先选择要修改的数据!” Exit Sub End If
frmDepUpdate。Show vbModal End Sub
Private Sub Comselect_Click() Dim m_txtdepartID As String Dim m_txtdepartName As String
m_txtdepartID = Trim(txtDepartId。Text)
m_txtdepartName = Trim(txtDepartName.Text)
If (m_txtdepartID = ”\" And m_txtdepartName = \"”) Then
strSql = \"select departmentId as 部门编号, departmentName as 部门名称 from TDepartment\"
ElseIf (m_txtdepartID <> ”\" And m_txtdepartName <〉 ”\") Then
strSql = ”select departmentId as 部门编号, departmentName as 部门名称 \" _
& \" from TDepartment where departmentId =” &
m_txtdepartID & \" and departmentName like ’%” & m_txtdepartName & \"%’\"
ElseIf (m_txtdepartID <〉 \"”) Then
strSql = \"select departmentId as 部门编号, departmentName as 部门名称 from TDepartment where departmentId =\" & m_txtdepartID
ElseIf m_txtdepartName <〉 \"\" Then
strSql = \"select departmentId as 部门编号, departmentName as 部门名称 ” _
& ”from TDepartment where departmentName like '%\" & m_txtdepartName & ”%'\"
End If
RefreshData adodcDepManage, dgDepManage, strSql End Sub
Private Sub dgDepManage_Click() On Error GoTo ShowErr:
If IsNull(dgDepManage.Bookmark) Then RowNumber = -1 Exit Sub Else
RowNumber = dgDepManage.Columns(\"0\")。CellValue(dgDepManage。Bookmark)
End If
frmDepUpdate.SetRowNumber RowNumber ShowErr: Exit Sub
End Sub
Private Sub dgDepManage_DblClick() On Error GoTo ShowErr:
If IsNull(dgDepManage。Bookmark) Then RowNumber = —1 Exit Sub Else
RowNumber = dgDepManage.Columns(\"0\")。CellValue(dgDepManage。Bookmark)
End If
frmDepUpdate。SetRowNumber RowNumber frmDepUpdate.Show vbModal ShowErr: Exit Sub End Sub
Private Sub Form_Load() RowNumber = -1 End Sub
4。1.6更新部门
Option Explicit
Dim strSql As String
Dim rsDep As New ADODB.Recordset Dim m_irownumber As Integer Dim m_iDepartId As Integer Dim m_strDepartName As String Private Sub cmdOk_Click()
If txtDepartName.Text = ”” Then
MsgBox \"登记项目不能有空值” Exit Sub Else
m_iDepartId = CInt(txtDepartId.Text)
m_strDepartName = Trim(txtDepartName.Text)
strSql = \"update TDepartment set departmentName=’” & m_strDepartName & ”’ where departmentId=” & m_iDepartId
If ConnectToDB() = False Then MsgBox \"数据库连接失败!” Exit Sub End If
TransactSQL (strSql) MsgBox \"修改成功” cmdok.Enabled = False
DisConnect
strSql = \"select departmentId as 部门编号, departmentName as 部门名称 from TDepartment\"
RefreshData frmDepManage。adodcDepManage, frmDepManage.dgDepManage, strSql
End If End Sub
Private Sub Form_Load()
m_iDepartId = GetRowNumber If ConnectToDB() = False Then
MsgBox \"数据库连接失败!” Exit Sub End If
strSql = \"select * from TDepartment where departmentId=” & m_iDepartId
Set rsDep = TransactSQL(strSql)
txtDepartId。Text = rsDep。Fields(0) txtDepartId.Refresh
txtDepartName.Text = rsDep.Fields(1) txtDepartName.Refresh
txtDepartId。Enabled = False DisConnect End Sub
Public Function SetRowNumber(ByVal p_irownumber As Integer) m_irownumber = p_irownumber End Function
Public Function GetRowNumber() As Integer GetRowNumber = m_irownumber End Function
4。1。7员工考勤登记
Dim strSql As String
Dim rs As New ADODB。Recordset Dim today As String Dim qjLength As Double Dim qjTime As String Dim djTime As String Dim qjReason As String Dim ccLength As Double Dim ccTime As String Dim dcTime As String Dim ccArea As String
Dim ccContent As String Dim nowtime As String
Private Sub cboDept_Click() cboName。Clear
strSql = \"Select * from TWorker where departmentId=” & cboDept。ItemData(cboDept.ListIndex) & \" order by workerId\"
Set rs = TransactSQL(strSql) Do While Not rs.EOF
cboName。AddItem (rs.Fields(2).Value)
cboName.ItemData(cboName.NewIndex) = rs。Fields(1)。Value rs。MoveNext Loop
rs.Close
cboName。ListIndex = 0 cboName.Refresh End Sub
Private Sub cboYourDepCC_Click() cboYourNameCC.Clear
strSql = \"Select * from TWorker where departmentId=\" &
cboYourDepCC.ItemData(cboYourDepCC。ListIndex) & ” order by workerId”
Set rs = TransactSQL(strSql) Do While Not rs。EOF
cboYourNameCC.AddItem (rs.Fields(2)。Value)
cboYourNameCC。ItemData(cboYourNameCC.NewIndex) = rs.Fields(1)。Value
rs.MoveNext Loop
rs。Close
cboYourNameCC.ListIndex = 0 cboYourNameCC.Refresh End Sub
Private Sub cboYourDepQJ_Click() cboYourNameQJ。Clear
strSql = \"Select * from TWorker where departmentId=” &
cboYourDepQJ.ItemData(cboYourDepQJ.ListIndex) & \" order by workerId”
Set rs = TransactSQL(strSql) Do While Not rs。EOF
cboYourNameQJ.AddItem (rs.Fields(2)。Value) cboYourNameQJ。ItemData(cboYourNameQJ。NewIndex) = rs.Fields(1)。Value
rs.MoveNext Loop
rs.Close
cboYourNameQJ.ListIndex = 0
cboYourNameQJ。Refresh End Sub
Private Sub cmdOk_Click() Dim psw As String
Dim worktype As Integer Dim workerPsw As String Dim pwdCount As Integer pwdCount = 0
Dim departId As Integer Dim workerId As Integer
departId = cboDept。ItemData(cboDept。ListIndex) workerId = cboName.ItemData(cboName.ListIndex)
strSql = \"select workerPsw from TWorker where departmentId=\" & departId & ” and workerId=\" & workerId
Set rs = TransactSQL(strSql) If rs。EOF = False Then
workerPsw = rs.Fields(0) End If
If Frame1。Visible = True Then
If optmstart。Value = True Then
If MsgBox(\"确定要 ” & optmstart.Caption & ”么?”, vbOKCancel) = vbOK Then
psw = InputBox(”请输入员工密码:\", \"输入密码”)
If yanzhengPWD(labwelcome, psw, workerPsw) = False Then
Exit Sub labwelcome.Visible = False Else
Call getTime
If DateDiff(”s\〉= 0 Then
worktype = 6 Else
worktype = 4 End If
If yanzheng(departId, workerId, today) Then
MsgBox \"你已经上班,不必再登记!” Else
strSql = ”insert into
TShangBan (departmentId,workerId,workday,mstartTime,workmsType) \" & _
”values(” & departId & ”,\" & workerId & \#\" & today & \"# ,#” & nowtime & \"#,” & worktype & ”)”
TransactSQL (strSql) cmdok.Enabled = False
labwelcome。Visible = True labwelcome.Caption = ”欢迎 \" & cboName.Text & optmstart.Caption & \",祝你今天上午工作愉快!”
MsgBox ”登记成功!\" End If End If Else
MsgBox ”不登记\" End If Else
If MsgBox(”确定要 \" & optmleave。Caption & \"么?\", vbOKCancel) = vbOK Then
psw = InputBox(\"请输入员工密码:”, ”输入密码”)
If yanzhengPWD(labwelcome, psw, workerPsw) = False Then
Exit Sub
labwelcome.Visible = False Else
Call getTime
If DateDiff(”s\) <= 0 Then
worktype = 6 Else
worktype = 3 End If
If yanzheng(departId, workerId, today) Then
If mlrecord(departId, workerId, today) Then
strSql = \"update
TShangBan set workmlType =\" & worktype & ”, mleaveTime =’” & nowtime & ”' where departmentId =” & departId & ” and workerId =\" & workerId & \" and workday=#” & today & \"#”
TransactSQL (strSql)
cmdok.Enabled = False
labwelcome.Visible = True
labwelcome。Caption = ”” & cboName.Text & optmleave.Caption & ”,祝你生活幸福!”
MsgBox \"登记成功!”
Else
MsgBox \"你已经下班,不必再登记!\"
End If Else
MsgBox ”对不起,你还没有上班,请先上班!\请遵守公司上下班秩序\"
End If
End If Else
MsgBox \"不登记” End If End If Else
If optastart(0)。Value = True Then
If MsgBox(\"确定要 \" & optastart(0).Caption & \"么?”, vbOKCancel) = vbOK Then
psw = InputBox(”请输入员工密码:”, \"输入密码”)
If yanzhengPWD(labwelcome, psw, workerPsw) = False Then
Exit Sub
labwelcome.Visible = False Else
Call getTime
If DateDiff(\"s”, nowtime, astart) 〉= 0 Then
worktype = 6 Else
worktype = 4 End If
If yanzheng(departId, workerId, today) Then
If asrecord(departId, workerId, today) Then
strSql = ”update TShangBan set workasType =\" & worktype & ”, astartTime ='\" & nowtime & \"' where departmentId =\" & departId & \" and workerId =\" & workerId & ” and workday=#\" & today & \"#\"
TransactSQL (strSql)
cmdok.Enabled = False
labwelcome。Visible = True
labwelcome.Caption = \"” & cboName.Text & optastart(0)。Caption & \祝你今天下午工作愉快!\"
MsgBox \"登记成功!\"
Else
MsgBox \"你已经上班,不必再登记!\"
End If
Else
strSql = \"insert into
TShangBan (departmentId,workerId,workday,astartTime,workasType) \" & _
\"values(\" & departId & ”,\" & workerId & \& today & \"','” & nowtime & \"’,” & worktype & ”)”
TransactSQL (strSql) cmdok.Enabled = False
labwelcome。Visible = True labwelcome。Caption = ”欢迎 \" & cboName.Text & optastart(0)。Caption & ”,祝你今天下午工作愉快!”
MsgBox ”登记成功!\" End If End If Else
MsgBox \"不登记\" End If Else
If MsgBox(\"确定要 \" & optaleave(1).Caption & ”么?”, vbOKCancel) = vbOK Then
psw = InputBox(”请输入员工密码:”, ”输入密码\")
If yanzhengPWD(labwelcome, psw, workerPsw) = False Then Exit Sub
labwelcome。Visible = False Else
Call getTime
If DateDiff(”s\", nowtime, aleave) <= 0 Then
worktype = 6 Else
worktype = 3
End If
If yanzheng(departId, workerId, today) Then
If alrecord(departId, workerId, today) Then
strSql = \"update TShangBan set workalType =\" & worktype & \& nowtime & \"' where departmentId =\" & departId & \" and workerId =\" & workerId & ” and workday=#\" & today & ”#\"
TransactSQL (strSql) cmdok.Enabled = False
labwelcome.Visible = True
labwelcome。Caption = ”\" & cboName.Text & optaleave(1).Caption & \祝你生活幸福!”
MsgBox \"登记成功!\"
Else
MsgBox ”你已经下班,不必再登记!\"
End If Else
MsgBox \"对不起,你还没有上班,请先上班!\", vbOKOnly + vbExclamation, \"请遵守公司上下班秩序\"
End If End If Else
MsgBox ”不登记” End If End If End If End Sub
Private Sub cmdOKCC_Click() Dim departId As Integer Dim workerId As Integer
departId = cboYourDepCC。ItemData(cboYourDepCC.ListIndex) workerId = cboYourNameCC。ItemData(cboYourNameCC。ListIndex) If txtccTime.Text = ”” Or txtccLength.Text = \"\" Or txtccArea.Text = ”\" Or txtccContent。Text = \"\" Then
MsgBox \"登记项目不能有空值” Exit Sub
ElseIf IsDate(txtccTime.Text) = False Then MsgBox ”时间格式不对!\"
yTimeCC.Visible = True
yTimeCC。Caption = \"时间格式:” & Now() Exit Sub Else
yTimeCC。Caption = \"” yTimeCC.Visible = False
ccArea = Trim(txtccArea.Text)
ccContent = Trim(txtccContent。Text)
strSql = \"insert into TChuChai (departmentId,workerId,ccTime,ccArea,ccLength,dcTime,ccContent) values(” _
& departId & \",\" & workerId & ”,’” & ccTime & \"','” & ccArea & ”’,\" & ccLength & \& dcTime & \"’,'” & ccContent & \"’)\"
TransactSQL (strSql) MsgBox \"登记成功\" End If End Sub
Private Sub cmdOKQJ_Click() Dim departId As Integer Dim workerId As Integer
departId = cboYourDepQJ.ItemData(cboYourDepQJ.ListIndex)
workerId = cboYourNameQJ.ItemData(cboYourNameQJ。ListIndex) If txtqjTime。Text = \"\" Or txtqjLength。Text = \"” Or txtqjReason。Text = \"\" Then MsgBox ”登记项目不能有空值” Exit Sub
ElseIf IsDate(txtqjTime) = False Then MsgBox \"时间格式不对!” yTime.Visible = True
yTime。Caption = \"时间格式:\" & Now() Exit Sub Else
yTime.Visible = False
qjReason = Trim(txtqjReason.Text)
strSql = \"insert into TQingJia (departmentId,workerId,qjTime,qjLength,djTime,qjReason) values(” _
& departId & ”,” & workerId & ”,’\" & qjTime & ”’,\" & qjLength & ”,'” & djTime & ”’,'” & qjReason & ”’)\"
TransactSQL (strSql) MsgBox \"登记成功\"
End If End Sub
Private Sub cmdokUserLogin_Click() Dim m_clsUser As clsUser
Dim p_enumUserLogin As USERLOGIN Set m_clsUser = New clsUser
p_enumUserLogin = m_clsUser.DoUserLogin(Trim(txtUserName.Text), Trim(txtPassword。Text), frmUserLogin)
If p_enumUserLogin = LOGERROR Then Exit Sub
ElseIf p_enumUserLogin = LOGSUPER Then Unload frmNormalUserMain MDIfrmAdminMain.Show
ElseIf p_enumUserLogin = LOGNORMAL Then Unload MDIfrmAdminMain frmNormalUserMain.Show End If End Sub
Private Sub Form_Load() Dim nowtime As String labwelcome.Visible = False nowtime = Time()
If Hour(nowtime) < 13 Then Frame1.Visible = True Frame2。Visible = False Else
Frame1.Visible = False Frame2。Visible = True End If
strSql = ”Select * from TDepartment order by departmentId” Set rs = TransactSQL(strSql) Do While Not rs.EOF
cboDept.AddItem (rs。Fields(1).Value)
cboDept.ItemData(cboDept.NewIndex) = rs.Fields(0)。Value cboYourDepQJ。AddItem (rs。Fields(1)。Value) cboYourDepQJ.ItemData(cboYourDepQJ.NewIndex) = rs。Fields(0)。Value
cboYourDepCC。AddItem (rs.Fields(1)。Value)
cboYourDepCC。ItemData(cboYourDepCC。NewIndex) = rs.Fields(0).Value
rs.MoveNext Loop
rs.Close
cboDept.ListIndex = 0
cboYourDepQJ.ListIndex = 0 cboYourDepCC.ListIndex = 0 cboDept。Refresh
cboYourDepQJ。Refresh cboYourDepCC。Refresh txtqjTime。Text = Now()
labdjTime。Caption = ”\" yTime。Visible = False txtccTime.Text = Now() labdcTime。Caption = \"” yTimeCC.Caption = \"\" yTimeCC。Visible = False End Sub
Private Sub Form_Unload(Cancel As Integer) Unload frmUserLogin End Sub
Public Function mlrecord(cdepartId As Integer, cworkerId As Integer, ctoday As String) As Boolean
strSql = ”select workmlType from TShangBan where departmentId =” & cdepartId & \" and workerId =” & cworkerId & \" and workday=#\" & ctoday & ”#\"
Set rs = TransactSQL(strSql)
If rs.Fields(0)。Value = 0 Then mlrecord = True Else
mlrecord = False End If rs。Close End Function
Public Function asrecord(cdepartId As Integer, cworkerId As Integer, ctoday As String) As Boolean
strSql = \"select workasType from TShangBan where departmentId =” &
cdepartId & \" and workerId =\" & cworkerId & \" and workday=#\" & ctoday & \"#”
Set rs = TransactSQL(strSql)
If rs.Fields(0).Value = 0 Then asrecord = True Else
asrecord = False End If rs。Close End Function
Public Function alrecord(cdepartId As Integer, cworkerId As Integer, ctoday As String) As Boolean
strSql = \"select workalType from TShangBan where departmentId =\" & cdepartId & ” and workerId =\" & cworkerId & \" and workday=#\" & ctoday & ”#\"
Set rs = TransactSQL(strSql)
If rs。Fields(0).Value = 0 Then
alrecord = True Else
alrecord = False End If rs.Close End Function
Public Sub getTime()
strSql = \"Select * from TWorkTime” Set rs = TransactSQL(strSql) If Not rs.EOF Then
mstart = rs.Fields(0)
mleave = rs。Fields(1) astart = rs.Fields(2) aleave = rs.Fields(3) End If
nowtime = Time() today = Date End Sub
Public Function yanzheng(cdepartId As Integer, cworkerId As Integer, ctoday As String) As Boolean
strSql = \"select * from TShangBan where departmentId =” & cdepartId & ” and workerId =” & cworkerId & \" and workday=#” & ctoday & \"#\"
Set rs = TransactSQL(strSql) If rs.EOF = False Then yanzheng = True Else
yanzheng = False End If rs.Close End Function
Public Function yanzhengPWD(ByVal labwelcome As Label, ByVal psw As String, workerPsw As String) As Boolean
Do While psw 〈> workerPsw
labwelcome.Visible = True
labwelcome.Caption = \"你的身份被怀疑啦,请再次输入你的员工密码!”
pwdCount = pwdCount + 1 If pwdCount = 3 Then
MsgBox \"你已经是三次输错,系统将关闭啦!\+ vbExclamation, \"通知\"
yanzhengPWD = False Exit Function End If
psw = InputBox(\"请输入员工密码:\输入密码”) Loop
yanzhengPWD = True End Function
Private Sub tabDJ_Click(PreviousTab As Integer) cmdok.Enabled = True End Sub
Private Sub txtccLength_Change() labdcTime。Caption = \"” ccTime = txtccTime。Text If txtccLength.Text = ”\" Then MsgBox ” 请输入请假时长!\" ElseIf Asc(txtccLength。Text) 〈 48 Or Asc(txtccLength.Text) 〉 57 Then MsgBox \"请输入数字!” txtccLength。Text = ”” Exit Sub Else
ccLength = txtccLength.Text End If
If IsDate(ccTime) = False Then MsgBox \"时间格式不对!\" yTimeCC.Visible = True
yTimeCC。Caption = ”时间格式:” & Now() txtccLength = \"\" Exit Sub Else
yTimeCC.Caption = \"\" yTimeCC.Visible = False
dcTime = DateAdd(\"d”, ccLength, ccTime) End If
labdcTime。Caption = dcTime End Sub
Private Sub txtqjLength_Change() labdjTime.Caption = \"” qjTime = txtqjTime。Text If txtqjLength.Text = \"\" Then MsgBox \" 请输入请假时长!\"
ElseIf Asc(txtqjLength.Text) 〈 48 Or Asc(txtqjLength。Text) > 57 Then MsgBox \"请输入数字!\" txtqjLength.Text = ”” Exit Sub Else
qjLength = txtqjLength。Text End If
If IsDate(qjTime) = False Then MsgBox \"时间格式不对!\" yTime.Visible = True
yTime.Caption = \"时间格式:” & Now() txtqjLength = \"\" Exit Sub Else
yTime。Caption = \"\" yTime.Visible = False
djTime = DateAdd(\"h\", qjLength, qjTime) End If
labdjTime.Caption = djTime End Sub
4.1。8请假情况
Dim strSql As String
Dim rs As New Recordset Private Sub cboDept_Click() cboName。Clear
strSql = ”Select * from TWorker where departmentId=” & cboDept。ItemData(cboDept.ListIndex) & \" order by workerId”
Set rs = TransactSQL(strSql) Do While Not rs.EOF
cboName。AddItem (rs。Fields(2)。Value)
cboName。ItemData(cboName.NewIndex) = rs.Fields(1).Value rs.MoveNext Loop
rs。Close
cboName。ListIndex = 0 cboName.Refresh End Sub
Private Sub cmdPrint_Click()
Set drQingJia。DataSource = adodcQingJia。Recordset
drQingJia。Sections(1)。Controls(1).Caption = \"请假情况统计表\" drQingJia。Sections(2).Controls(1)。Caption = \"部门名称” drQingJia.Sections(2)。Controls(2)。Caption = \"员工名称\" drQingJia。Sections(2).Controls(3).Caption = ”请假时间\" drQingJia。Sections(2).Controls(4).Caption = \"请假天数\" drQingJia.Sections(2).Controls(5)。Caption = \"登记时间”
drQingJia.Sections(2)。Controls(6)。Caption = ”请假原因” drQingJia.Sections(2)。Controls(7)。Caption = ”销假时间\"
drQingJia。Sections(3)。Controls(1)。DataField = ”部门名称” drQingJia.Sections(3)。Controls(2)。DataField = \"员工名称\"
drQingJia。Sections(3).Controls(3).DataField = ”请假时间\" drQingJia.Sections(3)。Controls(4)。DataField = ”请假天数\" drQingJia.Sections(3).Controls(5).DataField = \"登记时间” drQingJia.Sections(3)。Controls(6).DataField = ”请假原因\" drQingJia。Sections(3)。Controls(7).DataField = ”销假时间” drQingJia.Show End Sub
Private Sub cmdQuery_Click()
strSql = ”select a。departmentName as 部门名称 ,b.workerName as 员工名称,c。qjTime as 请假时间,c.qjLength as 请假天数,c。djTime as 登记时间,c。qjReason as 请假原因,c.xjTime as 销假时间 from TDepartment a, TWorker b,TQingjia c where b.departmentId=” & cboDept。ItemData(cboDept.ListIndex) & \"and b。workerId=\" & cboName。ItemData(cboName.ListIndex) & \" and a.departmentId=b。departmentId and b.departmentId=c。departmentId and b.workerId =c.workerId and c.qjtime between #” & dtpStartDate & ”# and #\" & dtpEndDate & ”# \"
ConnectToDB
RefushDataGrid adodcQingJia, dgQingJia, strSql DisConnect End Sub
Private Sub Form_Load()
strSql = \"Select * from TDepartment order by departmentId” Set rs = TransactSQL(strSql) Do While Not rs。EOF
cboDept.AddItem (rs。Fields(1).Value)
cboDept。ItemData(cboDept。NewIndex) = rs.Fields(0)。Value rs.MoveNext Loop
rs.Close
cboDept。ListIndex = 0 cboDept.Refresh End Sub
4。1。9上班时间设置
Private Sub cmdOk_Click() Dim strSql As String
If IsDate(Me。mstartTime.Text) = False Or Me.mstartTime。Text = \"\" Then MsgBox \"请正确地输入时间!”, vbOKOnly + vbExclamation, \"警告!\"
Me。mstartTime。SetFocus
ElseIf IsDate(Me.mleaveTime.Text) = False Or Me。mleaveTime。Text = ”\" Then
MsgBox ”请正确地输入时间!”, vbOKOnly + vbExclamation, \"警告!\"
Me.mleaveTime.SetFocus ElseIf IsDate(Me。astartTime。Text) = False Or Me.aleaveTime.Text = \"” Then MsgBox \"请正确地输入时间!\", vbOKOnly + vbExclamation, ”警告!” Me。astartTime.SetFocus
ElseIf IsDate(Me.aleaveTime。Text) = False Or Me。aleaveTime.Text = ”” Then
MsgBox ”请正确地输入时间!\", vbOKOnly + vbExclamation, ”警告!\"
Me.aleaveTime。SetFocus Else
strSql = \"delete from TWorkTime” TransactSQL (strSql)
strSql = \"Insert into TWorkTime ( mstartTime,mleaveTime,astartTime,aleaveTime) Values ('” _
& mstartTime。Text & \"’,'\" & mleaveTime.Text & \"',’\" & astartTime.Text & ”','\" & aleaveTime。Text & \" ')\"
TransactSQL (strSql)
MsgBox \"时间已经设置!”, vbOKOnly + vbExclamation, \"设置成功!” Unload Me End If
DisConnect End Sub
Private Sub Form_Load() Dim sql As String
Dim rs1 As New ADODB。Recordset If ConnectToDB() = False Then
MsgBox \"数据库连接失败!\" Else
sql = \"select * from TWorkTime\" Set rs1 = QueryData(sql) If rs1.EOF = False Then
Me.mstartTime。Text = rs1。Fields(0) Me。mleaveTime。Text = rs1。Fields(1) Me。astartTime.Text = rs1.Fields(2) Me.aleaveTime.Text = rs1。Fields(3) End If End If
DisConnect End Sub
4.1.10上班情况
Dim strSql As String
Dim rs As New Recordset
Private Sub cboDept_Click() cboName。Clear
strSql = ”Select * from TWorker where departmentId=\" & cboDept.ItemData(cboDept。ListIndex) & \" order by workerId\"
Set rs = TransactSQL(strSql) Do While Not rs.EOF
cboName.AddItem (rs。Fields(2).Value)
cboName。ItemData(cboName。NewIndex) = rs。Fields(1)。Value
rs.MoveNext Loop
rs.Close
cboName。ListIndex = 0 cboName。Refresh End Sub
Private Sub cmdPrint_Click()
Set drShangBan。DataSource = adodcShangBan。Recordset
drShangBan.Sections(1)。Controls(1)。Caption = \"上班情况统计表\" drShangBan.Sections(2)。Controls(1).Caption = \"部门名称” drShangBan.Sections(2).Controls(2)。Caption = ”员工名称\" drShangBan。Sections(2)。Controls(3)。Caption = ”工作日”
drShangBan.Sections(2)。Controls(4)。Caption = ”上午上班时间\" drShangBan.Sections(2)。Controls(5)。Caption = \"上午下班时间\" drShangBan。Sections(2).Controls(6).Caption = \"下午上班时间” drShangBan。Sections(2)。Controls(7).Caption = ”下午下班时间\" drShangBan。Sections(2)。Controls(8)。Caption = \"上班类型 ” drShangBan。Sections(3)。Controls(1)。DataField = \"部门名称” drShangBan。Sections(3)。Controls(2)。DataField = ”员工名称\" drShangBan.Sections(3)。Controls(3)。DataField = \"工作日”
drShangBan。Sections(3).Controls(4)。DataField = ”上午上班时间\" drShangBan。Sections(3).Controls(5)。DataField = \"上午下班时间” drShangBan。Sections(3).Controls(6).DataField = \"下午上班时间” drShangBan.Sections(3)。Controls(7).DataField = \"下午下班时间\" drShangBan。Sections(3).Controls(8).DataField = \"上班类型” drShangBan.Show End Sub
Private Sub cmdQuery_Click()
strSql = \"select a。departmentName as 部门名称 ,b.workerName as 员工名称,c。workday as 工作日,c.mstartTime as 上午上班时间,c.mleaveTime as 上午下班时间,c.astartTime as 下午上班时间,c.aleaveTime as 下午下班时
间,c.workmsType as 上班类型 from TDepartment a, TWorker b,TShangBan c where b.departmentId=\" & cboDept。ItemData(cboDept.ListIndex) & ”and b.workerId=” & cboName.ItemData(cboName。ListIndex) & ” and a。
departmentId=b。departmentId and b.departmentId=c。departmentId and b.workerId
=c.workerId and c。workday between #\" & dtpStartDate & \"# and #” & dtpEndDate & \"# \"
ConnectToDB
RefushDataGrid adodcShangBan, dgShangBan, strSql DisConnect End Sub
Private Sub Form_Load()
strSql = ”Select * from TDepartment order by departmentId” Set rs = TransactSQL(strSql) Do While Not rs.EOF
cboDept.AddItem (rs.Fields(1).Value)
cboDept.ItemData(cboDept.NewIndex) = rs。Fields(0)。Value rs.MoveNext Loop
rs.Close
cboDept.ListIndex = 0 cboDept.Refresh End Sub
4。1。11用户登入
Dim m_clsUser As clsUser
Dim p_enumUserLogin As USERLOGIN Private Sub cmdOk_Click()
Set m_clsUser = New clsUser
p_enumUserLogin = m_clsUser.DoUserLogin(Trim(txtUserName.Text), Trim(txtPassword.Text), frmUserLogin)
If p_enumUserLogin = LOGERROR Then Exit Sub
ElseIf p_enumUserLogin = LOGSUPER Then Unload frmNormalUserMain MDIfrmAdminMain.Show
ElseIf p_enumUserLogin = LOGNORMAL Then Unload MDIfrmAdminMain frmNormalUserMain。Show End If End Sub
Private Sub cmdCancel_Click() Unload Me End Sub
4。1。12添加员工
Dim strSql As String
Dim rs As New ADODB.Recordset Dim num As Integer
Private Sub cmdadd_Click() Dim departId As Integer Dim workerId As Integer Dim workersex As String Dim workerage As Integer
Dim intocompanytime As String Dim psw As String yTime.Visible = False If txtworkerAge。Text = ”\" Or txtintocompanyTime。Text = \"\" Or txtworkerPsw。Text = ”\" Or txtworkerName.Text = ”\" Then
MsgBox \"登记项目不能有空值” Exit Sub
ElseIf IsDate(txtintocompanyTime.Text) = False Then MsgBox \"时间格式不对!\" yTime.Visible = True
yTime。Caption = ”时间格式:\" & Date Exit Sub Else
yTime.Visible = False
departId = cboDept.ItemData(cboDept。ListIndex) workerId = CInt(txtworkerId.Text)
workerName = Trim(txtworkerName。Text) workersex = Trim(cbogender。Text)
workerage = CInt(Trim(txtworkerAge.Text))
intocompanytime = Trim(txtintocompanyTime。Text) psw = Trim(txtworkerPsw。Text) sql = \"insert into TWorker
(departmentId,workerId,workerName,workerSex,workerAge,intoCompanyTime,workerPsw) values(\" _
& departId & ”,” & workerId & \& workerName & ”','” & workersex & ”’,\" & workerage & \& intocompanytime & ”',’\" & psw & ”')”
TransactSQL (sql) MsgBox ”添加成功\" End If End Sub
Private Sub cmdreadd_Click() Call init
End Sub
Private Sub Form_Load() num = 0
strSql = ”Select * from TDepartment order by departmentId\" Set rs = TransactSQL(strSql) Do While Not rs.EOF
cboDept.AddItem (rs。Fields(\"departmentName\")。Value) cboDept。ItemData(cboDept。NewIndex) = rs。Fields(\"departmentId”)。Value
rs。MoveNext Loop
rs。Close
cboDept。ListIndex = 0 cboDept。Refresh
txtintocompanyTime。Text = Date With cbogender
.AddItem (\"男”) .AddItem (”女”) End With
cbogender。ListIndex = 0
strSql = ”select * from TWorker where departmentId= ” & cboDept。ItemData(cboDept。ListIndex) & ” order by workerId”
Set rs = TransactSQL(strSql)
If Not rs。EOF And Not rs。BOF Then rs.MoveLast
num = rs(”workerId\") num = num + 1
Me.txtworkerId.Text = CStr(num) Else
Me。txtworkerId。Text = 1 End If DisConnect End Sub
Private Sub cboDept_Click() Call init End Sub
Public Sub init()
txtworkerId。Text = ”\" txtworkerName。Text = ”\" txtworkerAge。Text = \"\" txtworkerPsw。Text = \"” num = 0
strSql = ”select * from TWorker where departmentId= \" & cboDept。ItemData(cboDept.ListIndex) & \" order by workerId\"
Set rs = TransactSQL(strSql)
If Not rs。EOF And Not rs.BOF Then rs。MoveLast num = rs(1) num = num + 1
Me.txtworkerId.Text = CStr(num) Else
Me.txtworkerId。Text = 1 End If
txtintocompanyTime.Text = Date DisConnect End Sub
4。1。13员工管理
Option Explicit
Dim strSql As String
Dim rsWorker As New ADODB。Recordset Dim RowNumber As Integer
Dim m_iDepartmentID As Integer Dim m_iworkerID As Integer Private Sub cmdadd_Click()
frmWorkerAdd.Show vbModal End Sub
Private Sub cmddelete_Click() If RowNumber = —1 Then
MsgBox ”请先选择要删除的数据!\" Exit Sub End If
If MsgBox(\"你真的要删除吗”, vbInformation + vbYesNo, App。Title) = vbYes Then
strSql = \"delete from TWorker where departmentId =” & GetDepartmentID & ” and workerId=\" & GetWorkerID
TransactSQL (strSql)
strSql = ”select a.departmentId as 部门编号, departmentName as 部门,workerId as 员工编号,workerName as 姓名,workerSex as 性别,workerAge as 年龄,intoCompanyTime as 进公司时间,workerPsw as 密码 \" _
& ” from TWorker as a , TDepartment as b where a。departmentId = b。departmentId and a.departmentId =\" & GetDepartmentID
RefreshData adodcWorker, dgWorker, strSql DisConnect End If End Sub
Private Sub cmdQuery_Click()
Dim m_txtWorkerName As String Dim m_txtWorkerId As Integer Dim m_cboDeptId As Integer
m_txtWorkerName = Trim(txtworkerName。Text) If Trim((txtworkerId。Text) <> \"”) Then
m_txtWorkerId = CInt(Trim(txtworkerId。Text)) End If
m_cboDeptId = cboDept。ItemData(cboDept.ListIndex)
If (txtworkerId。Text = \"” And txtworkerName。Text = ”\") Then strSql = \"select a.departmentId as 部门编号, departmentName as 部门,workerId as 员工编号,workerName as 姓名,workerSex as 性别,workerAge as 年龄,intoCompanyTime as 进公司时间,workerPsw as 密码 \" _
& \" from TWorker as a , TDepartment as b where a.departmentId = b.departmentId and a.departmentId =” & m_cboDeptId
ElseIf (txtworkerId.Text 〈〉 ”” And txtworkerName。Text 〈> \"\") Then
strSql = ”select a。departmentId as 部门编号, departmentName as 部门,workerId as 员工编号,workerName as 姓名,workerSex as 性别,workerAge as 年龄,intoCompanyTime as 进公司时间,workerPsw as 密码 ” _
& \" from TWorker as a , TDepartment as b where a.departmentId = b。departmentId and a.departmentId =\" & m_cboDeptId & \" and workerId=” & m_txtWorkerId & \" and workerName like ’%\" & m_txtWorkerName & ”%’”
ElseIf (txtworkerId。Text 〈〉 ”\") Then
strSql = \"select a。departmentId as 部门编号, departmentName as 部门,workerId as 员工编号,workerName as 姓名,workerSex as 性别,workerAge as 年龄,intoCompanyTime as 进公司时间,workerPsw as 密码 \" _
& ” from TWorker as a , TDepartment as b where a.departmentId = b.departmentId and a.departmentId =\" & m_cboDeptId & \" and workerId=\" & m_txtWorkerId
ElseIf txtworkerName.Text <> ”” Then
strSql = \"select a。departmentId as 部门编号, departmentName as 部门,workerId as 员工编号,workerName as 姓名,workerSex as 性别,workerAge as 年龄,intoCompanyTime as 进公司时间,workerPsw as 密码 ” _
& \" from TWorker as a , TDepartment as b where a。departmentId = b.departmentId and a.departmentId =” & m_cboDeptId & ” and workerName like '%\" & m_txtWorkerName & \"%'”
End If
RefreshData adodcWorker, dgWorker, strSql End Sub
Private Sub cmdUpdate_Click() If RowNumber = -1 Then
MsgBox \"请先选择要修改的数据!\"
Exit Sub End If
frmWorkerUpdate。Show vbModal End Sub
Private Sub dgWorker_Click() On Error GoTo ShowErr:
If IsNull(dgWorker。Bookmark) Then RowNumber = -1 Exit Sub Else
RowNumber = dgWorker。Columns(\"0\").CellValue(dgWorker。Bookmark)
End If
frmWorkerUpdate.SetDepartmentID RowNumber Me。SetDepartmentID RowNumber
RowNumber = dgWorker.Columns(\"2”).CellValue(dgWorker.Bookmark)
frmWorkerUpdate.SetWorkerID RowNumber Me。SetWorkerID RowNumber ShowErr: Exit Sub End Sub
Private Sub dgWorker_DblClick() On Error GoTo ShowErr: If RowNumber = —1 Then
MsgBox ”请先选择要修改的数据!\" Exit Sub End If
If IsNull(dgWorker.Bookmark) Then RowNumber = —1 Exit Sub Else
RowNumber = dgWorker.Columns(”0”).CellValue(dgWorker。Bookmark)
End If
frmWorkerUpdate.SetDepartmentID RowNumber Me。SetDepartmentID RowNumber RowNumber =
dgWorker.Columns(”2\").CellValue(dgWorker.Bookmark)
frmWorkerUpdate.SetWorkerID RowNumber Me。SetWorkerID RowNumber frmWorkerUpdate.Show vbModal ShowErr: Exit Sub
End Sub
Private Sub Form_Load()
strSql = \"Select * from TDepartment order by departmentId” Set rsWorker = TransactSQL(strSql) Do While Not rsWorker。EOF
cboDept。AddItem (rsWorker.Fields(”departmentName”)。Value) cboDept。ItemData(cboDept.NewIndex) = rsWorker。Fields(”departmentId\")。Value
rsWorker.MoveNext Loop
rsWorker。Close DisConnect
cboDept.ListIndex = 0 cboDept。Refresh RowNumber = -1 End Sub
Public Function SetDepartmentID(ByVal p_iDepartmentID As Integer) m_iDepartmentID = p_iDepartmentID End Function
Public Function GetDepartmentID() As Integer GetDepartmentID = m_iDepartmentID End Function
Public Function SetWorkerID(ByVal p_iworkerID As Integer) m_iworkerID = p_iworkerID End Function
Public Function GetWorkerID() As Integer GetWorkerID = m_iworkerID End Function
4.1.14修改员工
Dim departId As Integer
Dim m_iDepartmentID As Integer Dim m_iworkerID As Integer Dim strSql As String
Dim rs As New ADODB.Recordset Private Sub cmdUpdate_Click() Dim workerId As Integer Dim workersex As String Dim workerage As Integer
Dim intocompanytime As String Dim psw As String yTime。Visible = False
If txtworkerAge.Text = \"” Or txtintocompanyTime.Text = \"” Or txtworkerPsw。Text = \"” Or txtworkerName。Text = ”\" Then
MsgBox ”登记项目不能有空值\" Exit Sub
ElseIf IsDate(txtintocompanyTime。Text) = False Then MsgBox ”时间格式不对!” yTime。Visible = True
yTime.Caption = ”时间格式:” & Date Exit Sub Else
yTime.Visible = False
workerId = CInt(txtworkerId。Text)
workerName = Trim(txtworkerName。Text) workersex = Trim(cbogender.Text)
workerage = CInt(Trim(txtworkerAge。Text))
intocompanytime = Trim(txtintocompanyTime。Text) psw = Trim(txtworkerPsw.Text)
strSql = \"update TWorker set workerName=’\" & workerName & \"',workerSex='” & workersex & \"',workerAge=\" & workerage & \" ,
intoCompanyTime=’” & intocompanytime & \"’,workerPsw='\" & psw & \"’ where departmentId=\" & departId & \" and workerId=” & workerId
TransactSQL (sql) MsgBox \"修改成功\"
cmdupdate。Enabled = False cmdCancel.SetFocus End If
DisConnect End Sub
Private Sub cmdCancel_Click() Unload Me End Sub
Private Sub cmdreadd_Click() Call init End Sub
Private Sub Form_Load() With cbogender
。AddItem (\"男\") 。AddItem (”女”) End With
strSql = \"select * from TWorker where departmentID=\" & GetDepartmentID & \" and workerId=” & GetWorkerID
If ConnectToDB() = False Then MsgBox \"数据库连接失败!” Exit Sub
End If
Set rs = TransactSQL(strSql)
If rs。Fields(”workerSex\")。Value = \"男\" Then cbogender.ListIndex = 0 Else
cbogender.ListIndex = 1 End If
If (rs。Fields(\"workerName”) = Null) Then txtworkerName.Text = \"\" Else
txtworkerName.Text = rs。Fields(\"workerName\")。Value End If
If (rs。Fields(\"workerAge\")。Value = Null) Then txtworkerAge。Text = ”\" Else
txtworkerAge.Text = rs。Fields(”workerAge”).Value End If
If (rs.Fields(\"intoCompanyTime\") = Null) Then txtintocompanyTime。Text = ”” Else
txtintocompanyTime。Text = rs。Fields(”intoCompanyTime”)。Value End If
Me.txtworkerId.Text = rs。Fields(\"workerId\")。Value If (rs。Fields(\"workerPsw”)。Value = Null) Then txtworkerPsw.Text = ”” Else
txtworkerPsw.Text = rs.Fields(\"workerPsw\")。Value End If
strSql = \"select departmentName from TDepartment where departmentId=\" & GetDepartmentID
Set rs = TransactSQL(strSql) cboDept.AddItem (rs.Fields(0)) cboDept。ListIndex = 0 cboDept.Refresh
cboDept.Enabled = False DisConnect End Sub
Public Function SetDepartmentID(ByVal p_iDepartmentID As Integer) m_iDepartmentID = p_iDepartmentID End Function
Public Function GetDepartmentID() As Integer GetDepartmentID = m_iDepartmentID End Function
Public Function SetWorkerID(ByVal p_iworkerID As Integer)
m_iworkerID = p_iworkerID End Function
Public Function GetWorkerID() As Integer GetWorkerID = m_iworkerID End Function
4。1。15主界面
Private Sub MDIForm_Load()
Dim X0 As Long Dim Y0 As Long X0 = Screen.Width Y0 = Screen。Height
X0 = (X0 — Me.Width) / 2 Y0 = (Y0 - Me.Height) / 2 Me。Move X0, Y0 End Sub
Private Sub MDIForm_Unload(Cancel As Integer) Unload frmUserLogin End Sub
Private Sub mnAbout_Click() frmAbout。Show End Sub
Private Sub mnAddUser_Click() frmAddUser。Show vbModal End Sub
Private Sub mnBaoXiu_Click() End Sub
Private Sub mnBaoXiuTg_Click() End Sub
Private Sub mnCascade_Click()
MDIfrmAdminMain.Arrange vbCascade End Sub
Private Sub mnChPwd_Click() frmChPwd.Show vbModal End Sub
Private Sub mnClient_Click() End Sub
Private Sub mnEmp_Click() End Sub
Private Sub mnEquipment_Click() End Sub
Private Sub mnEquipTg_Click() End Sub
Private Sub mnChuChai_Click() frmChuChai.Show End Sub
Private Sub mnDepManager_Click() frmDepManage。Show End Sub
Private Sub mnExit_Click() Unload Me
Unload frmUserLogin End Sub
Private Sub mnFee_Click() End Sub
Private Sub mnFeeTg_Click() End Sub
Private Sub mnHouse_Click() End Sub
Private Sub mnHorizontal_Click()
MDIfrmAdminMain。Arrange vbTileHorizontal End Sub
Private Sub mnLogin_Click() Unload Me
frmUserLogin。Show vbModal End Sub
Private Sub mnPark_Click() End Sub
Private Sub mnRepair_Click() End Sub
Private Sub mnRepairTg_Click() End Sub
Private Sub mnTousu_Click() End Sub
Private Sub mnTouSuTg_Click() End Sub
Private Sub mnYibiao_Click() End Sub
Private Sub mnYiBiaoTg_Click() End Sub
Private Sub mnQingJia_Click() frmQingJia。Show End Sub
Private Sub mnSetTime_Click() frmSetTime.Show End Sub
Private Sub mnShangBan_Click()
frmShangBan.Show End Sub
Private Sub mnVertical_Click()
MDIfrmAdminMain。Arrange vbTileVertical End Sub
Private Sub mnWorkerManager_Click() frmWorkerManage。Show End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib。Button) End Sub
Private Sub NormalUserMain_Click() frmNormalUserMain.Show End Sub
Private Sub toolbarMain_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button。Index Case 1
frmSetTime.Show Case 2
frmDepManage。Show Case 3
frmWorkerManage.Show Case 4
Unload Me Case 5 Case 6
If MsgBox(”真的要对出本系统吗?”, vbQuestion + vbYesNo + vbDefaultButton2, \"退出”) = vbNo Then
Cancel = 1 Else End End If End Select End Sub
4。3 模拟运行数据
添加用户:
修改密码:
上下班设置:
部门管理:
员工管理:
考勤管理:
上班情况:
请假情况:
出差情况:
帮助:
4.4 系统使用说明书
一。后台(管理员)(账号:admin 密码:admin) 1.系统
用户登录 修改密码 添加用户 上下班时间设置 2。管理
部门管理 员工管理 考勤管理 3.窗口
水平平铺 垂直平铺 层叠 4.报表
上班情况 请假情况 出差情况
二.前台(普通用户)(账号:ljz 密码:loujingzhao) 1.上下班登记
2.请假登记 3.出差登记
第五章 参考书籍
[1] 沈洪,施明利. VB程序设计[M]。 清华大学出版社, 2010.8 [2] 陈恭和。 Access数据库基础(第二版)。 浙江大学出版社, 2012.8 [3] 陈承欢, 彭勇。 管理信息系统基础与开发技术[M]. 人民邮电出版社, 2005。2
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务