员工培训管理系统

目 录
1.引言 2
2.需求分析 3
2.1可行性分析 3
2.2功能分析 3
2.2.1系统的基本构成 3
2.2.2系统功能 3
2.3业务流程分析 4
2.3.1业务流程分析内容 4
2.3.2业务流程图 4
2.4数据字典、数据流程分析 5
2.4.1数据项 5
2.4.2数据结构 5
2.4.3数据流程分析 7
2.4.4数据流图 7
3.数据库设计 8
3.1 概念设计阶段 8
3.1.1分E-R图 8
3.1.2总E-R图 10
3.2逻辑设计阶段 10
3.2.1关系模式 10
3,2,2表结构设计 11
3.3 物理设计阶段 12
3.4 数据库实施阶段 12
3.4.1创建数据库员工培训 12
3.4.2创建数据表 13
3.4.3插入数据 15
3.4.4创建索引 18
3.4.5创建视图 20
3.4.6查询功能 20
3.4.7创建存储过程 22
3.4.8创建触发器 23
4.总结 25
主要参考文献 26

引言
本课程设计是员工培训管理系统。
随着战略人力资源管理时代的到来,员工培训开发在提升员工技能和素质、增强企业核心竞争力等方面具有重要作用。为了较好地解决我国企业在进行员工培训时出现的问题,建立了一套战略员工培训管理系统,使企业的培训工作系统化、规范化、自动化,从而达到提高企业培训的目的。
员工培训管理系统以计算机为工具,通过对员工培训管理所需的信息管理,把管理人员从繁琐的数据计算处理中解脱出来,使其有更多的精力从事公司的筹划实施等计划。

需求分析
2.1 可行性分析
目前,企业员工培训管理较多为人工管理,各方面都是人工操作,这样不仅浪费人员且操作不方便,不能满足企业的需求,因此,使用员工培训管理系统是很有必要的。本次设计中所用到的软件和技术性能较好,应用的软件SQL Server 2008可以运行Windows Vista Home Basic及更高版本之上,也可以在Windows XP上运行,操作简单,成本较低,符合实用性的要求。本次设计能提高员工培训管理的效率,简化员工培训管理步骤,优化员工培训管理流程,提高公司培训员工效率。
2.2 功能分析
2.2.1 系统的基本构成
员工培训管理系统是用于管理员工信息的重要工具,管理员工培训信息,满足用户对培训人员、课程、成绩等的查询,目的是建立一个系统高效便捷的管理系统,提高管理效率。
2.2.2 系统功能
员工信息管理:记录培训员工的工号,姓名,性别,电话号码,身份证号,家庭住址等。
部门信息管理:记录培训员工的工号,部门号,部门名称,部门电话,职称等。
培训成绩管理:记录培训员工的工号,课程号,课程成绩等。
培训课程管理:记录培训员工的工号,课程号,课程名,培训教授等。
查询功能:管理员可管理和使用这一功能,可对培训人员、课程、成绩进行查询,查看员工培训情况。

2.3 业务流程分析
2.3.1 业务流程分析内容
员工参加培训后,管理员可以对员工信息进行管理,管理员可进行对员工信息,部门信息,培训课程,培训成绩的查询等操作,可获取想要得到的信息。
2.3.2 业务流程图

图1 业务流程图

2.4 数据字典、数据流程分析
2.4.1 数据项

表1 数据项定义
数据项名称
含义说明
数据类型
长度

工号
员工工号
Varchar
10

姓名
员工姓名
Varchar
12

性别
员工性别
Nchar
1

电话号码
员工电话
Varchar
11

身份证号
员工身份证号
Char
18

家庭住址
员工住址
Varchar
200

部门号

Char
5

部门名称

Varchar
50

部门电话

Char
8

职称
员工职称/工种
Varchar
20

课程号

Char
10

课程名

Varchar
30

培训教授

Varchar
20

成绩

Char
10

2.4.2 数据结构
1、员工信息表的数据结构

表2 员工信息表的数据结构
列名
数据类型
宽度
主键

工号
Varchar
10

姓名
Varchar
12

性别
电话号码
身份证号
家庭住址
Nchar
Varchar
Char
Varchar
1
11
18
200

部门信息表的数据结构

表3 部门信息表的数据结构
列名
数据类型
宽度
主键

工号
部门号
Varchar
Char
10
5

部门名称
部门电话
职称
Varchar
Char
Varchar
50
8
20

培训课程表的数据结构

表4 培训课程表的数据结构
列名
数据类型
宽度
主键

工号
Varchar
10

