企业人事考勤薪资管理系统.docx
《企业人事考勤薪资管理系统.docx》由会员分享,可在线阅读,更多相关《企业人事考勤薪资管理系统.docx(36页珍藏版)》请在冰点文库上搜索。
企业人事考勤薪资管理系统
数据库课程设计报告
题目名称_人事/工资/考情管理系统_
院系名称_xxxx专业__
学生姓名_xxx_________
1、概述4
2、绪论5
2.1引言5
2.2系统简介5
2.3开发技术和工具简介5
2.4系统开发流程6
3需求分析7
3.1需求分析的目的及意义7
3.2系统需求分析7
4、总体设计8
4.1系统功能分析8
4.2数据库设计9
4.3视图14
4.4trigger,event,StoredProcedure15
5界面设计15
5.1登录窗口设计15
5.2主界面设计16
5.3、员工档案管理窗体界面设计17
5.4、员工信息修改界面设计18
5.5员工档案录入窗口19
5.6、上班签到界面设计20
5.7员工签离窗口22
5.8请假申请窗口22
5.9请假管理窗口22
5.10工资查询窗口22
6详细设计25
6.1类的封装25
6.2登录流程图:
26
6.3操作Excel表的一些方法的设计27
7、综合测试30
7.1软件测试要点30
(1)测试数据库异常时程序是否能正常运行。
30
7.2软件测试结果31
8、总结31
8.1系统总结31
8.2个人总结31
1、概述
人事/工资/考勤管理系统,作为数据库管理系统的一个具体应用,在实际工作中得到了广泛的应用,因为通过它能对企事业单位的人力资源进行卓有成效的管理,提高了管理的效率,方便了使用,通过一系列的操作可以快速、可靠的进行人事档案的更新、查找,极大的提高了工作效率,是现代企事业单位必不可少的办公软件.本分析报告的预期读者为项目开发者、投资者、领导,以及参与实施本项目的工作者。
为了方便公司的人事管理,所以我们要开发这个系统。
下图是我从网上找得一张人事/考勤/薪资/管理系统的图片。
从界面可以看到,一个人事/工资/考勤管理系统应该提供人事管理,考勤管理、工资管理和奖惩管理和日记记录等4部分内容。
●人事管理提供包括姓名、性别、职称、职务、部门、学历、工作记录等项目,全面合理反映了员工的人事档案,并可随时查询和导出。
●考勤管理包括每天的签到和签离、事假和病假等。
考勤管理和工资管理、奖惩管理、人事管理结合在一起,能及时反应员工的考勤情况。
●奖惩管理,对每个员工的变现给出奖惩记录,并和工资发放结合。
●工资管理需要将工资核算和人事管理结合在一起,确保资料的一致性。
每月的工资数据可由系统自动计算生成。
一切的统计和计算都计算机代为管理了,考勤信息管理系统对企业的合理化管理起到了很大的作用,它为企业信息化的建设打响了头炮,企业的信息化建设已成为现代各个企业发展的需要。
2、绪论
2.1引言
随着计算机技术、网络技术和信息技术的发展,越来越多地改善着现代人的观念。
网络办公自动化系统是计算机技术和网络迅速发展的一个办公应用解决方案,它的主要目的是实现信息交流和信息共享,提供协同工作的手段,提高办公的效率,让人们从繁琐的有纸办公中解脱出来。
现在我国的许多的机关单位的人事管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。
基于这种情况,我研究开发了人事/考勤/工资管理系统。
2.2系统简介
人事/考勤/工资管理系统中主要包括了员工的基本信息(姓名、性别、所属部门、职位、民族、住址等),员工的出勤信息(请假、旷工、迟到、早退、加班等),员工的工资信息(基本工资、加班费、奖金等)。
可以添加、查询、修改、删除员工的基本信息,然后根据员工的出勤情况和基本工资情况可以确认该员工的实际工资收入,还可以根据出勤情况或者工资情况了解和掌握员工的信息,达到管理的目的。
另外还有密码修改和设置用户、帮助说明的功能。
通过考勤系统我们能很容易地对公司员工的信息有一个基本的了解,可以很方便地知道员工的出勤情况,通过对员工出勤信息的了解,就能计算出员工的实际工资。
一切的统计和计算都计算机代为管理了,人事/考勤/工资管理系统对企业的合理化管理起到了很大的作用,它为企业信息化的建设打响了头炮,企业的信息化建设已成为现代各个企业发展的需要。
2.3开发技术和工具简介
java是当今流行的面向对象的编程语言,也是我们软件学院大一新生学习的第一门编程语言。
其具有的对于对象编程的特性使得我们可以很容易地写出自己的程序,所以我们选择了java编程语言。
用java就肯定会用到主流的开发工具:
eclipse。
除此之外,由于界面的编写很慢而且需要不停地调试大小位置,对于要在两周之内完成课程设计的我们来说,时间有点紧迫,所以我又选择NetBeans来帮助我开发java的图形化界面。
用Netbeans做出来的界面需要我们自己来进行微调,还要进行代码的一些优化工作。
不过可以大大地提高我们的开发效率,使得我们可以专心与程序自身的业务逻辑和数据库的设计。
在数据库方面,我选择了Mysql作为我的数据库工具。
MySQL是一个小型关系型数据库管理系统,其特点是体积小、速度快且是开源的。
所以对于我们做课程设计是搓搓有余的,而且速度很快,用起来很方便快捷。
2.4系统开发流程
由于我们实际上做的是课程设计,所以我们不可能和实际项目的开发流程是一样的。
但是我还是尽量按照实际的流程去做,尽量模拟实际的情况。
首先我选定课题,然后进行需求分析,在需求分析中还包括了解业务逻辑,把握功能需求和相关权限设置等一系列的对于整个系统的规划。
之后,我开始着手设计数据库。
这一阶段是非常重要的,因为之后的系统开发就是在良好的数据库模型的基础上进行设计的。
如果没有设计良好的数据库,那么在之后的系统开发中就会遇到数据冗余,查询困难,操作繁琐等一系列的难题,从而使系统开发进度缓慢。
所以在这一阶段,我花费了很长时间来设计数据库,尽量做到冗余很少,至少符合3NF范式的要求。
之前的准备工作差不多花费了将近一周的时间。
但是在开发过程中,我发现我的数据库设计还存在缺陷,所以我又一边小心修改数据库一边开发系统,这样就导致了系统开发效率低下的状况。
我的整个开发流程如下:
3需求分析
3.1需求分析的目的及意义
需求分析是一个非常重要的过程,它完成的好坏直接影响后续软件开发的质量。
一般情况下,用户并不熟悉计算机的相关知识,而软件开发人员对相关的业务领域也不甚了解,用户与开发人员之间对同一问题理解的差异和习惯用语的不同往往会为需求分析带来很大的困难。
所以,开发人员和用户之间充分和有效的沟通在需求分析的过程中至关重要。
有效的需求分析通常都具有一定的难度,一方面是因为交流存在障碍,另一方面是因为用户通常对需求的陈述不完备、不准确和不全面,并且还可能不断地变化。
开发人员不仅需要在用户的帮助下抽象现有的需求,还需要挖掘隐藏的需求。
此外,把各项需求抽象为目标系统的高层逻辑模型对日后的开发工作也至关重要。
合理的高层逻辑模型是系统设计的前提。
在进行需求分析的过程中,首先要明确需求分析应该是一个迭代的过程。
由于市场环境的易变性以及用户本身对于需求描述的模糊性,需求往往很难做到一步到位。
需求分析不仅仅是属于软件开发生命周期早期的一项工作,而且还应该贯穿于整个生命周期中,它应该随着项目的深入而不断地变化。
此外,为了方便后续的评审和测试等工作,需求的描述应该尽量做到:
具体、详细、可以测量和可以实现,并且基于时间。
3.2系统需求分析
3.2.1系统权限分配
系统权限有以下两种:
管理员和普通员工。
权限定义如下表所示:
人员类型
权限描述
普通员工
查看员工资料、请假、考勤签到和签离、薪资等信息,填写业绩报告
管理员
除普通员工的权限外,还可审批请假和业绩报告的信息
修改员工资料,核实加班请假信息并计算月工资
除人事助理的权限外,还有指定员工起薪等权限
可以指定上下班时间,增加或是修改部门信息
可以修改或是增加职位信息
在员工进入公司时录入员工档案
指定出差人员,批准请假申请等
3.2.2系统功能模块描述
由于时间仓促,没有精力去进行调研,所以本次开发的需求理解建立在本人的理解和通过谭台哲老师给的系统模型理解的等基础上,有点不正规化。
最终本人认为人事/工资/考勤管理系统主要功能模块及子功能模块应该包括:
本系统必须具备的功能有:
(1)系统登录(用户名与密码)
(2)增加员工
(3)设置员工新权限(特定员工的权限)
(4)员工信息(员工信息修改与添加、查询、删除)
(5)员工的调动(包括升降职、离职等)
(6)出勤信息(通过员工登陆签到,签离得到相应出勤信息)
(7)员工工资(通过员工编号、月份、基本工资、奖金可直接得到员工实际工资情况)
(8)相关查询(通过员工基本信息情况)
(9)导出员工信息和批量导入员工信息
(10)对于部门,位置信息的修改或是增加
4、总体设计
4.1系统功能分析
基于上面的分析,按照软件工程的思想,对考勤信息管理系统进行功能分析:
⏹登陆模块
●登录功能,包括密码找回等功能
⏹人事管理模块
●员工资料录入,管理员在员工就职时给予初始化
●员工查询,全部可见
●员工信息管理,包括修改,删除。
普通员工只能修改自己的信息,管理员则可以修改全部
●部门管理,管理员添加部门,普通员工查看
⏹考勤管理模块
●请假申请,普通员工申请,管理员给予审核
●请假审核,普通员工申请,管理员给予审核
●考勤管理,由员工登陆系统签到、签离
●请假查询,全部可查询
⏹工资管理模块
●薪资管理,包括了基本工资,奖惩,考勤等综合方面
●业绩评定,员工提出申请,管理员审核,并记录到奖惩管理模块。
●工资查询,员工查看自己的工资,管理员查看全部的信息
⏹奖惩管理模块
●奖惩管理,包括考勤和业绩等
●奖惩管理,查看所有奖惩,全部可见
⏹系统管理模块
密码的修改、安全退出系统等
⏹安全管理模块
●安全管理,为了信息的保留,所有操作都会被记录下来
⏹公告管理模块
●公告管理,管理员发布信息,普通员工可以查看
4.2数据库设计
4.2.1概念结构的主要特点是:
●能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求,是对现实世界的一个真实模型。
●易于理解,从而可以用它和不熟悉计算机的用户交换意见,用户的积极参与是数据库设计的成功关键。
●易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充。
●易于向关系、网状、层次等各种数据模型转换。
描述概念模型的有力工具是E-R模型。
4.2.2ER模型(非完整)
4.2.3关系表
4.2.4数据描述
表格
属性
属性类型,大小
是否主外键
备注
employee
员工
employeeId
int(11)
主键
员工号
employeeName
varchar(30)
员工姓名
sex
char
(2)
性别
nation
varchar(30)
名族
posId
int(11)
外键
职位号
deptId
int(11)
外键
所在部门号
address
varchar(30)
地址
grauateFrom
varchar
毕业院校
employeedTime
date
进公司日期
position
职位
posId
int(11)
主键
职位号
posName
varchar(30)
职位名称
basicSalary
float(10,2)
基本工资
checkin
签到
checkinId
int(11)
主键
签到号
employeeId
int(11)
外键
员工号
checkinDate
date
签到日期
checkinTime
time
签到的时间时间
checkinStatus
enum
签到状态(迟到,准时)
checkoutId
int(11)
主键
签离号
employeeId
int(11)
外键
员工号
checkout
签离
checkoutDate
date
签离日期
checkoutTime
time
签离的时间
checkoutStatus
enum
签离状态(早退,离开,缺勤)
department
部门
deptId
int(11)
主键
部门号
deptName
varchar(30)
部门名称
deptManager
int(11)
部门经理
busstrip
出差表
busstripId
int(11)
主键
出差号
event
varchar
出差事由
employeeId
int(11)
外键
员工号
startTime
date
出差开始日期
endTime
date
出差结束日期
place
varchar(50)
出差地点
dimission
离职表
dimissionId
int(11)
主键
离职号
employeeId
int(11)
外键
离职员工号
dimissioDate
date
离职日期
dimissionType
varchar(50)
离职类型
leaverecord
请假表
leaveId
int(11)
主键
请假号
employeeId
int(11)
外键
请假员工号
beginDate
date
请假开始日期
endDate
date
请假结束日期
leaveDays
int
请假天数
remark
varchar(50)
请假备注
peroid
时段表
modifyId
int(11)
主键
修改号
modifyDate
date
修改日期
startTime
time
上班时间
endTime
time
下班时间
workHours
int(11)
一天工作小时数
salary
薪水表
salaryId
int(11)
主键
薪水号
employeeId
int(11)
外键
员工号
statrTime
date
开始日期
endTime
date
结束日期
checkinlateNum
int(11)
迟到次数
checkoutearlyNum,
int(11)
早退次数
absentNum
int(11)
缺勤次数
totalSalsry
float(10,2)
总工资
prodemorecord
升降职位表
bonus
float(10,2)
奖金
basicSalary
float(10,2)
基本工资
penalty
float(7,2)
罚金
recordId
int(11)
主键
记录号
date
date
职位调动日期
employeeId
int(11)
外键
员工号
oldposId
int(11)
外键
旧职位
newposId
int(11)
外键
新职位
userpassword
用户密码记录表
userName
varchar(20)
主键
用户名
userPassword
varchar(20)
主键
用户密码
authority
enum
权限
empoyeeId
int(11)
员工号
reward
奖惩
rewardId
int(11)
主键
奖惩号
employddId
int(11)
外键
员工号
rewardDate
date
奖惩日期
penalty
float(7,2)
罚金
bonus
float(7,2)
奖金
4.2.5数据库逻辑设计的一些规则
(1)理论依据
一般来说,一个应用程序的数据结构是实现该程序的关键因素,SqlServer关系数据库模型,是以关系集合理论中重要的数学原理为基础的,通过定义创建该集合的很少一些规则,即可方便地处理一些数据,这种技术被称为数据规范化。
.第一范式(1NF):
消除重复字段和非原子的值。
.第二范式(2NF):
要求每一个字段都依赖于主关键字段的每一部分。
.第三范式(3NF):
要求所有非主关键字都只依赖于主关键字段。
(2)确定字段原则
根据表中存储信息的不同,表中所需的字段也不一样,在确定所需字段时有下列方法可供使用:
.描述不同主题的字段应属于不同的表,通过定义之间的关系,可以将多个表中的字段进行数据组合,生成各种表单或报表。
.不要在表中存储通过推导或计算可以得到的数据。
.收集所需的全部信息。
应全面检查书面的表单和报表,确定所需的数据都已包括在所设计的表中或可由这些表计算出来。
4.3视图
在该系统中,有很多经常用到的信息,但是在我所见的表中时无法一下子就能获得所有信息的,所以我建立了相关的视图。
首先是用户登录时显示的所有员工的基本信息,包括员工号,员工姓名,所属部门,职位,性别,民族,毕业院校,进公司时间,地址。
再者就是在用户签到或是签离的时候显示的其他用户签到,签离信息。
其中签到信息包括员工号,员工姓名,签到时间,签到状态,签离信息包括员工号,员工姓名,签离时间,签离状态。
还有就是以及申请请假记录视图,包括包括申请人的Id申请人,部门,申请开始时间,申请结束时间,申请原因,状态(申请,批准)
创建员工常用信息视图代码
createviewemployee_viewasselectemployee.employeeId,employeeName,department.deptName,position.posName,sex,nation,graduateFrom,employeedTime,addressfromemployee,position,departmentwhereemployee.posId=position.posIdandemployee.deptId=department.deptId;
创建签到常用视图代码
createviewcheckin_viewasselectemployee.employeeId,employeeName,checkinTime,checkinStatusfromemployee,checkinwhereemploee.employeeId=checkin.employeeId
创建签离常用视图代码
createviewcheckout_viewasselectemployee.employeeId,employeeName,checkinTime,checkoutStatusfromemployee,checkoutwhereemploee.employeeId=checkout.employeeId
创建申请请假记录视图代码
createviewleave_recordasselectemployee.employeeId,
employeeName,beginDate,endDate,remark,state,applyDatefromemployee,leaverecordwhereleaverecord.employeeId=employee.employeeId;
4.4trigger,event,StoredProcedure
由于在企业人事/工资/考勤管理系统中,需要用到数据库的一些高级技术,不然没有办法解决实际上的一些问题,但是我也没有考虑更多的情况,而且运用这些技术不是很熟练,所以有些写得不是很正确。
需要用到EVENT的是在每天的20:
00:
00统计今天的员工的签到,签离情况以及是否缺勤情况,并且把统计结果更新到这个月的薪资表中
CREATEEVENTcheck_eventONSCHEDULEATTIMESTAMP(CURRENT_DATE,’20:
00:
00’)DOINSERTINTO...
需要用到trigger的是在管理员修改员工资料的时候触发员工升降职表的操作。
CREATETRIGGERposchanged_triggerAFTERUPDATEONemployeeNEWROWASnrow,OLDROWASorowFOREACHROW
WHENnrow.posId<>orow.posId
BEGIN
INSERTINTOprodemorecordVALUES(NULL,CURRENT_DATE,employeeId,row.posId,nrow.posId)
END;
5界面设计
5.1登录窗口设计
对多用户数据库程序来说,不同的用户应有不同的权限。
比如管理员可以拥有所有权限,有的用户只有查询的权限没有修改的权限,有的用户只可以输入数据不能查询等等。
所以在数据库程序启动时需要输入用户名和密码后才能进入,程序根据用户名找到用户的权限,确定哪些功能可以使用有多种方法可以实现这种身份验证机制。
在本设计中,采用数据库文件实现对用户名和密码、权限的存储,其缺点是安全性不太高。
系统登录主要完成的是:
当用不同的权限进行登录的时候,当然本系统固定了管理员、普通员工两个权限,并且内置了管理员和普通员工两个帐号;虽然各个用户所拥有的权限是不一样的,但是进入的主界面却是一样的,只是有些操作(比如修改信息)只能由管理员进行。
具体界面如下图。
图5.1登录窗口
5.2主界面设计
主界面的设计是数据库开发的关键步骤,因为它在某种程度上体现了程序开发的质量和水平。
企业人事管理系统采用窗体形式来显示各窗体,每个窗体实现一种功能,不同权限的用户可以通过调用不同的窗体来进行操作。
这种布局方式的优点是简单明了,易于操作。
主窗体主要包括三个部分。
第一就是菜单部分,基本上所有的操作都可以在菜单中找到。
因而菜单设计也是主界面的重点。
第二就是左侧的一个JPanel,这个面板上又分为两块,一块就是用户常用的一些操作,比如签到,签离,请假等。
还有一块就是显示当前状态,包括当前登录的用户和系统时间。
第三部分是右侧的JPanel,这个面板上主要显示的是所有员工的基本信息以及一些查询和导出Excel表格的操作。
如下图
图5.2主界面设计
5.3、员工档案管理窗体界面设计
员工档案管理界面是本系统的重点之一,这个界面主要是管理员来维持所有员工的基本信息,是本系统的基础。
此界面用到的控件比较多,主要控件有DataGridView控件一个,Button按钮若干,TextBox若干,这个界面主要完成员工入职信息的资料录入,员工信息的修改和导出,和员工的调动,员工的升降职,员工的离职等。
如下图所示:
图5.3员工信息管理窗口
5.4、员工信息修改界面设计
本窗体是为修改员工信息设计的。
主要组件就是JtextField,jButton