题目: 企业人事管理系统
姓 名: 专 业: 计算机网络
指导老师:
2
【前 言】
随着计算机技术的不断发展,计算机作为知识经济时代的产物,已被广泛应用于社会各个行业和领域。随着我国国企改革的深入和社会主义市场经济的日趋繁荣,导致各企业间的竞争日益激烈,迫使企业采取先进的计算机硬件设备以及高质量的辅助软件来管理企业的各项运作,以提高本企业的劳动生产率以及人员效率。人事管理系统软件作为一种管理软件正在各企事业单位中得到越来越广泛的应用。
【摘 要】
人事管理系统在企业中占有极其重要的地位,它关系着企业内部每个职员的档案,其中包括新职员的增加,职员档案的查找,职员的详细资料等等。对于企业来讲,人事管理系统是不可缺少的组成部分,它有效地管理企业的员工,对企业内部人事的流动和分配起着重要的管理作用,它正确地反映着企业的人事变化。
本系统是我借本次毕业设计之际,对本人工作单位的人事管理经过分析,严格按照需求分析、概要设计、详细设计、系统实施、系统测试的步骤进行设计和书写论文,源代码调试无误。首先建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,真到形成本单位满意的可行系统.通过本系统的投入使用能替代原先手工管理的落后方式。
本论文是从现代企业管理中的人事管理现状出发,针对人事管理的复杂程序,经过详细的系统调查,开发出的操作简单而且方便实用的一个人事管理系统。对企业中的考勤信息、请假信息、加班信息、出差信息、调动信息进行管理。
本系统的前端开发工具是Visual Basic 6.0,后台数据库引擎选用数据库软件Access 2000。
本人主要贡献(企业人事管理系统中员工考勤添加修改模块)。
【Abstract】
The personal management system occupies the very and important position in the business enterprise, it relates to the business enterprise file of internal each employee, among them including the new employee's increment, employee's file checks to seek, the employee's detailed data etc .As for the business enterprise, the personal management system
3
constitutes the part indispensably, it manages the employee of the business enterprise availably, rising to the business enterprise fluxion and allotments of the internal personnel the important management function, it reflects the personnel variety of the business enterprise with accuracy.
This system is I borrow at the moment that this graduation design, work to oneself the personal management of the unit is through analysis, strict is analytical according to the need, essentials design, detailed design, system implement, the step that system test carry on design and write the thesis, the source code adjust to try without any error. Build up the system application prototype first, then, start the prototype system to carry on the need generation to the beginning, revise and improve continuously, really arrive the formation originally the unit is satisfied and can go the system .The devotion usage that passes this system can act for at first the handicraft manage of fall behind the way.
This thesis is from the modern business enterprise present condition, aim at the personal management of the complicated procedure operation, pass by detailed system investigate, develop simple and convenient practical such a personal management system.
The head tool of this system development is Visual Basic 6.0, the engine of the backstage database software choose to use is Access 2000.
This system through tests, and run stability, and have already got the approbation.
【关键词】
人事管理系统,Visual Basic 6.0,Access 2000、员工、考勤、请假、加班、出差、调动。
【Keywords】
Personal management system, Visual Basic 6.0,Access 2000、Employee, test frequently, ask for leave, work overtime, go on errands, transfer.
4
目 录
前言 摘要 关健词
第一章人事管理系统概述
1.1 人事管理系统简介 1.2 企业信息化发展
1.3 关于人事管理系统的几个误区 第二章 人事管理系统分析
2.1 系统初步调查 2.2 系统可行性分析
2.3 系统详细调查 2.4 系统业务流程图 2.5系统的安全性
第三章 人事管理系统设计
3.1 方案设计
3.2 开发工具选择 3.3 数据库设计
3.3.1人事管理系统的详细调查 3.3.2系统逻辑模型的提出 3.3.3数据字典 3.3.4概念结构设计 3.3.5逻辑结构设计 3.3.6物理结构设计 3.3.7数据库实现 3.4 模块设计
第四章 人事管理系统的实现 4.1 开发环境的选择
4.2 人事管理系统模块设计举例 4.3 人事管理系统测试 4.4 系统运行与维护 4.5系统的转换方案 第五章 开发总结 参考文献
5
人事管理系统的设计
第一章 人事管理系统概述
在开发《人事管理系统》之前,我认真地阅读了很多相关材料,其中包括《管理科学》,《人力资源开发与管理》,《人事管理》,《数据结构》,《工程算法》,《VB6.0教程》,《Access 2000使用手册》等,为下一步软件开发奠定了坚实的理论基础。
§1.1 人事管理系统简介
随着市场竞争的日趋激烈,人已成为实现企业自身战略目标的一个非常关键的因素。企业中人心的向背和员工对工作的投入程度在很大程度上决定了该企业的兴衰与成败。如何能保持本企业员工的工作责任感,激励他们的工作热情,减少人才的流失,已成为困扰企业主管和人力资源经理的一个日益尖锐的问题。企业管理从根本上来讲就是对人的管理。
一、 人事管理系统(HRMS)的发展历史
人力资源管理系统的发展历史可以追溯到20世纪60年代末期。由于当时计算机技术已经进入实用阶段,同时大型企业用手工来计算和发放薪资既费时费力又非常容易出差错,为了解决这个矛盾,第一代的人力资源管理系统应运而生。当时由于技术条件和需求的限制,用户非常少,而且那种系统充其量也只不过是一种自动计算薪资的工具,既不包含非财务的信息,也不包含薪资的历史信息,几乎没有报表生成功能和薪资数据分析功能。但是,它的出现为人力资源的管理展示了美好的前景,即用计算机的高速度和自动化来代替手工的巨大工作量,用计算机的高准确性来避免手工的错误和误差,使大规模集中处理大型企业的薪资成为可能。
第二代的人力资源管理系统出现于20世纪70年代末。由于计算机技术的飞速发展,无论是计算机的普及性,还是计算机系统工具和数据库技术的发展,都为人力资源管理系统的阶段发展提供了可能。第二代人力资源管理系统基本上解决了第一代系统的主要缺陷,对非
6
财务的人力资源信息和薪资的历史信息都给予了考虑,其报表生成和薪资数据分析功能也都有了较大的改善。但这一代的系统主要是由计算机专业人员开发研制的,未能系统地考虑人力资源的需求和理念,而且其非财务的人力资源信息也不够系统和全面。
人力资源管理系统的革命性变革出现在20世纪90年代末。由于市场竞争的需要,如何吸引和留住人才,激发员工的创造性、工作责任感和工作热情已成为关系企业兴衰的重要因素,人才已经成为企业最重要的资产之一。“公正、公平、合理”的企业管理理念和企业管理水平的提高,使社会对人力资源管理系统有了更高的需求;同时由于个人电脑的普及,数据库技术、客户/服务器技术,特别是Internet/Intranet技术的发展,使得第三代人力资源管理系统的出现成为必然。第三代人力资源管理系统的特点是从人力资源管理的角度出发,用集中的数据库处理几乎所有与人力资源相关的数据(如薪资福利、招聘、个人职业生涯的设计、培训、职位管理、绩效管理、岗位描述、个人信息和历史资料)统一管理起来,形成了集成的信息源。友好的用户界面,强有力的报表生成工具、分析工具和信息的共享使得人力资源管理人员得以摆脱繁重的日常工作,集中精力从战略的角度来考虑企业人力资源规划和政策。
二、 人事管理相关软件简介
近几年来,国内外与人力资源管理有关的系统和程序的发展都非常迅速,众多的软件有如雨后春笋般地不断涌现。这些软件尽管各有特点,但从功能上来分析,大致可分为如下五种:
1. 薪资和福利计算程序。这类程序通常可用于管理企业薪资和福利计算的全过程,其中包括企业的薪资和福利政策设定、自动计算个人所得税、自动计算社会保险等代扣代缴项目。通常,这些程序还可以根据公司的政策设置并计算由年假、事假、病假、婚假、丧假等带薪假期以及迟到、早退、旷工等形成的对薪资和福利的扣减,能够设定企业的成本中心并按成本中心将薪资和总账连接起来,直接生成总账凭证,还能存储完备的历史信息供查询和生成报表;这类系统也可
7
处理部分简单的人事信息。
2. 培训管理系统。培训管理系统一般通过培训需求调查、预算控制、结果评估和反馈以及培训结果记载等手段,实现培训管理的科学化,并且和人力资源信息有机地联系起来,为企业人力资源的配备和员工的升迁提供科学的依据。
3. 考勤管理程序。为了有效地记载员工的出勤情况,很多企业配置了打卡机,考勤机等设备。考勤管理程序一般都与这些设备相接,根据事先的编排的班次信息,过滤掉错误数据,生成较为清晰的员工出勤报告,并可转入薪资和福利程序中,使考勤数据与薪资计算直接挂钩。其生的文档还可作为历史信息保存,用于分析,统计和查询。
4. 人力资源管理系统。人力资源管理系统从科学的人力资源管理角度出发,从企业的人力资源规划开始,一般包括招聘、岗位描述、培训、技能、绩效评估、个人信息、薪资和福利、各种假期、到离职等与员工个人相关的信息,并以一种相容的、一致的、共享的、易访问和检索的方式储存到集中的数据库中,从而将企业内员工的信息统一的管理起来。其灵活的报表生成功能和分析功能使得人力资源管理人员可以从繁琐的日常工作中解脱出来,将精力放到更富有挑战性和创造性的人力资源分析、规划、员工激励和战略等工作中去。完整的历史信息记载了员工从面试开始到离职整个周期的薪资、福利、岗位变迁、绩效等信息。同时由于这类系统可管理较全面的人力资源和薪资数据,因而还可以生成许多综合性的报表供企业决策人员参考,如生成按岗位的平均历史薪资图表,员工配备情况的分析图表,个人绩效与学历、技能、工作经验、接受过的培训等关系的分析等等。
§1.2 企业信息化发展
随着信息时代的到来,企业的信息化已被提上日程。企业自然会考虑下述问题:
在规划方案中,哪些功能是必需的?哪些并不适合自己的公司?遗漏了哪些必需功能?企业建立管理信息系统时,现行的工作流程还需要怎么调整才能使工作效率真正提高?企业管理信息系统将来的
8
运行、维护、升级、改造成本有多高?选择什么样的管理信息系统软件平台开发自己的管理信息系统最可靠而且经济?而只有对以下三个问题进行分析,才有助于推动企业的信息化。
1、 信息是现代企业管理的核心。在开始着手规划和建立企业的管理信息系统时,要坚信信息技术的发展将在企业的管理过程中起着越来越重要的地位,而且越来越决定着企业管理的效果和效率。在提高和改善企业管理的过程中,应该明白如何采用管理信息系统这一有效管理工具,以及它是如何在企业的管理中起作用的。随着企业规模的扩大,其管理组织会变得越来越庞大和困难,而信息的处理与使用也变得越来越重要。
2、 在规划和建设一个企业的管理信息系统时,有可能误认为企业的管理信息系统就是在企业原有管理模式上加入计算机信息处理。其实,一个好的管理信息系统绝不是企业原有的管理模式和计算机信息处理的简单相加,建立管理信息系统的目的是通过实现对企业信息处理的现代化而达到高效完成管理工作,所以一个好的管理信息系统的模型一定要能够与当今信息技术紧密相连,并能够充分利用其优良性能。
3、 企业信息化是一个过程。企业的信息化规划和建设是一个不断改进、逐步提高的过程。在这样一个复杂的系统中存在着大量的作用因素,只能通过长斯不断的努力才能达到目的,在企业信息化的规划和建设过程中,不可将职工的计算机和软件使用培训等视为可有可无,信息化的发展使计算机和软件成为企业日常管理中的必然。
§1.3 关于人事管理系统的几个误区
1. 缺乏长远的战略眼光
有些企业领导人在人力资源管理中缺乏长远的战略眼光,认识不到采用和实施人力资源管理系统的重要性。他们或者只顾眼前利益,认为人力资源管理系统是一种“锦上添花”的项目,没有紧迫感;或者对人力资源管理系统缺乏认识,自以为自己也已采用了人力资源管理系统,殊不知他们实质上只是采用了带有部分人事数据的简单薪资
9
处理软件;还有些企业在选取人力资源管理系统时,只考虑满足当时的需求,而且考虑人格因素多于系统功能,这样选取的系统会后患无穷,不仅现在缺乏指导价值,将来随着企业的发展和管理水平的提高,也会阻碍企业的进步。
2. 人力资源管理系统是一个拿来即用的软件
由于缺乏对系统实施工作的重要性和艰巨性的认识,将人力资源管理系统混同于一个普通的软件,没有统一的规划和项目组织,边用边开发,使系统的实施处于一种混乱的状态,会造成数据的重复,不相容和不全面,对整个企业产生不利的影响。
3. 不顾实力自己开发人力资源管理系统
将现代人力资源管理的理念和计算机技术有效地集合起来,从长远、系统和发展的眼光进行全面的系统分析和设计并不是一件轻而易举的事情。而且用于维护、文档编写、调试和排错等所花费的人力物力财力也远远超过购买商品化软件所需的成本。
4. 盲目依靠销售商的实施顾问
过分依赖销售商的实施顾问是不可取的,除了费用和响应时间方面的因素之外,企业的相关设置不可能一成不变,而实施顾问不可能长时间地熟悉某个企业人力资源管理系统的详细设置。所以企业应该建立包括计算机人员和人力资源管理人员在内的项目核心小组。
第二章 人事管理系统分析
§2.1 系统初步调查
一、应用人事管理系统的必要性
现在不少企业管理人员已经认识到采用人力资源管理系统的必要性,纷纷开发或选购适合本企业特点的人力资源管理系统。人事管理系统具体以下优点:
1. 采用人事管理系统,可以用集中的数据库将与人力资源管理相关的信息全面、有机地联系起来,有效地减少了信息更新和查找中
10
的重复劳动,保证了信息的相容性,从而大大地提高了工作效率,还能使原来不可以提供的分析报告成了可能。
2. 人事管理系统有着易访问、易查询的信息库。在没有采用和实施人事管理系统之前,当企业管理人员要统计数字时,往往依赖于某个人或某些人来获取。这种依赖于人的过程往往会因为花费的时间较长或某个人不在办公室而不能及时完成。在采用和实施人事管理系统之后,就会将依赖于人的过程改为依赖于计算机系统的过程。企业管理人员只要获取了相应的权限,就可以随时进入系统,直接查阅相应的信息。实施了人事管理系统之后,不仅可以得到较为全面的、详细的、未经过过滤的第一手人事信息,发现不公平的现象,甚至还可以从中得到某些灵感和启发,从而改进企业的管理。这种透明性还可以规避企业管理中潜在的风险。
3. 采用和实施人事管理系统不仅仅是为了提高工作效率。应该看到,在实施人事管理系统之后,经过整合的、较为全面、准确、一致和相容的信息不仅可以让企业领导对本企业人力资源的现状有一个比较全面和准确的认识,同时也可以生成综合的分析报表供企业领导人在决策时参考。这就提高了企业的管理水平。
二。人事管理系统实施的特点及注意事项
要想通过人事管理系统来提高企业的管理水平,光是选取一个好的或比较好的、适合本企业特点的人事管理软件还是远远不够的。人事管理软件通常只是一个通用的系统框架,它提供诸如报表生成、查询、宏等辅助工具协助使用者工作。作为一种通用的系统,它适用于多种行业和企业的需要,能够处理各种各样包括规范的和不规范的、普遍存在的和特殊的、相对简单和错综复杂的情景。因为不同类型企业的不同需要就成为了关键。
由于人事管理系统管理的是所有与人相关的数据,信息量大,变化频繁,内部关联性较弱,数据的采集、确认、更新和检查都比较困难,而且其管理的信息与员工的切身利益密切相关,因此,实施工作尤为繁琐和困难。为了最大限度地提高企业的人事管理水平,成功地
11
实施人事管理系统,需要特别注意以下七点:
1.
主要领导理解和全力支持。为了保证数据的完整、准确和
及时,需要企业内各个部门和全体员工的积极配合,要有企业决策层的参与和支持。
2.
培训。要想使人事管理系统真正地发挥应有的效用,必须
通过培训转变人们的思维方式和行为方式,学会通过系统来进行科学的管理。
3.
改进企业的相关制度和信息结构。要充分地回顾本企业的
相关政策和信息组成,充分利用人事管理系统改进企业的人事管理。
4.
明确基础上的实施目标。要明确整个项目的实施计划和目
标,明确需要采集的数据及保留的历史信息。
5.
组织精悍的基础上实施小组。实施小组人员的组成就包括
企业管理人员,人事、薪资、计算机专业人员,他们是企业运行人事管理系统的主要骨干和技术支持。
6.
测试软件功能。由于人事管理系统需处理的信息关系非常
复杂,各企业的需求也不尽相同,所以在其实的初期要进行软件功能的测试,以确保日后的使用。
7.
建立科学的程序性文件。人事相关信息的特点是信息量大、
变化频繁、采集和确认困难而且无内联关系。采用计算机系统来管理人事信息要求数据的采集、更新能够完整、准确和及时。而两者之间的矛盾就要通过建立必要的科学的程序性文件才能为人事管理系统的实施和正常运行提供有效的保证。
§2.2 系统可行性分析
人事管理系统在企业中占有极其重要的地位,它关系着企业内部每个职员的档案,其中包括新职员的增加,职员档案的查找,职员的详细资料等等。对于企业来讲,人事管理系统是不可缺少的组成部分,它有效地管理企业的员工,对企业内部人事的流动和分配起着重要的管理作用,它正确地反映着企业的人事变化。
(企业管理业务流程图)
12
销售部主管 企业负责人(厂长、经理) 人事部主管 生产部主管 财务部主管 图2-1
根据企业对人员管理的需要,开发一个“人事管理系统”,开发目的如下:
1. 2.
能够对员工的有关资料进行输入,修改,删除。
能够为企业提供强大的查询功能,以便企业主管了解和掌
握各职员的具体情况。
3. 4.
能够提供员工的考勤信息及调动信息。
能够对员工的资料数据进行备份,以作为相关的历史资料。
§2.3 系统详细调查
(一) 功能需求
基于以上的开发目标,系统开发的范围确定如下:本系统只涉及人事资料部分,不包括工资计算等项目;本系统提供强大的查询功能,可进行不同类型查询,提供多种索引;本系统提供记录的添加,删除和修改;本系统可单条或多条输出个人资料,并可打印相关报表。
(二) 数据需求
通过调查和研究,本系统仅提供一个数据库,但该数据库包含各项所需信息,表名为person,(Access表结构)
此表包括职员所有的详细资料,可以为企业主管提供详细信息,以期对员工管理及分配。
(三) 运行环境
大多数中小型企业,对计算机的要求并不高,一般只需能进行工资计算,人事录入,打印报表等功能即可,所以计算机的配置约为普通配置,DDR256M内存,17英寸纯平显示器,80G左右硬盘,标准键盘和鼠标,打印机,Windows 98/xp/me/2000操作系统等。而本系统
13
开发工具选取VB 6.0,所以编制的程序在以上环境的机器中均可顺利运行,并且本系统占用空间较小,主要依靠鼠标和键盘进行录入,依靠打印机进行输出。详细调查的重点是对管理业务的流程进行描述,通过采用系统流程图中部分图形工具来描述管理活动,进行规范化说明。
§2.4 业务流程图
业务流程图的符号说明如下图所示:
1、 2、 3、 4、 5、 系统中人员 实体或单据 实物或信息流 处理 数据存储 图2-2业务流程图图例
详细调查之后,绘制出的人事管理系统的管理业务流程图如下图所示。
各科室车间 部门人事信息 员工名单 人事科 出勤信息 人事科存档 调动信息 调动信息 进行处理 员工信息 有关领导 员工考勤信息 图2-3人事管理系统业务流程图
§2.5系统的安全性
信息的透明和安全是一对矛盾的两个方面。人事管理系统的安全性设计使得机密的人事信息处在一种“受控”状态下的透明。只有得到系统授权的用户才可以访问被允许获取的信息。因此,不需要担心会因为采用人事管理系统而降低了人事信息的保密性,相反,信息的安全性会因为人事管理系统的采用而得到加强。
14
本程序考虑到系统的安全性,主要设置了用户登录论证,其中包括初始用户登录验证和再次用户登录验证,并且需要进行密码校验,保证了信息的“可控”透明性。而且,为了提供企业日后需要的各期历史资料,本系统还提供数据备份功能,使原始资料的保留更为方便,并且能够进行新旧资料的对比,使企业主管对各期人员变动更好的了解,为以后的决定打下良好的基础。
(附密码验证流程图)
图2-4密码验证流程图
进入人事管理系统 调用密码检测子程序 输入用户密码 显示错误 提示登录本程序 开 始 15
第三章 人事管理系统设计
§3.1 方案设计
本项目在初始设计时曾经考虑过三套设计方案,方案内容大致如下:
第一套:系统功能分为四个模块,分别为文件操作,数据库操作,系统设置和帮助文件。
1. 文件操作模块包括对本程序所使用的所有文件的打开,关闭,复制,备份和重新安装等操作。
2. 数据库操作模块包括对本程序所使用的数据库的追加,查询,删除等操作。
3. 系统设置模块包括对本程序所使用的数据库的路径设置,用户安全设置等操作。
4. 帮助模块包括如何使用本系统的各类操作。
第二套:系统功能分为两个模块,分别为文件操作和数据库操作。 1. 文件操作模块包括对系统所使用的各类文件的维护,以及报表的打印和系统的设置等操作。
2. 数据库操作模块包括对本程序所使用的所有数据库的添加,删除,修改,查询等操作。
第三套:系统功能分为六个模块,分别为系统设置,员工基本信息,员工考勤模块,员工调动模块,数据管理模块.
在这三套方案中,我选择了第三套方案为开发方案,原因如下:系统需求分析中要求的文件组成比较简单;本系统所需要的系统设置也比较少;而又由于需求分析中对查询功能的要求较多,所以需要着重于查询功能的设计;由于对录入的需要,本系统着眼于对单条记录的编辑。
§3.2 开发工具选择
本程序在设计之初曾经考虑过几种其它的开发工具,例如VF,VC,VB,之所以选择VB 6.0作为开发工具,主要有以下几个方面:
16
1. VF作为数据库开发软件虽然对其自身的数据库文件支持较好,但是对于其他类型的数据库文件却需要额外的驱动程序支持。这样,不仅使VF的使用效率大打折扣,还使程序开发又附加了许多作业,不利于软件的开发工作,而且从办公自动化整个系统考虑,支持VF的所占比例很少,可以说几乎没有,所以放弃使用VF进行本系统的软件开发。
2. VC作为一种软件开发工具,虽然它的功能十分强大齐全,可以用于开发各类软件,而且由VC生成的应用程序使用效率也比较高,但是在中小规模的数据库应用程序中,尤其是在本程序中,不仅不能够发挥VC的优势,相反还使本程序的开发复杂化,多做许多额外的设计,对于开发时间来说不太划算,所以不选择VC开发本系统。
3. 与VC,VF相比较,VB对于Access一类的数据库支持较好,而且提供了许多十分实用的组件,这些为开发中小型数据库应用系统提供了许多便利条件,所以在开发本系统时选用了VB 6.0作为开发工具。
§3.3 数据库设计
§3.3.1人事管理系统的详细调查
对现行管理业务进行详细调查是了解系统需求和进行系统分析和设计的重要基础工作,因此要对企业的人事管理工作进行全面、细致而充分的调查研究。系统调研采取的主要方法是到现场去,通过座谈、询问、观察甚至直接参与管理活动,自上而下、逐步细化的进行了解。
首先与分管厂长、人事主管及财务主管交流意见,了解他们对现有信息系统的看法,有无新的信息需求,原系统有无多余的功能。然后,与部分领导和部分职工,特别是从人事主管那里了解他们对原有信息系统的看法。在此基础上,深入到具体业务职能管理部门即人事科和财务科进行详细的调查,了解他们对现有系统的看法,在操作上有无需要改进的地方。
通过调查得知,原人事管理已经初步实现了用计算机进行人事管
17
理,可为单位领导、人事部门及财务部门提供某阶段的人事信息及出勤情况。但具体的操作仍为用WORD及EXCEL电子表格处理软件进行处理。为了充分利用计算机使人事管理工作进一步规范化,满足人事管理及财务管理方面的信息需求,使用人事管理水平向标准化、现代化迈进一步,原人事管理信息操作方式就需要重新加以改进,以适应新形势的变化。就需要利用计算机数据库技术强大的数据处理功能,建立一个功能强大的管理信息系统。也就是说,新建立的系统要求在保持原有系统的功能的基础之上,要求具有良好的适用性和扩展性。
要设计一个性能良好的管理系统,明确用户的应用环境对系统的要求是首要的和基本的。本系统从以下四个方面对用户需求进行了分析:
(一)
用户的信息需求:能根据需要对人事信息及考勤信息,调动信息进行查询。
(二)
用户的处理要求:能进行每位员工的基本信息管理,员工考勤信息的管理,调动信息的管理等。能对相应的信息进行增加、删除、修改。
(三)
对系统的适应性、扩展性要求:要求系统能够不受未来使用环境变化的影响,仍能照常使用。尽量做到一次投入,长久受益。
(四)
对系统的安全性要求,要求进入系统必须进行口令校验。
§3.3.2系统逻辑模型的提出
系统分析的主要成果是系统的逻辑模型。本系统的逻辑模型主要是以系统的数据流图和数据字典为主要描述工具。即在对人事管理方式和业务流程进行认真分析和研究的基础上,排除现有组织机构和业务分工所造成的信息障碍。完全从业务管理功能和管理对象出发,按照信息系统中应有的数据流和数据结构来勾画系统的概貌。
一、数据流图(简称为DFD)
数据流图是组织中信息运动的抽象。是在调研的基础上,从系统
18
的科学性、管理的合理性、实际运动的可行性角度出发。将信息处理功能和彼此之间的联系自顶向下,逐层分解,从逻辑上精确地描述系统应具有的数据加工功能、数据输入、数据输出、数据存储及数据来源和去向(外部实体)等项目。
首先,分析人事管理的总体情况,划分系统边界,识别系统的数据来源和去处,确定外部实体,得出系统的顶层数据流程图;
然后划分出几个主要的信息管理功能,并明确各功能之间的联系,绘制出数据流程图。
数据流程图的符号说明如下图所示。
外部实体 处理 数据流 数据存储 图3-1 数据流程图的符号 人事管理系统的顶层数据流程图如图5-5所示。
人事基本信息出勤
用户 P 人事管理信息处理 调动出差请假信息
D1 单位领导
各种报表 图3-2 人事信息处理的顶层数据流程图
现在以加班处理的数据流程图(图3-3)为例说明二层数据流程图,其它如出差、出勤等信息的数据流程图略
19
加班记录 加班记录 汇总 上报 审核 上报 送交 人事部门 送交 加班人员 工作 部门负责人 财务部门 领导审批 图3-3
人事管理系统的数据流程图如下图所示 F1 P1 录入员工基本信息和工作信息 D1 F2 员工信息空白单 P2 填写有关信息 P3 D2 已填好的有关信息 员工信息处理 F3
D3 处理结果
F4
图3-4 系统数据流程图
其中‘P’表示数据处理,‘F’表示数据流,‘D’表示数据存储。
§3.3.3数据字典(简称为DD)
绘制DFD,只是对数据处理和彼此之间的联系进行了说明。为进一步明确数据的详细内容和数据加工过程,应将数据流图中的全部数据流及其组成部分的数据元素,数据存储,数据加工,通过数据字典描述清楚,以便于此后系统设计的进行。这就需要开发人员编写详细的数据字典,来描述系统开发过程的细节。
限于篇幅,下面仅列出本系统中的部分有关数据项的数据字典。
20
表1:员工编号
数 据 项 系统名:人事管理系统 编号:I001 名称:员工编号 别名:编号 数据项值: 类型:文本 长度:8个字节 取值范围: 简述:每个员工都有唯一的一个编号,编号是某位员工的唯一标识.我们可以用形如“20040204“来标识一个员工,前四位‘2004’表明进入单位的时间,‘02’表示部门,‘04’表明此职工在该部门的序号,若本部门人数超过100,则用字母加数字的形式如“A1”的形式表示。 修改记录: 编写 审核 日期 日期 表2:员工姓名
数 据 项 系统名:人事管理系统 编号:I002 名称:员工姓名 别名:姓名 数据项值: 类型:文本 长度:8个字节 取值范围: 简述:每个员工都有唯一的姓名,若出现重名现象,我们可以查看此员工的编号进行区别。 修改记录: 编写 审核 日期 日期 表3:性别
数 据 项 系统名:人事管理系统 编号:I003 名称:性别 别名: 数据项值: 类型:文本 长度:2个字节 取值范围:男、女 简述:性别仅有两种情况,为了便于录入,在设计时可以采用单选按钮或下拉列表框的方式。 修改记录: 编写 审核 日期 日期 表4:籍贯
21
数 据 项 系统名:人事管理系统 编号:I004 名称:籍贯 别名: 数据项值: 类型:文本 长度:12个字节 取值范围: 简述:员工的出生地 修改记录: 编写 审核 日期 日期 表5:年龄
数 据 项 系统名:人事管理系统 编号:I005 名称:年龄 别名: 数据项值: 类型:数字 长度:2个字节 取值范围: 16-99 简述:员工的岁数,因为企业要求最低文化程度为高中或中专,所以最低年龄为16岁。此外还要统计退休的人员岁数。所以取值范围为16-99 修改记录: 编写 审核 日期 日期 表6:生日
数 据 项 系统名:人事管理系统 编号:I006 名称:生日 别名:出生日期 数据项值: 类型:日期/时间 长度:8个字节 取值范围: 简述:员工的出生日期。 修改记录: 编写 审核 日期 日期 表7:学历
22
数 据 项 系统名:人事管理系统 编号:I007 名称:学历 别名: 数据项值: 类型:文本 长度:8个字节 取值范围: 简述:因为员工的学历分为高中,中专,大专,本科,硕士,博士,博士后这几种情况。所以为了便于录入,在设计时可以采用单选按钮或下拉列表框的方式。尽管企业中现在还没有具有博士及博士后学历的员工,但为了系统以后能适应企业发展的需要,需要把这两种学历考虑进去。 修改记录: 编写 审核 日期 日期 表8:专业
数 据 项 系统名:人事管理系统 编号:I008 名称:专业 别名: 数据项值: 类型:文本 长度:20个字节 取值范围: 简述:员工取得现有学历时所学的专业。 修改记录: 编写 审核 日期 日期 表9:住址
数 据 项 系统名:人事管理系统 编号:I009 名称:住址 别名: 数据项值: 类型:文本 长度:26个字节 取值范围: 简述:员工现在的家庭住址,若员工的家庭住址变动,则从每年一度的员工简明情况登记表中的信息进行修改。 修改记录: 编写 审核 日期 日期 表10:邮编
23
数 据 项 系统名:人事管理系统 编号:I010 名称:邮编 别名: 数据项值: 类型:文本 长度:7个字节 取值范围: 简述:员工家庭住址的邮政编码。因现在我国的邮政编码为6个字节,但为了系统能适应未来形势的变化,特设为7个字节。 修改记录: 编写 审核 日期 日期 表11:电话
数 据 项 系统名:人事管理系统 编号:I011 名称:电话 别名:电话号码 数据项值: 类型:文本 长度:12个字节 取值范围: 简述:现在的电话号码大部分为7位或8位,再加上分隔符所以设为12位,是为了以后系统适应未来形势的变化。 修改记录: 编写 审核 日期 日期 表12:Email
数 据 项 系统名:人事管理系统 编号:I012 名称: Email 别名:电子邮箱 数据项值: 类型:文本 长度:20个字节 取值范围: 简述:员工的邮箱地址。 修改记录: 编写 审核 日期 日期 表13:参加工作时间
数 据 项 系统名:人事管理系统 编号:I013 名称: 参加工作时间 别名: 数据项值: 类型:日期/时间 长度: 取值范围: 简述:员工参加工作时间。 修改记录: 编写 审核 日期 日期 表14:进入公司时间
24
数 据 项 系统名:人事管理系统 编号:I014 名称: 进入公司时间 别名: 数据项值: 类型:日期/时间 长度: 取值范围: 简述:员工进入本公司时间,注意与参加工作时间不同。 修改记录: 编写 审核 日期 日期 表15:部门
数 据 项 系统名:人事管理系统 编号:I015 名称: 部门 别名: 数据项值: 类型:文本 长度:12 取值范围: 简述:员工当前所在的部门,因为员工可能在不同的部门中调动,所以可根据定期的员工信息登记表进行修改。 修改记录: 编写 审核 日期 日期 表16:起薪时间
数 据 项 系统名:人事管理系统 编号:I016 名称: 起薪时间 别名: 数据项值: 类型:日期/时间 长度: 取值范围: 简述:员工从事相应的工作可以领取相应的薪金的时间 修改记录: 编写 审核 日期 日期 表17:职务
数 据 项 系统名:人事管理系统 编号:I017 名称:职务 别名: 数据项值: 类型:文本 长度:16 取值范围: 简述:员工在相应的工作岗位所承担的职责。 修改记录: 编写 审核 日期 日期 限于篇幅,其它的数据项的数据字典略。
25
§3.3.4概念结构设计
在系统的数据库设计中,先要对系统分析得到的数据字典中的数据存储进行分析,分析各数据存储之间的关系,然后才能得出系统的关系模式。可以采用E-R图的方法来进行数据结构分析。E-R设计方法是一种通过E-R图来描述现实世界信息结构的DB设计方法。E-R图由实体、属性、联系三部分组成。E-R图的符号说明如图所示。
实体 属性 实体间的联系
图3-5 E-R图图例
在本系统的数据流程图中,系统边界已经很清楚了,所以可直接根据它设计本系统的E-R图,不必要先设计分E-R图,再合并总体E-R图了。本系统的E-R图如下图所示:
编号 住址 邮编 电话 Email 参加工作时间 进入公司时间 姓名 性别 籍贯 年龄 生日 学历 专业 员工 n n n n 加班 调 动 部门 起薪时间 职务 图3-6 E-R图
上班 出差情况 …… 上班情况 n 出差 m m …… 请假 m 请假信息 …… 加班信息 调动情况 …… …… 人事管理系统中所涉及到的主要实体集及其属性如下:
员工﹛员工编号,员工姓名,性别,籍贯,年龄,生日,学历,专业,住址,邮编,电
26
话,EMAIL,参加工作时间,进入公司时间,部门,起薪时间,职务,备注﹜; 考勤信息﹛记录编号,员工编号,员工姓名,当前日期,上班时间,下班时间,迟到次
数,早退次数﹜;
请假信息﹛请假记录编号,员工编号,病假天数,事假天数,假期开始时间﹜; 加班信息﹛加班记录编号,员工编号,特殊加班天数,正常加班天数,加班日期﹜; 出差信息﹛出差记录编号,员工编号,出差天数,出差日的地,出差开始时间﹜; 调动信息﹛调动记录编号,员工编号,员工姓名,原部门,新部门,原职务,新职务,
调出时间,调入时间,备注﹜。
§3.3.5逻辑结构设计(E-R图向关系模型的转换)
E-R图向关系模型的转化要解决的问题是如何将实体和实体间的联系转换
为关系模式,如何确定这些关系横式的属性和码。 对于实体间的联系我们分不同的情况讨论:
(1) 若实体间的联系是1:1,可以在两个实体转换成的两个关系中任意一个关系的属性中加入另一个关系的码。
(2) 若实体间联系为1:n,则在n端实体转换成的关系中加入1端实体转换成的关系码。
(3) 若实体间联系为n:m,则将联系转换为关系,关系的属性为诸个实体的码加上联系具有的属性,而关系的码则为诸实体的码的组合。
由以上三点,可将上图转换为关系模型。每个关系的码用下划线表示。 员工﹛员工编号,员工姓名,性别,籍贯,年龄,生日,学历,专业,住址,邮编,电
话,EMAIL,参加工作时间,进入公司时间,部门,起薪时间,职务,备注﹜; 考勤信息﹛考勤记录编号,员工编号,员工姓名,当前日期,上班时间,下班时间,迟到次数,早退次数﹜;
请假信息﹛请假记录编号,员工编号,病假天数,事假天数,假期开始时间﹜; 加班信息﹛调动记录编号,员工编号,特殊加班天数,正常加班天数,加班日期﹜; 出差信息﹛记录编号,员工编号,出差天数,出差日的地,出差开始时间﹜; 调动信息﹛记录编号,员工编号,员工姓名,原部门,新部门,原职务,新职务,调出时间,调入时间,备注﹜。
§3.3.6物理结构设计
27
设计原则如下:
(1) 进行规范化设计,尽可能地减少数据冗余和重复
合理的数据库表的设计应该是在满足需求的前提下,使数据的重复量最小,就尽量按照关系数据库系统理论方法去设计一个数据库,减少数据的冗余。 (2) 结构设计与操作设计相结合
在设计数据库结构时,有时为了编程实现的简捷和思路的清晰,往往故意增加一些冗余数据。这虽然有悖于传统的关系数据库理论,但是考虑到选择的机器型号和档次等因素,如果增加的冗余不会明显增加存储空间和降低处理效率,并且对编程实现有很大帮助,往往可以采用这种方法。 (3) 数据结构具有相对的稳定性
数据结构的相对稳定性,可以作为新、旧系统转换的依据。无论采用何种方法或手段去处理日常事务,都应该能完成相应的功能,决不会因为采用了计算机而丢失了必要的功能,或彻底改变了原有的工作流程和模式。计算机系统的建成是建立在原系统充分调研的基础上的,它既不能脱离原系统的大框架,也不是简单的重复和替代。所以数据库表结构设计应保证数据的相对稳定,这样才能考虑在新的数据结构下的业务处理方式。
此处着重讨论如何进行规范化设计,关系范式规范化过程如下:
消去重复项 非规范化关系 和空白数据项
1NF
消除部分函数依赖
消除传递函数依赖
2NF 3NF 由逻辑结构设计中得出的关系模型可知,转化的各关系中均无重复项和空白数据项,故是第一范式;而且如下图中的a, b所示(以出差信息及请假信息为例其它略),所有非主属性都完全函数依赖于任一侯选关键字,故是第二范式;在第二范式的前提下,可知ER图中a,b所示的四个关系的非主属性之间都不存在函数依赖关系,故图a,b所表示的关系均属于第三范式。 出差编号 请假编号 员工编号 病假天数 假期开始时间 员工编号 出差天数 出差目的地 出差开始时间 事假天数
a b
图3-7
28
基于以上三条设计原则,本系统中关于数据库表结构设计如下:
1、员工信息表:
字段名称 Sid Sname Sgender Splace Sage Sbirthday Sdegree Sspecial Saddress Scode Stel Semail Sworktime Sintime Sdept Spaytime Sposition sremark 数据类型 文本 文本 文本 文本 数字 日期/时间 文本 文本 文本 文本 文本 文本 日期/时间 日期/时间 文本 日期/时间 文本 文本 字段含义 员工编号 员工姓名 性别 籍贯 年龄 生日 学历 专业 住址 邮编 电话 Email 参加工作时间 进入公司时间 部门 起薪时间 职务 备注 2、员工考勤信息表
字段名称 ID Astuffid Astuffname Adate Aflag Aintime Aouttime Alate Aearly 数据类型 自动编号 文本 文本 日期/时间 文本 日期/时间 日期/时间 数字 数字 字段含义 记录编号 员工编号 员工姓名 当前日期 出入标志 上班时间 下班时间 迟到次数 早退次数 3、请假信息表
29
字段名称 Lid Lstuffid lIl1 Lprivate LfromDay 数据类型 自动编号 文本 数字 数字 日期/时间 字段含义 记录编号 员工编号 病假天数 事假天数 假期开始时间 4、加班信息表
字段名称 Oid Ostuffid Ospeciality Ocommon Ofromday 数据类型 自动编号 文本 数字 数字 日期/时间 字段含义 记录编号 员工编号 特殊加班天数 正常加班天数 加班日期 5、 出差信息表
字段名称 Eid Estuffid Eerranddays Epurpose Efromday 数据类型 自动编号 文本 数字 数字 日期/时间 字段含义 记录编号 员工编号 出差天数 出差目的地 出差日期 6、 调动信息表
字段 名称 ID 数据类型 自动编号 文本 文本 文本 文本 文本 文本 日期/时间 日期/时间 备注 字段含义 记录编号 员工编号 员工姓名 原部门 新部门 原职务 新职务 调出时间 调入时间 备注
Aid Aname Aolddept Anewdept Aoldposition Anewposition Aouttime Aintime Aremark 此外为了处理方便,我又设计了以下三个表:
30
7、 用户信息表 字段名称 UserID UserPWD 数据类型 文本 文本 字段含义 用户名称 用户密码 8、 上下班时间设置表
字段名称 Begintime endtime 数据类型 日期/时间 日期/时间 字段含义 上班时间 下班时间 9、 员工编号计数表
字段名称 NUM 数据类型 数字 字段含义 编号 §3.3.7数据库实现
本程序采用Access作为数据库引擎,其主要原因是考虑到现在的大多数办公室应用系统软件均支持Access数据库,所以只要应用于格式符合的计算机系统上即可运行,并且由于Access与VB皆是微软公司开发出来的软件,所以它们之间的兼容性非常好,容易配合使用。
在本程序数据库中,还采用了ODBC——开放式数据库链接系统,它维护了数据的独立性,而且可以与其他程序链接,达到数据的关联,方便地应用于其他的程序中。
由于本系统只是进行一般的数据库操作,对速度要求并不十分高,所以数据库中未调用Windows API函数。
§3.4 模块设计
按照功能分析及数据库的设计结果,为本系统设计如下模块,
最终得到如下图所示的功能模块图: (附图)
31
员 添加员工基本信息 工基本信息管理 企业人事管理系统 员工考勤信息管理 员工调动信息管理 系统 修改员 工基 本 信息 查询员工基本信息 删除员工基本信息 添加员工考勤信息 修改员工考勤信息 查询员工考勤信息 删除员工考勤信息 添加员工调动信息 修改员工调动信息 查询员工调动信息 删除员工调动信息 添加用户、修改密码 图3-8
从总体结构图容易列出应用程序的菜单,由总体结构图转换到菜单时,其对应情况如下:系统对应菜单文件,子系统层对应菜单标题,功能层对应子菜单项。本系统所使用的模块包括:系统模块,员工调动信息模块,员工考勤模块,员工基本信息模块等。
1. 系统:系统启动的时候有一个管理员用户,使用这个用户登录后,可以添加其它用户,而且每一个用户都可以更改自己的密码。
2. 员工基本信息
(1) 添加员工信息:系统自动生成员工编号,管理员可以添加员
工的基本信息,包括姓名、性别、籍贯、年龄、生日、住址、E-mail、学历、专业、进入本公司时间等。 (2) 修改员工信息:选择一个员工,可以修改这个员工的基本信
息。
32
(3) 查询员工信息:可以根据员工的编号、姓名或者进入公司的
时间进行查询员工基本信息。并且可以针对查询结果进行修改和删除操作。
(4) 删除员工信息:直接从列表中选中需要删除的员工信息,然
后进行删除操作,或者首先查询需要删除的员工信息,然后再删除。
3. 员工考勤信息:
(1) 添加考勤信息:主要分为上下班信息和其他考勤信息.
上下班信息主要记录每个员工每天上下班的时间,而其他考勤信息包含有请假、加班、出差信息。
(2) 修改考勤信息:当考勤信息出现错误需要修改的时候,
可以从这里修改相应的记录。
(3) 查询考勤信息:分为删除上下班信息和删除其他考勤信
息。
(4) 删除考勤信息:分为删除上下班信息和删除其他考勤信
息。
(5) 设置上下班时间:设置公司上下班时间。 4. 员工调动信息
(1) 添加调动信息:添加企业员工的原有部门、原有职务、
新部门、新职务等信息。
(2) 修改调动信息:修改相应的员工调动信息。
(3) 查询调动信息:查询某个员工的调动信息或者某段时间
内企业内部的调动情况。
(4) 删除调动信息:删除那些不需要的信息。
33
第四章 人事管理系统的实现
§4.1 开发环境的选择
一、前端开发工具 Visual Basic 6.0 简介
Visual Basic 是在世界范围内广泛使用的一种强大的编程语言,它为 Windows 应用程序的开发提供了最迅速和便捷的方法。不论是 Windows 应用程序的专业开发人员还是初学者,Visual Basic 都为他们提供了一整套的工具用来方便地开发应用程序。如果您现在想学习 Windows 编程,我们建议您先从 Visual Basic 学起,因为它简单易学,功能强大,可以很轻松地开发出 Windows 应用程序。目前 Visual Basic 软件开发团体是世界上最大的软件开发团体,它为全世界数千种工具和控件商所支持,因此选择 Visual Basic 将使您获得很大的优势。
Visual Basic 是在原有 Basic 语言基础上进一步发展,至今包含了数百条语句、函数及关键词,其中很多和Windows GUI 有直接关系。专业人员可以用 Visual Basic 实现其它任何 windows 编程语言所能实现的功能,而初学者只要掌握几个关键词就可以建立实用的 Windows 应用程序。用 Visual Basic 既可以开发现一般的 Windows应用程序,也可以实现先进的客户机/服务器、浏览器/服务器系统。目前 Visual Basic 6.0 有三种版本,即学习版、专业版和企业版,可以满足不同的开发需要。
为了理解 Visual Basic 应用程序的开发过程,首先要理解 visual Basic 的一些关键概念。因为 Visual Basic 是基于 Windows 的开发语言,所以有必要与 Windows 环境保持一定的相似性。简单地说就是三个关键的概念:窗口、事件和消息。从这点上说 Visual Basic 6.0与传统的 windows 应用程序开发语言没有大的区别,但是由于处理各种窗口、事件和消息的所有可能的组合将有惊人的工作量,动用传统方法开发 Windows 应用程序将耗费程序员许多精力。幸运的是,visual Basic 使您摆脱所有的低层消息处理。许多消息都由 Visual Basic自动自理了,其它的作为事件过程由编程
34
者自行处理。这样就可以快速创建强大的应用程序而无需涉及不必要的细节。
在传统的或“过程化”的应用程序中,应用程序自身控制了执行哪一部分代码及按何种顺序执行代码。从第一行代码执行程序并按应用程序中预定的路径执行,必要时调用过程。Visual Basic 是事件驱动的程序设计语言。在事件驱动的应用程序中,代码不是按照预定的路径执行,而是在响应不同的事件时执行不同的代码片段。事件可以由用户操作触发,也可以由来自操作系统或其它应用程序的消息触发,甚至由应用程序本身的消息触发。这些事件的顺序决定了代码执行的顺序,因此应用程序每次运行时所经过的代码的路径都是不同的。因为事件的顺序是无法预测的,所以在代码中必须对执行时的“各种状态”作一定的假设。当作出某些假设时,应该组织好应用程序的结构,以确保该假设始终有效。
传统的应用程序开发过程可以分为三个明显的步骤:编码、编译和测试代码。但是 Visual Basic 与传统的编程评议不同,它使用交互式方法开发应用程序,使得三个步骤之间不再有明显的界限。在大多数语文里,如果编写代码时发生了错误,则在开始编译应用程序时该错误就会被编译器捕获,此时必须查找并改正该错误,然后再次进行编译,对每一个发现的错误都要重复这样的过程。Visual Basic 在编程者输入代码时便进行解释,即时捕获并突出显示大多数语法或拼写错误,这看起来就像一位专家在实时监视代码的输入。除即时捕获错误外,Visual Basic 也在输入代码时部分地编译该代码。当准备运行和测试应用程序时,只需极短时间即可完成编译。如果编译器发现了错误,则将错误突出显示于代码中,这时可以更正错误并继续编译,而不需从头开始。
由于 Visual Basic 的交互特性,因此可以发现在开发应用程序时,您自己正频繁地运行着您的应用程序。通过这种方式,代码运行的效果可以在开发时进行测试,而不必等到编译完成以后。
二、 后台数据库引擎Access简介
35
Access 2000 是一套简单易学的数据库软件除了可以单机作业之外,也增强了与后端的SQL Server 7.0 服务器的链接功能,方便建立主从式结构的数据库环境。
1、Access 是一套管理数据库的应用软件,即数据库管理系统。(DataBase Management System ; DBMS) 数据库是指一群可组织有系统的数据集合。
2、 组织地存储数据
Access 是一个数据库管理系统,可以使复杂的琐碎的数据,集合起来组织成为有用的信息,然后将数据完整地存储起来,并提供许多工具,方便数据的规划及重复使用。
Access 中,整理好的数据将按数据的用途,分别存于不同的表中,Access 数据库中包含多个表及其它数据库对象。
3、“数据库”窗口的新增功能
Microsoft Access 2000 的“数据库”窗口提供了下列查看和处理数据库对象的选项。
使用“数据库”窗口工具栏 创建、打开或管理数据库对象的快速查找命令。
使用“对象”栏 在“对象”栏中查看数据库对象 — 竖直方位更易于使用。
将数据库对象组织为组 单击“组”栏查看组,其中包含对不同类型数据库对象的快捷方式。
使用新的对象快捷方式 在“数据库”窗口中,使用向导快速创建新的数据库对象,或是在设计视图中打开一个新的数据库对象。
自定义在“数据库”窗口中选择及打开对象的方式 如果选择,更改默认行为,并将光标置于其上以选中数据对象, 单击以打开该对象。
键入名称以选中该对象 例如,查看表对象列表时,键入“Sh”,可选择“Shippers”表 。
36
4、数据访问页的新增功能
数据访问页是一个 Web 页,可以用来添加、编辑、查看或处理 Microsoft Access 数据库或 SQL Server 数据库中的当前数据。可以创建用于输入和编辑数据的页,类似于 Access 窗体。也可以创建显示按层次分组记录的页,类似于 Access 报表。
按几种方式收集和发布当前数据 您可以使用页添加、编辑和查看 Microsoft Access 数据库或 Microsoft Access 项目中的数据;可以在 Internet 或 Intranet 上使用这些数据,也可以在电子邮件中发送这些数据。
交互地查看分组的记录 在分组的页中,通过展开和折叠组标题,可以只查看所需的细节。也可以排序和筛选记录。
分析数据和进行数据影射 使用数据透视表列表可以按不同方式组织数据,使用电子表格控件对进行数据影射以及进行复杂的计算,并且在图表中通过图形查看数据。
显示 HTML 文本 可以将 HTML 代码保存在数据库的字段中,并在页上将它显示为 HTML 格式的文本。例如,如果字段中的一个值包含 HTML 标记,它将文字的格式设置为斜体,Text,可以在页上使用一个绑定 HTML 控件按斜体显示该值。
使用熟悉的设计工具 在“设计”视图中,可使用工具栏、工具箱、主题和其他功能设计页,与您用来创建窗体和报表的工具类似。
§4.2 人事管理系统模块设计举例
一、建立公共模块
运行VisualBasic后,选择“文件”→“新建工程”菜单,然后从工程模板中选择“标准EXE”项,单击“确定”按钮。VisualBasic就会自动生成一个窗体,这个窗体的属性采用的都是默认设置。在这个实例中,先删除这个窗体,然后选择“文件”→“保存工程”菜单,在出现的“文件另存为”对话框中输入这个工程项目的名称stuff_mis,并且选择要保存这个工程的目录,单击“保存”按钮,保存工程。 为了提高代码的效率方便维护,在VisualBasic中可以用公用
37
模块来存放工程中经常使用的函数、过程和全局变量等。在这个系统中,每个功能模块都要使用数据库,因此可以使用一个公用有数据操作函数,来执行一系列的SQL语句。
在项目资源管理器中为这个工程添加一个模块,保存为Module1.bas.
代码如下:
Public gUserName As String '保存用户名称
Public flag As Integer '添加和修改的标志 Public gSQL As String '保存SQL语句
Public kqsql As String '保存查询考勤结果SQL语句
Public kqsql2 As String '保存查询其他考勤结果SQL语句 Public ArecordID As Integer '保存上下班记录编号 Public LrecordID As Integer '保存请假记录编号 Public OrecordID As Integer '保存加班记录编号 Public ErecordID As Integer '保存出差记录编号 Public iflag As Integer '数据库是否打开标志
Public Function TransactSQL(ByVal SQL As String) As ADODB.Recordset
Dim con As ADODB.Connection Dim rs As ADODB.Recordset Dim strConnection As String Dim strArray() As String
Set con = New ADODB.Connection '创建连接 Set rs = New ADODB.Recordset '创建记录集 On Error GoTo TransactSQL_Error strConnection= \"Provider=Microsoft.jet.oledb.4.0;Data Source=\" & App.Path & \"\\Person.mdb\"
strArray = Split(SQL)
con.Open strConnection '打开连接
If StrComp(UCase$(strArray(0)), \"select\0 Then
rs.Open Trim$(SQL), con, adOpenKeyset, adLockOptimistic Set TransactSQL = rs '返回记录集 iflag = 1 Else
con.Execute SQL '执行命令 iflag = 1 End If
TransactSQL_Exit:
Set rs = Nothing Set con = Nothing Exit Function TransactSQL_Error:
MsgBox \"查询错误:\" & Err.Description iflag = 2
Resume TransactSQL_Exit
38
End Function
Public Sub TabToEnter(Key As Integer)
If Key = 13 Then '判断是否为回车键 SendKeys \"{TAB}\" '转换为Tab键 End If End Sub
Sub main()
Dim fLogin As New frmLogin
fLogin.Show vbModual '显示窗体 End Sub
二、登录窗体:
图4-1
有关本窗体的代码如下:
Option Explicit
Dim pwdCount As Integer
Private Sub cmdCancel_Click() Unload Me Exit Sub End Sub
Private Sub cmdOK_Click() Dim SQL As String
Dim rs As ADODB.Recordset
If Trim(UserName.Text = \"\") Then
MsgBox \"没有输入用户名称,请重新输入!\警告\"
UserName.SetFocus
Else '查询用户
Set rs = TransactSQL(SQL)
39
If iflag = 1 Then
If rs.EOF = True Then
msgBox \"没有这个用户,请重新输入!\警告\"
UserName.SetFocus Else
If Trim(rs.Fields(1)) = Trim(PassWord.Text) Then rs.Close Me.Hide
gUserName = Trim(UserName.Text)'保存用户名称 FrmMain.Show Unload Me Else
MsgBox \"密码不正确,请重新输入!\vbOKOnly + vbExclamation, \"警告\"
End If End If Else
Unload Me End If End If
pwdCount=pwdCount+1 '判断输入次数 If pwdCount = 3 Then Unload Me Exit Sub End If End Sub
Private Sub Form_Load() pwdCount = 0 gUserName = \"\" End Sub
Private Sub PassWord_KeyDown(KeyCode As Integer, Shift As Integer)
TabToEnter KeyCode End Sub
Private Sub UserName_KeyDown(KeyCode As Integer, Shift As Integer)
TabToEnter KeyCode End Sub
3、系统主界面的设计效果
40
图4-2
4、修改密码窗体:
图4-3
Private Sub cmdCancel_Click() Unload Me End Sub
Private Sub cmdOK_Click() Dim SQL As String
Dim rs As ADODB.Recordset
41
IfTrim(OldPWD.Text)=\"\"Then '判断是否输入旧密码
MsgBox \"请输入旧密码\警告\" OldPWD.SetFocus Exit Sub Else
If Trim(NewPWD.Text) = \"\" Then '判断是否输入新密码
MsgBox \"请输入新密码\警告\" NewPWD.SetFocus Exit Sub
ElseIf Trim(NewPWD.Text) <> Trim(confirmPWD.Text) Then '判断两次密码是否相同
MsgBox \"两次密码不同\警告\" NewPWD.Text = \"\"
confirmPWD.Text = \"\" NewPWD.SetFocus Else
'修改密码
SQL = \"update UserInfo set UserPWD = '\" & NewPWD & \"'where UserID='\" MsgBox \"密码已经修改\修改结果\" Unload Me End If End If End Sub
Private Sub Form_Load() OldPWD.Text = \"\" NewPWD.Text = \"\"
confirmPWD.Text = \"\" End Sub
5、查询员工信息
图4-4
42
相关代码如下:
Option Explicit
Private query As String '保存SQL语句 Private fromdate As String '起始时间 Private todate As String '结束时间 Private Sub cmdCancel_Click() Unload Me Exit Sub End Sub
Private Sub CombineDate() '获得起始和结束时间 fromdate = Me.FromYear.Text & \"-\" & Me.FromMonth.Text & \"-1\" fromdate = Format(Me.FromYear.Text & \"-\" & Me.FromMonth.Text & \"-1\
todate = Me.ToYear.Text & \"-\" & Me.ToMonth.Text & \"-1\" todate = Format(todate, \"yyyy-mm-dd\") End Sub
Private Sub setSQL() '设置SQL语句 If IDCheck.Value = vbChecked Then
query = \"select * from StuffInfo where SID='\" & Trim(Me.SID) & \"'\"
End If
If NameCheck.Value = vbChecked Then
query = \"select * from StuffInfo where SName='\" & Trim(Me.SName) & \"'\" End If
If TimeCheck.Value = vbChecked Then
query = \"select * from StuffInfo where SInTime between #\" query = query & fromdate & \"# and #\" & todate & \"#\" End If
If IDCheck.Value = vbChecked And NameCheck.Value = vbChecked Then query = \"select * from StuffInfo where SID=' \" & Trim(Me.SID) query = query & \"' and SName='\" & Trim(Me.SName) & \"'\" End If
If NameCheck.Value = vbChecked And TimeCheck.Value = vbChecked Then
query = query & \"# and #\" & todate & \"#\" End If End Sub
Private Sub cmdOK_Click()
If Trim(Me.SID) = \"\" And Trim(Me.SName) = \"\" And TimeCheck.Value <> vbChecked Then
MsgBox \"请选择查询的条件!\警告!\" Else
Call CombineDate Call setSQL
frmResult.createList (query)
43
frmResult.Show Unload Me End If End Sub
Private Sub Form_Load() Dim i As Integer Dim SQL As String
Dim rs As New ADODB.Recordset
SQL = \"select distinct SInTime from StuffInfo\" Set rs = TransactSQL(SQL) If Not rs.EOF Then rs.MoveFirst
While Not rs.EOF
If Not IsNull(rs.Fields(0)) Then '设置年 Me.FromYear.AddItem Left(rs(0), 4) Me.ToYear.AddItem Left(rs(0), 4) End If
rs.MoveNext Wend
rs.Close
Me.FromYear.ListIndex = 0 Me.ToYear.ListIndex = 0 End If
For i = 1 To 12 '设置月 Me.FromMonth.AddItem i Me.ToMonth.AddItem i Next i
Me.FromMonth.ListIndex = 0 Me.ToMonth.ListIndex = 0 End Sub
6.添加员工调动信息
图4-5
44
相关代码如下:
Private Sub cmdOK_Click() Dim SQL As String
Dim rs As New ADODB.Recordset baddflag = False Call checkinput
If baddflag = True Then
If flag = 1 Then '添加记录 'Call checkinput
SQL = \"select * from AlterationInfo\" Set rs = TransactSQL(SQL) rs.AddNew
rs.Fields(1) = Me.AID rs.Fields(2) = Me.AName rs.Fields(3) = Me.AOldDept rs.Fields(4) = Me.ANewDept
rs.Fields(5) = Me.AOldPosition rs.Fields(6) = Me.ANewPosition rs.Fields(7) = Me.AOutTime rs.Fields(8) = Me.AInTime rs.Fields(9) = Me.ARemark rs.Update rs.Close
SQL = \"update StuffInfo set SDept='\" & Me.ANewDept & \"', SPosition='\" SQL = SQL & Me.ANewPosition & \"' where SID='\" & Me.AID & \"'\" TransactSQL (SQL)
MsgBox \"已经添加调动信息!\添加结果!\" SQL = \"select * from AlterationInfo order by ID\" frmAlterationResult.Adodc1.ConnectionString = \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\" + App.Path + \"\\Person.mdb\" frmAlterationResult.Adodc1.RecordSource = SQL If SQL <> \"\" Then
frmAlterationResult.Adodc1.Refresh End If Set frmAlterationResult.DataGrid1.DataSource = frmAlterationResult.Adodc1.Recordset
frmAlterationResult.DataGrid1.Refresh frmAlterationResult.Show
frmAlterationResult.ZOrder 0 Call init Me.ZOrder 0
Else '修改记录 'Call checkinput
SQL = \"update StuffInfo set SDept='\" & Me.ANewDept & \"', SPosition='\" SQL = SQL & Me.ANewPosition & \"' where SID='\" & Me.AID & \"'\" TransactSQL (SQL)
SQL = \"update AlterationInfo set AOldDept='\" & Me.AOldDept & \"',ANewDept='\"
SQL = SQL & \"',ANewPosition='\" & Me.ANewPosition & \"',AOutTime=#\" & Me.AOutTime
SQL = SQL & \"#,AInTime=#\" & Me.AInTime & \"# where ID=\" & ID TransactSQL (SQL)
MsgBox \"已经修改信息!\修改结果!\" Unload Me
With frmAlterationResult.Adodc1 '重新设置记录集 .RecordSource = SQL .Refresh End With
With frmAlterationResult.DataGrid1 '重新绑定记录集
45
.ReBind End With End If End If End Sub
Private Sub Form_Load() Dim SQL As String
Dim rs As New ADODB.Recordset Dim firstname As String If flag = 1 Then
SQL = \"select SID,SName,SDept,SPosition from StuffInfo order by SID\" Set rs = TransactSQL(SQL) If rs.EOF = False Then rs.MoveFirst
Me.AName = rs(1) Me.AOldDept = rs(2)
Me.AOldPosition = rs(3) While Not rs.EOF
Me.AID.AddItem rs(0) rs.MoveNext Wend
rs.Close
Me.AID.ListIndex = 0 End If
SQL = \"select distinct SDept from StuffInfo\" Set rs = TransactSQL(SQL) If rs.EOF = False Then rs.MoveFirst
While Not rs.EOF
Me.ANewDept.AddItem rs(0) rs.MoveNext Wend
rs.Close
Me.ANewDept.ListIndex = 0 End If
Me.AOutTime = Date Me.AInTime = Date End If End Sub
Private Sub init()
Dim SQL As String
Dim rs As New ADODB.Recordset Dim firstname As String
SQL = \"select SID,SName,SDept,SPosition from StuffInfo order by SID\" Set rs = TransactSQL(SQL) If rs.EOF = False Then rs.MoveFirst
Me.AName = rs(1) Me.AOldDept = rs(2)
Me.AOldPosition = rs(3) While Not rs.EOF
Me.AID.AddItem rs(0) rs.MoveNext Wend
rs.Close
Me.AID.ListIndex = 0 End If
46
SQL = \"select distinct SDept from StuffInfo\" Set rs = TransactSQL(SQL) If rs.EOF = False Then rs.MoveFirst
While Not rs.EOF
Me.ANewDept.AddItem rs(0) rs.MoveNext Wend
rs.Close
Me.ANewDept.ListIndex = 0 End If
Me.AOutTime = Date Me.AInTime = Date Me.ANewPosition = \"\" End Sub
§4.3 人事管理系统测试
在开发人事管理系统的时候,为了使系统能够稳定 运行,对系统进行了测试:
1. 查询功能测试:为了保证系统的每一项功能都可能顺利执行,尤其是查询功能的执行,特进行各项查询方式的不同索引,确保各种查询方式均可查询到正确记录。
安全测试:为了保证系统的安全性,对密码进行严格测试,达到了不同权限,不同保密程度的需求。
2. 报表打印测试:企业中报表是不可忽视的一部分,对本系统的报表打印的不同格式进行测试,证明本系统提供的打印类型合乎企业不同部门的不同需要。 5、设置上下班时间
图4-6
相关代码如下:
47
Private Sub cmdCancel_Click() Unload Me Exit Sub End Sub
Private Sub cmdOK_Click() Dim SQL As String
Dim rs As New ADODB.Recordset SQL = \"delete from TimeSetting\" TransactSQL (SQL)
If IsDate(Me.BeginTime) = False Or Me.BeginTime = \"\" Then
MsgBox \"请正确地输入时间!\警告!\" Me.BeginTime.SetFocus Else
If IsDate(Me.EndTime) = False Or Me.EndTime = \"\" Then
MsgBox \"请正确地输入时间!\警告!\" Me.EndTime.SetFocus Else
SQL = \"select * from TimeSetting\" Set rs = TransactSQL(SQL)
rs.AddNew '设置时间 rs.Fields(0) = Me.BeginTime rs.Fields(1) = Me.EndTime rs.Update rs.Close
MsgBox \"时间已经设置!\设置结果!\" End If End If Unload Me End Sub
Private Sub Form_Load() Dim SQL As String
Dim rs As New ADODB.Recordset
SQL = \"select * from TimeSetting\" Set rs = TransactSQL(SQL) If rs.EOF = True Then Me.BeginTime = \"\" Me.EndTime = \"\" Else
Me.BeginTime = rs(0) Me.EndTime = rs(1) End If rs.Close End Sub
6、修改调动信息
48
图4-7
在相应的记录上单击右键,弹出如上图所示的快捷菜单,然后再单击“查询调动信息:”弹出如下图所示的界面:
图4-8
本功能模块的有关代码如下:
Private Sub cmdOK_Click() Dim SQL As String
Dim rs As New ADODB.Recordset
49
baddflag = False Call checkinput
If baddflag = True Then
If flag = 1 Then '添加记录 'Call checkinput
SQL = \"select * from AlterationInfo\" Set rs = TransactSQL(SQL) rs.AddNew
rs.Fields(1) = Me.AID rs.Fields(2) = Me.AName rs.Fields(3) = Me.AOldDept rs.Fields(4) = Me.ANewDept
rs.Fields(5) = Me.AOldPosition rs.Fields(6) = Me.ANewPosition rs.Fields(7) = Me.AOutTime rs.Fields(8) = Me.AInTime rs.Fields(9) = Me.ARemark rs.Update rs.Close
SQL = \"update StuffInfo set SDept='\" & Me.ANewDept & \"', SPosition='\"
SQL = SQL & Me.ANewPosition & \"' where SID='\" & Me.AID & \"'\"
TransactSQL (SQL)
MsgBox \"已经添加调动信息!\添加结果!\" SQL = \"select * from AlterationInfo order by ID\" frmAlterationResult.Adodc1.ConnectionString = \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\" + App.Path + \"\\Person.mdb\"
frmAlterationResult.Adodc1.RecordSource = SQL If SQL <> \"\" Then
frmAlterationResult.Adodc1.Refresh End If Set frmAlterationResult.DataGrid1.DataSource = frmAlterationResult.Adodc1.Recordset
frmAlterationResult.DataGrid1.Refresh frmAlterationResult.Show
frmAlterationResult.ZOrder 0 Call init Me.ZOrder 0
Else '修改记录
'Call checkinput
SQL = \"update StuffInfo set SDept='\" & Me.ANewDept & \"', SPosition='\"
SQL = SQL & Me.ANewPosition & \"' where SID='\" & Me.AID & \"'\"
TransactSQL (SQL)
SQL = \"update AlterationInfo set AOldDept='\" & Me.AOldDept & \"',ANewDept='\"
SQL = SQL & Me.ANewDept & \"',AOldPosition='\" &
50
Me.AOldPosition
SQL = SQL & \"',ANewPosition='\" & Me.ANewPosition & \"',AOutTime=#\" & Me.AOutTime
SQL = SQL & \"#,AInTime=#\" & Me.AInTime & \"# where ID=\" & ID
TransactSQL (SQL)
MsgBox \"已经修改信息!\修改结果!\" Unload Me
SQL = \"select * from AlterationInfo order by ID\"
With frmAlterationResult.Adodc1 '重新设置记录集 .RecordSource = SQL .Refresh End With
With frmAlterationResult.DataGrid1 '重新绑定记录集 .ReBind End With
frmAlterationResult.Show
frmAlterationResult.ZOrder 0 End If End If End Sub
Private Sub Form_Load() Dim SQL As String
Dim rs As New ADODB.Recordset Dim firstname As String If flag = 1 Then
SQL = \"select SID,SName,SDept,SPosition from StuffInfo order by SID\"
Set rs = TransactSQL(SQL) If rs.EOF = False Then rs.MoveFirst
Me.AName = rs(1) Me.AOldDept = rs(2)
Me.AOldPosition = rs(3) While Not rs.EOF
Me.AID.AddItem rs(0) rs.MoveNext Wend
rs.Close
Me.AID.ListIndex = 0 End If
SQL = \"select distinct SDept from StuffInfo\" Set rs = TransactSQL(SQL) If rs.EOF = False Then rs.MoveFirst
While Not rs.EOF
Me.ANewDept.AddItem rs(0) rs.MoveNext Wend
rs.Close
51
Me.ANewDept.ListIndex = 0 End If
Me.AOutTime = Date Me.AInTime = Date End If End Sub
Private Sub init()
Dim SQL As String
Dim rs As New ADODB.Recordset Dim firstname As String
SQL = \"select SID,SName,SDept,SPosition from StuffInfo order by SID\"
Set rs = TransactSQL(SQL) If rs.EOF = False Then rs.MoveFirst
Me.AName = rs(1) Me.AOldDept = rs(2)
Me.AOldPosition = rs(3) While Not rs.EOF
Me.AID.AddItem rs(0) rs.MoveNext Wend
rs.Close
Me.AID.ListIndex = 0 End If
SQL = \"select distinct SDept from StuffInfo\" Set rs = TransactSQL(SQL) If rs.EOF = False Then rs.MoveFirst
While Not rs.EOF
Me.ANewDept.AddItem rs(0) rs.MoveNext Wend
rs.Close
Me.ANewDept.ListIndex = 0 End If
Me.AOutTime = Date Me.AInTime = Date Me.ANewPosition = \"\" End Sub
其他功能模块了限于篇幅,这里从略。
§4.3 系统测试
在开发本系统时,为了使系统能够稳定运行,对本系统进行了有针对性的全面测试,采取的方式是:
1、菜单项测试:为了保证每一项下拉菜单能够正确实现系统设计的功能,
52
我把该企业有关人事的所有基础数据,基本上全部输入到本系统中,并对每一个菜单项反复进行了增加、删除、修改等操作,从而保证了菜单级功能的正确实现。
2、数据跟踪:完成菜单项测试后,我又对系统内的每一个数据进行了跟踪。 3、综合测试:在以上测试的基础上对系统功能进行了整体的测试,依次来检验系统功能是否符合系统设计的要求。
§4.4 系统运行与维护
系统的运行: 1初始数据的输入
本系统的输入采用鼠标和键盘相结合的输入方法。 2、怎样进入系统
A、将本系统所在的文件夹拷贝到硬盘,然后执行其中的人事管理系统的程序文件即可,应注意要将全部文件的属性变以存档,消除只读属性。
B、在随后出现的登录界面上输入正确的用户名和密码即可 3、怎样使用本系统:
点击鼠标左键即可进行相应功能的选择。 系统的维护:
本系统是个较复杂的人-机系统,由于系统外部环境与内部因素的变化,不断影响系统的运行,同时需要系统不断地适应这些变化,不断地完善系统,以提高系统运行的效率与服务水平,这就需要自始至终进行系统的维护工作。
系统的维护主要包括四个方面:
(1)程序的维护:指的是修改部分或全部程序,这种维护往往是在条件发生变化或原系统的效率低的情况下进行的。
(2)数据文件的维护:指的是按照用户的要求对数据文件进行不定期的修改。
(3)代码的维护:随着系统的发展和变化,可能会出现旧代码不能适应新要求的问题,因此,有必要变更代码,予以维护。
(4)硬件的维护:指的是对系统所使用的设备进行维护。
本系统的日常维护由人事部门专人来负责,如果出现一些不能解决的问题,则由开发者来负责。
53
§4.5系统的转换方案:
本次开发的人事管理系统采用了并行转换方式,以保证平衡可靠的过度。即一方面使用本系统来进行工作,另一方面又继续沿用老的方式—手工方式,这种状况持续了半个月的时间,在这期间发现了一些程序中存在的漏洞和错误,用户也提出一些修改意见,经过程序的进一步完善后,正式投入了使用,中止了以前老的手工的操作方式。
第五章 开发总结
在做毕业设计以前,我对人事管理系统开发的理解还只是停留在理论知识的水平,没有实际经验,而通过这次毕业设计,在完成了人事管理系统的开发设计后,对管理系统与计算机系统的结合才有了真正的了解。
首先,在这次毕业设计中,初始的分析就是一个困难,主要是因为对人事管理系统的了解太少,以及对企业的需求所知甚少,但是通过阅读了许多有关管理学科的资料,再加上实际考查,才能够完成系统的分析和设计。
其次,软件开发工具的选择也是一大困难,由于对软件开发工具的不熟悉,所以通过一段时间的学习,以及向同学和老师的请教,才逐步掌握VB和Access工具。
最后,在系统分析、设计时,遇到了很多技术上的困难,但是经过老师的指导和自己不断的修改与调试,基本解决了设计中的问题。
通过毕业设计,达到了大学中所学课程与实际情况的结合,是在大学中所学知识的一次综合应用,虽然由于个人能力的关系,本系统还有许多不尽如人意之处,但是在毕业设计中,不管是知识还是能力都得到了很大程度的提高, 而且对软件开发工作有了真正的理解和认识。
54
主要参考文献
1、《Visual Basic 6使用指南》 田金兰等 电子工业出版社 2002年出版
2、《Visual Basic 6数据库访问技术》Jeffrey 机械工业出版社 2003年出版
3、《软件开发技术》 潘锦平 西安电子科技大学出版社1999年出版 4、《数据库系统概论》 王珊、萨师宣 高等教育出版社 2001年出版 5、《如何使用Visual Basic 6.0中文版》 机械工业出版社 2001年出版 6、《中文Visual Basic 6.0实用教程》北京希望电脑公司希望电子出版社
55
因篇幅问题不能全部显示,请点此查看更多更全内容