《数据库系统原理》课程设计人事管理系统设计 .doc
山西农业大学资源环境学院数据库系统原理课程设计课程设计题目 人事管理系统设计 班级 课程设计小组成员:姓名 学号姓名 学号姓名 学号姓名 学号 授课教师 指导教师 组 长 2011年12月 23 日 目 录1 系统功能概述12 需求分析阶段12.1 信息需求分析22.2 功能需求分析22.3 数据流程图23 数据字典34 概念结构75 逻辑设计116 物理设计127 用SQL实现138 查询与测试结果209 课程总结251 系统功能概述一个正常运行的公司必定有一个健全的人事管理系统,人事管理系统可以有条不紊的管理一个企业的所有员工的方方面面的信息,更加促进和更加方便公司的其他管理方面的工作。来管理员工的信息,包括员工的编号,姓名,参加工作时间,职称,出生年月,所在部门等情况,除了这些基本的用处外,此系统还提供如下功能:对员工基本信息表的新建、输入、修改、查询、删除等功能,以及以不同类别统计符合条件的员工信息、查询、统计的结果打印输出等功能,使公司的人事管理既方便快捷而又清晰。面对各类不同的信息,需要合理的数据库结构来保存数据信息以及有效地程序结构来支持各类数据操作的执行。我们现在介绍的这个人事管理系统是一个非常通用的管理系统,它讲述如何建立一个公司的人事管理系统,它可以将关于员工的一切信息记录在案,并且对其进行输入、修改、查询、删除,大大提高了公司员工管理的工作效率。2 需求分析阶段需求分析的过程可以说是一个对具体问题的反复理解和抽象的过程。理解就是对现实问题的理解,要弄清楚究竟需要解决什么问题。抽象就是除去问题的表面,提取问题的本质,建立问题的逻辑模型,以便于以后阶段的系统的设计实现。需求分析阶段是软件产品生存命期中的一个重要阶段,其根本任务是确定用户对软件系统的需求。所谓需求是指用户对软件的功能和性能的要求,就是用户希望软件能什么事情,完成什么样的功能,达到什么性能。此次课程设计的使用者是企业的员工,主要是针对系统的管理员。其进行的操作就是对公司员工、部门等一些方面改动的改善。人事管理是企业管理的一个重要内容,随着时代的进步,企业也逐渐变得庞大起来,如何管理好企业内部员工的信息,成为企业管理中一个重要的问题。在这种情况下,一个可以规模化、自动化的企业人事管理系统就显得非常重要。最初的人事管理,都是靠人力来完成的。当企业规模比较小的时候,人力可以完成,随着企业规模越来越大,企业员工的人数越来越多,依然维持着人力进行管理必然会造成工作效率低,工作错误也多等诸多问题。人事管理系统就是把分散的企业单位员工信息实行统一,规范,集中的收集管理,建立分类编号管理,电脑存储查询、添加、删除、修改等功能,这样大大提高了公司的工作效率。由此对员工需求分析如下:2.1 信息需求分析(1)员工基本信息:员工编号,姓名,参加工作时间,职称,出生年月,部门号; (2)员工学历信息:学历编号,学历,专业,毕业学校,毕业时间;(3)员工婚姻信息:姓名,身份证号,有无配偶;(4)部门信息:部门号,部门名称,部门经理;(5)管理员信息:管理员编号,姓名,密码,权限。2.2 功能需求分析(1)员工信息管理功能:管理员工的相关信息,包括员工信息的查询、添加、删除,以及个人信息的修改;(2)请假管理功能:对员工请假的记录进行统一编号;对员工的请假具体时段,请假原由进行记录;(3)部门管理功能:对公司所有的部门进行编号,建立部门记录。2.3数据流程图 顶层数据流程图 查询信息流程图3 数据字典数据字典一般应包括对数据项、数据结构、数据流、数据存储和数据处理的说明,下面是本系统的主要数据字典的描述:主要数据项的定义(1)数据项名称:员工编号 含义说明:唯一标识每个员工 别名:员工流水号 类型:字符型 长度:10 取值范围:0000000000至9999999999 取值含义:前4位表示该员工参加工作年份,中间2位标识该员工所在 部门,后4位按顺序编号 (2)数据项名称:部门号含义说明:唯一标识每个部门别名:部门流水号类型:字符型长度:10取值范围:0000000000至9999999999取值含义:前4位表示建立该部门的时间,中间2位表示该部门的级别,后4位按顺序编号. (3)数据项名称:管理员编号含义说明:唯一标识每个管理员别名:管理员流水号类型:字符型长度:10取值范围:0000000000至9999999999取值含义:前4位表示参加工作年份,后6位按顺序编号 (4)数据项名称:培训编号含义说明:唯一标识培训人员别名:培训人员流水号类型:字符型长度:10取值范围:0000000000至9999999999取值含义:前8位表示参加培训年月日,后2位按顺序编号(5)数据项名称:学历编号 含义说明:唯一标识员工的学历 别名:学历流水号 类型:字符型 长度:10 取值范围:AAA0000000至ZZZ9999999 取值含义:前3位表示,后4位按顺序编号 与其他数据项的逻辑关系:主要数据流定义:(1)数据流名称:员工情况 定义:员工编号+姓名+参加工作时间+职称+出生年月+部门号 数据流量:根据公司的员工具体录用情况来确定 说明:要对每一位被聘用的新员工进行唯一编号 (2)数据流名称:培训情况 定义:培训情况=员工编号+培训编号+培训时间+培训内容+培训项目 数据流量:根据公司的具体情况来确定 说明:根据员工编号和培训编号可以唯一确定一个培训记录(3)数据流名称:岗位情况 定义:岗位情况=员工编号+岗位+职务 数据流量: 根据公司的具体情况来确定 说明:要对每一个员工的岗位记录确定岗位的人数需求(4)数据流名称:管理员情况 定义:用户身份=员工编号 数据流量:根据公司的具体情况来确定 说明:要对每一位管理员建立唯一的账号(5)数据流名称:部门情况 定义:部门情况=部门号+部门名称+部门经理 数据流量:根据公司的具体情况来确定 说明:部门号是主码主要数据存储的定义(1)数据存储编号:员工记录 数据结构:员工记录=姓名+性别+出生日期+名族+学历+职称+员工编号 数据量和存取频度:根据公司的具体情况来确定 说明:员工编号具有唯一性和非空性,性别只能是男生或者女生,主码是员工编号(2)数据存储编号:岗位记录数据结构:岗位记录=员工编号+姓名+岗位+职务+部门号数据量和存取频度:根据公司的具体情况来确定说明:主码设为员工编号和部门号 (3)数据存储编号:请假记录数据结构:请假记录=员工编号+请假时段+请假原因数据量和存取频度:根据公司的具体情况来确定说明:主码设为员工编号(4)数据存储编号:培训记录数据结构:培训记录=员工编号+培训时间+培训项目+培训编号数据量和存取频度:根据公司的具体情况来确定说明:主码设为培训编号主要的处理过程:(1)处理过程名:岗位管理说明:为公司的员工安排岗位输入:员工情况和岗位情况输出:岗位安排处理说明:根据公司员工的具体情况和部门的情况为员工合理的安排岗位。 (2)处理过程名:请假管理说明:为公司的员工进行请假方面的处理输入:请假原因,请假时段,员工编号输出:请假记录处理说明:根据员工的的请假原因和请假时段进行请假表的登记。(3)处理过程名:培训管理说明:为新进公司的员工安排培训输入:员工情况,培训编号,培训时间,培训项目输出:培训记录处理说明:根据员工情况为员工进行特定的专业培训(4)处理过程名:部门管理 说明:公司增加或者删除一个部门,或者是部门调动以及人员调动等等输入:部门情况,部门记录输出:部门记录 处理说明:根据上级的调度,对现在部门的领导人进行调换,或者是增 加或删除某一部门. (5)处理过程名:学历管理说明:为员工记录学历信息 输入:学历编号,学历,专业输出:学历记录 处理说明:为了方便分派员工的岗位,所以记录每一个员工的学历信息。4 概念结构(ER图)Ø (1)员工基本信息表:Ø (2)工作岗位表:Ø (3)学历信息表:Ø (4)婚姻信息表:Ø (5)员工表:Ø (6)部门表:Ø (7)管理员表: Ø (8)请假情况表:Ø (9)员工培训表:Ø (10)总ER图:5 逻辑设计(将E/R模型转到关系模型) 员工基本信息(员工编号,姓名,参加工作时间,职称,出生年月,部门号)工作岗位(员工编号,岗位,职务)学历信息(学历编号,学历,专业,毕业学校,毕业时间)婚姻信息(身份证号,姓名,有无配偶)员工表(员工编号,姓名)部门信息(部门号,部门名称,部门经理)管理员表(管理员编号,姓名,密码,权限)请假情况表(员工编号,请假具体时段,请假原由)员工培训(培训编号,培训编号,培训项目,培训时间)组成(员工编号,部门号)管理(管理员编号,员工编号)拥有a(员工编号,学历编号,身份证号)6 物理设计(基于码建立索引)create unique index 员工名单 on 员工表(员工编号 Asc)create unique index 学历信息表 on 学历信息表(学历编号 Desc)create unique index 培训表 on 员工培训表(员工编号 Asc)create unique index 工作岗位名单 on 工作岗位表(员工编号 Asc)7 用SQL实现(表、关系图的建立)u 员工基本信息CREATE TABLE 员工基本信息(员工编号 char(10)foreign key references 工作岗位表PRIMARY KEY,姓名 varchar (50)NOT NULL,参加工作时间 char(10)NOT NULL,职称 varchar(50),出生年月 datetime(8),部门号 char(10)foreign key references 部门信息NOT NULL,CONSTRAINT 员工编号 check (员工编号>0 and 员工编号< 10000) u 学历信息CREATE TABLE 学历信息(学历编号char (10)PRIMARY KEY, 学历varchar(50)NOT NULL, 专业varchar(50)NOT NULL, 毕业学校varchar(50)NOT NULL, 毕业时间char (10)NOT NULL,CONSTRAINT学历编号 check(学历编号like 'A-ZA-ZA-Z0-90-90-90-9'))u 婚姻信息CREATE TABLE 婚姻信息(身份证号varchar(20)PRIMARY KEY,姓名varchar(30)NOT NULL,有无配偶varchar(10)NOT NULL,CONSTRAINT有无配偶CHECK (有无配偶 = '有' or 有无配偶 = '无'))u 工作岗位CREATE TABLE 工作岗位(员工编号char(10)PRIMARY KEY,岗位varchar(50)NOT NULL,职务varchar(50)NOT NULL,CONSTRAINT 员工编号 check (员工编号 > 0 and 员工编号 < 10000)u 部门信息CREATE TABLE 部门信息(部门号char(10)PRIMARY KEY,部门名称varchar(50)NOT NULL,部门经理varchar(50)NOT NULL,CONSTRAINT部门号CHECK (部门号 > 0 and 部门号 < 50))u 员工培训CREATE TABLE 员工培训( 培训编号char(10)PRIMARY KEY,员工编号char(10)NOT NULL foreign key references 员工表.员工编号,培训项目varchar(50)NOT NULL,培训时间varchar(50)NOT NULL,CONSTRAINT 培训编号CHECK (培训编号 > 0 and 培训编号 < 200))u 管理员表CREATE TABLE 管理员表(管理员编号char(10)PRIMARY KEY,姓名varchar(50)NOT NULL,密码char(10)NOT NULL,权限varchar(50)NOT NULL,CONSTRAINT 管理员编号CHECK (管理员编号 > 0 and 管理员编号 < 50))u 员工表CREATE TABLE 员工表(员工编号char(10)PRIMARY KEY foreign key references 拥有a.员工编号,姓名varchar(50)NOT NULL,CONSTRAINT 员工编号 check (员工编号 > 0 and 员工编号 < 10000))u 请假情况表CREATE TABLE 请假情况表(员工编号char(10)PRIMARY KEY foreign key references 员工表.员工编号,请假情况varchar(20)NOT NULL,请假原由varchar(50),请假时段char(50),CONSTRAINT 员工编号 check (员工编号 > 0 and 员工编号 < 10000) u 管理表CREATE TABLE 管理表(管理员编号char(10)PRIMARY KEY foreign key references 管理员表. 管理员编号,员工编号char(10)PRIMARY KEY foreign key references 员工表.员工编号)u 拥有a表CREATE TABLE 拥有a表(员工编号char(10) PRIMARY KEY,学历编号char(10) NOT NULL foreign key references学历信息表.学历编号,身份证号varchar(20) NOT NULL foreign key references婚姻信息表.身份证号)u 总体关系图9 查询与测试结果(1) 查询所有管理员的学历查询语句:select 管理表.管理员编号,学历from 学历信息表,拥有a,管理表where 管理表.管理员编号=拥有a.员工编号 and 学历信息表.学历编号=拥有a.学历编号(2)查询身份证号为121133198911233002的员工姓名查询语句:select 姓名from 员工基本信息where 员工编号 IN( select 员工编号 from 拥有a where 身份证号='121133198911233002')(3)查询信管专业毕业的员工名单 (姓名,职称,)查询语句:Select 姓名,职称From 员工基本信息Where 员工编号 IN (select员工编号 From学历信息表,拥有a Where专业=信息管理与信息系统and学历信息表.学历编号=拥有a.学历编号)(4)插入一条员工基本信息('00022','李刚','2011','会计','1989-11-03','005')和一条工作岗位('00022','会计员','负责工资核算')记录查询语句:insert into 工作岗位表values ('00022','会计员','负责工资核算')insert into 员工基本信息values ('00022','李刚','2011','会计','1989-11-03','005')(5)查询山西农大毕业的员工表(姓名,岗位,职务)查询语句:select 姓名,岗位,职务from 员工表,工作岗位表where 工作岗位表.员工编号 =员工表.员工编号 and 员工表.员工编号 in (select 员工编号from 学历信息表,拥有awhere 毕业学校='山西农业大学' And 学历信息表.学历编号=拥有a.学历编号)(6)查询员工中姓李的员工并且在统计部工作的员工名单查询语句:select 姓名from 员工基本信息where 姓名 like '李%'and 部门号=(select 部门号from 部门信息 where 部门名称='统计部')(7)把员工基本信息表与工作岗位表进行等值连接查询语句:select 员工基本信息.*,工作岗位表.*from 员工基本信息,工作岗位表where 员工基本信息.员工编号=工作岗位表.员工编号 (8)将员工基本信息表中员工编号为“00022”的员工姓名改为“紫淇”查询语句:update 员工基本信息set 姓名='紫淇'where 员工编号='00022'(9)查询参加工作时间在2000年后的姓名与职称组合表查询语句:SELECT 姓名,职称from 员工基本信息where 参加工作时间>2000(10)查询除管理员外所有存在请假记录的员工查询语句:select 员工编号from 请假情况表where 请假情况='有'and 员工编号 not in (select 员工编号from 管理表where 管理表.员工编号=管理表.管理员编号)8 课程总结由于在数据库的设计初期,没有对人事管理系统进行准确地需求分析,导致后期设计过程中的数据库的概念设计阶段无法进行。因此,通过此次数据库课程设计使学生认识到了需求分析对于软件系统设计的重要性。也认识到规范化的设计流程对于后期的设计来说,是十分重要的。前面的设计是后面的铺垫,只有对前面的设计过程进行准确地分析,才能节省整个系统的开发时间。最后,通过此次数据库课程设计使学生初步理解了简单数据库的一般开发流程,以及数据流图和E-R图等专业图形地绘制。课程设计是一个对学生实际工作能力的具体训练和考察过程。通过这次的课程设计,我们学到了很多很多的东西,同时不仅巩固了以前学过的知识,也学到了很多在书本上没有学到的知识。这次数据库课程设计经历了从选题、目录、摘要、前言、系统设计、需求分析、数据字典到E-R图设计,再到关系模型设计,最后建立数据库。在这其中我们组的每个成员通过查阅相关书籍和上网查一些相关资料,分工合作,进行了很多次大大小小的扩充和修改,使数据结构和内容更趋于完善。通过这次课程设计,我们收益颇深,感受深刻,虽然我们这次设计可能做得不够好,但是为我们以后的数据库设计打下了很好的基础,在做这次课程设计的过程中,我们每个人都很努力,最终我们达成了共识并且顺利的完成了这次设计。