【毕业设计论文】基于C#与MS SQLSERVER的人力资源管理系统的设计与实现_第1页
【毕业设计论文】基于C#与MS SQLSERVER的人力资源管理系统的设计与实现_第2页
【毕业设计论文】基于C#与MS SQLSERVER的人力资源管理系统的设计与实现_第3页
【毕业设计论文】基于C#与MS SQLSERVER的人力资源管理系统的设计与实现_第4页
【毕业设计论文】基于C#与MS SQLSERVER的人力资源管理系统的设计与实现_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要人事管理系统是现代企事业单位信息化中最基础的部分,它对于单位决策者和管理者来说都至关重要,同时计算机系统具有手工管理所无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长和成本低等。这些优点能够极大地提高人事管理的效率,也是企业的科学化、正规化管理的重要条件。因此,提供一套合理、有效、规范和实用的人事管理系统,完成人事信息的检索、更新和维护工作已成为企事业单位信息化过程中必不可少的一环。本人力资源管理系统是根据人力资源管理工作的实际需要而设计开发的,是一个通用型动态人力资源管理系统。该系统兼有工资管理功能,具有操作简便、使用灵活、界面友好等特点,系统包含4个管理模块:

2、人事档案管理、人事关系管理、薪酬管理、系统管理。人事档案管理对企业员工的变动信息进行管理,可以实现增添、查询或修改、删除企业员工的基本信息,员工的基本信息包括:员工编号、员工姓名、性别、民族、婚姻状况、党派、出生日期、身份证号。人事关系管理对每位员工的社会关系 、工作关系 、员工调动、 职称评定 、奖励处分等的信息的增删改查的处理,以便管理,管理员可以查询公司员工的工作安排,职务调动,以及员工的奖惩情况。薪酬管理包括员工的薪资管理、员工医疗保险、员工养老保险的管理。管理员可以查询有关员工薪资的情况,还可以修改或删除员工薪资情况。系统管理使系统管理员可以完成以下操作:添加用户、权限设置、部门设置

3、、 其他设置。用户可以根据其权限使用不同模块。该系统的使用方法:首先,把数据库附加到sql server上,然后在visual studio中打开源代码,在资源管理器里找到dataaccess类,以查看代码的的形式打开,修改字符串里服务器的名称。即下边的字符串:static string str = data source=china-7d64a68b6sqlexpress;initial catalog=hrmanbeifen;integrated security=sspi;目录摘要2第一章 系统设计41.1 需求分析41.2系统设计41.2.1系统管理模块51.2.2人事档案管理模块51

4、.3.3日常人事管理模块51.4.4薪酬管理模块5第二章 系统文件构架62.1系统内类的介绍62.2系统所包含文件的组织结构如图所示。7第三章 数据库设计83.1数据库的概要说明83.2主要数据表的结构定义93.3 对数据库及表的一些操作12第四章 窗体功能的基本介绍144.1登录窗体的介绍144.2设计主窗的介绍154.21实现技术154.22主窗体界面抓图164.23主窗体界面的相关代码见附录二。164.3权限设置窗体:164.31实现技术164.32窗体抓图174.4人事档案管理模块:174.41实现技术174.42窗体的抓图174.43窗体实现代码(详细代码见附录四)184.5其他窗体

5、介绍184.51员工信息修改窗体抓图:184.52 员工社会关系管理窗体及其修改窗体:194.53员工调动窗体:19附录19第一章 系统设计 1.1 需求分析人事管理系统是一类通用的管理信息系统,包括员工档案管理、薪资管理和日常人事工作管理等。下面是一份本系统简单的需求说明文本,是在对系统的终端用户和客户进行调研后编写的,这里只列出比较关键的部分。(1) 人事管理系统需要对日常人事工作进行管理,包括添加、删除、修改员工信息;对员工进行分类查询、统计等操作。(2) 人事管理系统需要对日常人事工作进行管理,包括员工工作关系、社会关系、奖惩情况、职称评定和工作调动情况等内容。(3) 人事管理系统应具