课程号
课程名
培训教授
Char
Varchar
Varchar
10
30
20

培训成绩表的数据结构

表5 培训成绩表的数据结构
列名
数据类型
宽度
主键

工号
Varchar
10

课程号
成绩
Char
Char
10
10

2.4.3 数据流程分析
人员信息经管理员登记录入,并将数据同步到人员信息表,部门信息表,培训课程表和培训成绩表,管理员可对想要的培训人员信息数据进行查询。
2.4.4 数据流图

图2 数据流图

3.数据库设计
3.1 数据库概念设计
3.1.1 分E-R图
1、员工实体及其属性:

图3 员工实体及其属性

部门实体及其属性:

图4 部门实体及其属性

3、课程实体及其属性:

图5 课程实体及其属性

4、培训E-R图

图6 培训E-R图

3.1.2 总E-R图

图7 总E-R图

3.2 数据库逻辑设计
3.2.1 关系模式
按照E-R图向关系模型转换的规则,将概念模型中的实体及其联系转换为关系模式,员工培训管理系统的关系模式设计如下:
员工(工号,姓名,性别,电话号码,身份证号,家庭住址)
部门(部门号,部门名称,部门电话,职称)
课程(课程号,课程名,培训教授)
培训(工号,课程号,成绩)
3,2,2 表结构设计

表6 员工信息表
列名
数据类型与长度
空否
说明
约束条件

工号
Varchar(10)
NOT NULL
员工工号
主键

姓名
Varchar(12)
NOT NULL
员工姓名

性别
Nchar(1)
NOT NULL
员工性别

电话号码
Varchar(11)
NOT NULL
员工电话

身份证号
Char(18)
NOT NULL
员工身份证号

家庭住址
Varchar(200)
NOT NULL
员工住址

表7 部门信息表
列名
数据类型与长度
空否
说明
约束条件

工号
Varchar(10)
NOT NULL
员工工号
外键

部门号
Char(5)
NOT NULL

部门名称
Varchar(50)
NOT NULL

部门电话
Char(8)
NOT NULL

职称
Varchar(20)
NOT NULL

表8 培训课程表
列名
数据类型与长度
空否
说明
约束条件

工号
Varchar(10)
NOT NULL
员工工号
外键

课程号
Char(10)
NOT NULL

主键

课程名
Varchar(30)
NOT NULL

培训教授
Varchar(20)
NOT NULL

表9 培训成绩表
列名
数据类型与长度
空否
说明
约束条件

工号
Varchar(10)
NOT NULL
员工工号
外键

课程号
Char(10)
NOT NULL

成绩
Char(10)
NOT NULL

3.3 物理设计阶段
根据员工培训管理系统的数据操作需要,为各个表设计索引文件,每个表已经按主码自动创建了一个聚集索引,其他索引如下:
1、按员工信息表的“姓名”列升序创建一个非聚集索引。
2、按员工信息表的“电话号码”列升序创建一个非聚集索引。
3、按员工信息表的“身份证号”列升序创建一个非聚集索引。
4、按培训课程表的“工号”列升序创建一个非聚集索引。
5、按培训课程表的“课程号”列升序创建一个非聚集索引。
6、按培训课程表的“课程名”列升序创建一个非聚集索引。
7、按培训成绩表的“工号”列升序创建一个非聚集索引。
8、按培训成绩表的“课程号”列升序创建一个非聚集索引。
3.4 数据库实施
在此使用SQL Server 2000的T -SQL语言,建立本实例中的表和关系。
3.4.1 创建数据库
USE MASTER
GO
CREATE DATABASE 员工培训
ON (NAME =‘员工培训_data’,
FILENAME=‘E:\4194001206张丽\员工培训_data.mdf’,
SIZE=10MB,
MAXSIZE=UNLIMITED,
FILEGROWTH=5MB)
LOG ON(NAME=‘员工培训_log’,
FILENAME=‘E:\4194001206张丽\员工培训_log.ldf’,
SIZE=5MB,
MAXSIZE=25MB,
FILEGROWTH=5MB)
GO

图8 创建数据库

3.4.2 创建数据表
USE 员工培训
GO
CREATE TABLE 员工培训.dbo.员工信息
(工号 VARCHAR(10) NOT NULL PRIMARY KEY,
姓名 VARCHAR(12) NOT NULL,
性别 NCHAR (1) CHECK(性别 IN(‘男’,‘女’))NOT NULL,
电话号码 VARCHAR(11)CHECK (电话号码 LIKE’[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]’) NOT NULL,
身份证号 CHAR(18) CONSTRAINT UK_ST UNIQUE NOT NULL,
家庭住址 VARCHAR(200) NOT NULL
)
GO

