版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于c#的人事工资管理系统
第一章前言
人的管理是一切管理工作的核心。员工代表一个企业的形象,
因而人事管埋机制设计的好坏,直接影响一个企业的成败。
员工的工资管理是企业人事管理的基础,在企业员工普遍流
失的今天,一个准确而及时的人事管理系统,有利于人事部门对员
工流动进行分析、编制,为酒店所需人员提供了保障。
人力资源部那些重复的,事务性的工作交给HRPCHuman
ResourcePlanning,人力资源管理系统)来解决,能够省去用户以往
人力资源管理工作的繁琐、枯燥;用领先的人力资源管理理念,把
人力资源管理的作业流程控制和战略规划设计巧妙地集合于一体;
系统重点涉及到人力资源管理工作中的薪资、考勤、绩效、调
动、基本信息、用户管理以及用户切换等方面,并有综合的系统
安全设置、报表综合管理模块。能够很好地为用户的人力资源管
理部门在对员工的成本管理、知识管理、绩效管理等综合管理给
予帮助。以每个月中所发工资为例,其中包括考勤、人事信息变动、
奖惩、迟到和旷工对本月的薪资计算都有影响,为了及时的计算发
放工资往往要提前一个星期花费大量时间,加班加点才能及时完
成,而这样做无论从工作效率还是准确度方面,都不允许,而且还
浪费大量的人力财力。如果改用HRP管理做到高效、高精度,还
能够减少管理时带来的一些繁琐的工作,节约管理带来的开支。
第二章.NET技术概述
七月在美国奥兰多举行的专业开发者大会上,微软公司展示
了它最新的.NET体系,从多的发言人向大会介绍jf.NET的特征和
构成。从此,软件业界就开始掀起了一股“.NET”热潮。经过NET,
微软公司为人们提供了一种全新的开发平台,这个平台揩推动以
新体系为基础的协同WEB应用开发。微软公司推出Visual
Studio.NET的目的就是要推进网络应用软件的开发,使用Visual
Studio.NET开发系统能够编写最简单的基于Windows的单层应用
软件,也能够编写Windows下的客户/服务器多层应用软,无论是为
了Windows还是为Web,VisualStudio都在各个层面上作了大量的
工作。
VisualStudio.NET与以往版本相比发生了巨大的变化,这种变
化主要来自以下两个方面。
一是语言本身的改进和.NET平台的建立。无论是在网络应用
还是在本地应用上,都对各种语言做了许多改进,特别是用崭新的
C#语言代替了J++。C#具有简捷、灵活、安全、面向对象和兼
容性强等许多优点,是・NET中的旗帜语言。
二是开发环境的重大改变。首先,在一个开发环境中同时集成
了VisualBasic、VisualC1-4、VisualC#和FoxProo其次,开发环
境的适应性大大增强了,适用于快速Web应用软件的开发,能够轻
松地运用XMLWWEB服务进行跨平台计算,也能够快速开发中间
层商务组件。再次,调试功能增强了,它能够调试不同语言开发的
应用程序,也能够调试工程,进程和存储过程。这些新特性使用户
的开发效率有S大幅度的提高。
正如微软公司首席执行管鲍尔默所说:"Microsoft.NET代表了
一个集合、一个环境、一个能够作为平台支持下一代Internet的
可编程结构。Microsoft.NET的策略是把因特网本身作为构建新一
代操作系统的基础,将因特网和操作系统的设计思想合理延伸。
VisualC#是微软公同为它的Microsoft.NET计划推出的核心编
程语言。该语言几乎综合了当前所有编程语言系统的优点,并结合
因特网的需要,增加了丰富的新特性和增强功能。
VisualC#语言面向对象的设计,能够用来构建从高水平的商务
目标到体系标准应用程序的范围宽广的组件。使用VisualC#语言,
程序员能够迅速地建造提供充分开拓计算和通信的工具和服务的
新的Microsoft.NET平台。C#语言的组成部分使用简单的C#语言
结构体,能被转化成WEB服务,允许人们经过Internet调用在任何
操作系统上运行的任何语言。
VisualC#语言作为一种编程语言,具有以下几个至关重要的特
八
兼容性;
U灵活性;
U简单性;
U面向对象;
U类开安全;
U版本控制;
VisualC#具有C,C++语言的灵活性和VB语言开发效率高
的特点,同时又是网络服务语言,体现了许多新的现代化开发技
术。因此我们完成底层平台的调用和底层平代码的控制,实现跨语
言、跨平台的因特网远程调用、能够构建复杂的商务系统。
第三章开发人事劳资管理系统的问题
3.1人事劳资管理系统的简介
人事劳资管理系统是针对商厦人事处的大量业务处理二作
而开发的管理软件。根据用户的要求,实现人员基本情况管理、工
资管理、和考勤管理。等几个方面的功能。
用户经过输入工资、考勤、职工履历等基本信息,由系统
自行生成相应的统计数据及各类统计报表以供用户查询、打印,另
外用户还能够对这些基本信息进行定期的更新和删除,商厦人事
劳资管理系统力求给用户方便快捷的途径去管理这些繁琐的数据。
3.2人事管理系统的用户需求
・总体功能需求
人事劳资管理系统是针对人事处的大量业务处理工作用计
算机进行全面现代化管理.主要包括人员基本情况管理、工资管
理、和考勤管理。等几个方面的功能,以实现用户方便的输入、查
询、统计、打印相关报表的业务需求。
•具体系统功能需求描述
(1)人员基本情况管理
提供对“商厦人员履历表”数据输入、组合条件查询、统
计、打印功能,实现“职工花名册”数据生成、查询、统计、打
印功能。
(2)职工工资管理
提供对“商场职工工资表”数据的输入、查询、按商场
统计、打印功能,完成每月对“商场职工工资表”数据的月统计,
以此生成“商场职工工资总额构成情况表”实现该表的查询、打
印功能。实现每季由“商场职工工资总额构成情况表“生成“商厦
职工工资总额季度汇总表”及该表的查询、打印功能。
(3)职工考勤管理
提供对各单位(商场)“月考勤登记表”数据的录入、查询、
统计功能;
根据“月考勤登记表”数据分单位按各种日考勤标志进行
分类统计,目生成”商场职工月考勤统计表",数据及“商厦职工月
考勤统计汇总表”数据,实现该表的查询、打印功能。
第四章商厦人事劳资管理系统的分析和设计
4.1商厦人事劳资管理系统的分析和概要设计
根据实际情况,我们使用原型法(RapidPrototyping)即以
少量代价快速地构造一个可执行的软件系统模型。使用户和开发人
员能够较快地确定需求,然后采用循环进化的开发方式,对系统模
型作连续的精化,招系统需具备的性质逐渐增加上去,直到所有的
性质全部满足。此时模块也发展成为最终产品了。
经过对用户需求的分析,我们能够分析出该商厦人事劳资
管理系统大致能够分为四个模块:人员基本情况管理模块、职工工
资管理模块、职工考勤管理模块、系统维护模块。
卜图说明四者的关系
人事劳资管理系统
人事基本情况管理模块
职工工资管理模块
职工考勤管理模块
系统维护模块
现在对这四个模块做具体说明:
人事基本情况管理模块:
输入:职工信息
输出:”商厦人员履历表”“职工花名册”
功能:对商厦人事基本信息的查询、统计和打印
•职工工资管理模块
输入:人员月工资
输出:“商场职工工资表的月统计”商场职工工资总额
构成表”及以“商
厦职工工资总额季度汇总表”
功能:完成商厦员工工资的查询、统计和打印
•职工考勤管理模块
输入;员工每日考勤情况
输出:”月考勤登计表“、“商场职工月考勤统计表“、”
商厦职工月考勤统计表”
功能:完成对员工考勤情况的查询、根据日考勤标志进行
分类统计及表的打印。
•系统维护模块
输入:
输出:
功能:完成对系统数据和数据库的维护,如用户名、密码
的更新,数据库
数据的备份、恢复以及定期删除,还有单位的编码化。
4.2商厦人事劳资管理系统数据库设计
由于考虑到本系统是应用在单机系统上,另外根据商厦人
员规模,我们只建立起一个数据库,在此数据库基础上建立起如下
表:
•职工基本信息表employee_information_table
•职工工资表employee_salary_table
•职工考勤表employee_attendance_table
•单位编码表company_code_table
•系统信息表system_table
另外,根据实际统计需要,我们另外建立两个统计表,用以
存放部分统计表的信息以便查询。
•职工工资统计表employee_salary_sum
•职工考勤统计表employee_attendance_sum
第五章系统模块的具体实现
在本系统中有四个子模块组成。它们分别是员工基本信息
模块、员工工资信息模块、员工考勤信息模块和系统维护模块,下
面就开发这几个模块的过程及所遇到的问题分别加以介绍。
5.1员工基本信息模块
该模块主要完成员工基本信息的录入、查询、统计及打
印功能。在此模块中定义了三个主要窗口:员工花名册窗口、员工
履历表信息窗口和组合条件查询窗口。后两者均需经过前者访诃。
员工花名出窗口中显示的是员工必要信息。可供用户浏览
查询及以其记录为单位的操作。如果用户修改某一纪录中的某一I页,
可双击该条纪录进入员工履历表窗口,此窗口使用数据窗口的
FREEDOM风格(典型的录入界面)。该种风格特点是列标题紧挨
着数据列。在此窗口显示的是员工的详细资料,在此窗口还能够增
加新员工纪录。
该模块的第三个窗口是多条件查询窗口,在此窗口中应用
了数据窗口这一智能化对象。因此多条件查询也就变得简单起来,
只要经过修改数据窗口的QUERYMODE属性。
(DW_1.OBJECT.DATAWINDOW.QUERYMODE=vYES”)
用户只要输入组合条件,系统就会自动检索出数据,开发
人员能够不用再编写冗长的SQL语句。从此一点就能够看出数据
窗口的优越之处。
由于数据库基本表与其它表之间的主键的特点,不方便使
用外键来保持数据的一致性问题,因此要用手工操作的方法进行
数据一致性的维护,主要应用在以下几个方面,职工工资表中加入
和删除职工信息,炽工考勤表中加入和删除职工信息,履历表口删
除职工信息。
在职工工资表中和在职工考勤表中加入职工信息时,用户
不能任意的输入以工姓名,而是由系统提供专有的添加职工窗口,
用于显示该单位花名册已有的职工名,而在职工工资表或职二考
勤表中没有的职工名供用户选择,从而要求用户
不能任意输入花名册以外的职工信息了,要加入新的职工
信息必须先加入到花名册中去。这样就既保证数据库的数据的一致
性,又防止了数据的冗余。
在职工工资表中和在职工考勤表中删除职工信息时,为保
持数据的一致性,就需要马上重新计算统计量。
另外,考虑到职工的编码能够唯一标示职工的单位,因此
就对单位进行编码化,即职工编码的前三位唯一标示一个单位,这
样就减少数据的冗余。
5.2职工工资管理模块
该模块是完成对员工的工资信息的输入、查询、并以此
进行统计生成“商场职工工资总额构成情况表”和“商厦职工工资
总额季度汇总表乙
此模块主要包括三个窗口,工资录入窗口、商场职工工资
总额统计构成和商厦职工工资总额统计窗口,后来两者均可经过
第一个窗口的菜单顼选择而进入。
两个窗口”商场职工工资总额统计表“与“商厦职工二资
总额统计表”的数据源均是从数据库EMPOYEE_SALARY表和
EMPOYEE_SALARY_SUM表中选出。其功能包括打印、预览。
由于所打印的表大多很长,很难一个屏幕内放下,这就使得用户预
览不到整体的效果。因此带两个窗口中均动态修改了数据窗口的放
大倍数(DW_1.Modify(nDataWindow.Zoom=50")),均以缩小百分之
五十的面目出现。这就是用户能够一览打印表全貌,达到打印效
果。另外,由于所要求输出的打印表是典型的中国式的表格而
POWERBUILDER没有提供相应的风格,因此只有经过选择
TABLUR风格的表格(该种风格允许数据列跨页或跨带显示,用户
能够根据自己的需要重新组织安排这些数据),自行划线分组增加
表头文字。以此达到用户打印表的要求。
5.3员工考勤管理模块
该模块完成对职工考勤信息的输入和查询。并以此数据为
基础生成“商场职工月考勤统计表”和“商厦职工月考勤统计汇总
表”。
此模块主要包括三个窗口,考勤登记窗口、商场职工月考
勤,商厦职工考勤统计窗口,后两者均可经过第一个窗口的菜单项
选择而访问到。由于在模块中使用的方法和程序框图与职工工资管
理模块大致相同,因此这里也就不一一列举了。
5.4系统维护模块
此模块除完成数据的一般性维护如数据的恢复与备份、数
据的定期删除,还提供了本系统的部分维护功能,如系统的初始化,
(该项功能将删除数据库中所有数据,因此仅在系统初始生成时使
用)另外还有密码的修改和单位编码。
下面就数据维护和单位编码分别进行一下讨论。
尽管系统中采取各种保护措施来防止数据的安全性和完整性的
破坏,但由于计算机系统中硬件的故障、软件的错误、操作员的
失误以及故意的破坏,问题依然是不可避免的,而且这些故障轻则
造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏
数据库,使数据库中全部或部分数据丢失。因此作为一个完整的管
理信息系统,数据的备份和恢复当然是少不了的,在这里我们使用
数据窗口提供的SAVEASO函数和IMPORT。函数分别作为数据的
备份和恢复,要声明的是在这个过程中我们把指定的文件名设为
NULLo以便使系统弹出公共对话框由用户选择文件名和保存路径
以及保存格式,这给用户提供了更大的自由度,当然,也带来了一
些问题。例如,如果用户选择的保存格式为TEXTWITHHEADERS
时(即含表头的文件格式),在恢复过程中就会报错,因此这点在帮
助的文档中特别加以注明。
至于单位编码问题,主要是为了减少数据库冗余,因为根
据用户需求职工编码的前三位就唯一标识单位,因此就在系统维
护中特别添加此项。在开发此过程中遇到不少困难,例如在用户修
改编码时,如果不保存原有的编码就无法更新职工编码,就造成数
据丢失,为解决这一问题就做了以下的工作:首先在修改后保存前
先把数据库编佗)(待改编码)保存起来,然后把修改后的编码(还
未保存编码)从数据缓冲区中取出,然后以待改编码为检索条件。
检索出职工编码,修改成新的编码,最后保存起来。
第六章系统开发的其它方面
在这一节中,我们主要讨论了两个问题,一个是系统的联
机文档,另一个是系统的测试,下面我们分别加以说明。
作为一个完整的系统,联机文档是其中不可缺少的部分也
是相当重要的部分。好的文档能够使用户快速了解并准确的使用系
统的各项功能。减少误操作,减少错误产生的可能,这对用户和开
发人员都有很多的好处。因此在开发本系统中,也加入了不少的文
档,除了对于四大模块的详细说明外,对于易出错和不易操作的地
方(如多条件查询部分)又作了详细的说明。
由于程序员本身能力的局限性,因此做编写的代码,即使
经过重复检查也难免出错因此在本阶段力求使用有限的时间找出
尽可能多的错误,力求系统尽量正确。我们在本系统的测试中使用
了黑盒法(即不关心程序内部的逻辑结构,而是根据程序的功能来
设计是检测)请一位不熟悉本系统的人来进行随意性的操作,打破
习惯的操作顺序,从中发现错误,在此阶段系统的大量错误得到了
改进。
第七章性能要求
一个合理的HRP管理软件必须具备以下功能:
信息管理
考勤管理
薪资管理
变动管理
奖惩管理
用户管理
系统安全
综合报表
权限管理
7.1档案信息管理:企业人事档案管理信息化模块;具有快
速、无限量员工数据输入及保存功能;由特定权限的管理员统一管
理员工档案。对员工从进入公司开始直至离职的整个过程进行人面
管理,档案信息包括,职员编号,职员姓名,出生年月,职工学历,定
时检查更新员工信息,具有权限的使用者能够登记、查询、修改、
统计部门信息、岗位设置情况。而且能够根据一定条件查询后浏
览各项记录,并能够进得相应的操作。
U个人资料录入,建立企业人事档案数据库。
U个人资料维护,更新,删除数据库记录。
U个人资料查询(按员工编号查询,按员工姓名查,
按员工学历查询,按所属部门查询)。
U屏幕显示员工照片。
U分类打印。
U信息浏览。
7.2考勤管理:企业考勤管理信息化模块;记录员工上下
班、加班、出、缺勤时间;
可将考勤数据轻松处理,并连至薪资计算系统,以便作薪
资结算;企业还可根据此考勤系统查询企业内各时段的员工出、缺
勤状况,作管理方面的分析;提供了全面的考勤管理。
U录入数据,对员工每一天的考勤都能动态添加,与
薪资系统直接无缝集成。
U更新数据,能够对员工的考勤信息做出更新,以便
于统计更准确的数据。
U删除数据,能够对数据的冗余信息及时清理,及时
清理数据库。
U查询数据,可对特定员工的特定月份进行查询.这
对人事管理都及时了
考勤信息是很重要的。
U报表分析,报表分析能够实现对特定职员的考勤信
息进行统计,并实现打印功
还能够实现对所有员工的考勤信息进行统计,对比,能够
帮助人力资源管理都,省时,省力,准确地统计本公司员工的考勤
U右键功能:并提供了方便,强大的右键功能,能够
方便地实现对数据进行更新,添加删除操作,执行添加操作时,考
勤编号由系统自动生成,为了更能体现交互性,管理者也能够对职
员编号进行改变,更新操作,当选取一项记录后执行更新操作,相
应的数据将全都显示出来,操作者只需对特定的信息加修改,然后
提交即可,在很大程序上减轻了操作者的工作量,真正体现本系统
的省时,省力之功效。
7.3薪资管理:企业成本核算信息化模块;符合国家薪资管
理制度要求。
u薪资录入:
与考勤系统直接集成,无缝数据接口问题,薪资编号乜由
系统自动生成,财务人员也能够对编号出行更改,财务人员只需输
入员工编号,并选择薪资日期,以下的信息都会由系统自动填充,
由于信息都实现了与职员基本信息,奖惩管理,考勤管理无缝连接,
因此由系统生成的数据都是不能修改的,这在很大程序上能够保
证薪资数据信息的安全,准确。
U薪资浏览:
插入记录,实现与薪资录入系统的连接,能够更方便地执
行录入操作,
删除记录,能够从窗体上方的浏览窗口中选取数据前执行
操作,
打印所有,实现对全体员工薪资资料实现打印,保存,
打印预览,对于有权限的操作者能够选定特定的职员后.执
行薪资支付操作,生成支会表单,前能够实现打印功能,
u制度设置:
U具有权限的操作者能够根据公同制度的变化,对于
迟到,加班,出差,旷工等的具体奖励,还是处罚标准能够灵活地进
行动态变更,
7.4绩效考核:企业员工考核规范化模块;可对员工在公
司的不同就职时间段作绩效考评记录;实现企业员工考核信息的
录入,(按职员编号,按奖惩编号)分类查询,并能够对无用的信息
资料执行删除操作,及时清理数据库。
7.5系统安全:对于一个成功的人事管理系统来说,系统
安全是非常重要的,由系统管理员或系统管理员授权的超级用户
对系统进行管理维护;确保人力资源记录及工资数据等资料的高
度保密,防止秘密数据外传和程序遭破坏,每个使用者有各自的密
码进入系统;
用户能够在受权的范围内自由更改密码;对于有具有一定
权限的用户能够任意修改其它用户的密码。依据工作需要由管理员
分配系统操作权限。
7.6报表分析:一个完善的人事管理系统必须具备报表分
析功能,对一特定的数据进行分析,实现打印功能,对数据资料进
行保护。
7.7用户管理和用户切换:由于在操作过程序中有些月户
可能要更改自己的权限,如果系统数据库有相应的个人用户资料,
她就能够进行用户切换,来提高或降低自己的操作权限。要限比较
低的用户只能修改自己的密码,而高级用户则能够添加,删除,更
新其它用户,提高系统安全性。
第八章系统功能简介
8.1登录窗体:提供安全的管理机制,进入系统时要输入用
户名,密码,并选取类别,只有三项全部与数据库记录相符后才能
进入系统,系统对用户的登陆信息进行记录,只有有特定权限的用
户才能执行相应的操作,控制系统安全。如图(1-1)所示:
图(皿)
登陆验证的代码:
stringsel="selectuser_pass,user_typefromTheUserwhere
user_name=",4-this.textBoxl.Text.ToString().Trim()4-Hn,;
stringdata="none";
SqlCommandcom二new
SqlCommand(sel,this.sqlConnection1);
try
{this.sqlConnectionl.Open();
SqlDataReaderreader=com.ExecuteReader();
while(reader.Read())
stringpas=reader[OJ.ToString().Trim();
stringleibie=reader[1].ToString().Trim();
data="some”;
stringpas1=this.textBox2.Text.ToString().Trim();
stringleibie1=boBox1.Text.ToString().Trim();
if(pas1==pas&&leibie1==leibie)
this.islogin=true;
ManageInfo.Employerleixing=leibie1;
ManageInfo.Employername=this.textBoxl.Text.ToString().Trim();
ManageInfo.Employermima=pas1;
this.Close();
break;
)
else
(
MessageBox.Show(n输入信息有误,请重新输入H,"提示
",MessageBoxButtons.OK,MessageBoxIcon.Information);
)
)
reader.Close();
this.sqlConnectionl.Close();
if(data!="somen)
{
MessageBox.Show("没有相应的用户信息,请查证后重新输
入”,'专昔误提示",McssagcBoxButtons.OK,McssagcBoxIcon.Error);
catch(Exceptionee)
{MessageBox.Show(ee.Message);
this.sqlConnectionl.Close();
Main();
loginlog=newlogin();
log.ShowDialogO;
if(log.islogin==true)
{Application.Run(newForm1());}
8.2可操作部分包括:职员档案管理、职员考勤管理、职
员奖惩管理、职员工资管理,工作调动管理等四大部分组成,如图
(2):以及附加更改密码,和更换用户功能,其界面如图(1-2):
图(1-2)
U职员档案管理,提供录入、查询、修改、删除和
统计功能。职员档案信息录入系统如图:其中员工编号由系统自动
生成,操作者也能够经过点击后面的按钮来执行编号加一操作。如
0(1-3)所示:
图(1-3)
实现编号加一操作的代码:
int
num=System.Int32.Parse(this.textid.Text.ToString().Trim());
++num;
this.textid.Text=num.ToString().Trim();
u员工信息浏览,更新,修改,删除,以及打印操作,
操作者能够经过点击左边的树形控件浏览选定职员的信息,乜能
够经过选择查询条件(按员工编号查询,按员工姓名查询,按员工
学历查询,按所属部门查询)并输入查询条件后查询显示,然后执
行相应的操作,如图(1-4)所示:
图(1-4)
实现窗体中树形控件节点动态绘制功能的代码为:
〃此函数功能是实现树的重新描绘,描绘时清除原来的树
this.treeViewl.Nodes.Clear();
〃先从部门表中读取部门信息,添加为该树的根结点
〃读取方法是,用数据集的形式,循环读入
this.sqlSelectCommand1.CommandText=nSelect*from
Department";
this.dataSet3l.Clear();
this.sqlConnectionl.OpenQ;
try
{this.sqlDataAdapterl.Fill(this.dataSet31,"Department");}
catch(Exceptionaa)
(
MessageBox.Show(aa.Message);
this.sqlConnectionl.Close();
this.sqlConnectionl.Close();
DataTable
myDataTablel=this.dataSet31.Tables["Department"J;
foreach(DataRowmyDataRowlinmyDataTablel.Rows)
{
〃以下方法程序段实现的是在树形控件中添加根节点
TreeNodetreeNode1=newTreeNode();
treeNodeI,Text=myDataRowI[,'EminfoJobdept,'J.ToString().Triin();
this.treeView1.Nodes.Add(treeNode1);
stringsel=treeNodel.Text;
〃以下方法程序段实现的是在树形控件的根节点下面添加
子节点
this.sqlSelectCommand2.CommandText="SELECT
Eminfo_id,Eminfo_name,Eminfo_jobdeptFROMEmployerinfo
WHEREEminfojobdept=,n+sel+;
this.dataSet41.Clear();
this.sqlConncctionl.Opcn();
//this.sqlSelectCommandl.ExecuteNonQueryO;
this.sqlDataAdapter2.Fill(this.dataSet41,"Employerinfo");
this.sqlConnectionl.Close();
DataTable
myDataTable2=this.dataSet41.Tables["Employerinfo"];
foreach(DataRowmyDataRowinmyDataTable2.Rows)
{TreeNodetreeNode=newTreeNode();
treeNode.Text=myDataRow[nEminfo_name"].ToString().Trim();
treeNode1.Nodes.Add(treeNode);
)
)
u用户执行分类打印的操作如图:
能够打印所有,还能够按部门打印职员的基本信息;在一
定程序上提高了程序与操作者之间的交互性。如图(1-5)所示:
图(1-5)
8.3工作调动处理:可处理员工在部门内、部门之间的工作
职务调动。员工调入、调出本单位处理等。对于本子系统,也由系
统自动后成编号,操作者只需输入职员编号,和需要调往的部门或
职位,,另外要选择事件发生的时间,其余的信息都由系统自动生
成,用户也能够对职员的调动信息进行预览,删除等操作,
自动生成职位变动编号代码为:
stringsel="selectcount(*)fromEmposchange";
SqlCommandcom=new
SqlCommand(sel,this.sqlConnection1);
try
(
this.sqlConnectionl.OpenQ;
SqlDataReaderreader=com.ExecuteReader();
while(reader.Read())
stringdate=System.DateTime.Now.Year.ToString();
this.textBox4.Text=date+reader[0].ToString().Trim().PadLeft(2,,0,);
)
reader.Close();
this.sqlConnectionl.Close();
)
catch(Exceptionee)
(
this.sqlConnectionl.Close();
MessageBox.Show(ee.Message);
)
子系统执行界面如图(1-6)所示:
图(1-6)
当焦点进入职员姓名后的编辑框后实现实动填充信息的代
码为:
if(this.tcxtBox5.Tcxt="n)
MessageBox.Show(“你没有输入相应编号的职员,请查证后
输入以显示正确信息)
)
else
(
stringsel=,,SelectEminfo_name,EminfoJobpositfrom
Employerinfowhere
EminfoJd=n,4-this.textBox5.Text.ToString().Trim()4-nH,;
SqlCommandcom=new
SqlCommand(sel,this.sqlConnection1);
this.sqlConnectionl.Open();
try
(
SqlDataReaderreader=com.ExecuteReader();
while(reader.Read())
this.textBox6.Text=reader[0].ToString().Trim();
this.textBox8.Text=reader[1].ToString().Trim();
)
reader.Close();
this.sqlConnectionl.Close();
)
catch(Exceptionee)
(
this.sqlConnectionl.Close();
MessageBox.Show(ee.Message);
8.4奖惩管理子系统:可处理员工在本月份职员奖惩信息
的录入(包括考评记录,以及金额等,)以及删除功能,此子系统将
与薪资管理系统无缝接合,实现薪资数据的自动化添加。如图(1・7)
所示:
图(1-7)
职员奖惩信息录入的代6芍为:
this.sqlConnectionl.Opcn();
this.sqlDataAdapterl.Fill(this.emrel,HEmre");
this.sqlConnectionl.Close();
DataRow
myDataRow1=this.emre1.Tables["Emre"].NewRow();
try
(
myDataRow1[nEmreinfo_num"]=this.textBoxl.Text;
myDataRowl["Eminfo_id"]=this.textBox2.Text;
myDataRowl["Emreinfo_daten]=byear.Text.ToString(),Trim()
+bomont.ToString().Trim();
myDataRow1[,'Emreinfo_resco,,]=this.textBox3.Text;
myDataRow1[nEmreinfo_punsco"J=this.textBox4.Text;
myDataRowl[,,Emreinfo_punmon,]=this.textBox5.Text;
myDataRow1["Emreinfo_remon"]=this.textBox6.Text;
this.emrel.Tables["Emre"].Rows.Add(iTiyDataRow1);
this.sqlDataAdapterl.Update(this.emrel,nEmre");
MessageBox.Show(”录入数据成功");
)
catch(Exceptionee)
{MessageBox.Show(ee.Message);
this.sqlConnectionl.Close();
)
8.5考勤管理:本子系统实现了自动生成编号,实实现考勤
信息的录入,更新,删除功能。本系统也提供最一定功能的右键功
能,操作都能够选取一定的记录后执行相应的操作,如果是执行更
新信息操作,则所选项的信息资料将在窗体下方的编辑框中显示,
有权限的操作者只需填写相应更新的项后就能够执行更新操作,
在很大程序上降低操作者的工作量。如图(1-8)所示:
图(1-8)
为了防止提高系统的安全性,在该窗体打开时对用户的权
限做了如下规定:
if(ManageInfo.Employerleixing=="一般职员
”||ManageInfo.Employerleixing=="财务人员")
{this.button1.Enabled二false;
this.button5.Enabled=false;
this.button8.Enabled=false;
this.button6.Enabled=false;
)
else{}
this.sqlConnection2.Open();
this.sqlDataAdapterl.FiIl(this.emattendmanagel,"Emattendinfon);
this.sqlConnection2.Close();
实现数据录入的代码为:
DataTable
myDataTable=this.emattendmanagel.Tables!"Emattendinfo"];
DataRowmyDataRow=myDataTable.NewRow();
myDataRow["Emattend_num"]=this.textBoxl.Text.ToString().Trim();
myDataRow["Eminfo_id"]=this.textBox2.Text.ToString().Trim();
myDataRow["Emattend_monthu]=boBoxl.Text.ToString().Tri
m()+"-n+boBox2.Text.ToString().Trim();
myDataRow["Emattend_late"]=Convert.ToIntl6(this.textBox3.Text);
myDataRow["Emattend_absn]=System.Double.Parse(this.textBox4,Te
xt);
myDataRow["Emattend_evenn]=System.Double.Parse(this.textBox5.T
ext);
myDataRow["Emattendjiab"]=System.Convert.ToIntl6(this.textBox6
.Text);
myDataRow["Emattend_matt,']=Convert.ToIntl6(this.textBox7.Text);
myDataTable.Rows.Add(myDataRow);
try
(
this.sqlDataAdapterl.Update(this.emattendmanage1JEmatlendinfo");
MessageBox.Show(”录入数据成功");
FillData();
)
catch(Exceptionee)
{MessageBox.Show(ee.Message);
This.SqlConnection.Close();
ListView控件的数据添加代码为:
this.listViewl.Items.Clear();
stringsel="Select*fromEmattendinfo";
SqlCommandcom=new
SqlCommand(sel,this.sqlConnection2);
this.sqlConnection2.Open();
SqlDataReaderreader=com.ExecuteReader();
while(reader.Read())
{
ListViewItemitem=newListViewItem();
item.SubItems[0].Text=reader[0].ToString().Trim();
item.SubItems.Add(reader[l].ToString().Trim());
item.SubItems.Add(readerf2].ToString().Trim());
item.SubItems.Add(reader[3].ToString().Trim());
item.SubItems.Add(reader[4J.ToString().Trim());
item.SubItems.Add(reader[5].ToString().Trim());
item.SubItems.Add(reader[6].ToString().Trim());
item.SubItems.Add(reader[7].ToString().Trim());
this.listView1.Items.Add(item);
)
reader.Close();
this.sqlConnection2.Close();
)
执行右键删除考勤信息的代码为:
if(this.listViewl.Items.Count<1)
{MessageBox.Show("请你先中一1页记录后再执行相应的操
作)}
elseif(MessageBox.Show("您确定要删除选定的记录吗?”
"删除记录",MessageBoxButtons.YesNo,MessageBoxIcon.Question)
==DialogResult.Yes)
string
sel=this.listViewl.SelectedItems[OJ.SubItems[0].Text.ToString().Trim(
);
stringdel="deletefromEmattendinfowhere
Emattend_num=n,+sel+;
SqlCommandcom=new
SqlCommand(del,this.sqlConnection2);
try
(
this.sqlConnection2.Open();
com.ExecuteNonQueryO;
MessageBox.Show("成功删除数据)
FillData();
this.sqlConnection2.Close();
catch(Exceptionee)
MessageBox.Show(ee.Message);
This.sqlConnection2.Close();
)
)
实现更新考勤信息的代码为:
DataTable
myDataTable=this.emattendmanage1.Tables[',Emattendinfo,'];
myDataTab!e.PrimaryKey=
newDataColumn[]
(
myDataTable.Columns[,,Emattend_num,']
);
stringfind=this.textBox1.Text.ToString().Trim();
DataRowmyDataRow=myDataTable.Rows.Find(find);
myDataRow[nEmattend_num"]=this.textBoxl.Text.ToString().Trim();
myDataRow["Eminfo_id"]=this.textBox2.Text.ToString().Trim();
myDataRow|"Emattend_monthn]=boBox1.Text.ToString().Tri
m()+n-n+boBox2.Text.ToString().Trim();
myDataRow[nEmattend_late"]=Convert.ToIntl6(this.textBox3.Text);
myDataRow[HEmattend_abs"l=System.Double.Parse(this.textBox4,Te
xt);
myDataRow[HEmattend_even"]=System.Double.Parse(this.textBox5.T
ext);
myDataRow[HEmattendJiab"]=System.Convert.ToIntl6(this.textBox6
.Text);
myDataRow[HEmattcnd_matt"]=Convcrt.ToIntl6(this.tcxtBox7.Tcxt);
try
(
this.sqlDataAdapterl.Update(this.emattendmanage1/'Emattendinfo'*);
MessageBox.Show(“你已经成功实现了数据更新操作)
FillDataO;
)
catch(Exceptionee)
{
MessageBox.Show(ee.Message);
)
本系统还提供一项分打报表功能是,如果操作在右边的职
员编号中没有输入数据,则系统将统计分析所有职员的考勤信息,
如图(1-9)所示:
如图(1-9)
如果输入确实存在的职员信息,奖会显示该职员的本月份
考勤统计报表,能够实现打印操作。如图(1-10)所示:
图(1-10)
打开Emattendbaobiao时的代码为:
Emattendmanman=newEmattendman();
man.sqlConnection2.Open();
man.sqlSelectCommandl.CommandText=ManageInfo.Emattendsel
man.sqlDataAdapterl.Fill(man.emattendmanagel,"Emattendinfo");
man.sqIConnection2.Close();
EmattendReportlrep=newEmattendReport1();
rep.SetDataSource(man.emattendmanage1);
this.crystalReportviewerI.ReportSource=rep;
8.6薪资管理:对职员的工资信息进行管理。
薪资录入:
此子系统实现了薪资的录入,包括奖惩查询,考勤查询,以
及工资计算等,此过程都实现时填充了所选月份的的奖惩统计,
考勤统计,打开窗体后系统臼动生成薪资录入编号,财务人员也
能够经过点击后面的“+”按钮实现薪费编号加一操作。如图
(1-11)所示:
图(1-11)
考勤查询的代码为:
if(this.textid.Text=="H||this.textnum.Text==,,n||byear.Text=
二"”||bomont.Text二二
(
MessageBox.Show("请你注意选好职员编号,工资编号,工
资月份后再执得相应的操作7提示
",MessageBoxButtons.OK,MessageBoxIcon.Warning);
)
else
(
FindName();
EmattendSel();
)
另附两个函数:
FindName();
stringid=this.textid.Text.ToString().Trim();
stringsel=nSelectEminfo_name,Eminfo_salarysortfrom
EmployerinfowhereEminfo_id=n,4-id+""';
SqlCommandcom=new
SqlCommand(sel,this.sqlConnection1);
try
(
this.sqlConnectionl.Open();
SqlDataReaderreader=com.ExecuteReader();
while(reader.Read())
(
this.textname.Text=reader[0].ToString().Trim();
this.textbasic.Text=reader[1].ToString().Trim();
)
reader.Close();
this.sqlConnectionl.Close();
catch(Exceptionee)
this.sqlConnectionl.Close();
MessageBox.Show(ee.Message);
)
EmattendSelO
stringid=this.textid.Text.ToString().Trim();
string
month=byear.Text.ToString().Trim()+"-H+bomont.
Text.ToString().Trim();
stringsei="select
sum(Emattend_late),sum(Emattend_abs),sum(Emattend_even),suiTi
(Emattendjiab)"+
"fromEmattendinfowhereEminfo_id="'+id+”'AND
Emattend_month=H,4-month+',,n;
SqlCommandcom=new
SqlCommand(sel,this.sqlConnection1);
this.sqlConnectionI.Open();
SqlDataReaderreader=com.ExecuteReader();
while(reader.Read())
if(reader[0].ToString().Trim()!='n,)
stringlate=reader[0].ToString().Trim();
stringabs=reader[1].ToString().Trim();
stringeven=reader[2J.ToString().Trim();
stringjiab=reader[3].ToString().Trim();
doublejia=System.Double.Parse(ManageInfo.EmSalaryjia);
doubleeve=System.Double.Parse(ManageInfo.EmSalaryeve);
doublelat=System.Double.Parse(Managelnfo.EmSalarylat);
doubleabss=System.Double.Parse(ManageInfo.EmSalaryabs);
doublelate1二System.Double.Parse(late)*lat;
doubleabs1=System.Double.Parse(abs):iiabss;
doubleeven1=System.Double.Parse(even)*eve;
doublejiabl=System.Double.Parse(jiab)*jia;
this.texteve.Text二even1.ToString().Trim();
this.textjia.Text=jiab1.ToString().Trim();
this.textabs.Text=absl.ToString().Trim();
this.textlate.Text=late1.ToString().Trim();
else
this.texteve.Text=uO";
this.textjia.Text="On;
this.textabs,Text="O";
this.textlate.Text=nOH;
)
)
reader.Close();
this.sqlConnectionl.Close();
奖惩查询的代码为:
stringid=this.textid.Text.ToString().Trim();
string
month=byear.Text.ToString().Trini()+,,-,,4-bomont.Tex
t.ToString().Trim();
stringsel="select
sum(Emreinfo_remon),sum(Emreinfo_punmon)fromEmreinfowhere
Eminfo_id='"+id+n,ANDEmreinfo_date="'4-month4-"'";
SqlCommandcom=new
SqlCommand(sel,this.sqlConnection1);
this.sqlConnectionl.Open();
SqlDataReaderreader=com.ExecuteReader();
while(reader.Read())
{
if(reader[0].ToString().Trim()!=,M,)
(
stringremon=reader[0].ToString().Trim();
stringpunmon=readerf1l.ToString().Trim();
doubleremon1=System.Double.Parse(remon);
doublepunmon1二System.Double.Parse(punmon);
this.textre.Text=remon1.ToString(),Trim();
this.textpun.Text=punmonl.ToString().Trim();
)
else
(
this.textre.Text="O";
this.textpun.Text="Ou;
)
)
reader.Close();
this.sqlConnectionl.Close();
薪资浏览:功能包括(插入记录,刷新记录,删除记录.打
印所有,工资支付等)界面如图:
工资支付的代代码为:
if(this.listView1.SelectedItems.Count<1)
MessageBox.Show("请你选择一个员工后,再进行相应的操
作“,"提示”,MessageBoxButtons.OK,MessageBoxIcon.Warning);
else{SalaryClass.Eminfosal_num=this.listViewLSel
ectedItems[O].SubItems[1].Text;
SalaryClass.Eminfosal_name=this.iistViewl,SelectedItems[0].SubItem
s[2].Text;
SalaryClass.Eminfosal_money=this.listViewl.SelectedItems[0].SubIte
ms[ll].Text;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年注册公用设备工程师(给水排水)考试:专业基础真题及标准答案
- 施工现场技术灼烫事故规程
- 2026年高级评茶员(三级)《理论知识》考试真题及答案
- 隆德咨询财务外包合同
- 公司驾驶员提供外包合同
- 办公室卫生清洁外包合同
- 2026YL社会工作师中级实务考试真题及答案解析
- (2026年)有限空间作业安全培训考试试题(含答案)
- 隔墙面板错缝安装施工工艺
- 东城消防安全体验馆招标
- 2026年安全生产月:重大危险源管控与隐患排查治理课件
- 2026广西百色市那坡县劳动人事争议仲裁院招聘编外工作人员5人笔试备考试题及答案解析
- 5.1《阿Q正传(节选)》课件+2025-2026学年统编版高二语文选择性必修下册
- GINA哮喘指南核心更新解读2026
- 2025年甘孜州船头学校选调事业单位工作人员真题
- 2026年汽车维修前台测试题及答案
- 2026福建厦门公交集团有限公司公交招聘考试备考试题及答案解析
- 2026年职业能力倾向验-通关题库及1套参考答案详解
- 2026年三支一扶考前押题公共基础知识题库(含答案)
- 2026中国兵器审计中心(西南中心)招聘6人笔试参考题库及答案解析
- 大型屋面网架整体拆除方案
评论
0/150
提交评论