6、备人员薪资管理功能,包括工资管理、养老和医疗保险管理等。(4) 系统运行在windows平台上,要求有一个较好的图形用户界面,操作要求简单。(5) 系统应该有良好的架构及可扩展性,以便不同类型的企事业单位根据实际情况对原有系统进行补充与维修。(6) 使用者包括普通用户和系统管理员两类,系统管理员完成管理的全部功能。普通用户完成除系统管理以外的功能。 1.2系统设计人事管理系统主要适用于企事业单位日常人事管理工作。本系统可以分为以下几个模块:系统管理模块、人事档案管理模块、日常人事管理模块和薪资管理模块,下面分别给出各功能模块的介绍。1.2.1系统管理模块系统管理模块包括用户管理及系统设置两部分

7、,共包括以下几个子模块。(1) 添加用户:添加一个系统用户。(2) 修改密码:修改登录用户的密码。(3) 权限设置:设置用户权限,其中权限分为系统管理员和普通用户两类,只有系统管理员才能进行权限设置操作。(4) 重登陆:用户重新登陆。(5) 部门设置:设置当前系统的部门。(6) 其他设置:设置系统中的其他内容,如职称、职务等。1.2.2人事档案管理模块该模块用来处理人事档案相关操作,包括员工档案的添加、修改及删除操作;员工档案查询操作;员工档案的分类查询及统计操作等。1.3.3日常人事管理模块该模块完成企事业单位日常人事管理工作,包含以下功能:(1) 员工社会关系管理。(2) 员工工作关系管理

8、。(3) 员工调动管理。(4) 职称评定管理。(5) 员工奖惩管理。1.4.4薪酬管理模块该模块实现薪酬管理的相关操作,包含以下功能:(1) 薪资管理。(2) 医疗保险管理。(3) 养老保险管理。本例中各功能模块之间的关系如图所示。第2章 系统文件构架 本示例系统以visual studio 2005及sql sever 2005为开发工具和数据库工具。系统文件分为人事管理文件、系统管理文件及全局文件,分别存放hroper、sysoper及系统目录下。其中,hroper目录下包含日常人事管理模块与人事档案管理模块相关的文档;sysoper目录下包含系统管理模块相关文件;系统目录下包含主界面文档

9、、登陆及全局功能相关文件。2.1系统内类的介绍hroper目录下存放有与人事管理和人事档案管理相关的窗体,其中每个窗体包含一个cs文件、design.cs文件和一个资源文件。该目录下包含的窗体如下。formaddaward.cs:定义添加奖惩处理操作。formaddemp.cs:定义添加员工操作。formaddempchange.cs:定义添加工作调动操作。formaddmedinsure.cs:定义添加医疗保险操作。formaddpeninsure.cs:定义添加养老保险操作。formaddsalary.cs:定义添加薪资操作。formaddsocia.cs:定义添加社会关系操作。forma

10、ddtitle.cs:定义添加职称管理操作。formaddwork.cs:定义工作关系操作。formawardinfo.cs:定义薪酬管理操作。formempchange.cs:定义员工调动管理操作。formempinfo.cs:定义人事档案管理操作。formmedinsure.cs:定义医疗保险管理操作。formpeninsureinfo.cs:定义养老保险管理操作。formsalaryinfo.cs:定义薪酬管理操作。formsociinfo.cs:定义社会关系管理操作。formtitle.cs:定义职称管理操作。formworkinfo,cs:定义工作关系管理操作。sysoper目录下存

