人事管理系统1.docx
《人事管理系统1.docx》由会员分享,可在线阅读,更多相关《人事管理系统1.docx(18页珍藏版)》请在冰豆网上搜索。
人事管理系统1
课程设计报告
题目:
人事管理系统
学生姓名:
学号:
专业班级:
同组姓名:
指导教师:
设计时间:
指导老师意见:
评定成绩:
签名:
日期:
目录
一、设计内容:
设计如下主要功能模块1
二、系统数据流程图和数据字典2
2.1用户需求调查2
2.2、系统数据流程图3
2.3系统数据字典5
三、数据库结构设计10
3.1概念结构设计10
3.2逻辑结构设计10
3.3数据库结构的详细设计12
3.4、建表语句13
3.4框架实现15
四、总结17
五、参考文献18
六、附录19
一、设计内容:
设计如下主要功能模块
1)人事档案管理模块。
2)人员薪酬管理模块。
3)人员培训管理模块。
4)各类报表生成模块。
5)人员内部调动、离岗管理模块。
6)人员奖惩情况管理模块。
7)具有数据备份和数据恢复功能。
图一、功能模块图
二、系统数据流程图和数据字典
2.1用户需求调查
通过对现行人事管理系统的调查,明确了人事管理系统由人事档案管理、人员薪酬管理模块、人员培训管理模块、人员内部调动、离岗管理模块、各类报表生成模块、人员奖惩情况管理模块、具有数据备份和数据恢复功能、系统功能的主要描述如下。
(1)员工档案管理
1)对公司里所有员工进行统一编号;将每一位员工的信息保存在员工档案记录中。
2)对新聘用的员工,将其信息加入到员工档案记录中;对于解聘的员工,将其信息从员工档案记录中删除。
3)当员工的信息发生变动时,修改员工档案记录中相应的属性。
(2)奖惩管理
对公司里所有员工的奖惩记录进行统一编号;登记员工奖惩的原因,所受奖惩类型,奖惩时间。
(3)工资管理
1)对公司里所有员工的工资记录进行统一编号,建立工资记录表。
(4)部门管理
1)对公司所有的部门进行编号,建立部门记录。
2.2、系统数据流程图
图二、管理员数据流图
图三、普通员工数据流程图
人员表:
工号姓名性别年龄身份证号联系电话所属部门密码
薪酬管理表:
工号姓名底薪提成罚款
人员培训表:
工号培训方式开始、结束时间培训内容
部门表:
部门编号部门名称工号姓名入职日期离岗日期调动情
人员奖惩表:
工号姓名奖惩方式奖惩日期奖惩原因
图四、人员调动图
图五、员工信息查询图
图六、薪酬管理图
2.3系统数据字典
人事管理系统数据流程图中,数据信息和处理过程还需要通过数据字典来描述。
在本文的数据字典中,主要对数据流图中的数据流、数据存储和处理过程进行说明。
(1)主要的数据流定义
1)数据流名称:
员工情况
定义:
员工情况=员工编号+姓名+性别+年龄+部门号+电话+密码+身份证号。
数据流量:
根据公司的员工具体录用情况来确定。
说明:
要对每一位被聘用的新员工进行唯一编号。
2)数据流名称:
奖惩情况
定义:
奖惩情况=工号+姓名+奖惩方式+奖惩日期+奖惩原因+部门编号。
数据流量:
根据公司的具体情况来确定。
说明:
要对每一次的奖惩记录进行唯一编号。
3)数据流名称:
工资查询
定义:
工资查询=工资编号+员工号+基本工资+罚款+提成+发薪日期数据流量:
根据公司的具体情况来确定。
说明:
根据员工号和发薪编号可以唯一确定一个工资记录。
数据流量:
根据公司的具体情况来确定。
4)数据流名称:
管理员情况
定义:
用户身份=员工编号。
数据流量:
根据公司的具体情况来确定。
说明:
要对每一位管理员建立唯一的账号。
5)数据流名称:
部门情况
定义:
部门情况=部门编号+部门名称+工号+姓名+入职日期+离岗日期+调动情况
数据流量:
根据公司的具体情况来确定。
说明:
部门号和员工号是主码。
(2)主要的数据存储定义
1)数据存储编号:
员工记录
数据结构:
员工记录=姓名+性别+出生日期+民族+学历+职称+员工编号。
数据量和存取频度:
根据公司的具体规模情况来确定。
说明:
员工编号具有唯一性和非空性;性别只能是男或女;主码是员工编号。
2)数据存储编号:
奖惩记录
数据结构:
奖惩记录=工号+姓名+奖惩方式+奖惩日期+奖惩原因+部门编号。
数据量和存取频度:
根据公司的具体规模情况来确定。
说明:
主码设为薪资编号和员工号;员工号是外码,参照表是员工记录。
3)数据存储编号:
工资记录
数据结构:
工资记录=工资编号+员工号+基本工资+罚款+提成+发薪日期。
数据量和存取频度:
根据公司的具体规模情况来确定。
说明:
主码设为工资编号和员工号;员工号是外码,参照表是员工记录。
4)数据存储编号:
管理人员记录
数据结构:
管理人员记录=用户密码+职工号+密码+管理员账号。
数据量和存取频度:
根据公司的具体规模情况来确定。
说明:
主码设为管理员账号即员工编号。
5)数据存储编号:
部门记录
数据结构:
部门记录=部门编号+部门名称+工号+姓名+入职日期+离岗日期+调动情况。
数据量和存取频度:
根据公司的具体规模情况来确定。
说明:
主码设为部门号。
(3)主要的处理过程
1)处理过程名:
档案管理
输入:
用户身份,员工记录,员工情况
输出:
员工记录
处理说明:
根据员工的聘用、解聘建立或删除员工记录,以及在后续的过程中,以管理员身份对员工的记录进行修改。
2)处理过程名:
奖惩管理
输入:
用户身份,奖惩批复,奖惩记录
输出:
奖惩记录,奖惩情况
处理说明:
根据奖惩批复的要求对员工进行相应的惩处,并对惩处进行记录。
3)处理过程名:
工资管理
输入:
用户身份,工资记录
输出:
工资记录,工资查询
处理说明:
根据员工目前的工资情况,进行调薪的操作。
4)处理过程名:
安全管理
处理说明:
建立管理人员记录表;通过用户名和口令,确认用户身份,保证系统安全性。
5)处理过程编号:
处理过程名:
部门管理
输入:
部门情况,部门记录
输出:
部门记录
处理说明:
根据上级的调度,对现在公司的部门进行领导人的调换,或者是增加或删除某一部门。
三、数据库结构设计
3.1概念结构设计
根据系统需求分析,可以得出人事管理系统数据库的概念模型(信息模型),下面有用E-R图表示的人事管理系统的概念模型。
最后,对设计出的数据模型进行规范化处理,使数据模型满足第三范式。
3.2逻辑结构设计
将人事管理系统的E-R图转换为关系数据库的数据模型,其关系模式为:
1)员工档案(员工编号+姓名+性别+年龄+部门号+电话+密码+身份证号),其中员工编号为主码,部门号为外码;
2)奖惩记录(工号+姓名+奖惩方式+奖惩日期+奖惩原因+部门编号),奖惩编号为主码,员工号为外码;
3)工资记录(工资编号+员工号+基本工资+罚款+提成+发薪日期),工资编号为主码,员工号为外码。
4)部门记录(部门编号+部门名称+工号+姓名+入职日期+离岗日期+调动情况),员工工号为主码。
5)、人员培训表:
(工号+培训方式+开始时间+结束时间+培训内容)
员工工号为主码。
将人事管理系统定名为“人事管理系统”。
各实体的分E-R图,如图A,B,C所示:
图A、员工实体图
图B、部门实体图
图C、管理人员实体图
全局E-R图
3.3数据库结构的详细设计
经过检查,此数据库的详细逻辑设计满足第3范式的要求。
人事管理系统中各表的属性设计情况如下表1:
表名
属性名
数据类型
长度
允许空
主码
约束条件
部门
部门号
int
4
No
主码
部门名
Char
10
No
员工号
Char
4
No
外码
值为职工编号
职工编号
Char
4
No
外码
密码
Char
6
No
输入时不显示
级别
Char
4
No
“管理员”或“系统管理员”
员工
员工编号
int
5
No
主码
姓名
varchar
10
No
年龄
Int
8
No
性别
varchar
2
“男”或“女”
密码
varchar
身份证号
VarChar
32
No
部门号
Int
4
外码
工资编号
int
6
No
主码
薪酬
员工编号
int
4
No
外码
基本工资
float
No
罚款
float
提成
float
部门号
Int
奖惩编号
Int
6
No
主码
奖惩记录
员工编号
int
4
No
外码
奖惩类型
varchar
4
No
奖惩金额
float
奖惩日期
Datetime
值为员工受奖惩日期
部门号
Char
4
外码
奖惩原因
VarChar
50
培训记录
培训编号
Int
4
主码
不为空
员工工号
Int
4
主码
不为空
部门编号
Int
4
培训类型
Nvarchar
50
培训内容
Nvarchar
50
开始时间
Date
结束时间
Date
表1
3.4、建表语句
1)部门表
createtableDepartment(
departmentIdintnotnull,
workIdintnull,
departmentNamevarchar(25)null,
ruZhiDatedatetimenull,
liGangDatedatetimenull,
diaoDongvarchar(50)null,
constraintPK_DEPARTMENTprimarykey(departmentId)
)
2)主外键关系表
createtableRelationship_2(
trainIdintnotnull,
departmentIdintnotnull,
workIdintnotnull,
constraintPK_RELATIONSHIP_2primarykey(trainId,departmentId,workId)
)
createtableRelationship_3(
rewardIdintnotnull,
departmentIdintnotnull,
workIdintnotnull,
constraintPK_RELATIONSHIP_3primarykey(rewardId,departmentId,workId)
)
3)奖惩表
createtableReward(
rewardDatedatetimenull,
rewardReasonvarchar(50)null,
rewardTypevarchar(30)null,
rewardIdintnotnull,
constraintPK_REWARDprimarykey(rewardId)
)
4)薪酬信息表
createtableSalary(
departmentIdintnotnull,
workIdintnotnull,
salaryIdintnotnull,
basicSalaryfloat(15)null,
tichengfloat(15)null,
punishfloat(15)null,
constraintPK_SALARYprimarykey(departmentId,workId,salaryId)
)
5)培训信息表
createtableTrain(
trainIdintnotnull,
trainTypevarchar(30)null,
trainContentvarchar(50)null,
startTimedatetimenull,
departmentIdintnull,
workIdintnull,
endTimedatetimenull,
constraintPK_TRAINprimarykey(trainId)
)
6)员工表
createtableWorker(
departmentIdintnotnull,
workIdintnotnull,
usernamevarchar(20)null,
passwordvarchar(20)null,
ageintnull,
sexvarchar(10)null,
telvarchar(30)null,
personIdvarchar(50)null,
constraintPK_WORKERprimarykey(departmentId,workId)
)
8)设置主外键约束
altertableDepartment
addconstraintFK_DEPARTME_RELATIONS_WORKERforeignkey(departmentId,workId)
referencesWorker(departmentId,workId)
altertableRelationship_2
addconstraintFK_RELATION_RELATIONS_TRAINforeignkey(trainId)
referencesTrain(trainId)
altertableRelationship_2
addconstraintFK_RELATION_RELATIONS_WORKER2foreignkey(departmentId,workId)
referencesWorker(departmentId,workId)
altertableRelationship_3
addconstraintFK_RELATION_RELATIONS_REWARDforeignkey(rewardId)
referencesReward(rewardId)
altertableRelationship_3
addconstraintFK_RELATION_RELATIONS_WORKERforeignkey(departmentId,workId)
referencesWorker(departmentId,workId)
altertableSalary
addconstraintFK_SALARY_RELATIONS_WORKERforeignkey(departmentId,workId)
referencesWorker(departmentId,workId)
altertableTrain
addconstraintFK_TRAIN_RELATIONS_WORKERforeignkey(departmentId,workId)
referencesWorker(departmentId,workId)
3.4框架实现
1)由于没有采用Java的其他数据库框架,只是使用JDBC进行编程,故设计数据模型来对其进行封装处理.整个应用程序的结构为MVC(Model-View-Control)(jsp+servlet+javaBean)框架,数据模型负责所有与JDBC之间的通讯,SQL数据的查询,插入,更新,删除;逻辑控制负责解释数据模型获取的数据,并针对当前的界面来随时更新相关的表格。
2)使用MVC模式分离JDBC数据封装,逻辑控制,界面控制,使得代码更加优雅简洁,易于添加新功能.框架的主要功能设计如下:
登录功能:
由于是做管理系统,故只有当被授权用户输入密码与数据库中用户密码一致时,才可以登录系统。
此外就是对各种表进行相应的增删改查功能,并将数据存入数据库。
四、总结
本次课程设计让我颇有感触.原本以为Java的封装性较高,能够轻松方便地实现本系统,可事实上虽然界面容易设计并实现,但关于数据库的操作却是非常繁琐.我是使用JDBC进行数据库的操作的,以一个简单的将数据库表转换为对象模型(Model)为例,需要考虑诸多因数,而其中更要多次对数据库进行连接,执行SQL语句,检测返回结果,设置相关值等操作,并且需要小心使用try/catch进行异常处理.由于不同表稍有区别,则需要重复写与上述类似的代码,即使我已经努力抽象化,模块化,却依然让人面对大块大块重复的代码而觉得非常郁闷.本想用Java的框架(hibernate框架+Struts2),由于在该配置中我遇到一问题(问题即在hibernate中如何实现一表对应多个不同的表,网上查了资料,但仍未解决,故采用jsp+servlet+javaBean)令我望而却步.当然,本次数据库设计虽然程序中并没有使用复杂的SQL语句,但是却大量使用简单的SQL语句,夯实了我的基础.此外,以前没有仔细研究powerdesigner,现在发现其真的很好用。
五、参考文献
1]、数据库原理及应用实验指导……………….北京邮电大学(钱学忠)
六、附录
1)powerdesigner中设计的实体图
2)powerdesigner对应生成的表之间关系图
3)、将powerdesigner生成的.sql文件导入数据库生成表之间的关系图
4)、数据库中部分表结构