数据库人事管理系统课程设计报告.pdf

上传人:tbuqq 文档编号:5000539 上传时间:2020-01-25 格式:PDF 页数:27 大小:275.09KB
返回 下载 相关 举报
数据库人事管理系统课程设计报告.pdf_第1页
第1页 / 共27页
数据库人事管理系统课程设计报告.pdf_第2页
第2页 / 共27页
数据库人事管理系统课程设计报告.pdf_第3页
第3页 / 共27页
数据库人事管理系统课程设计报告.pdf_第4页
第4页 / 共27页
数据库人事管理系统课程设计报告.pdf_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《数据库人事管理系统课程设计报告.pdf》由会员分享,可在线阅读,更多相关《数据库人事管理系统课程设计报告.pdf(27页珍藏版)》请在三一文库上搜索。

1、课程设计任务书 设计题目:人事管理系统设计 学生姓名 课程名称数据库原理课程设计专业班级 地点起止时间 设 计 内 容 及 要 求 内容: 学生根据本课程设计指导书中的题目,进行设计。 (1)设计友好的登录界面,完成用户身份检验。可以提供对各种窗日 的外观进行设计,可以提供用户进行外观选择。 (2)企业新员工各种信息的输入、修改、删除等,包括员工基本信息、 学历信息、婚姻状况、职称等。 (3)数据库信息维护,即员工各种数据信息的备份。 (4)对于转出、辞职、退休员工信息的删除。 (5)按照一定的条件,查询、统计符合条件的员工信息;至少应该包 括每个员工详细信息的查询、按婚姻状况查询、按学历查询

2、、按工作岗位 查询等,至少应该包括按学历、婚姻状况、岗位、参加工作时间等统计各 自的员工信息; (6)对查询、统计的结果打印输出。 (7)按照部门将现有员工进行分类,查看各个部门现有员工的平均年 龄,根据各部门工作量的大小,较好地进行人事调度。另外可以帮助领导 做出招聘新员工人数的决定。 (8)可供其他人使用帮助。 要求: 按照数据库系统开发步骤进行数据库概念结构设计、逻辑结构设计、 物理结构设计 , 使学生掌握数据库应用软件的开发流程,SQL语句的使用和 存储过程的使用。 设 计 参 数 至少 5 个表结构; 5 个存储过程; 5 个触发器; 5 个视图、 2 处使用事务处理、3 处 使用游

3、标过程 报告格式规范 II 进 度 要 求 19.1 讲课阅读分析任务书制订设计计划 19.2 - 3 需求分析概念结构设计 19.4 - 5 概念结构设计准备文挡 20.1-3 逻辑结构设计物理结构设计 20.4-5 写文挡答辩交设计报告书 参 考 资 料 1雷亮等数据库原理课程设计指导书 2王珊、萨师煊 数据库系统概述(第四版 ) 北京:高等教育出版社2006。 3C.J.Date著孟小峰、王珊等译数据库系统导论( 第 8 版) 北京:机械工 业出版社 .2007 。 4陈根才等 .数据库课程设计浙江浙江大学出版社2007 其 它 说 明 . 本表应在每次实施前一周由负责教师填写二份,院系

4、审批后交院系办备案,一份由 负责教师留用。 . 若填写内容较多可另纸附后。3. 一题多名学生共用的,在设计内容、 参数、要求等方面应有所区别。 教研室主任:指导教师: 摘要 在现代化的社会中,无论是大型企业还是中小型企业,都必不可少地会涉及 到人事管理的问题。一个完善的人事管理系统对企业的发展有着至关重要的作 用。 人事管理系统分为6 个模块 ,基本信息管理模块、退休员工信息管理模块、部 门信息管理模块、学历信息管理模块、家庭信息管理模块和职称信息管理模。本 系统采用 SQL Server 2008 作为数据库。在实现数据库部分功能时要求写出存储 过程、触发器和视图。 关键词 :人事管理SQL