11、放有与系统管理相关的窗体,其中每个窗体包含一个cs文件、design.cs文件和一个资源文件。该目录下包含的窗体如下。formadduser.cs:定义添加用户操作。formcompeinfo,cs:定义权限管理操作。formdepinfo.cs:定义设置部门操作。formothersetting.cs:定义其他设置操作。formtreenode.cs:定义添加(修改)设置过程。formeditpsw.cs:定义修改密码操作。image 目录下包含了系统相关的图标文件,在此不再一一赘述。系统目录下包含有相关的窗体文件和全局文件。certification.cs:定义验证操作及设置datagri

12、d样式操作。dataaccess.cs:定义数据库访问操作。program.cs:系统文件。formlogin.cs:定义登陆操作。formmain.cs:定义主窗体。2.2系统所包含文件的组织结构如图所示。第三章 数据库设计本例采用了sql server 2005 作为后台数据库,数据库名为hrman。下面给出数据表的概要说明和主要数据表的结构定义。3.1数据库的概要说明本系统的数据表可以分为两大类,一类用来存放员工相关信息,如employinfo(员工信息表)、endowmeninfo(养老保险信息表);另一类用来存放系统相关数据信息,如jobinfo(职务信息表)、raceinfo(民族

13、信息表)。系统共有如下所示表。员工信息表(employinfo):该表包含了与员工相关的信息。养老保险信息表(endowmeninfo):该表包含了养老保险相关信息。职务信息表(jobinfo):该表包含了职务相关信息。医疗保险信息表(medicalinfoinfo):该表包含了养老保险相关信息。图片表(photo):该表包含了员工图片信息。奖惩表(ppinfo):该表包含了员工奖惩信息。民族信息表(raceinfo):该表保含了民族相关信息。部门信息表(sectioninfo):该表包含了部门相关信息。员工社会关系信息表(societyinfo):该表包含了员工社会关系相关信息。职称信息表(

14、titleinfo):该表包含了职称相关信息。职称类型信息表(title):该表包含了职称相关信息。员工调动信息表(transferinfo):该表包含了员工调动相关信息。用户信息表(userinfo):该表包含了用户相关信息。薪资信息表(wagesinfo):该表包含了员工工资相关信息。工作关系表(workinfo):该表包含了员工工作关系相关信息。3.2主要数据表的结构定义上节中给出了本例中各表的基本内容及主要功能,下面将这些数据表的结构做一简要介绍。(1)员工信息表该表用来存储与员工相关的基本信息。其结构如表1所示。表1 employinfo表结构字段名数据类型主键允许空描述eldint

15、否是员工编号ridint否是民族号sidint否是部门号jidint否是职务号endidint否是养老号tidint否是职称号meidint否是医疗号phidint 否是照片号pldint 否是奖惩号seidint 否是社会关系号tiidint 否是职称评定号traidint 否是调动号waidint否是工资号widint否是工作关系号enamenvarchar(50)否是员工姓名esexnvarchar(10)否是性别epartynvarchar(50)否是政治面貌ebirthdaynvarchar(50)否是生日eplacenvarchar(50)否是籍贯eemptimenvarchar(

16、50)否是雇员时间eemptypenvarchar(50)否是雇佣类型eempdatasourcenvarchar(50)否是来源enumbernvarchar(50)否是身份证号码ephonenvarchar(50)否是电话号码eaddressnvarchar(50)否是地址emarriagenvarchar(50)否是婚否eedunvarchar(50)否是学历epronvarchar(50)否是专业eschoolnvarchar(50)否是毕业院校edatenvarchar(50)否是毕业时间edegreenvarchar(50)否是学位eappnvarchar(50)否是状态epwdn

17、varchar(50)否是密码(2)养老保险信息表emdowmentinfo 表中存储养老相关信息(注:自动编号字段值将该字段的数据类型设置为int),具体结构如表2所示。表2 emdowmentinfo表结构字段名数据类型主键允许空描述eeeidint是否自动编号enidint否是养老保险endatevarchar(50)否是时间enmoneymoney否是金额(3)职务信息表jobinfo 表中记录了职务相关信息。其结构如表3所示。表3 jobinfo表结构字段名数据类型主键允许空描述jidint是否职务号jnamenuarchar(20)否是职务名称(4)职称信息表该表主要存放员工的职称