图9 创建员工信息表

2、创建部门信息表
CREATE TABLE 员工培训.dbo.部门信息
(工号 VARCHAR(10) NOT NULL FOREIGN KEY REFERENCES 员工信息(工号) ,
部门号 CHAR(5) NOT NULL ,
部门名称 VARCHAR(50) NOT NULL,
部门电话 CHAR(8) CHECK (部门电话 LIKE’[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]’) NOT NULL,
职称 VARCHAR(20) NOT NULL
)
GO

图10 创建部门信息表

3、创建培训课程表
CREATE TABLE 员工培训.dbo.培训课程
(
工号 VARCHAR(10) NOT NULL FOREIGN KEY REFERENCES 员工信息(工号),
课程号 CHAR(10) NOT NULL PRIMARY KEY,
课程名 VARCHAR(30) NOT NULL,
培训教授 VARCHAR(20) NOT NULL
)
GO

图11 创建培训课程表

4、创建培训成绩表
CREATE TABLE 员工培训.dbo.培训成绩
(
工号 VARCHAR(10) NOT NULL FOREIGN KEY REFERENCES 员工信息(工号) ,
课程号 CHAR(10) NOT NULL FOREIGN KEY REFERENCES 培训课程(课程号),
成绩 CHAR(10) NOT NULL
)
GO

图12 创建培训成绩表

建表的截图如下:

图13 建表目录

3.4.3 插入数据
USE 员工培训
GO
1、员工信息表中数据
INSERT INTO 员工信息(工号,姓名,性别,电话号码,身份证号,家庭住址)
VALUES
(‘4174635769’,‘孔泽民’,‘男’,‘19954326678’,‘320101198106147434’,‘江苏省南京市’),
(‘4174753943’,‘唐博文’,‘男’,‘13387526762’,‘230307198404261590’,‘黑龙江省鸡西市麻山区’),
(‘4172568596’,‘唐靖琪’,‘女’,‘15876346892’,‘37142319900127249X’,‘山东省德州市庆云县’),
(‘4157843578’,‘张亚春’,‘女’,‘15476397268’,‘232102196903151919’,‘江苏省常州市顺园新村号’),
(‘4156325412’,‘吴春雨’,‘女’,‘16523545696’,‘210303198508131214’,‘辽宁省鞍山市铁西区’),
(‘4169325266’,‘乐楷瑞’,‘男’,‘13745329683’,‘610327198206116794’,‘陕西省宝鸡市陇县’),
(‘4194538812’,‘周幼安’,‘男’,‘13842253746’,‘411426198102117525’,‘河南省商丘市夏邑县’),
(‘4194024316’,‘付文文’,‘女’,‘13474986521’,‘210502198412020944’,‘辽宁省本溪市平山区’),
(‘4184120124’,‘沈熙华’,‘女’,‘19133425385’,‘150981197202284550’,‘内蒙古自治区乌兰察布市丰镇市’),
(‘4174638525’,‘朱振华’,‘男’,‘15832045599’,‘211003198407230111’,‘辽宁省辽阳市文圣区’)
SELECT*FROM 员工信息
GO

图14 插入员工信息数据

2、部门信息表中数据
INSERT INTO 部门信息(工号,部门号,部门名称,部门电话,职称)
VALUES
(‘4184120124’,‘1101’,‘行政部’,‘85981685’,‘文员’),
(‘4174753943’,‘1101’,‘行政部’,‘85981685’,‘副经理’),
(‘4172568596’,‘1101’,‘行政部’,‘85981685’,‘文员’),
(‘4157843578’,‘1104’,‘人力资源部’,‘83597015’,‘助理’),
(‘4174635769’,‘1103’,‘技术部’,‘89190187’,‘工程师’),
(‘4174638525’,‘1102’,‘财务部’,‘85927669’,‘专员’),
(‘4156325412’,‘1102’,‘财务部’,‘85927669’,‘副经理’),
(‘4169325266’,‘1103’,‘技术部’,‘89190187’,‘高级工程师’),
(‘4194538812’,‘1103’,‘技术部’,‘89190187’,‘助理’),
(‘4194024316’,‘1104’,‘人力资源部’,‘83597015’,‘专员’)
SELECT*FROM 部门信息
GO

图15 插入部门信息数据

