人力资源信息系统.docx
《人力资源信息系统.docx》由会员分享,可在线阅读,更多相关《人力资源信息系统.docx(27页珍藏版)》请在冰点文库上搜索。
人力资源信息系统
1项目概述1
2系统需求分析1
2.1系统功能需求1
2.1.1系统功能描述2
2.1.2功能模块划分2
2.2系统数据需求2
2.2.1系统的概要设计2
3数据库设计6
3.1数据表的创建(数据字典>6
3.2E-R图8
3.2数据流图的设计9
4详细设计10
4.1管理员的设计10
4.1.1管理员登录页面11
4.1.3添加用户16
4.1.4公告管理16
4.1.5添加公告17
4.2部门经理的设计17
4.2.1查看本部门员工信息17
4.2.2对本部门员工进行考勤管理19
4.2.3员工工资模块20
5系统实现21
5.1软件测试的方法20
5.2模块测试21
6总结21
参考文献23
1项目概述
人力资源管理信息系统(HumanResourceManagementInformationsystem,简称HRMIS>是将以计算机为基础的管理信息系统应用于人力资源管理而形成的一种现代化的人力资源管理方法和手段,是对信息技术与人力资源管理技术结合的最佳定义。
本系统使用ASP.NET开发工具创建Web应用程序。
采用C#开发语言,使SQLServer2008数据库访问技术和三层架构实现人力资源信息的便捷管理。
它基本满足了人力资源管理者和员工对功能的需求,对员工工资,考勤等都有较详细的功能实现,使其从纷杂的事物中解脱,彻底解决了浪费时间和劳动量的问题,提高企业整体工作效率;登录后对权限进行了设置,提高了系统的安全性,保证人事信息的安全,适应网络化社会对企业自身发展的要求,对企业的系统建设有较大意义。
目的和意义
人力资源管理信息系统的目的和意义在于:
1.充分利用网络资源,进一步优化和再造管理流程,使人力资源的管理更为高效和科学,数据更为准确,满足人力资源部提升服务和管理水平的要求,使人力资源的管理更为高效和科学,数据更为准确。
2.增强员工自助服务的功能,提高业务的透明度及员工的参与程度,简化人力资源事务性的管理流程,使人事劳动部门的管理人员有更多的时间和精力用于人力资源的战略规划;
3.建立流程引擎和角色管理机制,增加面向用户的流程变更管理和用户管理的功能;
4.健全安全机制,完善安全监控及审计功能;
5.增强系统可视化的设计,提高用户的可操作性,尽可能减少用户培训;
6.决策支持:
完善人力资源决策支持系统,使基于人力资源系统数据的决策更为直观和精确,确定管理人员能够及时快捷地获得决策所需的信息。
总的来说,人力系统建设就是希望通过优化和再造流程的人力资源重建,使将来的人力系统成为企业准确、开放、安全、可靠的数据平台;成为企业人力资源战略决策的主要数据来源最终实现开发人才、服务人才、利用人才和降低人力资源成本、提高人力资源的利用效率的目的。
2系统需求分析
2.1系统功能需求
性能需求:
整个系统应当操作简便,界面友好,维护简便。
数据库要求运行稳定,执行速度快,数据安全性高。
软件系统本身运行对计算机硬件平台和操作系统平台要求适中。
用户需求:
因为此管理系统主要是针对大多数企业的人力资源管理部门管理公司内部人事而开发的,公司管理部门的工作人员是主要设计对象,普通用户只要进入系统查询信息,修改密码等。
2.1.1系统功能描述
本系统是在实际调查的基础上,结合广大中小企业的共同点,严格遵循实事求是的原则,创新而成的。
目的是通过该系统实现公司的人力资源管理,最终实现科学决策。
本系统的特点:
<1)可代替许多繁杂的人工劳动,如统计、核算等工作,节省许多资源。
<2)便于领导层对员工的工资、调度等信息进行查询。
<3)利于高级用户进行系统信息管理和维护,也允许普通用户进行部分信息浏览、查看,以实现管理机制透明化。
<4)提供了大量的操作提示,以其较强的容错能力,大大方便了管理者和用户的使用,确保了数据的安全性、正确性、完整性和一致性。
<5)能在很大程度上优化企业管理,提高企业的工作效率。
2.1.2功能模块划分
本系统从功能上主要分为5个模块,分别是用户管理、人员管理、工资管理、信息查询以及系统设置。
用户管理:
分为高级用户和普通用户,主要用于对公司员工信息的修整和查看。
人员管理:
用于对员工的添加、删除、信息修改等进行管理操作。
工资管理:
用于对员工的工资进行核算等管理。
信息查询:
用于对员工的详细信息、各部门及公司全体员工工资的查询操作。
系统设置:
用于对系统的一些基本参数的设置。
2.2系统数据需求
2.2.1系统的概要设计
<1)系统整体模块的设计如图3-1所示。
如图2-1:
系统整体模块的设计
<2)用户管理
用户管理模块主要是为管理公司员工而进行设置的,其主要内容包括用户的添加、用户的删除、用户密码的修改、用户的详细资料等。
为了对用户进行权限划分,本系统设置了两种类型的用户,即高级用户和普通用户。
一方面管理者不仅可以进行查看,而且可以进行增、删、改等合理的操作,另一方面普通用户可以查看相关信息,以便及时了解公司的最新计划、方针政策和有关个人工资的具体核算,及早发现问题和解决问题。
这样可确保公司管理体制的透明化、公开化,让员工真正参与到公司的运营决策中来,让员工发扬主人翁的精神,与公司同呼吸、共发展。
(a)管理员对用户管理的设计如图3-2所示。
图3-2管理员对用户管理的设计
如图2-2:
管理员对用户管理的设计
说明:
管理员通过管理员登录系统进入,可以对增加人员、修改人员资料、对于不在的员工可以删除其信息,也可以查询和调动员工。
如图2-3:
普通用户对用户管理的设计
说明:
用户通过普通用户登录系统后进入用户管理的页面,用户可以查看用户详情,修改密码,查询部门,工资等。
<3)人员管理
人员的管理有助于公司的发展,主要用于对公司员工的详细信息进行相关操作,其主要内容包括人员详细信息的添加、删除人员以及人员资料的修改等功能。
对于新进入公司的员工,管理者可以将其添加至对应的部门,并对个人信息<如电话,地址等)进行注册登记、备案等;对于因多次违反公司纪律或因其他原因需要离开公司的员工,管理者可以将其从所在部门的名单中删除,并且其个人相关信息也会随之删除;对于因调动或登记错误及需要更新的信息,管理者可以随时更改,避免发生不必要的损失。
管理员对员工信息管理的设计如图3-4所示
图3-4管理员对员工信息管理的设计
如图2-4:
管理员对员工信息管理的设计
说明:
管理员通过管理员登录系统进入后,可以增加、删除调动员工,并且可以修改资料等。
<4)工资管理
对于员工的工资发放,系统会进行全面、合理、准确的计算,在计算的同时会扣除因请假、迟到、矿工等的工资项。
同时,该系统也将负责计算本月因出差等涉及人员补贴,最后确定应发工资和实发工资的数目。
管理员对工资管理的设计如图3-5所示。
图3-5管理员对工资管理的设计
如图2-5:
管理员对工资管理的设计
说明:
管理员通过管理员登录系统进入后,可以对工资进行录入、修改和查询等。
<5)信息查询
信息的查看不仅有助于公司管理体制的透明化、开放化,更有助于公司良好的发展。
便捷的查询可以对庞大的数据资源进行准确、有效、快速的统计、分析,并进行输出,可以为公司的长远发展奠定良好的基础。
信息查看模块主要用于管理员对公司员工的所有详细信息进行相关查询,其主要内容包括员工姓名、所在部门查询、担任职务等。
信息查看模块可以根据需要按部门、用户名和真实姓名等条件进行相关查询。
在查询时,填入正确的查询条件后,单击“查询”按钮即可。
管理员对信息查询的设计如图3-6所示。
如图2-6:
管理员对信息查询的设计
说明:
管理员通过管理员登录系统进入后,可以查询个人信息如员工在哪个单位,地址等,还可以查询最新新闻,了解公司的动态等。
<6)系统设置
系统设置模块主要用于对系统的一些基本数据进行相关的设置,不仅有利于减少繁杂的手工输入操作,更主要的是可以使系统动态地添加、删除一些基本信息,如工龄的设置、学历的设置等。
其主要包括职称设置、职务设置、学历设置、院校设置、工龄设置、职工状况设置及公告设置等功能。
管理员对系统设置的设计如图3-7所示。
如图2-7:
管理员对系统设置的设计
说明:
管理员通过管理登录系统进入后,可以对员工的职称、职务、学历、毕业院校、工龄等进行设置。
3数据库设计
3.1数据表的创建(数据字典>
通过对系统的分析,结合系统的要点,使用SQLServer2008数据库生成数据库物理模型。
共分为4大数据表,分别为:
系统设置相关数据表、部门设置相关数据表、工资管理相关数据表、员工基本数据表。
1、员工表
如图3-1:
员工表
注释:
将员工ID设置为主键,部门ID作为外键,和一张专门的部门表相关联,方便查询某个员工所在哪个部门。
注释:
部门ID为主键,员工ID设置为外键,与员工信息表相关联。
2、公告表
如图3-2:
公告表
3、请假表
如图3-3:
请假表
注释:
将表中的员工ID设置成外键,使请假表和员工表进行关联,方便管理员查询员工请假信息。
4、考勤表
如图3-4:
考勤表
注释:
将员工ID设置成外键,使考勤表和员工表进行关联,方便管理员查询某个员工的考勤信息。
5、工资表
如图3-5:
工资表
注释:
将员工ID设置成外键,在管理员统计员工工资信息时,方便查询某个员工的工资信息。
3.2E-R图
3.3数据流图的设计
根据前面的系统分析,可以得出各子系统的数据流图。
(1>部门管理模块的数据流图如图3-6所示。
如图3-6:
部门管理模块的数据流图
(2>人员管理模块的数据流图如图3-7所示。
如图3-7:
人员管理模块的数据流图
(3>工资管理模块的数据流图如图3.11所示。
如图3-8:
工资管理模块的数据流图
4详细设计
4.1管理员的设计
对管理员来说,需要进入后台进行相关的操作,如何安全地进入系统进行后台管理是非常重要的。
在本系统的admin文件夹下,有一个login.aspx页面,此页面是为管理员的登录而设置的。
4.1.1管理员登录页面
如图4-1:
管理员登录页面
核心代码如下:
protectedvoidPage_Load(objectsender,EventArgse>
{
if(Request.Form["subflag"]!
=null&&Request.Form["subflag"]!
=""&&Request.Form["subflag"]=="1">
{
stringtype=Request.Form["type"]。
model.Worker_Name=Request.Form["name"].Trim(>.ToString(>。
model.Worker_Pwd=Request.Form["pwd"].Trim(>.ToString(>。
model.Worker_States=Convert.ToInt32(type>。
stringpath=""。
if(type=="1">
{
path="/Worker/index.aspx"。
}
if(type=="2">
{
path="/ZhuGuan/index.aspx"。
}
if(type=="3">
{
path="/Admin/index.aspx"。
}
if(EPMS.BLL.Worker.Exists(model>>
{
model=EPMS.BLL.Worker.GetModel(model.Worker_Name>。
HttpCookiename=newHttpCookie("name",model.Worker_Name>。
Response.Cookies.Add(name>。
HttpCookiecook=newHttpCookie("userid",model.Worker_Id.ToString(>>。
Response.Cookies.Add(cook>。
HttpCookieorg_id1=newHttpCookie("org_id",model.Org_Id.ToString(>>。
Response.Cookies.Add(org_id1>。
Response.Redirect(path>。
}
else
{
Response.Write("">。
}
}
}
代码解读:
通过判断用户选择的登录类型,来判断用户的身份,从而进入相应的界面。
1、在用户成功登录后通过Session保存用户信息。
model=EPMS.BLL.Worker.GetModel(model.Worker_Name>。
HttpCookiename=newHttpCookie("name",model.Worker_Name>。
Response.Cookies.Add(name>。
HttpCookiecook=newHttpCookie("userid",model.Worker_Id.ToString(>>。
Response.Cookies.Add(cook>。
HttpCookieorg_id1=newHttpCookie("org_id",model.Org_Id.ToString(>>。
Response.Cookies.Add(org_id1>
Response.Redirect(path>。
这样做的好处在于管理员登录系统进行某些操作后可以记录当前管理员的个人信息<如用户名,ID等)。
还可依次作为查询条件方便管理员调用数据等功能。
2、String的详细用法说明:
String
常用方法:
(1>stringSubstring(intstartindex>,stringSubstring(intstartindex,intlength>
这个方法是用来截取子字符串
startindex:
字符开始的位置
length:
截取字符串的长度。
(2>stringSplit(char[]>将字符串组用Split中的东西分隔
e.g:
stringstr="sd,sa,wqe,we,a"。
string[]result=str.Split(','>。
---------------//Split必须用单引号
foreach(stringrinresult>
{
Console.WriteLine(r>。
}
(3>stringReplace(oldChar,newChar>
是用来替换的,将oldChar替换成newChar的内容(多用于在网络中"屏蔽非法字符"等功能>
(4>stringStartsWith(char>返回值是个bool类型,确定string实例的开头是否与指定的字符串相同。
(5>stringIndexOf(char>返回指定Unicode字符在此字符串中的第一个匹配项的索引。
(6>string[]Split(''>,string[]Split(char[]values>
--用来以指定的字符分割字符串
--'':
分割字符
--values:
字符数组
---@@:
String对象是不可改变的。
每次使用System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,
这就需要为该新对象分配新的空间。
在需要对字符串执行重复修改的情况下,
与创建新的String对象相关的系统开销可能会非常昂贵。
如果要修改字符串而不创建新的对象,
则可以使用System.Text..:
:
.StringBuilder类。
例如,当在一个循环中将许多字符串连接在一起时,
使用StringBuilder类可以提升性能。
4.1.2用户管理
如图4-2:
管理员登录页面
代码解读:
管理员可以根据不同的部门查询到不同部门员工的信息。
核心代码如下:
protectedvoidPage_Load(objectsender,EventArgse>
{
if(!
IsPostBack>
{
EPMS.Model.Workermodel=newEPMS.Model.Worker(>。
model.Worker_Id=Convert.ToInt32(Request.QueryString["id"]>。
model=EPMS.BLL.Worker.GetModel(model.Worker_Id>。
this.name.Text=model.Worker_Name。
this.shijian.Text=model.Worker_Time。
this.xueli.Text=model.Worker_Education。
this.home.Text=model.Worker_Jiguan。
}
}
protectedvoidButton1_Click(objectsender,EventArgse>
{
EPMS.Model.Workermodel=EPMS.BLL.Worker.GetModel(Convert.ToInt32(Request.QueryString["id"]>>。
model.Worker_Name=this.name.Text.Trim(>.ToString(>。
model.Worker_Education=this.xueli.Text.Trim(>.ToString(>。
model.Worker_Time=this.shijian.Text.Trim(>.ToString(>。
model.Worker_Jiguan=this.home.Text.Trim(>.ToString(>。
if(EPMS.BLL.Worker.Update(model>>
{
Response.Write("">。
}
else
{
Response.Write("">。
}
}
functionDel(id>{
if(confirm("确定删除吗?
?
">>
{
window.location.href="User_List.aspx?
id="+id。
}
}
RepeaterID="Repeater1"runat="server">
<%#Container.ItemIndex+1%>
<%#Eval("Worker_Name">%>
<%#Eval("Worker_Pwd">%>
<%#Eval("Worker_Education">%>
<%#Eval("Worker_Time">%>
<%#Eval("Worker_Jiguan">%>
id=<%#Eval("Worker_Id">%>">编辑 。
| 。
Del(<%#Eval("Worker_Id">%>>">删除
|
Repeater>
注释:
4.1.3添加用户
如图4-2:
添加用户界面
核心代码如下:
protectedvoidButton1_Click(objectsender,EventArgse>
{
if(Request.Form["org"]=="0">
{
model.Worker_States=3。
model.Org_Id=0。
}
else
{
model.Org_Id=Convert.ToInt32(Request.Form["org"]>。
if(Request.Form["zhiwei"]!
=null>
{
if(Request.Form["zhiwei"]=="manager">
{
model.Worker_States=2。
}
else
{
model.Worker_States=1。
}
}
}
model.Worker_Pwd="110"。
model.Worker_Name=Request.Form["name"]。
model.Worker_Education=Request.Form["xueli"]。
model.Worker_Time=Request.Form["shijian"]。
model.Worker_Jiguan=Request.Form["home"]。
if(EPMS.BLL.Worker.Add(model>>0>
{
Response.Write("">。
}
else
{
Response.Write("