5、 Server 2008 触发器 存储过程 视图 事务处理游标 III 目录 摘要. I I 1 需求分析 1 1.1 系统目标设计 1 1.2 系统功能分析 1 1.3 功能模块分析 2 1.4 系统全局数据流图. 2 1.5 数据字典 3 2 概念结构设计 6 2.1 构成系统的实体型 6 2.2 人事管理系统 E-R图 7 3 逻辑结构设计 8 3.1 逻辑结构简介 . 8 3.2 E-R 图向关系模型的转换 . 8 4 物理模型设计 9 4.1 定义数据库 . 9 4.2 创建存储过程 9 4.3 创建触发器 . 14 4.4 创建视图 . 17 4.5 创建游标 . 19 4.6 创

6、建事物处理 . 21 总结. 22 致谢. 23 参考文献 . 24 1 1 需求分析 1.1 系统目标设计 使企业可以实现规范化的管理。 推动企业劳动人事管理走向科学化、现代化,适应现代企业制度的要求。 使管理员可以很简单地完成日常的管理工作,例如新员工的加入、老员工的退 休等。 支持企业进行劳动人事管理及其相关方面的科学决策,如企业领导根据现有职 工的数目决定招聘的人数等。 1.2 系统功能分析 根据现代企业的情况,本系统要求应能完成以下主要功能: 设计友好的登录界面,完成用户身份检验。可以提供对各种窗口的外观进行设 计,可以提供用户进行外观选择。 企业新员工各种信息的输入、修改、删除等,

7、包括员工基本信息、学历信息、 婚姻状况、职称等。 数据库信息维护,即员工各种数据信息的备份。 对于转出、辞职、退休员工信息的删除。 按照一定的条件,查询、统计符合条件的员工信息;至少应该包括每个员工详 细信息的查询、按婚姻状况查询、按学历查询、按工作岗位查询等,至少应该包括按学 历、婚姻状况、岗位、参加工作时间等统计各自的员工信息; 对查询、统计的结果打印输出。 按照部门将现有员工进行分类,查看各个部门现有员工的平均年龄,根据各部 门工作量的大小, 较好地进行人事调度。 另外可以帮助领导作出招聘新员工人数的决定。 可供其他人使用帮助。 2 1.3 功能模块分析 根据系统功能的基本要求,可对整个

8、系统划分为几个模块 图 1.1 功能模块分析 1.4 系统全局数据流图 系统的全局数据流图,也称第一层数据流图,是从整体上描述系统的数据流,反映 系统数据的整体流向,给设计者、开发者和用户一个总体描述。 用户 管理员 普通用户 人事管理数据库 身份验 证 主界面 更新 查询 图 1.2 数据流图 人事管理系统 员 工 基 本 信 息 退 休 员 工 基 本 信 息 部 门 信 息 管 理 学 历 信 息 管 理 家 庭 信 息 管 理 职 称 评 定 管 理 学 历 信 息 录 入 及 维 护 学 历 信 息 的 查 询 家 庭 信 息 录 入 及 维 护 职 称 评 定 的 录 入 与 维

9、护 职 称 评 定 那 个 的 查 询 员 工 信 息 查 询 员 工 基 本 信 息 录 入 及 维 护 员 工 信 息 的 维 护 及 查 询 部 门 信 息 录 入 及 维 护 部 门 信 息 的 查 询 家 庭 信 息 录 的 查 询 3 1.5 数据字典 表 1.1 员工基本信息表 (worker_info) 名称数据类型说明 Worker_no varchar(15) 员工编号 关键字 Worker_name varchar(8) 员工姓名 Sex varchar(2) 性别 Birthday date 出生日期 Age smallint 年龄 ID varchar(18) 身份证

10、号 Department_name varchar(15) 部门 Post varchar(8) 职位 Phone varchar(11) 电话 Work_date date 工作时间 Worker_ type varchar(8) 员工类型 表 1.2 离退休员工 (tui_info) 名称数据类型说明 Worker_no varchar(15) 员工编号关键字 Worker_name varchar(8) 员工姓名 Sex varchar(2)性别 Birthday date出生日期 Age smallint 年龄 ID varchar(18)身份证号 Department_namevar

