精华内容
下载资源
问答
  • 为了提高煤矿企业人力资源工作的水平,全面提升煤矿员工的综合能力,探讨了人力资源管理对煤矿企业发展的重要性。根据煤矿企业目前存在用人制度的缺陷,深刻剖析了人力资源工作存在的问题,确立了人力资源工作以人为本的...
  • 然而这其中也有很多地方不够完善,有待于进一步提高,尤其是煤炭企业的人力资源管理还处于初步阶段,发展还处于落后状态,文章主要研究的就是煤炭企业人力资源管理的不足以及针对这些不足而提出的对策。
  • 中小民营企业人力资源管理重要性.doc
  • 浅析中小民营企业人力资源管理重要性.doc
  • 人力资源管理企业重要性以及价值所在.doc
  • 随着全球对知识和人才的重视,企业人力资源管理重要性的认识逐渐深化,人才的全球化竞争使企业的人力资源管理面临前所未有的挑战。在新形势下,人力资源管理系统是一个企业单位不可缺少的部分,是适应现代企业制度...
  • 人力资源管理企业重要性以与价值所在.doc
  • 因此,开发一个界面友好,易于操作的人力资源管理软件进行自动化处理变得十分重要,这正是本系统开发的目的和意义。本文所阐述的人力资源管理系统,以浏览器/服务器模式高效地实现了人力资源管理系统的各项功能,可...
  • 一、非人力资源的人力资源管理重要性 二、如何安排工作和岗位  三、主管如何选择最佳人才 四、管理者的育才 五、管理绩效 六、员工关系管理  ... 关键词:非人力资源部门的人力资源管理PPT下载。.PPTX格式;
  • 最新转型中国企业人力资源管理与个性化制度体系创建(PPT范本)来了,在一个团队中好的制度发挥着重要...该文档为转型中国企业人力资源管理与个性化制度体系创建(PPT范本),是一份很不错的参考资料,具有较高...
  • 企业文化是企业经营管理中人力资源管理的重要精神支柱,搞好企业文化的...通过分析煤炭企业人力资源管理中企业文化的重要性,进行现状分析发现存在的主要问题,并针对性的提出对策,以更好地推进煤炭企业人力资源管理工作。
  • {人力资源考勤管理} 企业考勤管理系统的 设计说明书 日期二一四年六 一背景与意义 考勤管理系统是企业单位管理系统中最重要的信息通过员工 考勤考核管理反映员工在一定阶段的工作成绩而我国众多的企 业都是采用传统...
  • 随着大数据的发展,如今大数据技术也已经成为了企业人力资源管理重要手段。借鉴大数据分析的理念,人力资源系统可有效挖掘和利用有效信息资源,提高管理工作的准确和客观。  具体来看,大数据在企业人力...

      随着大数据的发展,如今大数据技术也已经成为了企业人力资源管理的重要手段。借鉴大数据分析的理念,人力资源系统可有效挖掘和利用有效信息资源,提高管理工作的准确性和客观性。

     

      具体来看,大数据在企业人力资源管理中,有着以下几方面作用。

     

      1.使招聘更精确化

     

      大数据时代下,企业进行员工招聘不需要花费太多的时间和资金就可以招到更为适合的人才。依托大数据技术,人力资源管理部门可以对企业各职位人才对企业发展的重要性有个大概的了解,以及整理出企业发展所需要的人员数目和人员所具备的能力。依托大数据技术,可以让招聘过程更加精确化,使得招聘流程得以简化,从而节约了大量的资金。

     

      2.使培训更个性化

     

      人力资源得以合理利用的关键是要发挥出每个员工的个性。以往,企业对员工的个人情况不重视或者无法对个人的能力进行评估,造成企业任务分配的不合理化,使得员工缺乏工作积极性,办事效率低下。依托大数据技术,人力资源管理部门可以结合员工的个人情况,制定更具合理性的任务分配和培训管理,从而实现人尽其用,物尽其能。

     

      3.使考核更全面化

     

      过去企业对员工考核的方式单一,造成一些员工考核结果与工作情况不相符的问题频繁出现。而大数据的引用将消除传统考核方式过于片面的弊端,通过精确计算员工的工作绩效,并采用多种数据模型对员工的工作情况进行反馈和统计,可以让管理层更加清楚地了解员工的工作状况,让工资和奖励的分配更加合理到位。

     

      4.使员工更亲密化

     

      大数据的优势在于它对数据的相关性分析和总结的能力。人力资源管理部门可以利用大数据中的非结构分析对员工之间的交往和工作情况进行了解。从而有利于企业团建工作的制定和开展,使得员工间的关系更加亲密,并营造出良好的工作氛围。

     

      大数据是历史发展的潮流,人力资源管理要充分利用好这个技术,进行科学化的变革,助力人力资源管理朝着更好的方向发展。此外,人力资源管理者也要认识到大数据技术可能带来的一些挑战,譬如员工信息安全保护等。如何将大数据合理有效地应用到人力资源管理中,还需要人们对其进行进一步的研究。

    展开全文
  • 当今社会企业之间的竞争,实际是人才的竞争,是人力资源的较量。人才是企业最宝贵的财富和资源,是企业生产力中起决定的因素。...企业管理应重视人力资源的开发,建立高素质的人才队伍,使企业可持续发展。
  • 随着我国社会经济的持续发展,为我国企业...人力资源价值链的企业人力资源管理模式是一种新型的模式 ,是时 代发展的产物。本文主要探讨了人力资源价值链基础上的人力资源链式管理模式的特点,望对相关的企业有所帮助。
  • 大数据在人力资源管理当中的应用

    千次阅读 2019-09-10 11:08:56
    文章目录大数据时代数字与人类文明普查与统计学统计学所推动的数据新知统计学之殇:全美流感预测患病人次预测案例大数据时代数据、算法、计算资源摩尔定律OTT式技术创新分布式集群分布式算法执行虚拟化与云计算...

    大数据时代

    数字与人类文明

    ​ 数字是人类发明的最重要的概念之一,与整个人类文明进程相伴相生

    ​ 早在8000年前美苏尔地区商人利用泥球计算商品销量

    在这里插入图片描述

    ​ 商鞅也说过经典的“强国知十三数“:竟内仓、口之数,壮男、壮女之数,老、弱之数,官、士之数,以言说取食者之数,利民之数,马、牛、刍藁之数。

    ​ 我国古代的孙子兵法也有五条基本原则:“度(国之大小)、量(粮草资源多少)、数(军队数量多少)、称(各方实力对比)、胜“

    ​ 从这些概念中都可以明白,数字是从古至今中人类一直在使用的东西,并且伴随着人类的发展也在不断的完善与进步。

    ​ 对数字的利用在推动人类文明进步的时候都发挥了重大作用例如:美国制宪会议。

    在这里插入图片描述

    ​ 在制宪会议中,由于在制定参众两院分权机制的过程中,众议院的席位要按照人口多少来进行分配,拥有众多黑奴的南方各州于是就黑奴是否应该纳入人口总数与北方各州展开了激烈辩论。最终,大会决定,每隔黑奴按照3/5个白人(自由人)的标准纳入南方人口的总数。这个3/5页写进了宪法,成为了黑奴不平等的历史见证。但就当是而言,这个数字的制定,为推动宪法制定做出了重大贡献。

    ​ 并且数字作为基本工具,为整个科学大厦奠定了基石

    • 在量子力学领域:从数字的结论出发解释了物理的规律
    • 在量化投资领域:用数字结论进行指导投资

    普查与统计学

    ​ 人口普查是人类第一次有意识的、大规模的利用数据,统计学也就在人口普查中诞生了。

    在这里插入图片描述

    ​ 人类最早的统计活动,就是起源于和人口情况相关的社会调查。而统计(Statistics)一词也最早见于17世纪的德国,原意为国势学。

    ​ 最初,人口普查时为了征税、评估国家的军事实力、实施社会控制。而后,纳入普查范围内

    的项目数越来越多,普查本身的细分程度也不断加深,统计的难度和工作量不断增加。当时十八世纪的美国,每隔十年就需要进行一次普查,统计数据就要耗费8年。由此催生了自动制表技术抽样统计推断的一系列方法。

    • 自动制表技术:为后续的计算机科学奠定了基础。
    • 抽样和推断:奠定了数理统计学的科学基础

    ​ 统计学成为近代数据科学最前沿的领域的发展与四个特质是息息相关的:

    1. 始终站在数据应用的第一线
    2. 向各个垂直细分领域渗透
    3. 持续不断的价值产出
    4. 推动理论创新与技术创新
      在这里插入图片描述

    统计学所推动的数据新知

    ​ 所谓数据,是指指用于记录某项客观事物运行状态或事物属性的有序数字集合,而数据分析则是挖掘数据所蕴藏的规律,而数字规律,即事物规律,然后用这些规律进一步的去指导生产生活,来不断的完善人们的生活。

    统计学之殇:全美流感预测

    ​ 2009年出现了一种新型流感病毒,这种甲型H1N1流感结合了导致禽流感和猪流感的病毒特点,在短短几周之内迅速传播开来。全球的卫生机构都担心一场致命的流感病毒即将来袭,更有评论家警告说,可能会爆发大规模流感。

    在这里插入图片描述

    ​ 然而更加糟糕的是,针对这个问题我们还没研发出对抗这种新型流感病毒的疫苗,因此能做的事情只是根据病毒出现地方进行应急防范,以延缓传播速度。这就要求必须先知道这种流感病毒出现在了哪里。

    ​ 然而,患者只会因为患病后,甚至患病多日后才回去意愿,因为医疗机构的统计汇总效率比较底下,导致上报疾控中心需要时间,并且统计汇总也需要时间,造成的后果是公共卫生机构通常在两周后才能统计出全国各地患病信息这也导致了公共卫生机构在疫情爆发的关键时期反而无所适从。

    ​ 但是,在H1N1爆发的几周前,谷歌公司的工程师们在《自然》杂志上发表一篇论文,论述了如何利用人们在网上的搜索记录来完成全美冬季流感的传播预测,甚至可以精确到特定的地区和州,这是因为他们利用了5000万条人们的检索词频和美国疾控中心在2003年至2008年间流感传播时期的数据进行比较,并通过这些搜索记录来预测这些是否患上了流感,最终这项研究最终大获成功,他们的算法最终发现了45条检索词条的组合,最终预测结果和官方数据相关性高达97%,下面是预测的结果比较。

    在这里插入图片描述

    通过对2009年甲型H1N1流感的预测可以看出,两种统计方法表现出了两种截然不同的效率:

    • 官方机构的统计因为官方数据习惯性的滞后导致疾病爆发两周后才能统计出结果
    • 而谷歌的预测显然更有效及时,他 们能够提前一天预测全美各个地区流感爆发的趋势

    ​ 谷歌的预测可以为公共卫生机构的预防流感措施部署提供极有价值的信息,更关键的是,这是一种从未使用过的预测工具。该事件所代表的价值观和方法论,都深刻的影响了我们看待和使用数据的方法。

    患病人次预测案例

    我们希望通过这次案例获取患病人次的一般规律,进行患病人次的预测。

    首先进行背景介绍:

    • 如今,定量化的了解区域内居民医疗卫生服务需求,对于合理制定区域卫生规划、优化医疗卫生资源配置、提高医疗卫生服务质量和效率,切实有效缓解群众看病难、看病贵的状况,有着显著的现实意义。

    然后我们进行目标分析,我们希望可以达成三点:

    • 高精度:首先进行的是针对某市按月进行患病人次预测,希望能够将误差控制在5%左右,在确定模型稳健性之后既可通过预测序列和实际序列的比对来查找患病人次异常的时间点。
    • 动态预测:能够使用一种确定的模型进行长期迭代预测,并且要求能够预测每年患病人次序列的波峰变化情况。
    • 可扩展性高:确定一种模型或方法,能够应用到不同细分序列(如不同地区、不同人群的患病人次序列)、平行序列(如人次和金额序列)的预测当中,并且通过平行序列的比对来查找异常点。

    我们选择时间序列模型进行分析,查看一下数据图。

    在这里插入图片描述

    下面查看实际的患病人次与预测的人次之间的差距

    在这里插入图片描述

    通过对结果进行分析可以看出,以季度为单位进行迭代式动态预测,以误差率作为评判指标,预测集和训练集无交集,可见模型较为稳健,并将误差率控制在5%-10%左右。

    在这里插入图片描述

    大数据时代

    让我们简单复盘一下谷歌公司如何做到这么精准的预测,在我看来主要是因为拥有三点:

    • 拥有海量的数据
    • 拥有先进的资源
    • 拥有充足的计算资源

    ​ 在这个大数据时代,所有的大型互联网公司都在朝向大数据领域发力,而上述谷歌公司所拥有的的三点,将会最终构成推动数据科学发展的三驾马车。

    数据、算法、计算资源

    摩尔定律

    IT技术的蓬勃发展,可以用摩尔定律准确的描述,1965年,英特尔创始人之一戈登摩尔在考察计算机硬件的发展规律后,提出了著名的摩尔定律。

    在这里插入图片描述

    该定律认为,同一面积芯片上可容纳晶体管的数量,每隔16-24个月将翻一倍,计算性能也将翻一倍。换而言之,也就是每隔16-24个月,单位价格可购买到的计算能力将翻一倍。在随后的几十年内,摩尔定律被无数次的被印证。

    而同步发展的还有网络宽带和物理存储容量
    在这里插入图片描述
    下图是硬盘存储器一兆节价格一览图(美元),从图片中可以看出,半个多世纪以来,存储器价格几乎下降到原来价格的亿分之一。

    在这里插入图片描述

    下图是网络宽带变化的趋势

    在这里插入图片描述

    OTT式技术创新

    伴随着物理硬件升级,IT领域的OTT式技术革新,分布式计算和量子计算机的出现,也必将决定性的改变计算资源供给端的情况:

    • 分布式计算技术:逐渐成为大数据领域底层IT架构的行业标准
    • 量子计算机技术:使得单体计算能力将拥有质的飞跃

    分布式集群

    分布式集群可以调动不同的计算资源为同一个计算目标服务,可以实现一个计算目标可以调配无限计算资源并予以支持,解决大数据情境中运算量过大超出单台屋里机运算承受能力极限的问题,最终达成同物理计算资源协同调配的成效,也为后续的云计算奠定了基础。

    分布式算法执行

    借助分布式集群、Hadoop生态进行算法执行,使用者创造工具,那么工具肯定也会反过来影响使用者,而分布式式算法可以解决多个步骤:

    • 通过利用分布式的存储、计算框架,完美解决分析过程中数据量大、中间结果多,无法单机运行等问题。
    • 能够直接嵌入产品,从而加快产品开发过程。
    • 可以进行流式处理,用户可较为快速得到响应,并在第一时间予以回复,从而缩短了算法得到反馈、建立闭环的时间,加快了算法迭代速度。
    • 利用MLlib和systemML,使得算法开发相对独立、算法使用相对灵活,通过建立机器学习流,提高算法复用率,极大程度简化调参过程,加快了算法开发效率。

    虚拟化与云计算

    云计算是指在虚拟化技术的基础之上,根据实际计算需求定制化的输出计算资源从而获取计算资源,打通了计算资源供给和需求的两端,可以不用在本地配给计算资源,直接通过互联网给计算中心发送计算请求,计算中心在根据计算要求分配计算资源并执行运算,最终将计算结果返回给用户。

    云计算,给万物赋能

    通过云计算,只要能联网、有消息发送终端和接收终端,就能随时随地申请计算资源执行计算,终端不再需要拥有复杂运算能力,也能够执行复杂运算,进一步执行复杂决策,云计算能够给万物赋能,赋予万物执行计算的能力。

    当然,云计算所代表的赋予万物计算能力中心化的管理,也客观上促进了数据统一存储,同时也推动了物联网的兴起。

    数据的价值

    数据生产1.0

    IT行业每隔15-20年就会迎来一轮重大的技术革新,在1980年前后,第一次信息化浪潮也就是个人计算机的普及到1995年前后,第二次信息化浪潮也就是互联网化的浪潮。伴随着这两次信息化浪潮的出现,数据的诞生方式产生了重大的变化,从原先的可以搜集的小样本抽样转变为后来的自动生成无穷无尽的数据。

    数据产生2.0

    90年代末,互联网技术兴起,主要的作用是信息的传播和分享,到2004年Facebook和Twitter相继问世,互联网成为了人们实时互动、交流协同的载体,全世界的网民都开始变成了数据的生产者,在到2012年乔治大学的教授李塔鲁考察了Twitter上产生的数据量,他作出估算说,过去50年,《纽约时报》总共产生了30亿个单词,现在仅一天,Twitter上就产生80亿个单词的信息量。

    数据产生3.0

    现在我们通过智能手机+智能穿戴+感知传感器,这极大程度上拓展了数据采集渠道,我们利用智能手机与其他组织或个人发生实时互动,行为数据也被实时记录,智能穿戴和传感器无时无刻,不在自动采集数据,在可以预见的未来,以人为核心的一切事物运行和状态都将被数据所记录。

    数据与石油

    数据的价值,在于数据结论的产出,也就是如何使用数据,就如同埋在地底下的石油,需要开采和冶炼,才能够真正挖掘其价值。所以在大数据时代,数据是基础,而算法是核心。

    算法核心

    算法核心用途是挖掘事物运行内在逻辑和规律,如果说数据是石油,计算能力是开采石油的工具,那么算法,则是石油冶炼技术,将算法作用于数据,产出有价值结论的过程,实际上就是挖掘数据价值的过程。

    数理统计与机器学习
    • 传统数理统计分析算法:

      以神经网络为代表的机器学习类算法,正掀起一场针对统计学算法的革命。

    • 机器学习算法:

      通过数据的训练,不断迭代不断优化从而逐步改善、自我提高。

    目前来说以神经网络为代表的机器学习类算法,正掀起一场针对统计学算法的革命。

    学习型算法

    阿里集团学术委员会主席、湖畔大学教育长:曾鸣提出的看法是:所谓学习是通过概率论的方法,不断地去通过正反馈来优化结果,而不是像人一样去思考学习。这种机器学习的方法必须基于海量数据的校验,必须基于算法的一个不断反馈调整的过程。

    在这里插入图片描述

    医保反欺诈案例

    随着社会老龄化程度加深,我国各地医保压力持续增加,部分地区已经面临穿底风险。并且医保欺诈面临着以下的问题:

    • 老龄化:随着社会老龄化程度不断增加,医保支出初年增加,在医保骗保问题没有得到有效解决之前,医保面临压力与日俱增。
    • 检测效率:传统医保反欺诈检测主要依靠人工抽查审核,不仅检测效率较低,许多新形式的骗保模型也无法通过经验迅速判别,这也是长期以来医保欺诈问题没得到有效解决的原因之一
    • 暗箱操作:有人就会犯错,有政策就会有对策,部分医保局甚至存在对医保骗保睁一只眼闭一只眼的态度,有的则更甚。
    • 亡羊补牢:通过抽查进行人工审核,无法在就医行为发生时就及时对骗保行为进行制止,就算判别为欺诈,很多时候也都是”人去财空“

    在此背景下,利用大数据的方法,对医保骗保行为进行智能识别,在骗保行为发生的第一时间进行识别与制止,则能够起到较好的反欺诈效果。

    首先,我们抽象定义时间和时间,以及它们的属性。

    • 事件:患者与医院进行一次交互的抽象
    • 时间:两次时间之间的时间间隔,根据决策树分类结果进行分箱的结果】
    • 事件属性:在抽象的事件中针对某些目的所赋予事件的标签

    在这里插入图片描述

    接着,将就医路径抽象成有时序关系的事务集。

    在这里插入图片描述

    然后查看各类的相关指标

    在这里插入图片描述

    在这里插入图片描述

    实际案例

    CDA就曾与重庆卫计委展开合作,就一些病情对患病人群进行调查分析,并且可以针对某些具体的病症进行观察,成功的帮助卫计委对患病人群进行管理预测。
    在这里插入图片描述

    在这里插入图片描述

    推动数据科学进步的三驾马车

    随着科技不断的进步,数据科学也在不断的进步,而主要推动数据科学进步的有三部分:

    • 基础:计算能力
    • 关键:数据
    • 核心:算法

    这三部分是相辅相成、相互促进,并且缺一不可的,只用继续的发展这三部分,数据科学才能在发展的道路上,拥有源源不断的动力。

    人工智能

    根据2018年1月18号颁发的中国《人工智能标准化白皮书》定义,我们可以将人工智能视为数据科学皇冠上的明珠,目前的主流研究仍然集中于弱人工智能,并取得了显著进步如语音识别、图像处理和物体分割、机器翻译等方面取得了重大突破,甚至可以接近或超越人类水平。但是弱人工智能并不能成为真正实现推理和解决问题的智能机器,这些机器表面看像是智能的,但是并不真正拥有智能,也不会有自主意识。

    2018年1月国家标准化管理委员会颁布的《人工智能标准化白皮书》对人工智能学科的基本思想和内容作出了解释:

    • 围绕智能活动而构造的人工系统
    • 知识的工程
    • 机器模仿人类利用知识完成一定行为的过程

    而人工智能随着这么多年的发展,可以将其发展历程分为三代

    第一代人工智能

    第一代人工智能是基于规则的“智能”,典型代表:IBM深蓝(Deep Blue)

    在这里插入图片描述

    1997年5月11日美国IBM公司研制的并行计算机“深蓝”击败了雄踞世界棋王宝座12年之久的卡斯帕罗夫。但是国际象棋每一步的选择以及应对对手某一特殊步骤的最有方案是确定的,只要足够多的定性棋谱以及足够大的计算速度,就能够在对手走任何一步的时候准确判断出下一步应该如何走,就本质上而言,1997年的深蓝是基于规则的人工智能,深蓝本身并不会创造新的战略战术。

    第二代人工智能

    第二代人工智能是能够自主学习的人工智能,典型代表:谷歌的AlphaGo

    在这里插入图片描述

    2016年3月9日到15日,阿尔法围棋程序挑战世界围棋冠军李世石的围棋人机大战五番棋在韩国首尔举行。比赛采用中国围棋规则,最终阿尔法围棋以4比1的总比分取得了胜利。

    在这里插入图片描述

    2017年5月23日到27日,在中国乌镇围棋峰会上,阿尔法围棋以3比0的总比分战胜排名世界第一的世界围棋冠军柯洁。在这次围棋峰会期间的2017年5月26日,阿尔法围棋还战胜了由陈耀烨、唐韦星、周睿羊、时越、芈昱廷五位世界冠军组成的围棋团队。

    第三代人工智能

    假如数据变为无限,那么世界将会变成什么样子,目前第三代人工智能的代表是百战百胜的AlphaGo Zero

    2017年10月19日,谷歌DeepMind团队在Nature发表论文,以《Mastering without human knowledge》为名,详细介绍了没有再用人类历史棋局作为训练样本,训练过程从随机开始,通过左右互搏精进棋艺,最终以100:0战胜了AlphaGo的AlphaGo Zero。

    但是以上的这些人工智能,都是在信息透明,规则透明,结构明确,且为围棋规则和判断棋局的输赢本身也是一种监督信号,总的来说尚未脱离人类控制

    数据智能与企业应用

    市场反馈闭环

    企业要应用数据、释放数据的价值,那么核心就在于构建从算法到市场应用的反馈闭环,从打通算法结论到实际应用的通道,到给予算法及时有效的市场反馈再到训练算法并在训练过程中优化。这三个步骤是不断的在循环完善自身的,形成一个自我促进,自我发展的闭环。

    算法驱动

    现在的社会可以由并且有一些领域已经开始由算法来驱动,在人类的基础重复决策领域上代替或指导人类参与决策,例如:

    • 驾驶领域:无人驾驶
    • 基础诊断领域:辅助诊疗
    • 基础法务领域:法律大数据
    • 基础翻译领域:智能翻译

    并且算法可以在人类未知的领域开拓先知,比如IBM就实验过,如何快速决定某种蛋白质对治疗癌症有效,一般人工试验时,每研究一种蛋白质,耗费的人力物力都非常大。10年时间也可能只能研究10多种。但是使用机器学习判断时,机器“读”完了近30年来有关蛋白质研究的所有论文,从中确定蛋白质生物属性上的关系,进而决定哪种蛋白质更值得研究。这种速度是比人类快很多倍,而这一切只需要机器有强大的计算能力就可以了。

    数据科学技术:将像电力一样改变世界

    ​ 来自MIT经济学教授艾瑞克.布莱恩.杰弗森的观点他认为普遍性技术(GPT)应该有三种特征:

    • 扩散性:在很多行业内得到普遍应用,且引发很多行业的突破,如蒸汽机
    • 改进性:随着技术发展,会迅速进行不断的自我改进,如电脑的摩尔定律
    • 连锁创新性:每到一个行业,就创造新的生产过程、新的商业模式,如互联网

    而每当发生重大的技术突破时,由于它对整个社会的影响力巨大,甚至需要整个社会进行重新组织,来适应这种新技术。

    人工智能与数据智能

    人工智能是数据养育的智能,其决策核心是算法,同十八世纪工业革命通过机器生产代替手工劳动从而释放人类劳动力类似,数据智能就是能将通过参与、代替人类决策的方式,帮助人类释放脑力

    计算型社会的到来

    现在计算型社会已经到来,只是还没有开始流行起来,就比如无人驾驶现在所遇到的道德和法律上的难题,和数百年前汽车代替马车的过程有这惊人的相似性,所以我们现在已经迎来了计算型社会,只是如果想全面建成的话,还有很长的一段路要走。

    大数据人力资源管理

    人力分析的时代背景

    人才对于企业的价值体现在了劳务输出,创新能力以及人才吸引的作用,所以人才的需求现在的竞争已经算愈发的激烈,在发达国家里,人才创造了了绝大部份价值,专门计算公司无形资产(如技术、专利、品牌等)的人认为治理产出占公司总价值的80%,接下随着经济转型和产业升级,可以预料到的人才需求竞争会愈发激烈

    但是随着互联网化程度加深,信息资源可获取性加强,以及高新产业快速发展与迭代,“时间战场”、“注意力商人”等概念兴起,企业员工流动性明显加快,员工平均任期不断下降。亚特兰大联邦储备银行考察了各年龄段和各时代员工的工作流动率的平均值发现:

    • 1993年出生的千禧一代20岁到30岁之间平均工作任期只有一年
    • 1983年出生的一代在相同年龄的工作平均任期为2年在30岁到40岁之间的平均工作任期为3年在相同年龄的工作平均任期为4年

    联盟

    在当今时代,人才和雇主的关系悄然发生变化,雇主和人才的“联盟”正作为一种新兴的人才机制在互联网时代大行其道,所谓联盟,是指雇主与员工之间从商业交易转变为互惠关系的框架。而公司实行这种互惠的框架要获得收益只需要进行三步:

    • 首先是互惠投资:创建一种鼓励公司和个人相互投资的工作模式
    • 然后是实行任期制:打造任期制,将非终身雇用的员工变为公司的长期人脉
    • 最终进行获益:吸收员工的高效人脉情报

    只有雇主与雇员结为强大的联盟,共同拥有持续的创新与丰富的智慧宝库才能繁荣发展

    人力资源分析

    通过人力资源分析,我们可以找到“猎取、培养和留住人才”的解决方案。

    在2016年CDA就与期合作企业有利网,就针对有利网公司的内部开展了一项人力分析项目并取得显著成效,通过制定数据指标体系来评估客服人员的工作绩效,并通过构建模型来预测销售人员的任期生命周期。

    但对于整个行业而言,大数据人力资源管理尚处于行业探索期。根据Sierra-Cedar公司的最新报告指出,企业人力资源管理应用大数据者尚不超过9%,IBM曾经对342名首席人力资源官员进行了研究,结果报告显示:

    仅有不到16%的公司能够使用数据针对未来的员工问题进行预测并采取行动。因此,一个比较好的方式方法,是参考已经成熟的应用数据的商业模式,来进行人力资源分析。

    人力资源分析与商业分析

    根据美国巨兽公司负责大数据分析和商业智能的全球副总裁Jean Paul Isson的观点,人力资源和市场营销有着显著的共性,他们都曾是“凭直接和经验作战”的团队,以及都曾是公司的“成本中心”

    但是有些公司的市场营销很早就开始利用数据,实现了严谨的艺术与科学之间的平衡,发挥了巨大的商业价值,走在时代潮流前面的公司已经开始逐渐摒弃那些际遇直觉的判断和实现。

    商业分析的一般流程

    目前进行商业分析的流程一般有两种类型,一种是IBM商业分析方法论,一种SAS的数据挖掘方法论:

    • IBM的CRISP-DM商业分析方法论

    在这里插入图片描述

    • SAS SEMMA 数据挖掘方法论,主要分为:
      • Sample–数据取样
      • Explore–数据特征探索、分析和予处理
      • Modify–问题明确化、数据调整和技术选择
      • Model–模型的研发、知识的发现
      • Assess–模型和知识的综合解释和评价

    人力分析阶段

    根据商业分析的一般流程,我们可以总结出企业应用商业分析的三个阶段:

    1. 根据相应的可行性评估,明确分析目标,进行有针对性的数据采集、整理、清洗,以及建立完整与人资相关的自动化数据搜集体系
    2. 根据分析目标构建切实可行的算法模型,根据业务需求,构建可解释型算法或结果导向型算法,并提供相应的算法模型结论
    3. 将模型结论付诸实现,并根据实际效果提供反馈,再根据反馈的情况不断修正和优化模型

    大数据员工管理

    在大数据人力资源管理,在实际应用相对较为成熟的,是因为在员工管理领域,主要是因为以下三点:

    • 拥有历史人资数据
    • 拥有现任员工数据
    • 能够获取现任员工及时反馈迅速建立业务反馈闭环

    滴滴公司的大数据企业员工管理

    接下来,以滴滴公司对司机管理为例,来对大数据企业员工管理进行简单说明。

    滴滴公司的员工管理面临着两个方面的问题,一方面随着滴滴公司在打车领域市场地位确立,旗下全职、兼职司机数量众多,另一方面,由于不存在硬性制度约束,公司又面临单纯依靠业务关系很难与司机建立长期稳定雇佣关系的困境。

    作为数据驱动的公司,滴滴公司需要考虑将业务领域应用非常成熟的大数据技术应用于司机管理领域。

    员工画像、行为预测与机制优化

    大数据企业员工管理的工作又可分为三个主要方面,也是滴滴公司在进行智能化司机管理前的三方面工作,分别是员工画像,员工价值评估和管理机制优化。

    • 员工画像:基础的核心是将一些可以量化描述或考核指标进行量化处理
    • 员工价值评估:在员工画像的基础上,对员工对公司的收益贡献程度进行量化评估
    • 管理机制优化:利用数据分析方法及结论进行管理方法方面的优化
    员工画像

    员工画像包括两部分,为后续的分析先做好数据铺垫

    工作内容客户画像员工画像
    第一层次采集基本数据采集与市场营销相关的客户数据基础字段,包括客户生物属性、社会属性等;年龄、性别、收入、资产状况、消费记录等。采集与人资管理相关的员工数据基础字段,包括客户生物属性、社会属性等;年龄、性别、工龄、家庭状况、司机职称、车辆信息、驾驶记录、客户评分等、
    第二层次根据基本数据生成标签如:高学历、青年、未婚、电子产品控、科技工作者等。车辆安全系数高、驾驶经验丰富、工作时间稳定、出勤率高、驾驶平稳、事故率低、五星司机等。
    员工价值评估

    和客户价值评估一样,接下来在员工基本数据的基础上,去寻找高价值司机,然后在高价值司机群体重,通过其标签,挖掘共性:

    • 出勤率高
    • 驾驶习惯良好
    • 服务态度认真
    • 已婚
    • 中年
    • 工作时间稳定

    这些部分是和管理经验相符合的,更重要的是,数据分析可以提供一整套数字化结论的同时,还提供了能够行之有效的解决方案。

    员工管理制度优化

    员工管理制度优化与运营策略创新类似,针对不同价值等级的员工,基于相应的管理策略

    员工价值核心策略具体方法
    高价值员工维护为主收益优化(派单策略调整);特权福利(车辆升级,优惠购车等);定制化保赔服务等
    潜在高价值员工培养为主收益保证(派单策略调整);阶段性鼓励措施等
    其他员工激励为主阶段性鼓励措施、抢单激励措施等
    流失员工激励为主回归福利等等

    并通过算法自动的进行决策,进行准确、快速、高效、廉价的决定,同时和《联盟》思路高度契合,由雇佣关系转变为互相投资的互惠关系。

    人力资源大数据产品实例

    每个企业可以根据企业的需求,为企业内部员工提供系统化、个性化的培训方案,提高员工的技术水平,当然如果企业内部暂时没有能力去执行这样的方案的时候们可以寻找专业的提供数据分析方面的企业内训服务,帮助员工快速提高技术水平,实现合作共赢。

    下面是有关CDA与某公司合作制定的有关员工的管理分析
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 然而大部分情况下,人力资源的专业人员不能专注于开展这项重要的工作,他们的精力被迅速增加的行政工作所分散。不少公司也发现,通过运用适当的技术可以减少复杂的行政工作,让人力资源部的工作回归到本质:维护...
  • 国内民营单体星级酒店业在人力资源管理上存在着用人观念、人力资源规划、培训与职业规划、制度调整等方面的问题,直接影响到酒店的管理水平及市场竞争力,必须进一步加强对人力资源管理重要性的认识,完善员工招录...
  • 随着全球对知识和人才的重视,企业人力资源管理重要性的认识逐渐深化,人才的全球化竞争使企业的人力资源管理面临前所未有的挑战。在新形势下,人力资源管理系统是一个企业单位不可缺少的部分,是适应现代企业制度...
  • 项目管理基础:9.项目人力资源管理

    千次阅读 2020-04-09 11:01:18
    文章目录一、项目人力资源管理重要性1.全球IT职业需求2.IT人力资源管理的启示二、什么是项目人力资源管理1.定义2.项目人力资源管理的四个过程三、管理员工的关键所在1.激励理论1).马斯洛的需求层次理论2).赫兹伯格...

    一、项目人力资源管理的重要性

    人才是企业最重要的财富,项目人力资源管理是项目管理的一个重要组成部分。

    1.全球IT职业需求

    IT专业人员的全球职业时长正呈爆炸性增长,对项目经理的需求也在继续增加。

    ICT(information and communications technology )信息通信技术

    • 2008年全球ICT市场产值高达3.7万亿美元,2007-2008 ICT市场年均增速为10.8%。

    • 2011 ICT接近4万亿美元。

    • ICT开支最高前十国家:美国、日本、中国、德国、英国、法国、意大利、加拿大、西班牙。

    • 08年美国IT行业市场在职人数超400万,IT行业失业率较低。

    • 人际关系成为IT人员最重要的软技能。

    • 项目经理需求大: IT的商业价值取决于其准时且在预算内交付能满足商业需求的项目的能力。

    2.IT人力资源管理的启示

    企业必须满足人力资源需求和公司员工的个人需求,致力于IT人才库的增长和丰富。

    • 提高福利、重新制定工作时间和激励机制,招聘新员工。

    二、什么是项目人力资源管理

    1.定义

    包含使项目设计的人员得到最有效的利用的全部过程。包括所有项目利益相关者:赞助商、客户、项目团队人员、供应商等。

    2.项目人力资源管理的四个过程

    1).制定人力资源计划
    识别和纪录项目角色、责任和汇报关系。

    2).组建项目团队
    项目人员的寻找与分配、资源日历和项目管理计划的更新。

    3).建设项目团队
    提高个人与团队的工作能力,进行团队绩效评价和企业环境因素的更新。

    4).管理项目团队
    跟踪团队成员表现、激励团队成员、及时提供反馈、解决问题和冲突、协调变化。优化项目绩效。
    在这里插入图片描述

    三、管理员工的关键所在

    影响员工如何工作以及工作好坏的社会心理问题包括:动机、影响力和权力、有效性。

    1.激励理论

    内在动机驱使人们为满足自身的乐趣而参加某种活动;外在激励驱使人们为获得利益或者避免处罚而参加一些活动。

    1).马斯洛的需求层次理论

    爱情、自尊、归属感、个性表现和创造力,这些特殊品质确保人类能够做出完全控制自己命运的独立自主的选择。

    马斯洛需求层次理论金字塔基础结构图 :人类的行为是由一系列的需求引起或驱动的。
    在这里插入图片描述
    说明:

    • 每当某个需求层次得到满足之后,需求就会上升到更高一级的层次。最基本层次是生理需求,然后需求会不断上升。

    • 每个需求层次得到满足是更高一级需求层次的基础。如:没有满足安全层此时不会考虑自我实现需求。

    • 较低的前4个基本需求层次称为匮乏性需求。最高级自我实现需求属于成长需求。

    • 自我实现的人以为题为中心,对人生充满感激之心,关注个人发展,有能力实现个人的成就顶峰。

    • 已经满足了的需要不能再起到激励作用。

    注:
    项目经理需要明白每个人的激励动机,特别社交、尊重、和自我实现需求。满足团队成员的个人目标和需求能够产生积极的动力,使团队发挥最大的作用。

    2).赫兹伯格的激励 (保健因素理论)

    考虑工作激励时区别激励因素和保健因素:
    影响工作满意的因素称为激励因素
    导致不满的因素称为保健因素。保健用于被认为只是用来避免产生不满,而又并不能提供满意感的维持因素。

    在这里插入图片描述
    结论:
    人总是想能够发挥自己的创造性和加入到极具有挑战的项目中来实现自我。

    思考:

    • 满意的对立面不是不满意,而是没有满意
    • 不满意的对立面不是满意,而是没有不满意

    3).麦克利兰的后天需要理论

    个人的特定需求是通过后天培养或者是长期学习、由生活经验形成的。包括:成就需求、亲和需求、权力需求。

    • 成就需求:总是渴望成绩就,努力避开低风险和高风险来增加机会,去做认为值得去做的事情。需要定期的到反馈,常单干,或与其他高成就者合作。

    项目经理处理:提供具有适当挑战性的项目,给予工作表现反馈。

    • 亲和需求:渴望与他人建立和睦的关系,以及能被周围的人所接受。遵守规范,喜欢经常性相互交流的工作。

    项目经理处理:增加工作合作的环境。

    • 权力需求:渴望得到个人权利,想指挥他人展示自己的领导才能;也想得到公共权力,组织并带领其他人促进组织目标的实现。

    项目经理处理:提供公共权力,强调实现组织目标的重要性。

    补:
    主题统觉测验(thematic apperception test, TAT

    根据麦克利兰理论评估不同个人需求的工具。
    提供一系列隐晦图片,让被测者为每张图片创作故事。被测者的需求就反映在故事中。

    4).麦格雷戈的X理论和Y理论

    X理论:
    员工不喜欢并逃避工作,宁愿接收指挥不愿承担责任,缺乏上进心,安于现状。
    管理:强制监督、威胁并制定多种控制制度。

    Y理论:
    人非天生懒惰和不喜欢工作,只是需要放松休息,有创造价值。
    管理:满足他们的尊重和自我实现需求、目标导向,制定激励员工计划。

    麦格雷戈强烈建议在Y理论的指导下管理员工。

    注:

    威廉.大内 Z理论:
    研究内容:人与企业、人与工作
    强调信任、质量、集体决策、文化价值、工作轮换、拓展技能、一般化而非专门化、员工继续培训需求。
    在这里插入图片描述

    2.塞姆海恩和威利蒙的影响力和权利理论

    1)影响力

    在这里插入图片描述

    调查项目经理处理员工关系的方法与项目成功之间的关系:9种可用的影响基础。

    在这里插入图片描述

    说明:

    • 指派、预算、升迁等影响力不会自动获得,而在于别人的看法。通过工作来获得。
    • 过于依赖使用权威,金钱或惩罚施加影响力可能导致项目失败。
    • 善于用工作挑战和专业能力来影响下属,项目成功机会会增加。

    2)权力

    影响行为的潜在能力,可驱使人们做不愿意做的事。

    《社会权力基础》给出权力5种主要类型
    在这里插入图片描述

    • 强制权力: 使用处罚、威胁、等惩罚方法驱使人们做不愿意做的事情。是制止消极态度的有效方法。
    • 合法权力: 通过职位赋予的权力去指挥员工做事。
    • 专家权力: 使用个人知识和专业能力去改变人们行为。
    • 奖励权力: 用奖励鼓励人们去工作。
    • 参照权力: 来自个人自身魅力。如:以xxx为榜样而给予尊重。几乎没有人天生就拥有参照权力之下的领导能力。

    3.柯维和提高有效性

    柯维的7种习惯提高项目的有效性,

    • 积极主动

    • 以终为始

    做事前想清楚目标即最终要达到什么结果。然后努力实现。

    • 要事第一

    把时间放在重要的事情而不是紧急的事情上。

    • 双赢思维

    • 知己知彼

    移情倾听,即设身处地地去聆听。倾听之前建立融洽关系(一种协调的、相似的、一致性的或者说亲密的关系)否则难以沟通。能区分出项目经理的好差。
    补:
    镜像法: 用于建立关系,指做出与某个人的某种行为相似的行为。人们倾向于喜欢行为与自己行为相似的人。

    • 综合综效

    通过团队协作来努力,比个人更有效率,同时注重协作过程中的差异性。

    • 不断更新

    即不断改善4个方面
    在这里插入图片描述

    在这里插入图片描述

    信息系统的使用者与开发者一起工作,或者说业务专家与IT人员开展合作,对于项目管理更有成效。

    四、制定人力资源计划

    包括项目组织结构图,详细描述项目角色、责任及人员配置计划等信息
    即:项目组织图、职责分配矩阵、人员配置管理和资源直方图

    1.项目组织结构图

    1)制定项目组织结构图

    我在项目管理第2章总结中说到过组织的3种结构:职能型、项目型、和矩阵型。 而这里是项目组织结构图。

    在这里插入图片描述
    例:
    在这里插入图片描述
    说明:
    首先要识别出重要的技能和为项目配置好所需的各种人员后,项目经理再和高层管理、项目团队成员一起制定项目的组织结构图。

    2)工作解释和分配

    4步

    • 确定项目需求
    • 定义怎样为之完成工作
    • 把工作分解成易于管理的要素
    • 分配工作职责
      在这里插入图片描述
      说明:
      应在项目提出和启动阶段完成。且反复进行。

    2.责任分配矩阵

    用矩阵表格形式表示工作分解中工作细目,以及组织分解结构的工作绩效所对应的个人责任。根据要求的细致程度把工作分配到相关的责任和执行组织、团队或者个人。方式不尽相同。

    例:
    在这里插入图片描述
    除了分配工作还可定义项目的通用角色和责任。
    例:
    在这里插入图片描述
    RACI图:
    R-职责者(负责执行任务的角色)
    C-咨询者(签署或有权签署任务的角色)
    I -知情者(及时被告知任务动态/结果的人)
    例:
    在这里插入图片描述
    说明:
    每行只能有一个A

    3.人员配置管理计划和资源柱状图

    1)人员配置管理计划

    描述人员在什么时候、以什么方式进入和离开团队。

    清楚列出项目所需的各种工作人员,同时列出每种工作人员每个月所需的数量,以及规定如何获得、培训、奖励这些人员,最后完成项目后如何重新分配工作。

    2)资源柱状图

    被包含于人员管理计划,表示项目进行过程中每个阶段分配资源数量的柱状图。

    例:
    在这里插入图片描述

    五、组建项目团队

    组建项目团队的关键话题:资源分配、资源负荷、资源平衡

    1.资源分配

    从组织中分配到合适的人员,或招聘员工进入项目的合适岗位,完成人力资源的分配。

    • 首先有一份好的人员配置计划:现在拥有和开展项目所需的各人员类型和数量。
    • 制定完善的招募承包商和新雇员的步骤、程序:1.可鼓励现有员工去帮助招聘和保留员工并给予奖励。2.通过满足个人需求的福利去吸引和保留工作人员。

    2.资源负荷

    资源负荷: 在特定时期所需要人员的数量

    帮助总体了解项目所需的企业起源对个人的时间要求。

    资源过载: 在给定时间分配给工作的资源超出了可支配资源。

    通常用资源柱状图来描述资源负荷和资源过载。

    3.资源平衡

    通过推迟任务来化解资源冲突的方法。可检查网络图哪些地方存在松弛或浮动时间,并找出哪里存在资源冲突然后制定平滑的分配,减少过度分配资源。。

    在这里插入图片描述

    六、建设项目团队

    帮助员工更有效的一起工作

    团队建设(塔克曼模型)描述团队建设的5个阶段。

    • 形成阶段。团队成员的加入。
    • 震荡阶段。产生分歧、猜疑、冲突。
    • 规范阶段。工作方法达成共识。
    • 辉煌阶段。目标明确,关系固定,互相信任。
    • 解题阶段。实现目标完成工作,团队解散。

    1.培训

    提高项目团队技能的活动。

    2.团队建设活动

    常见于体能挑战和心理偏好指示工具。

    1)MBTI职业性格测试

    用于分析个人性格倾向的工具。

    4个维度:

    • 外向E-内向I
    • 实感S-直觉N 务实-创新
    • 思维T-情感F 理性-主观
    • 判断J-知觉P 人物确定性-开放性

    在这里插入图片描述

    2)社交风格测试

    根据判断和感应性,有四种类型:分析员工的社交风格理解员工一起工作出现的问题的原因。

    • 驾驭型。具有预见性,任务为导向,脚踏实地,上进。
    • 表现型。具有预见性,人际关系为中心,未来为导向。
    • 分析型。反应灵敏,任务为中心,过去为导向,思考深刻。
    • 平易型。反应灵敏,人际关系为导向。

    3)DISC测试

    四个维度。人在相对的象限会产生意见相左的问题。可以用来帮助各种类型的员工更好的互相沟通。
    在这里插入图片描述

    3.奖励表彰制度

    在这里插入图片描述

    七、管理项目团队

    项目经理必须领导团队完成项目的各种活动,需要使用 软技能找到激励和管理每个团队成员的最佳方法。

    1.工具和方法

    • 观察和交谈。随时了解项目团队成员的工作和态度,观其行听其言。
    • 项目绩效评价。提供建设性反馈,发现问题,制定培训计划确定未来具体目标。
    • 冲突管理。采用团队规则、规范,等各种解决办法或者沟通技巧去化解团队内的冲突。
    • 问题日志。记录、监测和跟进一些需要解决的问题。
    • 人际关系技能。领导力、决策能力、影响力对有效管理团队至关重要。

    2.一般性建议

    团队的5种机能障碍:

    • 缺乏信任
    • 害怕冲突
    • 缺乏承诺
    • 逃避责任
    • 漠视成果

    有助于提高团队工作效益的建议如下

    • 耐心、友善地对待团队。
    • 解决问题,不要一味责备,而要言传身教
    • 定期召开有效会议。
    • 给团队时间经历基本的组建阶段。
    • 团队人数限制为3-7人。
    • 策划一些社交联谊活动。
    • 强调团队的认同性,订立一些团队成员喜欢的惯例。
    • 培养团队成员,鼓励团队成员之间相互帮助的风气。
    • 肯定个人和团队所取得的成绩。
    • 创造机会与虚拟员工一起工作。

    八、运用软件帮助做好人力资源管理

    除了一些责任分配矩阵,资源柱状图,也可以利用一些电子表格软件或者是项目管理软件来做人力资源管理的工具。例如project 2007,这里不再详细介绍。

    九、末尾

    第一次总结了这么多花费了时间也不少

    总之项目经理必须做到

    • 对人要体谅和尊敬
    • 明白什么能激励人
    • 与人仔细沟通

    只有集中精力做好人力资源管理才能使下属很好的完成任务。

    展开全文
  • c#之简单人力资源管理系统

    万次阅读 多人点赞 2018-01-13 15:37:07
    目录人力资源管理系统 一. 概述 1.绪论 2.背景 3.开发环境 二.需求功能分析 1.功能分析 2.数据库设计 三.系统模块描述 1.登录注册 2.管理员功能 3.员工功能 4.退出登录 5.数据库类 四.系统调试 1....

    目录


    人力资源管理系统
    一. 概述
    1.绪论
    2.背景
    3.开发环境
    二.需求功能分析
    1.功能分析
    2.数据库设计
    三.系统模块描述
    1.登录注册
    2.管理员功能
    3.员工功能
    4.退出登录
    5.数据库类
    四.系统调试
    1.测试时出现的问题
    2.使用说明
    五.总结



    一. 概述
    1.绪论
    人力资源管理是一个企事业单位不可缺少的部分,它的内容对于单位决策者和管理者至关重要。 一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,而且时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着计算机应用的普及,我们可以使用计算机对人力资源信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人力资源管理的效率,也是企业的科学化、正规化管理的重要条件。因此,开发人力资源管理系统是很有必要的事情。
    2.背景
    在企业管理信息系统建设中,人力资源作为一个单独的模块进行开发。目前我们对人力资源管理仍停留在纸介质的基础上,浪费了许多人力和物力 。作为岗位信息,员工信息以及员工档案等信息过多时,不便于信息查看且管理繁琐,影响及时查看信息,因此需要对上述资料进行集中管理,及时了解本公司的人力资源信息,有利于决策层和管理者调配人力资源的管理效率。
    3.开发环境
    采用C#进行人力资源管理系统界面的设计;
    数据库管理系统采用SQL SERVER2014。
    二.需求功能分析
    1.功能分析
    (1).注册、登录;
    (2).管理员身份:人事管理(对部门,人员的增删改查)、招聘管理(发布招聘信息,处理招聘招聘信息)、考勤管理(制定考勤规则,审核考勤数据)、薪酬管理;
    (3).员工身份:查看招聘信息、投递简历、考勤签到、修改密码;
    (4).退出登录。
    2.数据库设计
    (当时做这个的时候没有学过表的设计,主键以及表之间的联系统统没有考虑到)
    (1)管理员登录信息表(manager)
    属性:姓名,密码
    这里写图片描述

    (2)员工登录信息表(role)
    属性:姓名,密码

    这里写图片描述

    (3)公司员工表(staff)
    属性:员工号、姓名、性别、年龄

    这里写图片描述

    (4)公司部门表(department)
    属性:部门号、名称、部门人数

    这里写图片描述

    (5)部门-员工表(departmentAndStaff)
    属性:部门号、部门名称、员工号、员工姓名

    这里写图片描述

    (6)考勤规则表(time)
    属性:小时、分钟

    这里写图片描述

    (7)考勤记录表(absense)
    属性:姓名、签到时间、出勤信息
    这里写图片描述

    (8)招聘信息表(information)
    属性:招聘内容、薪酬
    这里写图片描述

    (9)应聘人员表(employee)
    属性:姓名、性别、年龄、学位

    这里写图片描述

    (10)面试人员表(employee_ing)
    属性:姓名、性别、年龄
    这里写图片描述

    (11)薪资表(salary)
    属性:姓名、出勤次数、迟到次数、薪资
    这里写图片描述

    三.系统模块描述
    1.登录注册
    1)界面设置
    这里写图片描述
    2)介绍:
    a.使用者注册(管理员注册或者普通人员注册)
    这里写图片描述
    b.使用注册的账号登录
    这里写图片描述
    3)核心代码:
    注册:

            private void button1_Click(object sender, EventArgs e)
            {
                string name = textBox1.Text;
                string password1 = textBox2.Text;
                string password2 = textBox3.Text;
                if (radioButton1.Checked)
                {
                    if (name.Equals("") || password1.Equals("") || password2.Equals(""))//用户名或密码为空
                    {
                        MessageBox.Show("用户名或密码不能为空");
                    }
                    else if (password1 != password2)
                    {
                        MessageBox.Show("两次密码不相同!");
    
                    }
                    else {
                        try
                        {
                            DBconn.connection.ConnectionString = DBconn.connString;
    
                            string sql = "insert into manager values('" + name + "','" + password1 + "') ";
    
                            SqlCommand command = new SqlCommand(sql, DBconn.connection);
                            DBconn.connection.Open();
                            command.ExecuteNonQuery();
                            MessageBox.Show("注册成功!");
                            DBconn.connection.Close();
                            this.Hide();
                            login f = new login();
                            f.ShowDialog();
    
                        }
                        catch(Exception ex) //创建检查Exception对象
                        {
                            Console.WriteLine(ex.Message.ToString());//输出错误信息 
                            MessageBox.Show("系统错误!");
                        }
                    }
    
    
                }
                else if (radioButton2.Checked)
                {
                    if (name.Equals("") || password1.Equals("") || password2.Equals(""))//用户名或密码为空
                    {
                        MessageBox.Show("用户名或密码不能为空");
                    }
                    else if (password1 != password2)
                    {
                        MessageBox.Show("两次密码不相同!");
    
                    }
                    else
                    {
                        try
                        {
                            DBconn.connection.ConnectionString = DBconn.connString;
    
                            string sql = "insert into role values('" + name + "','" + password1 + "') ";
    
                            SqlCommand command = new SqlCommand(sql, DBconn.connection);
                            DBconn.connection.Open();
                            command.ExecuteNonQuery();
                            MessageBox.Show("注册成功!");
                            DBconn.connection.Close();
                            this.Hide();
                            login f = new login();
                            f.ShowDialog();
    
    
                        }
                        catch (Exception ex) //创建检查Exception对象
                        {
                            Console.WriteLine(ex.Message.ToString());//输出错误信息 
                            MessageBox.Show("系统错误!");
                        }
                    }
                }
                else
                {
                    MessageBox.Show("请选择角色!");
                }
            }

    登录时:

            private void enter_Click(object sender, EventArgs e)
            {
                string username = user.Text;
                string userpassword = password.Text;
                try
                {
                    if (radioButton1.Checked)
                    {
    
    
                        if (username.Equals("") || password.Equals(""))//用户名或密码为空
                        {
                            MessageBox.Show("用户名或密码不能为空");
                        }
                        else//用户名或密码不为空
                        {
    
                            string sql1 = "select name,password from manager where name='" + username + "' and password='" + userpassword + "'";
    
                            DBconn.connection.ConnectionString = DBconn.connString;
                            DBconn.connection.Open();
                            SqlCommand command = new SqlCommand(sql1, DBconn.connection);
                            SqlDataAdapter sda = new SqlDataAdapter();
                            sda.SelectCommand = command;
                            DataSet ds = new DataSet();
                            int n = sda.Fill(ds, "验证");
                            if (n > 0)
                            {
                                loginInformation.login_user_name = username;
                                loginInformation.login_user_password = userpassword;
                                MessageBox.Show("欢迎进入人力资源管理系统!", "登录成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                newForm f2 = new newForm();
    
                                DBconn.connection.Close();
    
                                this.Hide();
                                f2.ShowDialog();
                            }
                            else {
                                MessageBox.Show("未找到信息!");
                                DBconn.connection.Close();
    
                            }
                        }
                    }
                    else if (radioButton2.Checked)
                    {
                        if (username.Equals("") || password.Equals(""))//用户名或密码为空
                        {
                            MessageBox.Show("用户名或密码不能为空");
                        }
                        else//用户名或密码不为空
                        {
    
                            string sql = "select name,password from role where name='" + username + "' and password='" + userpassword + "'";
                            DBconn.connection.ConnectionString = DBconn.connString;
                            DBconn.connection.Open();
                            SqlCommand command = new SqlCommand(sql, DBconn.connection);
                            SqlDataAdapter sda = new SqlDataAdapter();
                            sda.SelectCommand = command;
                            DataSet ds = new DataSet();
                            int n = sda.Fill(ds, "验证");
                            if (n > 0)
                            {
                                loginInformation.login_user_name = user.Text;
                                loginInformation.login_user_password = password.Text;
                                MessageBox.Show("欢迎进入人力资源管理系统!", "登录成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                DBconn.connection.Close();
                                用户界面 f2 = new 用户界面();
                                this.Hide();
                                f2.ShowDialog();
                            }
                            else {
                                MessageBox.Show("未找到信息!");
                                DBconn.connection.Close();
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show("请选择角色!");
                        DBconn.connection.Close();
                    }
                }
                catch (Exception ex)//创建检查Exception对象  
                {
                    Console.WriteLine(ex.Message.ToString());//输出错误信息  
                    MessageBox.Show("系统错误!");
                    DBconn.connection.Close();
    
                }
    
            }

    2.管理员功能
    管理员界面:
    这里写图片描述
    1) 人事管理
    介绍:通过人事管理实现公司部门、人员的添加、修改、删除,以及将已经添加到公司的员工添加到相应的部门中去。
    ①人员管理
    添加人员
    界面:
    这里写图片描述
    代码:

                try
                {
                    Int32 no = Convert.ToInt32(textBox3.Text);
                    string name = textBox1.Text;
                    string sex = textBox4.Text;
                    Int32 age = Convert.ToInt32(textBox2.Text);
                    string sql = "insert into staff(sNo,sName,sSex,sAge) values (" + no + ",'" + name + "','" + sex + "'," + age + ")";
    
                    DBconn.connection.ConnectionString = DBconn.connString;
                    DBconn.connection.Open();
    
                    SqlCommand command = new SqlCommand(sql, DBconn.connection);
                    command.ExecuteNonQuery();
    
                    string message = "添加成功";
                    MessageBox.Show(message, "添加成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    MessageBox.Show("系统错误!");
                }

    删除人员
    界面:
    这里写图片描述
    按工号查找按钮代码:

                if (textBox1.Text == "")
                {
                    MessageBox.Show("填入工号!");
                }
                else
                {
                    try
                    {
                        Int32 no = Convert.ToInt32(textBox3.Text);
                        string sql = "select * from staff where sNo = " + no + " ";
                        DBconn.connection.ConnectionString = DBconn.connString;
                        DBconn.connection.Open();
    
                        SqlCommand command = new SqlCommand(sql, DBconn.connection);
                        SqlDataReader dataReader = command.ExecuteReader();
                        if (dataReader.Read())
                        {
                            listBox1.Items.Clear();
                            sNo = dataReader[0].ToString();
                            listBox1.Items.Add("员工号:" + sNo);
                            sName = dataReader[1].ToString();
                            listBox1.Items.Add("员工名:" + sName);
                            sSex = dataReader[2].ToString();
                            listBox1.Items.Add("员工性别:" + sSex);
                            sAge = dataReader[3].ToString();
                            listBox1.Items.Add("员工年龄:" + sAge);
    
                        }
                        else
                        {
                            listBox1.Items.Clear();
                            listBox1.Items.Add("没有该项!");
                        }
    
                        dataReader.Close();
                        DBconn.connection.Close();
                    }

    删除按钮代码:

                    string sql = "delete from staff where sNo = " + sNo + " ";
                    DBconn.connection.ConnectionString = DBconn.connString;
                    DBconn.connection.Open();
    
                    SqlCommand command = new SqlCommand(sql, DBconn.connection);
                    command.ExecuteNonQuery();
                    MessageBox.Show("删除成功!");
                    DBconn.connection.Close();

    修改人员信息
    界面:
    这里写图片描述
    修改代码:

                string name = textBox6.Text;
                string sex = textBox4.Text;
                Int32 age = Convert.ToInt32(textBox5.Text);
    
                string sql = "update staff set  sName = '" + name + " ',sSex = '" + sex + " ',sAge = " + age + " where sNo = "+sNo+"";
                DBconn.connection.ConnectionString = DBconn.connString;
                DBconn.connection.Open();
    
                SqlCommand command = new SqlCommand(sql, DBconn.connection);
                command.ExecuteNonQuery();
                MessageBox.Show("修改成功!");

    ②部门管理
    界面:
    这里写图片描述

    这里写图片描述
    这里写图片描述
    代码参照人员管理即可。
    ③人员部门管理
    界面:
    这里写图片描述
    这里写图片描述
    代码参照人员管理即可。
    2) 招聘管理
    介绍:管理人员通过招聘管理 发布公司招聘信息,游客登录之后通过查看招聘信息、投递简历之后,管理员处理招聘人员信息,决定是否告知应聘者参加面试。
    ① 发布招聘
    界面:
    这里写图片描述
    代码:

                string a = textBox1.Text;
                double  b =Convert.ToDouble(textBox2.Text);
                try
                {
    
                    string sql1 = "delete from information";
                    string sql2 = "insert into information values ('"+a+"',"+b+")";
    
                    DBconn.connection.ConnectionString = DBconn.connString;
                    DBconn.connection.Open();
    
                    SqlCommand command1 = new SqlCommand(sql1, DBconn.connection);
                    command1.ExecuteNonQuery();
                    SqlCommand command2 = new SqlCommand(sql2, DBconn.connection);
                    command2.ExecuteNonQuery();
    
                    string message = "发布成功!";
                    MessageBox.Show(message, "发布成功!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    DBconn.connection.Close();

    ② 处理招聘
    界面:
    这里写图片描述
    查看按钮代码:

                    string sql = "select * from employee ";
                    DBconn.connection.ConnectionString = DBconn.connString;
                    DBconn.connection.Open();
                    SqlCommand command = new SqlCommand(sql, DBconn.connection);
                    SqlDataAdapter da = new SqlDataAdapter(command);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "employee");
                    dataGridView1.DataSource = ds;
                    dataGridView1.DataMember = "employee";
    
                    dataGridView1.Columns[0].HeaderText = "姓名";
                   // dataGridView1.Columns[0].DataPropertyName = ds.Tables[0].Columns[0].ToString();
                    dataGridView1.Columns[0].Width = 106;
    
                    dataGridView1.Columns[1].HeaderText = "性别";
                   // dataGridView1.Columns[1].DataPropertyName = ds.Tables[0].Columns[1].ToString();
                    dataGridView1.Columns[1].Width = 106;
    
                    dataGridView1.Columns[2].HeaderText = "年龄";
                    dataGridView1.Columns[2].Width = 106;
    
                    dataGridView1.Columns[3].HeaderText = "学历";
                    dataGridView1.Columns[3].Width = 106;
                    DBconn.connection.Close();

    面试按钮代码:

                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    if (dataGridView1.Rows[i].Selected == true)
                    {
    
                        string name = dataGridView1.Rows[i].Cells[0].Value.ToString();
                        string sex = dataGridView1.Rows[i].Cells[1].Value.ToString();
                        string age = dataGridView1.Rows[i].Cells[2].Value.ToString();
    
                        string sql = "insert into employee_ing values('" + name + "','" + sex + "','" + age + "')";
                        DBconn.connection.ConnectionString = DBconn.connString;
                        DBconn.connection.Open();
                        SqlCommand command = new SqlCommand(sql,DBconn.connection);
                        command.ExecuteNonQuery();
                        DBconn.connection.Close();
                    }
                }
                MessageBox.Show("已经添加到面试表!");

    ③ 面试人员表
    界面:
    这里写图片描述
    删除代码:

                    for (int i = 0; i < dataGridView1.Rows.Count; i++)
                    {
                        if (dataGridView1.Rows[i].Selected == true)
                        {
    
                            string name = dataGridView1.Rows[i].Cells[0].Value.ToString();
                            string sex = dataGridView1.Rows[i].Cells[1].Value.ToString();
                            string age = dataGridView1.Rows[i].Cells[2].Value.ToString();
                            string sql = "delete from employee_ing where name = '" + name + "'and sex = '" + sex + "'and age = '" + age + "'";
                            DBconn.connection.ConnectionString = DBconn.connString;
                            DBconn.connection.Open();
                            SqlCommand command = new SqlCommand(sql, DBconn.connection);
                            command.ExecuteNonQuery();
    
                            DBconn.connection.Close();
                        }
                    }
    
                    MessageBox.Show("删除成功!");
    
    
                    string sql2 = "select * from employee_ing ";
                    DBconn.connection.ConnectionString = DBconn.connString;
                    DBconn.connection.Open();
                    SqlCommand command2 = new SqlCommand(sql2, DBconn.connection);
                    SqlDataAdapter da = new SqlDataAdapter(command2);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "employee_ing");
                    dataGridView1.DataSource = ds;
                    dataGridView1.DataMember = "employee_ing";
    
                    dataGridView1.Columns[0].HeaderText = "姓名";
                    // dataGridView1.Columns[0].DataPropertyName = ds.Tables[0].Columns[0].ToString();
                    dataGridView1.Columns[0].Width = 143;
    
                    dataGridView1.Columns[1].HeaderText = "性别";
                    // dataGridView1.Columns[1].DataPropertyName = ds.Tables[0].Columns[1].ToString();
                    dataGridView1.Columns[1].Width = 143;
    
                    dataGridView1.Columns[2].HeaderText = "年龄";
                    dataGridView1.Columns[2].Width = 143;
    
                    DBconn.connection.Close();

    3) 考勤管理
    介绍:管理员制定每天上班的时间,员工上班的时候在系统上签到,系统判断为迟到或者正常出勤,管理员审核考勤数据,可以查看员工的签到情况。
    ① 制定考核规则
    界面:
    这里写图片描述
    代码:

                string hour = textBox1.Text;
                string minute = textBox2.Text;
                string sql = "insert into time values('" + hour + "','" + minute + "')";
                string sql2 = "delete from time";
                try
                {
                    DBconn.connection.ConnectionString = DBconn.connString;
                    DBconn.connection.Open();
                    SqlCommand command = new SqlCommand(sql, DBconn.connection);
                    SqlCommand command2 = new SqlCommand(sql2, DBconn.connection);
                    command2.ExecuteNonQuery();
                    command.ExecuteNonQuery();
    
                    string message = "成功";
                    MessageBox.Show(message, "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    DBconn.connection.Close();

    ② 审核考勤数据
    界面:
    这里写图片描述
    初始化代码:

                    string sql = "select distinct name from absense ";
                    DBconn.connection.ConnectionString = DBconn.connString;
                    DBconn.connection.Open();
                    SqlCommand command = new SqlCommand(sql, DBconn.connection);
                    SqlDataAdapter da = new SqlDataAdapter(command);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "name");
                    dataGridView1.DataSource = ds;
                    dataGridView1.DataMember = "name";
    
                    dataGridView1.Columns[0].HeaderText = "姓名";
    
                    dataGridView1.Columns[0].Width = 106;
    
                    DBconn.connection.Close();

    查看代码:

                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    if (dataGridView1.Rows[i].Selected == true)
                    {
    
                        string name = dataGridView1.Rows[i].Cells[0].Value.ToString();//得到选中的名字
                        string sql = "select* from absense where  name = '" + name + "' and time  between '" + textBox1.Text + "' and '" + textBox2.Text + "'order by time";
                        string sql1 = "select* from absense where  name = '" + name + "'order by time";
                        string sql2 = "select count(*) from absense where  name = '" + name + "' and time  between '" + textBox1.Text + "' and '" + textBox2.Text + "'and absense = '迟到'";
                        string sql3 = "select count(*) from absense where  name = '" + name + "'and absense = '迟到'";
                        if (textBox1.Text == "" || textBox2.Text == "")
                        {
    
                            DBconn.connection.ConnectionString = DBconn.connString;
                            DBconn.connection.Open();
                            SqlCommand command1 = new SqlCommand(sql1, DBconn.connection);
                            SqlCommand command3 = new SqlCommand(sql3, DBconn.connection);
                            SqlDataAdapter da1 = new SqlDataAdapter(command1);
                            DataSet ds1 = new DataSet();
                            da1.Fill(ds1, "absense");
                            dataGridView2.DataSource = ds1;
                            dataGridView2.DataMember = "absense";
    
                            dataGridView2.Columns[0].HeaderText = "姓名";
                            // dataGridView1.Columns[0].DataPropertyName = ds.Tables[0].Columns[0].ToString();
                            dataGridView2.Columns[0].Width = 106;
    
                            dataGridView2.Columns[1].HeaderText = "签到时间";
                            // dataGridView1.Columns[1].DataPropertyName = ds.Tables[0].Columns[1].ToString();
                            dataGridView2.Columns[1].Width = 106;
    
                            dataGridView2.Columns[2].HeaderText = "状态";
                            dataGridView2.Columns[2].Width = 106;
    
                            string count = command3.ExecuteScalar().ToString();//数据库数据行数
    
                            textBox3.Text = count;
                            DBconn.connection.Close();
    
    
    
                        }
                        else if (!(Program.IsDate(textBox1.Text) && Program.IsDate(textBox2.Text)))
                        {
                            MessageBox.Show("时间格式不正确!");
                        }
                        else
                        {
                            DBconn.connection.ConnectionString = DBconn.connString;
                            DBconn.connection.Open();
                            SqlCommand command1 = new SqlCommand(sql, DBconn.connection);
                            SqlCommand command2 = new SqlCommand(sql2, DBconn.connection);
                            SqlDataAdapter da1 = new SqlDataAdapter(command1);
    
    
                            DataSet ds1 = new DataSet();
                            da1.Fill(ds1, "absense");
                            dataGridView2.DataSource = ds1;
                            dataGridView2.DataMember = "absense";
    
                            dataGridView2.Columns[0].HeaderText = "姓名";
                            // dataGridView1.Columns[0].DataPropertyName = ds.Tables[0].Columns[0].ToString();
                            dataGridView2.Columns[0].Width = 106;
    
                            dataGridView2.Columns[1].HeaderText = "签到时间";
                            // dataGridView1.Columns[1].DataPropertyName = ds.Tables[0].Columns[1].ToString();
                            dataGridView2.Columns[1].Width = 106;
    
                            dataGridView2.Columns[2].HeaderText = "状态";
                            dataGridView2.Columns[2].Width = 106;
    
                            string count = command2.ExecuteScalar().ToString();//数据库数据行数
                            textBox3.Text = count;
                            DBconn.connection.Close();
                        }
                    }
                }

    4) 薪酬管理
    介绍: 管理员通过员工的低薪和考勤的情况,根据公式得出薪酬,点击人员名单填入时间段之后显示该员工的薪酬。

    界面;
    这里写图片描述
    代码;

                //清空表中之前的数据
                string sql6 = "delete from salary";
                DBconn.connection.Open();
                SqlCommand command5 = new SqlCommand(sql6, DBconn.connection);
                command5.ExecuteNonQuery();
                DBconn.connection.Close();
    
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    if (dataGridView1.Rows[i].Selected == true)
                    {
                        string name = dataGridView1.Rows[i].Cells[0].Value.ToString();//得到选中的名字
                        int count1;//出勤
                        int count2;
                        float salary;
                        string beginTime = textBox1.Text;
                        string endTime = textBox2.Text;
                        string sql = "select count(*) from absense where name = '" + name + "'and time between '" + beginTime + "'and'" + endTime + "'and absense = '正常出勤'";
                        string sql1 = "select count(*) from absense where name = '" + name + "'and time between '" + beginTime + "'and'" + endTime + "'and absense = '迟到'";
                        string sql2 = "select count(*) from absense where name = '" + name + "'and absense = '正常出勤'";
                        string sql3 = "select count(*) from absense where name = '" + name + "'and absense = '迟到'";
                        //  string sql4 = "insert into salary values('"+name + "','"+count1+"','" + salary + "')";
                        string sql5 = "select * from salary";
    
    
                        if (beginTime == "" || endTime == "")
                        {
                            try
                            {
                                DBconn.connection.ConnectionString = DBconn.connString;
                                DBconn.connection.Open();
                                SqlCommand command1 = new SqlCommand(sql2, DBconn.connection);
                                count1 = Convert.ToInt16(command1.ExecuteScalar().ToString());//出勤的次数
    
                                SqlCommand command2 = new SqlCommand(sql3, DBconn.connection);
                                count2 = Convert.ToInt16(command2.ExecuteScalar().ToString());//迟到的次数
                                salary = count1 * 200 + count2 * 150;
    
    
                                string sql4 = "insert into salary values('" + name + "','" + count1 + "','"+count2+"','" + salary + "')";
                                SqlCommand command3 = new SqlCommand(sql4, DBconn.connection);//插入一条记录到工资表
                                command3.ExecuteNonQuery();
    
                                //将工资表的记录显示在datagridview中
                                SqlCommand command4 = new SqlCommand(sql5, DBconn.connection);
                                SqlDataAdapter da1 = new SqlDataAdapter(command4);
                                DataSet ds1 = new DataSet();
                                da1.Fill(ds1, "salary");
                                dataGridView2.DataSource = ds1;
                                dataGridView2.DataMember = "salary";
                                dataGridView2.Columns[0].HeaderText = "姓名";
                                // dataGridView1.Columns[0].DataPropertyName = ds.Tables[0].Columns[0].ToString();
                                dataGridView2.Columns[0].Width = 86;
    
                                dataGridView2.Columns[1].HeaderText = "出勤次数";
                                // dataGridView1.Columns[1].DataPropertyName = ds.Tables[0].Columns[1].ToString();
                                dataGridView2.Columns[1].Width = 70;
    
                                dataGridView2.Columns[2].HeaderText = "迟到次数";
                                // dataGridView1.Columns[1].DataPropertyName = ds.Tables[0].Columns[1].ToString();
                                dataGridView2.Columns[2].Width = 70;
    
                                dataGridView2.Columns[3].HeaderText = "工资";
                                dataGridView2.Columns[3].Width = 86;
    
                                DBconn.connection.Close();
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex);
                                MessageBox.Show("系统错误!");
                                DBconn.connection.Close();
                            }
                        }
                        else if (!(Program.IsDate(textBox1.Text) && Program.IsDate(textBox2.Text)))
                        {
                            MessageBox.Show("时间格式不正确!");
                        }
                        else
                        {//当时间不为空的时候
                            try
                            {
                                DBconn.connection.ConnectionString = DBconn.connString;
                                DBconn.connection.Open();
                                SqlCommand command1 = new SqlCommand(sql, DBconn.connection);
                                count1 = Convert.ToInt16(command1.ExecuteScalar().ToString());//出勤的次数
    
                                SqlCommand command2 = new SqlCommand(sql, DBconn.connection);
                                count2 = Convert.ToInt16(command2.ExecuteScalar().ToString());//迟到的次数
                                salary = count1 * 200 + count2 * 150;
    
    
                                string sql4 = "insert into salary values('" + name + "','" + count1 + "','" + count2 + "','" + salary + "')";
                                SqlCommand command3 = new SqlCommand(sql4, DBconn.connection);//插入一条记录到工资表
                                command3.ExecuteNonQuery();
    
                                //将工资表的记录显示在datagridview中
                                SqlCommand command4 = new SqlCommand(sql5, DBconn.connection);
                                SqlDataAdapter da1 = new SqlDataAdapter(command4);
                                DataSet ds1 = new DataSet();
                                da1.Fill(ds1, "salary");
                                dataGridView2.DataSource = ds1;
                                dataGridView2.DataMember = "salary";
                                dataGridView2.Columns[0].HeaderText = "姓名";
                                // dataGridView1.Columns[0].DataPropertyName = ds.Tables[0].Columns[0].ToString();
                                dataGridView2.Columns[0].Width = 86;
    
                                dataGridView2.Columns[1].HeaderText = "出勤次数";
                                // dataGridView1.Columns[1].DataPropertyName = ds.Tables[0].Columns[1].ToString();
                                dataGridView2.Columns[1].Width = 70;
    
                                dataGridView2.Columns[2].HeaderText = "迟到次数";
                                // dataGridView1.Columns[1].DataPropertyName = ds.Tables[0].Columns[1].ToString();
                                dataGridView2.Columns[2].Width = 70;
    
                                dataGridView2.Columns[3].HeaderText = "工资";
                                dataGridView2.Columns[3].Width = 86;
    
                                DBconn.connection.Close();
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex);
                                MessageBox.Show("系统错误!");
                                DBconn.connection.Close();
                            }
                        }
                    }

    3.员工功能
    员工界面:
    这里写图片描述
    1) 招聘信息
    介绍:员工或游客查看公司招聘信息,然后投递简历给管理员。
    界面:
    这里写图片描述

    投递简历界面:
    这里写图片描述
    提交按钮代码:

                string name = textBox1.Text;
                string sex = textBox2.Text;
                string age = textBox3.Text;
                string degree = textBox4.Text;
                try {
                    DBconn.connection.ConnectionString = DBconn.connString;
                    DBconn.connection.Open();
                    string sql = "insert into employee values('" + name + "','" + sex + "','" + age + "','" + degree + "')";
                    SqlCommand command1 = new SqlCommand(sql, DBconn.connection);
                    command1.ExecuteNonQuery();
                    string message = "提交成功!";
                    MessageBox.Show(message, "提交成功!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    DBconn.connection.Close();

    2) 考勤
    介绍:如果你是本公司员工,则可以签到打卡成功,如果不是本公司员工,则不能进行签到操作。

    点击签到即判断是否是本公司员工
    这里写图片描述

    如果是本公司员工,则进行签到。

    签到界面:(如果你今天已经签过到,则系统提示不能重复签到)

    这里写图片描述
    这里写图片描述
    代码:

                try
                {
                    DBconn.connection.Close();
                    string sql = "select name, time from absense where name='" + loginInformation.login_user_name + "' and time='" + DateTime.Now.Date + "'";
                    DBconn.connection.ConnectionString = DBconn.connString;
                    DBconn.connection.Open();
                    SqlCommand command1 = new SqlCommand(sql, DBconn.connection);
                    SqlDataAdapter sda = new SqlDataAdapter();
                    sda.SelectCommand = command1;
                    DataSet ds = new DataSet();
                    int n = sda.Fill(ds, "验证");
                    if (n > 0)
                    {
                        MessageBox.Show("你今天已经签过到了!");
                        DBconn.connection.Close();
                    }
                    else
                    {
    
                        string sql4 = "select * from time ";
                        string sql2 = "insert into absense values('" + loginInformation.login_user_name + "', '" + DateTime.Now.ToString() + "','迟到')";
                        string sql3 = "insert into absense values('" + loginInformation.login_user_name + "', '" + DateTime.Now.ToString() + "','正常出勤')";
    
                        DBconn.connection.Close();
                        DBconn.connection.ConnectionString = DBconn.connString;
                        DBconn.connection.Open();
                        SqlDataAdapter sda1 = new SqlDataAdapter(sql4, DBconn.connection);
                        DataSet ds1 = new DataSet();
                        sda1.Fill(ds1);
                        string b1 = ds1.Tables[0].Rows[0][0].ToString();
                        string b2 = ds1.Tables[0].Rows[0][1].ToString();
                        DBconn.connection.Close();
                        Int32 b3 = Convert.ToInt32(b1);//hour
                        Int32 b4 = Convert.ToInt32(b2);//minute
                        DateTime now = DateTime.Now;
                        string a1 = now.Hour.ToString();
                        string a2 = now.Minute.ToString();
                        Int32 a3 = Convert.ToInt32(a1);//当前hour
                        Int32 a4 = Convert.ToInt32(a2);//当前minute
    
    
                        if (a3 == b3)
                        {
                            if (a4 == b4)
                            {
                                textBox2.Text = "真准时!签到成功!";
                            }
                            else if (a4 < b4)
                            {
                                textBox2.Text = "真勤快!签到成功!";
    
                            }
                            else if (a4 > b4)
                            {
                                textBox2.Text = "迟到了!签到成功!";
    
                            }
    
                        }
                        else if (a3 > b3)
                        {
                            textBox2.Text = "迟到了!签到成功!";
    
                        }
                        else if (a3 < b3)
                        {
                            textBox2.Text = "真勤快!签到成功!";
    
                        }
                        DBconn.connection.Close();
    
    
    
                        if (textBox2.Text == "迟到了!签到成功!")
                        {
                            DBconn.connection.ConnectionString = DBconn.connString;
                            DBconn.connection.Open();
                            SqlCommand command = new SqlCommand(sql2, DBconn.connection);
                            command.ExecuteNonQuery();
                            DBconn.connection.Close();
                        }
                        else
                        {
    
                            DBconn.connection.ConnectionString = DBconn.connString;
                            DBconn.connection.Open();
                            SqlCommand command = new SqlCommand(sql3, DBconn.connection);
                            command.ExecuteNonQuery();
                            DBconn.connection.Close();
                        }
    
                    }

    3)修改密码
    界面:
    这里写图片描述
    确定按钮代码:

                if (textBox1.Text == loginInformation.login_user_password)
                {
                    if (textBox2.Text == textBox3.Text)
                    {
                        try
                        {
    
                            string sql = "update role set  password = '" + textBox2.Text + " 'where name = '" + loginInformation.login_user_name + "'";
                            DBconn.connection.ConnectionString = DBconn.connString;
                            DBconn.connection.Open();
    
                            SqlCommand command = new SqlCommand(sql, DBconn.connection);
                            command.ExecuteNonQuery();
                            MessageBox.Show("修改成功!");
                            DBconn.connection.Close();
                        }
                        catch (Exception ex)
                        {
                            DBconn.connection.Close();
                            Console.WriteLine(ex);
                            MessageBox.Show("系统错误!");
                        }
    
                    }
                    else {
                        MessageBox.Show("两次密码输入不一致!");
                        DBconn.connection.Close();
                    }
                }
                else {
                    MessageBox.Show("当前密码错误!");
                    DBconn.connection.Close();
                }

    4.退出登录
    介绍:用户或管理员可以通过这个选项切换用户或直接退出登录。

                MessageBox.Show("退出成功!");
                this.Close();
                DBconn.connection.Close();
                login f = new login();
                f.Show();

    5.数据库类

        class DBconn
        {
            public static string connString = "Server=DESKTOP-LBSS781\\SQLEXPRESS;Database=hr;Integrated Security=True";
            public static SqlConnection connection = new SqlConnection(connString);
        }

    四.系统调试
    1.测试时出现的问题
    1)登录时使用tab键出现屏幕刷新卡顿现象。
    2)单击首页界面刷新跳转,需要得到改进。
    3)人员添加到部门以及从部门移除的时候需要一个一个添加,比较麻烦。这个是刚开始做的功能,没有考虑周全。
    4)数据库的设计还存在很大的问题,但是在最后才意识到数据库的不标准,就没有去做改动,但是不影响工功能的实现。
    2.使用说明
    1)请先注册再行登录
    2)添加部门成员的时候需要一个一个操作,不适合较大型公司使用,请慎重选择。
    3)可能会出诸多异常,请退出重新操作。
    五.总结
    我认为,在这学期的课程设计中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。
    回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。

    展开全文
  • 因此,开发一个界面友好,易于操作的人力资源管理软件进行自动化处理变得十分重要,这正是本系统开发的目的和意义。本文所阐述的人力资源管理系统,以浏览器/服务器模式高效地实现了人力资源管理系统的各项功能,可...
  • 电子商务下的人力资源管理论文 摘要随着科学的发展和社会的进步 电子商务已是我们生活中不可缺少的 部分比尔盖茨说过 21 世纪要么电子商务要么无商可务可见电子 商务在当今社会的重要性 如今每个人都与网络有紧密的...
  • 电子商务下的人力资源管理论文 摘要随着科学的发展和社会的进步电子商务已是我们生活中不可缺少的部分比尔盖茨说过21世纪要么电子商务要么无商可务可见电子商务在当今社会的重要性如今每个人都与网络有紧密的联系...
  • 人力资源管理系统概要设计说明书

    千次阅读 2021-02-18 15:20:37
    人力资源管理系统 概要设计说明书 组名 : K2 组员 : 罗猛、丘佩茵 2021年1月12日 目录 1引言 1 1.1编写目的 1 1.2背景 1 1.3定义 1 1.4参考资料 1 2总体设计 1 2.1需求规定 1 2.2运行环境 2 2.3基本设计概念和处理...
  • 随着计算机的普及和计算机科学技术的飞速发展人们开始越来越多地利用计算机解决实际问题人力资源管理企业信息管理的重要部分面对大量的人事信息采用人力处理即浪费时间又浪费人力和物力并且数据的准确低因此开发...
  • 过去,在经济发展中,我们不断强调的是“科技是第一生产力。”随着互联网的迅速普及和发展... 借助区块链去中心化、不可篡改、溯源清晰等特性,区块链将人力资源管理模式带到了新高度。“区块链+人力资源”组合模式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,382
精华内容 20,552
关键字:

企业人力资源管理的重要性