人事管理系统数据库课程设计报告.docx
《人事管理系统数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《人事管理系统数据库课程设计报告.docx(12页珍藏版)》请在冰豆网上搜索。
人事管理系统数据库课程设计报告
数据库课程设计报告
题目:
人事管理系统
学生姓名:
吴深深
学号:
班级:
1421801Z
指导老师:
李荣
关系数据库原理课程设计报告
人事管理系统
一、需求分析
系统概述
研究背景
人事管理系统是企业管理系统中必不可少的重要组成部分,它的内容对企业的决策者和管理者来说都是至关重要的,所以人事管理系统应该为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统手工的方式管理文件档案,这种管理管理方式存在着很多缺点,如:
效率低,保密性差,时间一长将堆积大量的文件,这个查找、更新、维护带来了不少的困难。
随着科学技术的不断提升,计算机科学日渐成熟,其功能已经为人们深刻认识,它已经进入人类的各个领域并且发挥着越来越重要的作用。
意义及开发目的
座位计算机应用的一部分,使用计算机对人事档案信息进行管理,具有着手工管理无法所无法比拟的优点。
例如:
检索迅速、查询方便、可靠性高、储存量大、保密性好、寿命长、成本低等。
这些优点能够极大的提高人事档案的管理效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
从微观上讲,建立一套人事管理信息系统能够加快人事工作的速度,提高工作效率,从而加强了管理的信息化手段,提高了本单位的经济效益。
从宏观上讲,顺应了社会的信息化、社会化潮流,缩短了整个社会化大生产的周期。
因此,开发这样一套管理信息系统软件成为很有必要的事情。
具体分析
系统功能的基本要求:
Ø员工各种信息的输入,包括员工的基本信息、学历信息、婚姻状况信息、职称等。
Ø员工各种信息的修改;
Ø对于转出、辞职、辞退、退休员工信息从员工表中删除,信息转入离职员工表;
Ø按照一定的条件,查询、统计符合条件的员工信息:
至少应该包括按学历、婚姻状况、岗位、参加工作时间等关键字查询各自的员工信息;
Ø对查询、统计的结果打印输出。
1.?
员工基本情况。
包括的数据项有员工号、员工姓名、性别、身份证号、政治面貌、联系电话、部门、岗位、婚姻状态、工作时间、学历信息。
?
2.?
工作部门信息。
包括的数据项有部门号、部门名称。
?
3.?
员工职称信息。
包括的数据项有职称号、职称名称。
?
4.?
员工婚姻状况。
包括的数据项有员工号、爱人代号、爱人姓名、工作单位、政治面貌、工作职称。
?
5.?
员工学历信息。
包括的数据项有员工号、学位证书编号、学历、专业、毕业时间、毕业
运行环境
本系统是在windows10系统下,用SQLServer2014开发设计完成,可以供VS,,Eclipse等集成开发工具开发软件时连接数据库使用。
用户需求
企业部门需求?
员工基本信息处理:
?
员工基本信息的录入?
员工基本信息的处理包括插入,删除以及修改?
员工基本信息的查询?
统计功能:
?
按学历、婚姻状况、岗位、参加工作时间等统计各自的员工信息?
?
在调查完了用户需求之后,就要开始分析用户需求。
在此,我们采用自顶向?
下的结构化分析方法(SA?
方法)。
首先,定义全局概念结构的框架。
?
经分析之后,本系统要用到七个基本表:
员工表、职称信息表、学历信息表、支撑岗位对应表、员工部门对应表、婚姻信息表、部门信息表。
二、
1局部E-R图
2全局E-R图
三、逻辑结构设计
关系模式转换
将E-R图转换为关系模式如下:
员工(工号,姓名,姓名,性别,身份证号,政治面貌联系电话)
部门(部门号,部门名称)
职称(职称号,职称名)
员工部门(员工号,部门号,工作时间)
职称岗位(工号,职称号,岗位)
婚姻(工号,婚姻状态,爱人姓名,爱人工作单位,爱人政治面貌,爱人工作职称)
学历(学位证编号,工号,最高学历,毕业时间,专业,毕业院校)
表格数据结构
表1:
员工基本信息表empoyee
Char(8)
主键、非空
工号
Char(20)
非空
姓名
Char
(2)
可空
性别
Char(18)
可空
身份证号
int
非空
年龄
Char(11)
可空
手机
Char(10)
可空
政治面貌
表2:
部门表department
Char(6)
主键、非空
部门号
Char(10)
非空
部门名称
表3:
职称表professional
Char(8)
主键、非空
职称号
Char(20)
非空
职称名
表四:
职称岗位对应表e_p
Char(8)
主键、外键、非空
工号
Char(8)
主键、外键、非空
职称号
Char(20)
可空
岗位
表五:
员工部门对应表e_d
Char(8)
主键、外键、非空
工号
Char(6)
主键、非空
部门号
Datatime
可空
工作时间
表六:
婚姻表marriage
Char(8)
主键、外键、非空
工号
Char
(2)
非空、(是,否)
是否结婚
Char(20)
可空
爱人名字
Char(20)
可空
爱人工作单位
Char(10)
可空
爱人政治面貌
Char(20)
可空
爱人工作职称
表七:
学历信息表school
Char(8)
主键、非空
学位证编号
Char(8)
外键、非空
工号
Char(6)
Check()
最高学位
datetime
可空
毕业时间
Char(20)
可空
主修专业
Char(20)
可空
毕业院校
各个表格的关系图
1、
create?
table?
employee--员工基本信息表
(
e_no?
char(8)?
not?
null?
primary?
key,--员工号?
e_name?
char(20),--员工姓名
e_sex?
char
(2)check(e_sexin('男','女')),--性别
e_id?
char(18),--身份证号
e_ageintcheck(e_age>=18ande_age<=65),--员工年龄
e_phone?
char(11),--联系电话?
e_zzmm?
char(10)--政治面貌?
)
此表格的部分数据如下:
create?
table?
离职员工表--员工基本信息表
(
e_no?
char(8)?
not?
null?
primary?
key,--员工号?
e_name?
char(20),--员工姓名
e_sex?
char
(2)check(e_sexin('男','女')),--性别
e_id?
char(18),--身份证号
e_ageintcheck(e_age>=18ande_age<=65),--员工年龄
e_phone?
char(11),--联系电话?
e_zzmm?
char(10)--政治面貌?
)
createtabledepartment--部门表
(
d_no?
char(6)?
not?
null?
primary?
key,--部门号
d_name?
char(10)--部门名称
)
部门表格及其数据:
createtablee_d--员工部门对应表
(
e_no?
char(8)notnullforeignkeyreferencesemployee(e_no),--工号
d_nochar(6)notnullforeignkeyreferencesdepartment(d_no),--部门编号
jobtimeint--工作年长
primarykey(e_no,d_no)
)
此表的表格数据及其部分数据:
createtableprofessional--职称表
(
p_nochar(8)notnullprimarykey,--职称号
p_namechar(20)--职称名
)
表格部分数据如下:
createtablee_p--职称岗位对应表
(
e_nochar(8)notnullforeignkeyreferencesemployee(e_no),--工号
p_nochar(8)notnullforeignkeyreferencesprofessional(p_no),--职称号
jobchar(20)--岗位
primarykey(e_no,p_no)
)
表格的部分数据如下:
create?
table?
marriage?
--员工婚姻对应表
(
e_no?
char(8)?
not?
nullforeignkeyreferencesemployee(e_no)primarykey,--员工号?
is_machar
(2)notnull,--是否已婚
l_name?
char(20),--爱人姓名?
l_company?
char(20),--工作单位?
l_zzmm?
char(10),--政治面貌?
l_p?
char(20),--工作职称?
)?
此表格的部分数据如下;
create?
table?
school?
--员工学历信息表
(
e_no?
char(8),--员工号
hest_degreechar(6)check(hest_degreein('本科','研究生','博士')),--最高学历
degree_no?
char(10)?
primary?
key,--最高学位证书编号?
majob?
char(20),--专业?
bydate?
datetime,--毕业时间?
byschool?
char(20),--毕业院校?
foreign?
key(e_no)?
references?
employee(e_no)
)
此表格的部分数据如下:
2、
视图总纲如下:
go
createviewcomm_zzmm(e_name,e_no,e_zzmm,l_zzmm)--创建视图,查看员工及其爱人政治面貌
asselecte_name,,e_zzmm,l_zzmmfromemployee,marriage
where=and='是'
go
视图部分数据
go
createviewcomm_P_name(e_name,p_no,L_no)--创建视图,查看员工及其爱人的职称
asselecte_name,p_name,l_pfromemployee,professional,marriage,e_p
where=and=and=
go
此视图相关数据:
go
createview工作信息--创建视图,查看在职员工的工作信息
asselecte_name,d_name,p_name,job,jobtimefromemployee,department,professional,e_p,e_d
where=and=and=
and=
go
此视图相关信息:
go
createview学历--创建视图,查询学历相关信息
as
selecte_nameas姓名,hest_degreeas最高学历,majobas主修,byschoolas毕业院校fromschool,employee
where=
go
go
createviewT_E_Department--创建视图,查看员工对应部门
asselecte_name,,d_namefromemployee,department,e_d
where=and=
go
3、
go
createprocedureCount_D_sum(@d_namechar(10))--储存过程,录入部门名称,求人数
as
selectcount(*)as部门总人数frome_d
where(selectd_nofromdepartmentwhere@d_name=d_name)=
go
execCount_D_sum'财务部'
go
createprocedureSeach_Higher_Age(@e_ageint)--储存过程,查询比录入数据大的年领
as
selecte_name,e_age,e_nofromemployee
wheree_age>=@e_age
orderbye_agedesc
go
execSeach_Higher_Age30
go
createproceduredelete_all(@e_nochar(8))--储存过程,帮助有多外键数据删除所有工号相关
as
deletefrome_pwheree_no=@e_no
deletefrommarriagewheree_no=@e_no
deletefromschoolwheree_no=@e_no
deletefrome_dwheree_no=@e_no
deletefromemployeewheree_no=@e_no
go
此储存过程与触发器共同使用方可看出效果,在下面会有举例。
go
createprocedureSeach_Marriage(@is_machar(20))--储存过程,按照婚姻状态查找员工
as
if(@is_ma='是')
begin
selecte_name,l_name,l_companyfromemployee,marriage
where=andis_ma='是'
end
elseif(@is_ma='否')
begin
selecte_namefromemployee,marriage
where=andis_ma='否'
end
else
begin
print'输入参数有误'
end
go
4、
createtriggerInsert_Massageonmarriage--触发器,规范相关信息的输入
afterinsert
as
ifexists(select*frominsertedwheree_noin(selecte_nofromemployee))
print'添加成功!
'
else
begin
print'员工基本信息表中无此员工基本信息,拒绝插入!
'
rollback
end
go
以下触发器是对于转出、辞职、辞退、退休员工信息从员工表中删除,信息转入离职员工表并且删除相关表格的相关数据。
go
createtriggerfresh_massageonemployee
afterdelete
as
declare@e_no?
char(8)?
@e_name?
char(20),@e_sex?
char
(2),@e_id?
char(18),@e_ageint,@e_phone?
char(11),@e_zzmm?
char(10)
select@e_no=(selecte_nofromdeleted)
select@e_name=(selecte_namefromdeleted)
select@e_sex=(selecte_sexfromdeleted)
select@e_id=(selecte_idfromdeleted)
select@e_age=(selecte_agefromdeleted)
select@e_phone=(selecte_phonefromdeleted)
select@e_zzmm=(selecte_zzmmfromdeleted)
insertinto离职员工表
values(@e_no,@e_name,@e_sex,@e_id,@e_age,@e_phone?
@e_zzmm?
)
deletefrommarriagewheree_no=@e_no
deletefromschoolwheree_no=@e_no
deletefrome_pwheree_no=@e_no
deletefrome_dwheree_no=@e_no
go
我们可以看到,从员工表格中删除工号是DCG00004的员工。
此员工被转入离职信息表
五、课程设计心得体会
在此次为期一周的数据库课程设计过程中,感觉整个系统的设计过程就是一个逐步完善的过程,必须要不停地思考不停地探索。
刚开始的两天其实基本上毫无头绪,去图书馆去网上都查了资料,在脑海中先形成大致模块和思路,建立数据库的过程看似简单,实则不然。
要考虑到实体间的逻辑关系和数据关系模式的完整性问题,努力使之达到第三范式。
在对数据源的select,update,delect,查询属性进行配置的过程中,反反复复,不能确定,最后,只得静下心来,一步一步一点一点的配置,修改,最后终于全部成功,在这个反复的过程当中已将这些今本知识印于脑海之中,巩固了平时所学,顿时觉得有了成就感,也感受到了数据库知识的强大功能和作用。
想尽快学习到更多的数据库设计方面的知识,设计出更加完善实用性更强的系统。