11、char(15)部门 Post varchar(8)职位 Phone varchar(11)电话 Work_date date工作时间 表 1.3 部门基本信息表( Department_info ) 名称数据类型说明 Department_no Varchar(15) 部门编号关键字 Department_name varchar(15) 部门名称 manager_no varchar(15) 经理编号 4 Workeload Float(2) 工作量( % ) Real_number Int 现人数 Need_numberInt所需人数 表 1.4 学历信息 (degree_info) 名

12、称数据类型说明 Degree_no Varchar(15) 学历编号关键字 Worker_no varchar(15) 员工编号 Degree varchar(4) 学位 Major Varchar(8) 专业 School varchar(25) 学校 Graduate_date date 毕业时间 表 1.5 家庭信息 (home_info) 名称数据类型说明 Home_no Varchar(15) 家庭编号关键字 Worker_no varchar(15) 员工编号 Marriage_info varchar(4) 婚姻状况 Home_number smallint 家庭人数 Home_

13、phone varchar(8) 家庭电话 Home_addressvarchar(50)家庭住址 表 1.6 职称信息 (Pro_info) 名称数据类型说明 Pro_no Varchar(15) 职称编号关键字 Worker_no varchar(15) 员工编号 Assess_date datetime 评定日期 Assess_unit varchar(20) 评定单位 Assess_title varchar(8) 评定职称 5 Remark varchar(200) 备注 6 2 概念结构设计 2.1 构成系统的实体型 由人事管理系统的数据流图和数据字典,抽取出系统的 6 个主要实体

14、, 包括:员工、 部门、学历、家庭、职称评定信息、账号。 员 工 实 体 型 属 性 : Worker_no, Worker_name, Sex, Birthday, Age, ID, Department_name, Post, Phone, Work_date, Worker_ type 退 休 员 工 实 体 型 属 性 : Worker_no, Worker_name, Sex, Birthday, Age, ID, Department_name, Post, Phone, Work_date, Worker_ type,tui_date 部门实体型属性:Department_no,

15、Department_name,manager_no ,Workeload, Real_number,Need_number 学历实体型属性: Degree_no,Worker_no,Degree,Major,School,Graduate_date 家庭实体型属性: Home_no , Worker_no, Marriage_info, Home_number , Home_phone , Home_address 职 称 评 定 信息 实体型 属性 :Pro_no, Worker_no, Assess_date, Assess_unit, Assess_title, Remark 7 2.

16、2 人事管理系统E-R图 图 2.1 人事管理系统 E-R图 8 3 逻辑结构设计 3.1 逻辑结构简介 逻辑结构设计就是把概念结构设计阶段设计好的基本E-R 图转换为与选用 DBMS 产 品所支持的数据模型相符合的逻辑结构。 设计逻辑结构一般分为3 步进行: (1) 将概念结构转换为一般的关系、网状、层次模型; (2) 将转换来的关系、网状、层次模型向特定DBMS 支持下的数据模型转换; (3) 对数据模型进行优化。 3.2 E-R 图向关系模型的转换 将 E-R 图转换为关系模型实际上就是要将实体型、实体的属性和实体型间的联系转 换为关系模式,这种转换一般遵循如下原则:一个实体型转换为一个

17、关系模式。实体的 属性就是关系的属性,实体的码就是关系的码。 对于实体间的联系则有以下不同的情况: (1)一个 1:1 联系可以转换为一个独立的关系模式,也可以与任意一断对应的关 系模式合并。如果转换为一个独立的关系模式,则与该联系相连的试题的码以及联系本 身的属性均转换为关系的属性,每个实体的码均为该关系的候选码。如果与某一端实体 对应的关系模式合并, 则需要在该关系模式的属性中加入另一个关系模式的码和联系本 身的属性。 (2)一个 1:n 联系可以转换为一个独立的关系模式,也可以与n 端对应的关系模 式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身 的属性均转换