3、培训课程表中数据
INSERT INTO 培训课程(工号,课程号,课程名,培训教授)
VALUES
(‘4174753943’,‘101’,‘经营战略管理(ST)’,‘张志军’),
(‘4172568596’,‘102’,‘公关危机管理(PCM)’,‘顾青裴’),
(‘4157843578’,‘103’,‘供应链管理(SC)’,‘顾青裴’),
(‘4174635769’,‘104’,‘广告制作(AP)’,‘唐婉’),
(‘4184120124’,‘001’,‘行政管理(AD)’,‘陈妍’),
(‘4174638525’,‘002’,‘资金管理(FM)’,‘威廉’),
(‘4156325412’,‘003’,‘成本控制(CC)’,‘易烊千玺’),
(‘4169325266’,‘004’,‘研发管理(RS)’,‘Jackson’),
(‘4194538812’,‘005’,‘生产管理(PM)’,‘Jackson’),
(‘4194024316’,‘006’,‘人力资源管理(HR)’,‘李商隐’)
SELECT*FROM 培训课程
GO

图16 插入培训课程数据

4、培训成绩表中数据
INSERT INTO 培训成绩(工号,课程号,成绩)
VALUES
(‘4174753943’,‘101’,‘65’),
(‘4172568596’,‘102’,‘82’),
(‘4157843578’,‘103’,‘78’),
(‘4174635769’,‘104’,‘39’),
(‘4184120124’,‘001’,‘78’),
(‘4174638525’,‘002’,‘54’),
(‘4156325412’,‘003’,‘90’),
(‘4169325266’,‘004’,‘46’),
(‘4194538812’,‘005’,‘69’),
(‘4194024316’,‘006’,‘84’)
SELECT*FROM 培训成绩
GO

图17 插入培训成绩数据

3.4.4 创建索引
USE 员工培训
GO
1、员工信息表创建的非聚集索引。
CREATE
NONCLUSTERED INDEX IX_姓名
ON 员工信息(姓名 ASC)
GO
CREATE
NONCLUSTERED INDEX IX_电话号码
ON 员工信息(电话号码 ASC)
GO
CREATE
NONCLUSTERED INDEX IX_身份证号
ON 员工信息(身份证号 ASC)
GO

图18 建立员工信息表索引

培训课程表创建的非聚集索引。
CREATE NONCLUSTERED INDEX IX_工号
ON 培训课程(工号 ASC)
GO
CREATE NONCLUSTERED INDEX IX_课程号
ON 培训课程(课程号 ASC)
GO
CREATE NONCLUSTERED INDEX IX_课程名
ON 培训课程 (课程名 ASC)
GO

图19 建立培训课程表索引

3、培训成绩表创建的非聚集索引。
CREATE NONCLUSTERED INDEX IX_工号
ON 培训成绩 (工号 ASC)
GO
CREATE NONCLUSTERED INDEX IX_课程号
ON 培训成绩(课程号 ASC)
GO

图20 建立培训成绩表索引

3.4.5 创建视图
USE 员工培训
GO
1、创建一个员工信息管理的视图。
CREATE VIEW VIEW_员工信息
AS
SELECT 员工信息.工号,姓名,性别,部门名称,职称
FROM 员工信息,部门信息
WHERE 员工信息.工号=部门信息.工号
GO
2、创建一个部门信息管理的视图。
CREATE VIEW VIEW_部门信息
AS
SELECT 部门号,部门名称,COUNT(部门号) AS 部门人数
FROM 部门信息
group by 部门号,部门名称
GO
3、创建一个培训课程管理的视图。
CREATE VIEW VIEW_培训课程
AS
SELECT 员工信息.工号,姓名,课程号,课程名,培训教授
FROM 员工信息,培训课程
WHERE 员工信息.工号=培训课程.工号
GO
3.4.6 查询功能
USE 员工培训
GO
1、根据姓氏查出人员的信息。
SELECT *
FROM 员工信息
WHERE 姓名 LIKE’唐%’
GO

图21 姓氏查询信息

2、根据课程号查出员工,课程的信息。
SELECT 员工信息.工号,姓名,课程号,课程名,培训教授
FROM 员工信息,培训课程
WHERE 员工信息.工号=培训课程.工号 and 课程号=‘103’
GO

图22 课程号查询信息

根据课程号查出成绩信息。
SELECT 培训课程.工号,培训成绩.课程号,成绩
FROM 培训课程 LEFT JOIN 培训成绩
ON 培训课程.工号=培训成绩.工号 and 成绩=(SELECT MIN(成绩) AS 最低成绩
FROM 培训成绩
WHERE 课程号=培训课程.课程号)
GO