18、信息。其结构如表9-4所示:表4 titleinfor字段名数据类型主键允许空描述ttidint是否自动编码tiidint否是员工号码ttitlenvarchar(10)否是职称ttypenvarchar(10)否是取得方式tempdatenvarchar(50)否是取得时间temptimenvarchar(50)否是取得方式tsectionnvarchar(10)否是截止时间tjobnvarchar(10)否是聘用部门tremarksnvarchar(200)否是备注(5)职称类型信息表该表存放职称类型相关信息,具体结构如表5所示。表5 title表结构字段名数据类型主键允许空描述tidin

19、t是否职称号码tnamenvarchar(10)否是职称类型 (6)用户信息表该表主要用来存放系统用户信息。其结构如表6.表6 userinfor表结构字段名数据类型主键允许空描述uidint是否用户编号unamenvarchar(10)否是用户名passwordnvarchar(10)否是密码upowernvarchar(50)否是权限本系统包含表较多,但结构类似,因此仅以上表的结构做以介绍。3.3 对数据库及表的一些操作数据库中表的查询,查看员工信息表的信息:使用查询设计器查看员工信息表的信息对用户信息里面与用户名字段建立unique约束对员工信息表中的员工性别加以check约束建立对员工

20、信息表的存储过程,查询员工信息为员工信息表建立触发器,一旦插入一条记录后,立即输出提示信息。第4章 窗体功能的基本介绍4.1登录窗体的介绍 这里就该系统的一些主要的具有代表性的窗体简单做下介绍。4.11登录窗体的实现技术: 输入用户名和密码后,可以和数据库连接上进而转到主窗体,每次登陆后用户名的textbook里就会记忆用户名供下次选择。4.12登录窗体抓图:4.13实现代码(详细代码见附录一)本系统定义很多通用的设计类,它定义了certification类用来证输入的内容是否符合格式及设定datagrid空间类型,还定义了dataaccess类来描述数据访问操作。certification类

21、定义了验证输入是否合法的相关方法,包括验证输入的是否为电话号码,是否为身份证号是否为日期等内容。需要调用命名空间system.text.regularexpressions.dataaccess类描述了与数据库有关的服务,主要内容为执行sql语句的服务,包含返回sql语句,无返回sql语句,及批量执行sql语句,除此之外,还包括一些其他服务,如判断是否记录返回,图片的读取和写入服务等。例如:如数据库的链接代码sqlconnection conn;staticstringstr=datasource=china-7d64a68b6sqlexpress;initial catalog=hrmanb

22、eifen;integrated security=sspi; public dataaccess() conn = new sqlconnection(str);conn.open();4.2设计主窗的介绍4.21实现技术 用户在主窗体可以调用人事档案管理窗体、人事关系窗体、薪酬管理窗体、系统管理(仅有管理员才拥有本权利)。用户也可以利用菜单栏的图标进行管理。4.22主窗体界面抓图formempinfor 的类视图4.23主窗体界面的相关代码见附录二。4.3权限设置窗体:4.31实现技术 权限设置模块用来完成用户权限的设置操作,本例利用datagridview控件内嵌combo列实现修改权限

23、操作,可以实现用户权限的改动。4.32窗体抓图4.33 实现代码见附录三4.4人事档案管理模块:4.41实现技术该窗体类名formempinfo.cs,窗体添加控件toolstrip,及treeview控件,groupbox控件还有一个datagridview控件。4.42窗体的抓图4.43窗体实现代码(详细代码见附录四)实现formempinfor类时,除了系统自动生成的成员外,还需要为其添加一些自定义的成员,方便实现各能。为formempinfo.design.cs为formempinfor类添加如下成员:/获取窗体public system.windows.forms.currencym