18、为关系的属性,而关系的码为n 端实体的码。 (3)一个 m :n 联系转换为一个关系模式。与该联系相连的饿个实体的码以及联系 本身的属性均转换为关系的属性,个实体的码组成关系的码或关系码的一部分。 (4)3 个或 3 个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联 系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的 码或关系码的一部分。 (5)具有相同码的关系模式可合并。 9 4 物理模型设计 数据库物理设计是将逻辑设计影射到存储介质上,利用可用的硬件和软件功能尽可 能快地对数据进行物理访问和维护。 4.1 定义数据库 SQL Server 2008 数

19、据库文件分为3 中类型:主数据文件、次数据文件和日志文件。 通过 SQL语言进行数据库创建,创建数据库的语句如下: Create database 人事管理系统 ; 4.2 创建存储过程 4.2 1 在员工基本信息表 , 家庭信息表,学历信息表,职称评定表,创建一个插入员工信 息的存储过程: create procedure insertworker Worker_no varchar(15) ,-工号 Worker_name varchar(8) ,-姓名 Sex varchar(2) ,-性别 Birthday date ,-出生年月 ID varchar(18) ,-身份证号 Depar

20、tment_name varchar(15) ,-部门 post varchar(8) ,-职位 phone varchar(11) ,-电话 work_date date ,-工作时间 Worker_type varchar(8) , -员工类型 Degree_no varchar(15) , -学位号 Degree varchar(4) ,-学位 Major varchar(25) ,-专业 School varchar(25) ,-毕业学校 Gradute_date date , -毕业时间 Home_no varchar(15) ,-家庭编号 Marriage_info varchar

