人事管理系统数据库课程设计报告Word格式文档下载.docx
《人事管理系统数据库课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《人事管理系统数据库课程设计报告Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。
系统功能的基本要求:
Ø
员工各种信息的输入,包括员工的基本信息、学历信息、婚姻状况信息、职称等。
员工各种信息的修改;
对于转出、辞职、辞退、退休员工信息从员工表中删除,信息转入离职员工表;
按照一定的条件,查询、统计符合条件的员工信息:
至少应该包括按学历、婚姻状况、岗位、参加工作时间等关键字查询各自的员工信息;
对查询、统计的结果打印输出。
1.2.2数据需求分析
1.
员工基本情况。
包括的数据项有员工号、员工姓名、性别、身份证号、政治面貌、联系电话、部门、岗位、婚姻状态、工作时间、学历信息。
2.
工作部门信息。
包括的数据项有部门号、部门名称。
3.
员工职称信息。
包括的数据项有职称号、职称名称。
4.
员工婚姻状况。
包括的数据项有员工号、爱人代号、爱人姓名、工作单位、政治面貌、工作职称。
5.
员工学历信息。
包括的数据项有员工号、学位证书编号、学历、专业、毕业时间、毕业
1.2.3运行环境
本系统是在windows10系统下,用SQLServer2014开发设计完成,可以供VS,VB6.0,Eclipse等集成开发工具开发软件时连接数据库使用。
1.3用户需求
1.3.1调查用户需求
企业部门需求
员工基本信息处理:
员工基本信息的录入
员工基本信息的处理包括插入,删除以及修改
员工基本信息的查询
统计功能:
按学历、婚姻状况、岗位、参加工作时间等统计各自的员工信息
1.3.2分析用户需求
在调查完了用户需求之后,就要开始分析用户需求。
在此,我们采用自顶向
下的结构化分析方法(SA
方法)。
首先,定义全局概念结构的框架。
经分析之后,本系统要用到七个基本表:
员工表、职称信息表、学历信息表、支撑岗位对应表、员工部门对应表、婚姻信息表、部门信息表。
1局部E-R图
2全局E-R图
三、逻辑结构设计
3.1关系模式转换
将E-R图转换为关系模式如下:
员工(工号,姓名,姓名,性别,身份证号,政治面貌联系电话)
部门(部门号,部门名称)
职称(职称号,职称名)
员工部门(员工号,部门号,工作时间)
职称岗位(工号,职称号,岗位)
婚姻(工号,婚姻状态,爱人姓名,爱人工作单位,爱人政治面貌,爱人工作职称)
学历(学位证编号,工号,最高学历,毕业时间,专业,毕业院校)
3.2表格数据结构
表1:
员工基本信息表empoyee
Char(8)
主键、非空
工号
Char(20)
非空
姓名
Char
(2)
可空
性别
Char(18)
身份证号
int
年龄
Char(11)
手机
Char(10)
政治面貌
表2:
部门表department
Char(6)
部门号
部门名称
表3:
职称表professional
职称号
职称名
表四:
职称岗位对应表e_p
主键、外键、非空
岗位
表五:
员工部门对应表e_d
Datatime
工作时间
表六:
婚姻表marriage
非空、(是,否)
是否结婚
爱人名字
爱人工作单位
爱人政治面貌
爱人工作职称
表七:
学历信息表school
学位证编号
外键、非空
Check()
最高学位
datetime
毕业时间
主修专业
毕业院校
各个表格的关系图
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)--政治面貌
)
此表格的部分数据如下:
离职员工表--员工基本信息表
createtabledepartment--部门表
d_no
char(6)
key,--部门号
d_name
char(10)--部门名称
部门表格及其数据:
createtablee_d--员工部门对应表
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)
表格的部分数据如下:
marriage
--员工婚姻对应表
(
nullforeignkeyreferencesemployee(e_no)primarykey,--员工号
is_machar
(2)notnull,--是否已婚
l_name
char(20),--爱人姓名
l_company
char(20),--工作单位
l_zzmm
char(10),--政治面貌
l_p
char(20),--工作职称
)
此表格的部分数据如下;
school
--员工学历信息表
char(8),--员工号
hest_degreechar(6)check(hest_degreein('
本科'
研究生'
博士'
)),--最高学历
degree_no
char(10)
key,--最高学位证书编号
majob
char(20),--专业
bydate
datetime,--毕业时间
byschool
char(20),--毕业院校
foreign
key(e_no)
references
employee(e_no)
视图总纲如下:
go
createviewcomm_zzmm(e_name,e_no,e_zzmm,l_zzmm)--创建视图,查看员工及其爱人政治面貌
asselecte_name,employee.e_no,e_zzmm,l_zzmmfromemployee,marriage
whereemployee.e_no=marriage.e_noandmarriage.is_ma='
是'
视图部分数据
createviewcomm_P_name(e_name,p_no,L_no)--创建视图,查看员工及其爱人的职称
asselecte_name,p_name,l_pfromemployee,professional,marriage,e_p
whereemployee.e_no=e_p.e_noande_p.p_no=professional.p_noandemployee.e_no=marriage.e_no
此视图相关数据:
createview工作信息--创建视图,查看在职员工的工作信息
asselecte_name,d_name,p_name,job,jobtimefromemployee,department,professional,e_p,e_d
whereemployee.e_no=e_p.e_noandemployee.e_no=e_d.e_noandprofessional.p_no=e_p.p_no
anddepartment.d_no=e_d.d_no
此视图相关信息:
createview学历--创建视图,查询学历相关信息
as
selecte_nameas姓名,hest_degreeas最高学历,majobas主修,byschoolas毕业院校fromschool,employee
whereemployee.e_no=school.e_no
createviewT_E_Department--创建视图,查看员工对应部门
asselecte_name,employee.e_no,d_namefromemployee,department,e_d
whereemployee.e_no=e_d.e_noande_d.d_no=department.d_no
createprocedureCount_D_sum(@d_namechar(10))--储存过程,录入部门名称,求人数
selectcount(*)as部门总人数frome_d
where(selectd_nofromdepartmentwhere@d_name=d_name)=e_d.d_no
execCount_D_sum'
财务部'
createprocedureSeach_Higher_Age(@e_ageint)--储存过程,查询比录入数据大的年领
as
selecte_name,e_age,e_nofromemployee
wheree_age>
=@e_age
orderbye_agedesc
execSeach_Higher_Age30
createproceduredelete_all(@e_nochar(8))--储存过程,帮助有多外键数据删除所有工号相关
deletefrome_pwheree_no=@e_no
deletefrommarriagewheree_no=@e_no
deletefromschoolwheree_no=@e_no
deletefrome_dwheree_no=@e_no
deletefromemployeewheree_no=@e_no
此储存过程与触发器共同使用方可看出效果,在下面会有举例。
createprocedureSeach_Marriage(@is_machar(20))--储存过程,按照婚姻状态查找员工
if(@is_ma='
begin
selecte_name,l_name,l_companyfromemployee,marriage
whereemployee.e_no=marriage.e_noandis_ma='
end
elseif(@is_ma='
否'
selecte_namefromemployee,marriage
wheremarriage.e_no=employee.e_noandis_ma='
else
print'
输入参数有误'
createtriggerInsert_Massageonmarriage--触发器,规范相关信息的输入
afterinsert
ifexists(select*frominsertedwheree_noin(selecte_nofromemployee))
添加成功!
'
else
begin
print'
员工基本信息表中无此员工基本信息,拒绝插入!
rollback
end
以下触发器是对于转出、辞职、辞退、退休员工信息从员工表中删除,信息转入离职员工表并且删除相关表格的相关数据。
createtriggerfresh_massageonemployee
afterdelete
declare@e_no
@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
我们可以看到,从员工表格中删除工号是DCG00004的员工。
此员工被转入离职信息表
五、课程设计心得体会
在此次为期一周的数据库课程设计过程中,感觉整个系统的设计过程就是一个逐步完善的过程,必须要不停地思考不停地探索。
刚开始的两天其实基本上毫无头绪,去图书馆去网上都查了资料,在脑海中先形成大致模块和思路,建立数据库的过程看似简单,实则不然。
要考虑到实体间的逻辑关系和数据关系模式的完整性问题,努力使之达到第三范式。
在对数据源的select,update,delect,查询属性进行配置的过程中,反反复复,不能确定,最后,只得静下心来,一步一步一点一点的配置,修改,最后终于全部成功,在这个反复的过程当中已将这些今本知识印于脑海之中,巩固了平时所学,顿时觉得有了成就感,也感受到了数据库知识的强大功能和作用。
想尽快学习到更多的数据库设计方面的知识,设计出更加完善实用性更强的系统。