图23 课程号查询成绩

查出培训成绩不合格的员工信息。
SELECT A.工号,姓名,B.课程号,课程名,成绩
FROM 员工信息 AS A,培训课程 AS B,培训成绩 AS C
WHERE A.工号=C.工号 and B.课程号=C.课程号 and 成绩<60
GO

图24 查询成绩不合格员工信息

3.4.7 创建存储过程
USE 员工培训
GO
1、创建带参数的存储过程,查询某个员工的工号,姓名,部门号,部门名,其培训的课程号和培训成绩。
CREATE PROCEDURE 员工 @工号 VARCHAR(10)
AS
SELECT 员工信息.工号,姓名,部门号,部门名称,课程号,成绩
FROM 员工信息,部门信息,培训成绩
WHERE 员工信息.工号=@工号 and 员工信息.工号=培训成绩.工号 and 员工信息.工号=部门信息.工号
GO
例如,查询’4156325412’的员工情况。
EXECUTE 员工 ‘4156325412’
GO

图25 查询’4156325412’的员工

2、创建带参数的存储过程,查询某个部门的部门号,部门名,部门电话,部门人数。
CREATE PROC 部门 @部门号 CHAR(5)
AS
BEGIN
SELECT 部门号,部门名称,部门电话,COUNT(部门号) AS 部门人数 FROM 部门信息
WHERE 部门号=@部门号
GROUP BY 部门号,部门名称,部门电话
END
GO
例如,查询’1101’的部门信息。
EXEC 部门 ‘1101’
GO

图26 查询’1101’的部门信息

存储过程的截图如下:

图27 存储过程

3.4.8 创建触发器
为员工信息表创建一个简单的DML触发器,在插入和修改数据时都会自动提示信息。
USE 员工培训
GO
CREATE TRIGGER REMINDER ON 员工信息
FOR INSERT,UPDATE
AS PRINT ‘你在插入或修改员工信息的数据’

图28 创建触发器

将姓名为‘付文文’的员工的名字改为‘付文’。
UPDATE 员工信息 SET 姓名=‘付文’ WHERE 姓名=‘付文文’

图29 修改员工姓名

4.总结
  该员工培训管理系统建立了员工信息表,部门信息表,培训课程表,培训成绩表。该系统建立了员工信息表,培训课程表和培训成绩表的索引,加快了管理员想要查询数据的检索速度,建立了员工信息表,部门信息表和培训课程表的视图,可以聚焦特定数据,简化数据操作,使数据有了一定的安全性。该系统建立了存储过程,存储过程可以使用户对数据库的管理工作变得更容易。当用户要插入或者修改数据时,触发器就会自动触发执行。该系统可以实现对人员参与信息,部门相关信息,课程和成绩相关信息的查询,并输出正确查询结果。
经过在校对于数据库这门学科的学习,我对于数据库建立过程有了新的认识和了解。建立数据库取决于用户的需求。在建立员工培训的数据库时候,由于对于查询的数据有不足的认识,导致多次对表进行删改。在建立表的过程中,我认识到该过程中要考虑到很多东西,例如数据类型,数据长度以及对主外键的设置等等。在这个实践过程中,让我对课本上的内容有了更深刻的认识。
创建该员工培训管理系统后,发现还有很多地方可以完善。比如,在建表时,培训课程表可添加上课时间,培训地点,以及培训时间或者课程的时长。员工信息可添加入职时间,工资,工龄等等。在创建视图时,可创建多个供检索视图完成查询的操作,创建的视图数量还很少,用户查询数据时在方便快速方面并不明显。由于对于该员工培训管理系统,如果数据过多,可能达不到简洁效果,因此并没有在原基础上增加一些数据内容,更加清晰其存储结构。
虽然该员工培训管理系统没达到尽善尽美,但是该员工培训管理系统的创建丰富了我的实践经历,使我在考虑问题方面更加全面,让我对数据库相关知识有了更深刻的理解和感悟。

主要参考文献
[1] 赛英. 数据库原理与应用(第2版) [M],北京:经济科学出版社,2010.
[2] 刘金岭、冯万利、周泓主编.数据库系统与应用实验与课程设计指导—SQL Server 2008.清华大学出版社,2020年9月第2版.
[3] 王红.数据库开发案例教材(SQL Server 2008+Visual Studio 2010综合开发) [M],北京:清华大学出版社,2013.
[4] 尹志宇、郭晴主编. 数据库原理与应用教程——SQL Server 2008.清华大学出版社,2017年1月第2版.

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值