21、(4) ,-婚姻状况 Home_number smallint ,-家庭人口 Home_phone varchar(11) ,-家庭电话 Home_address varchar(50) ,-家庭地址 Pro_no varchar(15) ,-职称编号 Assess_date date ,-评定日期 Assess_unit varchar(20) ,-评定单位 Assess_title varchar(8) ,-评定职称 Remark varchar(200) -备注 10 as - 插入员工信息 insert into worker_info(Worker_no,Worker_name,Se

22、x,Birthday,age,ID,Department_name,post, phone,work_date,Worker_type) values (Worker_no,Worker_name,Sex,Birthday,FLOOR(datediff(DY,Birthday,getdate ()/365.25),ID,Department_name,post,phone,work_date,Worker_type) - 插入职称信息 insert into Pro_info(Pro_no,Worker_no,Assess_date,Assess_unit,Assess_title,Remar

23、k) values (Pro_no,Worker_no,Assess_date,Assess_unit,Assess_title,Remark) - 插入家庭信息 insert into home_info(Home_no,worker_no,Marriage_info,Home_number,Home_phone,Home_addre ss) values (Home_no,worker_no,Marriage_info,Home_number,Home_phone,Home_address) -插入学历信息 insert into degree_info(Degree_no,Worker_

24、no,Degree,Major,School,Gradute_date) values (Degree_no,Worker_no,Degree,Major,School,Gradute_date) 4.2 2 在部门基本信息表中创建插入部门信息的存储过程: create procedure add_department Department_no varchar(15) , Department_name varchar(15) , Manager_no varchar(15) , Workeload float(2) , Real_number smallint , Need_number

25、smallint as insert into department_info(Department_no,Department_name,Manager_no,Workeload,Real_num ber,Need_number) values (Department_no,Department_name,Manager_no,Workeload,Real_number,Need_ number) 4.2 3 在部门基本信息表中创建更新部门信息的存储过程: create procedure update_department Department_name varchar(15) , 11

26、Manager_no varchar(15) , Workeload float(2) , Need_number smallint as update department_info set Manager_no=Manager_no, Workeload=Workeload, Need_number=Need_number where Department_name=Department_name; 4.2 4 创建当一个员工辞职时删除该信息,当一个员工退休时,将基本信息复制到退休表 中,其他信息删除的存储过程 CREATE PROCEDURE worker_type worker_no

27、varchar(15), worker_type varchar(4) AS BEGIN SET NOCOUNT ON; IF worker_type= 辞职 BEGIN delete from worker_info where worker_no=worker_no END IF worker_type= 退休 BEGIN INSERT INTO tui_info(Worker_no,Worker_name,Sex,Birthday,Age,ID,Department_name,Post,Pho ne,Work_date,Tui_date) SELECT Worker_no,Worker_

28、name,Sex,Birthday,FLOOR(datediff(DY,Birthday,getdate()/36 5.25),ID,Department_name,Post,Phone,Work_date,GETDATE() FROM worker_info WHERE Worker_no=Worker_no; DELETE FROM worker_info WHERE Worker_no=Worker_no; END END 4.2 5 创建更新家庭信息表、学历信息、职称信息的存储过程 create procedure update_home Worker_no varchar(15) ,

29、-工号 Marriage_info varchar(4) ,-婚姻状况 Home_number smallint ,-家庭人口 Home_phone varchar(11) ,-家庭电话 Home_address varchar(50) -家庭地址 12 as update home_info set Marriage_info=Marriage_info, Home_number=Home_number, Home_phone=Home_phone, Home_address=Home_address where Worker_no=Worker_no; - 更新学历信息 create pr

30、ocedure update_degree Worker_no varchar(15) ,-工号 Degree varchar(4) ,-学位 Major varchar(25) ,-专业 School varchar(25) ,-毕业学校 Gradute_date date -毕业时间 as update degree_info set Degree=Degree, Major=Major, School=School, Gradute_date=Gradute_date where Worker_no=Worker_no; - 更新职称信息 create procedure update_

31、pro Worker_no varchar(15) ,-工号 Assess_date date ,-评定日期 Assess_unit varchar(20) ,-评定单位 Assess_title varchar(8) -评定职称 as update pro_info set Assess_date=Assess_date, Assess_unit=Assess_unit, Assess_title=Assess_title where Worker_no=Worker_no; 4.2 6 创建某部门平均年龄的存储过程 create procedure avg_age Department_n

32、ame varchar(15) as select AVG(Age) from worker_info where Department_name=Department_name 4.2 7 13 按学历查询 - 学历查询 create procedure search_degree name varchar(4) as begin declare search_degree cursor for select worker_no from degree_info where worker_no in(select Worker_no from degree_info where Degree

33、=name) open search_degree declare no1 varchar(15) fetch next from search_degree into no1 while FETCH_STATUS = 0 begin select worker_info.Worker_name,worker_info.Department_name,home_info.Marriage_info ,degree_info.Major,degree_info.degree, worker_info.Work_date from worker_info,degree_info,pro_info,

34、home_info where worker_info.Worker_no=no1 and home_info.Worker_no=no1 and pro_info.Worker_no=no1 and degree_info.Worker_no=no1 fetch next from search_degree into no1 end close search_degree deallocate search_degree end 4.2 7 按部门查询 create procedure search_department name varchar(15) as begin declare

35、search_department cursor for select worker_no from worker_info where Department_name=name open search_department declare no1 varchar(15) fetch next from search_department into no1 while FETCH_STATUS = 0 begin select worker_info.Worker_name,worker_info.Department_name,home_info.Marriage_info ,degree_

36、info.Major,worker_info.Work_date from worker_info,degree_info,pro_info,home_info where 14 worker_info.Worker_no=no1 and home_info.Worker_no=no1 and pro_info.Worker_no=no1 and degree_info.Worker_no=no1 fetch next from search_department into no1 end close search_department deallocate search_department

37、 end 4.2 9 按婚姻状况查询 create procedure search_marriage name varchar(15) as begin declare search_marriage cursor for select worker_no from home_info where worker_no in(select Worker_no from home_info where marriage_info=name) open search_marriage declare no varchar(15) fetch next from search_marriage in

38、to no while FETCH_STATUS = 0 begin select * from worker_info,degree_info,pro_info,home_info where worker_info.Worker_no=no and home_info.Worker_no=no and pro_info.Worker_no=no and degree_info.Worker_no=no fetch next from search_marriage into no end close search_marriage deallocate search_marriage en

39、d 4.3 创建触发器 4.3 1 定义一个触发器,当在数据库中插入一条员工信息后,触发相应的部门人数加1 create trigger insert_worker on worker_info after insert as begin update department_info set department_info.Real_number = department_info.Real_number + 1 from department_info as department_info,inserted as worker_info 15 where department_info.De

40、partment_name=worker_info.Department_name end; 4.3 2 定义一个触发器,当在数据库中删除一条员工信息后,触发相应的部门人数减1 create trigger delete_worker on worker_info after delete as begin update department_info set department_info.Real_number = department_info.Real_number - 1 from department_info as department_info,deleted as worke

41、r_info where department_info.Department_name=worker_info.Department_name end; delete from worker_info where worker_no=j1; 4.3 3 定义一个触发器, 当在数据库中员工所属的部门更改后,触发转出的部门人数减1, 转入的部门人数加1 create trigger update_worker on worker_info after update as IF(UPDATE(Department_name) begin -转出的部门人数减 update department_in

42、fo set department_info.Real_number = department_info.Real_number - 1 from department_info as department_info,deleted as worker_info where department_info.Department_name=worker_info.Department_name -转入的部门人数加 update department_info set department_info.Real_number = department_info.Real_number + 1 fro

43、m department_info as department_info,inserted as worker_info where department_info.Department_name=worker_info.Department_name end; 4.3 4 16 定义一个触发器, 当在数据库中删除一个员工的基本信息时连带删除该员工的职称, 学历, 家庭信息 create TRIGGER del_worker ON worker_info for DELETE AS BEGIN delete home_info From home_info as home_info , del

44、eted as worker_info Where home_info.worker_no= worker_info.worker_no END BEGIN delete degree_info From degree_info as degree_info , deleted as worker_info Where degree_info.worker_no=worker_info.worker_no END BEGIN delete pro_info From pro_info as pro_info , deleted as worker_info Where pro_info.wor

45、ker_no=worker_info.worker_no END 4.3 5 创建一个触发器,检查部门员工是否已满,满人则不进行操作 create Trigger check_department on department_info for update as IF(UPDATE(Real_number) begin declare size smallint, MaxSize smallint, Department_name varchar(15) select department_name =department_name from inserted select MaxSize =

46、Need_number ,size = Real_number from department_info where department_name = department_name begin if( size MaxSize ) begin print 该部门员工已满 rollback Transaction 17 return ; end end end 4.3 6 创建一个触发器,插入或更新时检查部门是否存在,不存在则不进行操作 create trigger check_dapartment_name on worker_info for update,insert as begin

47、 declare department_name varchar(15) select department_name = department_name from inserted if( not exists(select * from department_info where department_name = department_name ) ) begin print 该部门不存在 rollback Transaction return; end end 4.4 创建视图 4.4 1 建立一个查看所有员工的所有信息的视图 create view all_worker(员工编号 ,

48、 姓名, 性别, 出生日期 , 年龄, 身份证号 , 部门编号 , 部 门, 经理编号 , 职位, 电话, 工作时间 , 员工类型 , 学历号 , 学位, 专业, 毕业学校 , 毕业时间 , 职称号 , 评定时间 , 评定单位 , 评定职称 , 备注, 家庭编号 , 婚姻 状况, 家庭人口 , 家庭电话 , 家庭地址 ) as select worker_info.Worker_no,worker_info.Worker_name,worker_info.Sex,worker_info.B irthday,worker_info.Age,worker_info.ID, department_info.Department_no,worker_info.Department_name,department_info.M anager_no,worker_info.Post,worker_info.Phone,worker_info.Work_date,worker_i nfo.Worker_type,de

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1