24、anager cm;/获取datatable对象,获取检索结果集public system.data.datatable table = new system.data.datatable();/定义当前静态对象public static hrman.hroper.formempinfo emploinfo=new formempinfo(); /标示操作类别 public static string emploid = string.empty;/标示当前要操作的员工编号 public string id = string.empty;/标示sql字符串 private string ss

25、= new string null, null ;4.5其他窗体介绍员工的添加及员工信息的修改功能均有formaddemp窗体来实现。本实例中其他的人事管理模块如工作关系管理、薪资管理等在结构上与人事档案管理页面大致一样,所以不再详细介绍这里仅给出运行界面的图示:4.51员工信息修改窗体抓图:(代码见附录五) 4.52 员工社会关系管理窗体及其修改窗体:(代码见附录六)4.53员工调动窗体:(代码见附录七)附录附录一 public partial class formlogin : form public formlogin() initializecomponent(); fl = this

26、; private void formlogin_load(object sender, eventargs e) string sqltext = select * from userinfo; dataaccess da = new dataaccess(); datatable dt = new datatable(); dt = da.exesqldt(sqltext); for (int i = 0; i dt.rows.count; i+) bobox1.items.add(dt.rowsiuname.tostring(); private void button2_click(o

27、bject sender, eventargs e) this.close(); private void button1_click(object sender, eventargs e) string sqltext = select * from userinfo where uname= + bobox1.text + and upassword= + this.textbox1.text + ; dataaccess da = new dataaccess(); if (da.isread(sqltext) = true) string ss = select * from user

28、info where uname= + bobox1.text + ; datatable dt = da.exesqldt(ss); this.competence = dt.rows0upower.tostring(); formlogin.can = true; this.close(); else messagebox.show(用户和密码不一致!); 附录二: checkform用来判断指定窗体是否为当前类型窗体: public bool checkform(string name) foreach (form f in this.mdichildren) if(f.name = n

29、ame) if (f.windowstate = formwindowstate.minimized) f.windowstate = formwindowstate.normal; f.activate(); return true; return false; 在窗体的load函数中需要根据登录用户的权限初始化菜单项与按键是否可用: private void formmain_load(object sender, eventargs e) this.enabled = true; this.toolstripstatuslabel1.text = system.datetime.now.

30、tostring(); this.toolstripstatuslabel2.text = 操作员: + formlb; /设置权限 switch (formlogin.fl.competence) case 系统管理员: this.添加用户toolstripmenuitem.enabled = true; this.权限设置toolstripmenuitem.enabled = true; break; case 普通用户: this.系统管理toolstripmenuitem.enabled = false; this.toolstripbutton6.enabled = false; t

31、his.toolstripbutton7.enabled = false; this.toolstripbutton8.enabled = false; this.toolstripbutton9.enabled = false; break; default: this.系统管理toolstripmenuitem.enabled = false; this.toolstripbutton6.enabled = false; this.toolstripbutton7.enabled = false; this.toolstripbutton8.enabled = false; this.to

32、olstripbutton9.enabled = false; break; 系统利用了mdi多窗体应用程序,以及使用菜单,工具栏及状态栏做主界面的设计元素。主窗体设计时设置ismdicontainer属性值为true,这样把该窗体设置为多文档应用程序的主窗体,窗体的还利用了menustrip控件和toolstrip控件、statusstrip控件,设置了一系列按钮,这里不再一一列举,如上图所示。附录三部分代码如下: public void dbdatagrid() string sqltext = select uid as 用户id ,uname as 用户名称,upower as 用户权

33、限from userinfo; dataaccess da = new dataaccess(); this.dt = da.exesqldt(sqltext); this.datagrid1.columns.clear(); datatable dt = new datatable(); dt.columns.add(new datacolumn(权限, typeof(string); datarow row = dt.newrow(); row0 = 系统管理员; dt.rows.add(row); datarow row2 = dt.newrow(); row20 = 普通用户; dt.

34、rows.add(row2); dt.acceptchanges(); /datagridview列 datagridviewcomboboxcolum cbc=new datagridviewcomboboxcolumn(); cbc.datasource = dt; cbc.displaymember = 权限; cbc.valuemember = 权限; cbc.datapropertyname = 权限; cbc.headertext = 权限; datagridviewtextboxcolumn cid = new datagridviewtextboxcolumn(); cid.h

35、eadertext = 用户id; cid.datapropertyname = 用户id; datagridviewtextboxcolumn cname = new datagridviewtextboxcolumn(); cname.headertext = 用户名称; cname.datapropertyname = 用户名称; this.datagrid1.columns.addrange(newsystem.windows.forms.datagridviewcolumn cid, cname, cbc ); datatable dtsource = new datatable()

36、; dtsource.columns.add(用户id, typeof(int32); dtsource.columns.add(用户名称, typeof(string); dtsource.columns.add(权限, typeof(string); foreach (datarow forrow in this.dt.rows) datarow r1 = dtsource.newrow(); r10 = forrow0; r11 = forrow1; r12 = forrow2; dtsource.rows.add(r1); dtsource.acceptchanges(); this.

37、datagrid1.datasource = dtsource; this.datagrid1.columns0.readonly = true; this.datagrid1.columns1.readonly = true; if (this.datagrid1.rows.count != 0) for (int i = 0; i this.datagrid1.rows.count; ) this.datagrid1.rowsi.defaultcellstyle.backcolor = system.drawing.color.pink; i += 2; 附录四namespace hrma

38、n.hroper public partial class formempchange : form public formempchange() initializecomponent(); employchange = this; position = 0; /初始化 private void formempchange_load(object sender, eventargs e) dbdatagrid(); this.init(); /初始化 private void init() string sqltext = select * from sectioninfo; dataacc

39、ess da = new dataaccess(); datatable dt = da.exesqldt(sqltext); for (int i = 0; i dt.rows.count; i+) bobox1.items.add(dt.rowsisname.tostring(); bobox2.items.add(dt.rowsisname.tostring(); string str = select * from title; datatable table = da.exesqldt(str); for (int j = 0; j table.rows.count; j+) bob

40、ox3.items.add(table.rowsjtname.tostring(); bobox4.items.add(table.rowsjtname.tostring(); /数据显示 public void dbdatagrid() string sqltext = select transferinfo.aaid,transferinfo.traid as 员工编号,employinfo.ename as 员工姓名,transferinfo.tdate as 调动时间,transferinfo.fsection as 调动前部门,; sqltext += transferinfo.ls

41、ection as 调动后部门,transferinfo.fjob as 调动前职务,transferinfo.ljob as 调动后职务,transferinfo.treason as 调动原因,transferinfo.tapp as 批准人,transferinfo.tremarks as 备注 ; sqltext += from transferinfo,employinfo where employinfo.traid=transferinfo.traid order by transferinfo.traid asc; dataaccess da = new dataaccess(

42、); this.dt = da.exesqldt(sqltext); this.datagrid1.datasource = this.dt.defaultview; this.cm = (currencymanager)bindingcontextthis.dt; if (this.datagrid1.rows.count != 0) for (int i = 0; i this.datagrid1.rows.count; ) this.datagrid1.rowsi.defaultcellstyle.backcolor = system.drawing.color.pink; i += 2

43、; /响应按钮事件 /处理按钮事件 /插入 private void insertempchange(system.object sender, system.eventargs e) hrman.hroper.formempchange.employid = insert; if (formmain.fm.checkform(formaddempchange) = true) return; else hrman.hroper.formaddempchange addempchange = new hrman.hroper.formaddempchange(); addempchange.mdiparent = formmain.fm; addempchange.show(); addempchange.text = 添加工作调动; /修改 private void updateempchange(system.object sender, system.eventargs e) hrman.hroper.formempchange.employid = update; this.sb.remov

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论