资源描述
人事管理系统
数据库SQL__课程设计(汇报)
A:摘要:
为了能设计一个提升人事系统工作效率管理系统,使其人事信息能够规范化管理、而且能够实现科学统计人事资料,关键是能够快速查询,降低管理方面工作量。特用SQL Server设计一个人事管理系统,意在体会其在现实生活中应用。
1、该系统基础功效:
Ø 职员多种信息输入,包含职员基础信息、学历信息、婚姻情况信息、职称等。
Ø 职员多种信息修改;
Ø 对于转出、辞职、解聘、退休职员信息删除;
Ø 根据一定条件,查询、统计符合条件职员信息;包含每个职员具体信息查询、按婚姻情况查询、按学历查询、按工作岗位查询等,同时也可实现按学历、婚姻情况、岗位、参与工作时间等统计各自职员信息;
2、数据库中所包含下列数据表:
Ø 用户基础信息表(用户名,用户号,密码,权限)
Ø 职员基础信息表(个人基础信息,进入企业时间,职员等级,基础工资,所在部门)等;
Ø 职员家庭情况表,反应职员家庭信息;
Ø 职员学历信息表,反应职员学历、专业、毕业时间、学校、外语情况等;
Ø 企业工作岗位表,反应基础名称所属部门信息;
Ø 企业部门信息表。反应部门名称等基础信息。
3、设计环境:
先导课程为:《数据库系统概论》。
设计环境和开发工具:
操作系统: WindowsVista
数据库管理系统:MySQL
开发工具: Java
B:目录:
目录
1 摘要 2
2 需求分析 4
2.1 业务需求分析 4
2.2 功效需求 4
2.3 数据需求 4
2.4 数据字典 5
3 数据库结构概念结构设计 6
3.1 数据结构和数据项 6
3.2 思维图 7
3.3 E-R图 8
4 数据库逻辑结构设计 9
5 数据步骤及程序结构框图 12
5.1 程序结构框图 12
5.2 数据步骤图 13
5.3 数据流定义 14
5.4 数据存放定义 14
5.5 关键处理过程 15
6 程序源代码及其说明总结 16
6.1 部分原代码 16
6.2 试验数据输入 18
6.3 图片展示 21
7 总结 23
8 致谢语 24
9 参考文件 24
C:需求分析:
C.1业务需求分析
背景资料:伴随企业规模不停扩大,职员数量急剧增加,相关职员多种信息也成倍增加.面对庞大信息量,一个好人事管理系统能够提升企业人事管理工作效率.经过这么系统,能够做到信息规范管理、科学统计和快速查询,从而降低管理方面工作量。为企业和职员带来便利。
C.2功效需求
在数据操作界面要有用户登陆窗口和信息操作(修改,删除,查询)窗口 功效列表
编号
功效名称
功效说明
1.1
用户登陆
用户输入用户名和密码登陆系统
1.2
用户添加
添加用户和对你添加用户权限进行设定
1.3
添加用户
添加新用户
1.4
删除用户
删除已经有用户息
2.1
职员信息管理
查询职员基础信息,修改职员基础信息
2.2
部门信息管理
查询修改部门基础信息
2.3
工作岗位信息管理
对工作岗位进行相关操作
C.3数据需求
系统处理对象有(大致):
a:用户信息:用户名,密码,权限。
b:职员信息:职员进入企业时间、职员等级、职员基础工资、职员所在部门和职员其它基础信息等
c:工作岗位信息:岗位名称,岗位等级,工资范围,所属部门等
d:企业部门信息:部门信息,责任人等
C.4数据字典
数据项名称
数据项描述
数据项类型
主码
User_ID
用户编号
int
√
User_Name
用户姓名
char(20)
Password
用户密码
char(20)
√
Popedom
用户权限
char(20)许可为空
D_Number
部门编号
Char(4)
√
D_Name
部门名称
char(20)
D_Count
部门所含岗位数
int
D_Chief
部门责任人
int
√
P_Name
岗位名称
char(20)
P_Number
岗位编号
int
√
P_Rank
岗位等级
char(20)
P_Department
所属部门
char(20)
√
P_Count
岗位人数
int
P_Wage
工资范围(max&min)
int
E-Number
职员编号
int
√
E_Name
职员姓名
char(30)
E_Sex
职员性别
char(2)
E_BornDate
职员出生日期
char(30)
E_Marriage
职员婚姻情况
char(4)
E_PoliticsVisage
职员政治面貌
char(20)
E_Phoen
职员联络电话
int
√
E_SchoolAge
职员学历
char(20)
E_Specialty
职员专业
char(20)
E_Graduate
职员毕业时间
char(30)
E_School
职员毕业学校
char(20)
E_FL
职员外语情况
char(20)
E_EnterDate
职员进入企业时间
char(30)
E_InDueFormDate
职员转正时间
char(30)
E_Department
职员部门
char(20)
E_Headship
职员职务
char(20)
E_Estate
职员状态
char(10)
E_Remark
职员备注
char(500)
E_Rank
职员等级
char(20)
E_BassicWage
职员基础工资
int
E_Family
职员家眷姓名
char(20)
E_Address
职员住址
char(20)
E_Relation
和职员关系
char(20)
D:数据库概念结构设计:
经过需求分析,可确定系统数据项和数据结构以下:
1:用户基础信息表(User):姓名,编号,密码,权限
2:职员基础信息表(Employment):姓名,编号,性别,婚姻情况,进入企业时间,转正时间,部门, 职务,状态,备注,等级,基础工资
3:职员家庭信息表(Family):编号,出生年月,联络电话,住址,家眷姓名,和职员关系
4:职员学历信息表(Schooling):编号,毕业学校,毕业专业,学历,毕业时间,外语情况,政治面貌
5:企业工作岗位表(Post):名称,编号,等级,所属部门,工资mix,工资min
6:企业部门信息表(Department):名称,编号,所含岗位数,部门责任人
概念结构设计
E-R模型:
User
严禁访问!
YES?
更新管理
只限统计
只限查询
只限浏览
职员学历表
职员信息表
岗位表
部门表
职员家庭信息表
上幅图是指:假如用户有“只限浏览权”,则只能 对部门表浏览,以这类推(思维图)
下幅是各实体之间E-R图:
性别
转正时间
进入企业时间
婚姻情况
编号
姓名
等级
状态
职务
部门
基础工资
职员基础信息表
编号
毕业院校
学历
编号
等级
职员
工作
备注
名称
政治面貌
外语情况
毕业专业
职员学历表
工作岗位表
编号
出生年月
毕业时间
职员家庭信息表
Mix
编号
部门表
Min
住址
联络电话
部门
责任人
岗位数
家眷姓名
和职员关系
编号
名称
E-R图
上幅图是完整E-R图:用户数据基础信息不含在这个E-R图中,因为,用户只是一个窗口,当她满足一些条件,才能进入者个关系模式,并进行对应操作,假如她不满足程序所要求任何条件,这个关系模式对其是屏蔽,用户数据也有其自个儿数据库,不过我在这个课程设计没相关键讨论,用对应编程让其和E-R相联络起来。
E:数据库逻辑结构设计:
a:用户基础信息表(User)
User_Name
User_ID
Password
Popedom
(浏览)
Popedom
(查询)
Popedom
(统计)
Popedom
(更新)
总理1
01001
********
√
×
×
×
总理2
01002
********
√
√
√
×
总理3
01003
********
√
√
√
√
责任人1
0
********
√
√
×
×
责任人2
0
********
√
×
√
×
责任人3
0
********
√
×
×
×
管理人1
03001
********
√
√
√
√
管理人2
03002
********
√
√
×
×
管理人3
03003
********
√
×
×
×
·····
······
********
√
×
√
×
·····
······
********
√
×
√
×
b:职员基础信息表(Employment)
E_Name
E-Number
E_Sex
E_Marriage
E_EnterDate
E_InDueFormDate
E_Department
01000001
女
未婚
.09.12
.12.29
A
0003
女
已婚
.09.12
.12.29
B
03000004
女
已婚
.09.12
.12.29
C
04000002
女
未婚
.09.12
.12.29
D
····
·······
···
·······
········
··············
···········
····
·······
···
·······
········
··············
··········
接上:
E_Headship
E_Estate
E_Remark
E_Rank
E_BassicWage
A01001
在职
无
1
6000
B0
在职
无
2
5000
C01001
不在职
休假
3
4000
D01001
在职
无
4
5500
·····
··
···
····
·····
··
···
····
c:职员家庭信息表(Family):
E-Number
E_BornDate
E_Phoen
E_Address
E_Family
E_Relation
01000001
1990.09.07
北京良乡
马**
姐姐
0003
1990.10.25
北京海淀
刘**
母亲
03000004
1989.10.09
北京朝阳
***
***
04000002
1989.10.05
北京顺义
***
***
********
*********
***********
****
***
***
********
*********
***********
****
***
***
d:职员学历信息表(Schooling)
E-Number
E_School
E_Specialty
E_SchoolAge
E_Graduate
E_FL
E_PoliticsVisage
01000001
北京工商
软件工程
本科
.06.12
西班牙语
党员
0003
北京工商
软件工程
本科
.06.12
英语
党员
03000004
北京工商
软件工程
硕士
.06.12
法语
团员
04000002
北京工商
软件工程
本科
.06.12
英语
团员
********
*********
***********
****
***
***
***
********
*********
***********
****
***
***
***
e:企业工作岗位表(Post):
P_Name
P_Number
P_Rank
P_Department
P_Count
P_Wage(mix)
P_Wage(min)
CEO
A01001
1
A
3
10000
6000
总监
B0
2
B
5
10000
5000
组长
C01001
3
C
2
8000
4000
部长
D01001
4
D
1
8000
5000
********
*********
***********
****
***
***
***
********
*********
***********
****
***
***
***
f:企业部门信息表(Department):
D_Name
D_Number
D_Count
D_Chief
管理
A
10
01000001
培训
B
5
0003
销售
C
8
03000004
财务
D
20
04000002
设计
E
9
********
开发
F
12
********
***
***
***
********
***
***
***
********
F:数据步骤及程序结构框图:
Admin
人事管理系统
更新!
岗位表
职员信息表
用户表
统计
部门表
职员学历表
查询!@
职员家庭情况
浏览
1:以上是程序结构图
D1 职员档案
P1
档案管理
职员
D6 管理人员统计
管理员情况
P6
安全管理
管理员
工资查询
发工资
P4
工资管理
D4 工资统计
职员
职员情况
上级
职员
P3
调动管理
D3 职务调动统计
上级
职员对应编号
P2
岗位管理
D2 岗位统计
职员
调动
用户身份
用户
身份
用户身份
部门情况
P5
部门管理
D5 部门统计
上级
工资在档案表里
调动在档案表里
2:以上是数据步骤图图中虚线表示数据流是职员信息
(1)关键数据流定义
1)数据流名称:职员情况
位置:职员→P1。
定义: 职员情况=姓名+编号+性别+婚姻情况+部门+基础工资+职务······ 。
说明:要对每一位被聘用新职员进行唯一编号。
2)数据流名称:调动情况
位置:P3→职员
定义: 调动情况=职员号+调动前职务+调动后职务+调动日期。
说明:职员号和调动日期(备注)能够唯一确定一个调动情况。
3)数据流名称:工资查询
位置:P4→职员
定义: 工资查询=职员号+基础工资。
说明:依据职员号能够唯一确定一个工资统计。
4)数据流名称:管理员情况
位置:管理员→P6
定义: 用户身份=职员编号。
说明:要对每一位管理员建立唯一账号。
5)数据流名称:用户身份
位置:安全管理→{P1,·······}
定义: 用户身份=[ 责任人 | 总理 | 管理人|······]
说明:不一样用户身份对应不一样操作权限,对应着不一样安全等级。
6)数据流名称:部门情况
位置:上级→部门情况
定义: 部门情况=部门号+部门名称+责任人编号
说明:部门号是主码。
(2)关键数据存放定义
1)数据存放编号:职员统计 D1
输入:P1
输出:P1,P3,P4,P5,P6
数据结构:职员统计=姓名+性别+婚姻情况+基础工资+职务+部门 +职员编号。
存取方法:检索和更新。
说明:职员编号含有唯一性和非空性;性别只能是男或女;主码是职员编号。
2)数据存放编号:管理人员统计 (用户)D6
输入:P6
输出:P6
数据结构:管理人员统计=用户号+密码+账号+权限。
存取方法:检索和更新;以检索操作为主。
说明:主码用户设为账号。
3)数据存放编号:部门统计 D5
输入:P5
输出:P5
数据结构:部门统计=部门号+部门名称+责任人+所含岗位数。
存取方法:检索和更新;以检索操作为主。
说明:主码设为部门号。
(3)关键处理过程
1)处理过程编号:P1
处理过程名:档案管理
输入:用户身份,职员统计,职员情况
输出:职员统计
处理说明:依据职员聘用、解聘建立或删除职员统计,和在后续过程中,以管理员身份对职员统计进行修改。
2)处理过程编号:P4
处理过程名:工资管理
输入:用户身份,工资统计
输出:工资统计,工资查询
处理说明:依据职员现在工资情况,进行调薪操作。
3)处理过程编号:P3
处理过程名:调动管理
输入:用户身份,职务调动统计
输出:职务调动统计,调动情况
处理说明:更改职员职务信息。
4)处理过程编号:P6
处理过程名:安全管理
输入:管理员情况
输出:D6, P1
处理说明:建立管理人员(用户)统计表;经过用户名和口令,确定用户身份,确保系统安全性。
5)处理过程编号:P5
处理过程名:部门管理
输入:部门情况,部门统计
输出:部门统计
处理说明:依据上级调度,对现在企业部门进行领导人调换,或是增加或删除某一部门。
G:程序源代码及其说明:(部分)
create database HAMS /*HAMS:人事管理系统human affairs manage system*/
on primary
(
name= HAMS,
filename='D:\MySQL\MYR_ HAMS.mdf',
size=10,
filegrowth=10%,
maxsize=50
)
log on
(
name= HAMS _Log,
filename='D:\SQL\ HAMS_Log.ldf',
size=5,
filegrowth=10%,
maxsize=10
)
go
create table Department
(
D_Number Char(4) primary key,
D_Name Char(20) not null,
D_Count int not null,
D_Chief int not null,
)
go
create table User
(
User_ID int primary key,
User_Name Char(20) not null,
Password Char(20) not null,
Popedom(浏览) Char(2),
Popedom(查询) Char(2),
Popedom(统计) Char(2),
Popedom(更新) Char(2),
)
go
create table Employment
(
E_Name Char(30) not null,
E-Number int primary key,
E_Sex char(2) not null,
E_Marriage char(4),
E_EnterDate char(30),
E_InDueFormDate char(30) ,
E_Department char(20) not null,
E_Headship char(20) not mull,
E_Estate char(10) ,
E_Remark char(500),
E_BassicWage int,
E_Rank int not null,
)
go
create table Family
(
E-Number int primary key,
E_BornDate char(30),
E_Phoen int,
E_Address char(20),
E_Family char(20),
E_Relation char(20),
)
go
create table Schooling
(
E-Number int primary key,
E_School char(20),
E_Specialty char(20),
E_SchoolAge char(20),
E_Graduate char(30) ,
E_FL char(20) not null,
E_PoliticsVisage char(20)
)
go
create table Post
(
P_Number int primary key,
P_Name char(20) not null,
P_Rank int,
P_Department char(20),
P_Count int not null,
P_Wage max int not null,
P_Wage min int not null,
)
go
/*索引建立*/
create uniqe index D_Chief _index on Department (D_Chief);
create index E_BassicWage_index on Employment (E_BassicWage);
create index E-Number _index on Employment(E-Number ASG);
create cluster index User_ID _index on User(User_ID );
go
试验数据输入
MySQL上建立“HAMS”数据库,输入少许试验数据。
一:
insert into User
values('01001','总理1','123456','√','×', '×','×');
insert into User
values('01002','总理2','654321','√', √', '√','×');
insert into User
values('01003','总理3','567890','√','√', '√','√');
insert into User
values'0','责任人1','098765','√','√', '×','×');
insert into User
values('0','责任人2','811253','√','×', '√','×');
insert into User
values('0','责任人3','352118','√','×', '×','×');
insert into User
values('03001','管理人1','111222','√','√', '√','√');
insert into User
values('03002','管理人2','3333444','√','√', '×','×');
insert into User
values('03003','管理人3','888999','√','×', '×','×');
二:
insert into Employment
values('***', '01000001','女','未婚','.09.12','.12.29', ' A ',' A01001',' 在职','无','6000','1');
insert into Employment
values('***' , '0003','女','已婚','.09.12','.12.29', ' B ',' B0',' 在职','无','5000','2');
insert into Employment
values('***', '03000004','女','未婚','.09.12','.12.29', ' C ',' A01001',' 在职','无','4000','3');
insert into Employment
values('***', '04000002','女','未婚','.09.12','.12.29', 'D ',' A01001',' 在职','无','5500','4');
三:
insert into Family
values('01000001','1990.09.07','','北京良乡', '马**','姐姐');
insert into Family
values('0003','1990.10.25','1512464','北京海淀','刘**', '母亲');
insert into Family
values('03000004','1989.10.09','','北京朝阳','***', ' *** ');
insert into Family
values( '04000002','1989.10.05','','北京顺义','***', '*** ');
四:
insert into Schooling
values('01000001','北京工商','软件工程','本科','.06.12', ' 西班牙语 ',' 党员');
insert into Employment
values(' '0003','北京工商','软件工程','本科','.06.12', ' 英语 ','党员');
insert into Employment
values('03000004','北京工商','软件工程','硕士','.06.12', ' 法语','团员');
insert into Employment
values('04000002','北京工商','软件工程','本科','.06.12', '英语','团员');
五:
insert into Post
values('CEO',' A01001','1','A','3', '10000 ','6000');
insert into Post
values('总监',' B0','2','B,'5', '10000 ','5000');
insert into Post
values('组长',' C01001','3','C,'3', '8000 ','4000');
insert into Post
values('部长',' D01001','4','D','1', '10000 ','5000');
六:
insert into Department
values('A','管理','10',' A01001 ');
insert into Department
values('B','培训','5',' B0');
insert into Department
values('C','销售','8',' C01001 ');
insert into Department
values('D','财务','20',' D01001 ');
insert into Department
values('E','设计','9',' E01008 ');
insert into Department
values('F,'开发','12',' F01010 ');
图片展示:
H:总结:
当初在数据库设计早期,没有对人事管理系统进行正确地需求分析,造成后期设计过程中数据库概念设计阶段无法进行。所以,又回头重新画逻辑图,然后再修改添加,前期工作做很麻烦,也让我深刻认识到了需求分析对于系统设计关键性。也认识到规范化设计步骤对于后期设计来说,是十分关键。只有对前面设计过程进行正确地分析,思绪清楚,才能节省整个系统开发时间。
这次试验感慨最深还是老师开课时告诉我们:数据库建设是硬件、软件结合,三分技术,七分管理,十二分基础数据。设计先不说麻烦,这个管理起初让我焦头烂额,尤其是在刚开始设计时,无从下手····其实我试验已经设计尽可能少表了,刚开始设计时,表很多,一对多表在整个过程中浪费了很多时间还有空间,就在好好画逻辑图,找到多个中间表和关系表联络起来,这么就只用维护这多个小表就行了,节省了不少时间。
还有一个关键东西——索引!索引创建我是在系统开发完成,测试阶段,依据查询该表全部SQL语句进行设计。因为数据较少,建立之间和以后,查询速度改变感觉不显著,不过,假如数据很多,就能够大大加紧查找速度。
I:致谢语:
老师在作业部署之初就强调要自己完成,诚信应该是我们必需一直坚持着这个信念。
这多个新期多种考试,时间紧,写课设时间也相对降低了很多,不过,课设提交时间也越来越近。这个新期除了上课,我就在图书馆写课设,我课设准备时间很短,我知道假如从网上找一篇改改很轻易,不过我认为我们已经大三,这种学生认识完成一门作业感觉以后进入社会极少在能感受了,所以坚持自己动手,做完以后,也看了同宿舍女孩课设,认为自己课设真还有很多缺点,不过从中体会到了知识,管理技术,即使成品不完美,我也很欣慰,因为这个新期花很值!
我要感谢黄金慧老师在我论文过程中给指导,和对于我们部分同学迟交论文放宽,还有在我们写论文过程中对我们督促。我还要感谢我同宿舍女孩帮我一起处理了很多安装软件时碰到困难。
J:参考文件:
1 王珊. 数据库系统概论(第四版).北京:高等教育出版社,
2 PowerBuilder 7.0 帮助文件 pbgswin.pdf
(在文件夹C:\Program Files\Sybase\PowerBuilder 7.0\hlp\)
3 Adaptive Server Anywhere 全部帮助文件
(在文件夹C:\ Program Files\Sybase\Adaptive Server Anywhere\win32)
4:MySQL帮助文档。
5:Java帮助文档。
性别
转正时间
进入企业时间
婚姻情况
编号
姓名
等级
状态
职务
部门
基础工资
职员基础信息表
编号
毕业院校
学历
编号
等级
职员
工作
备注
名称
政治面貌
外语情况
毕业专业
职员学历表
工作岗位表
编号
出生年月
毕业时间
职员家庭信息表
Mix
编号
部门表
Min
住址
联络电话
部门
责任人
岗位数
家眷姓名
和职员关系
编号
名称
展开阅读全文