西电数据库基础结课作业.docx
《西电数据库基础结课作业.docx》由会员分享,可在线阅读,更多相关《西电数据库基础结课作业.docx(30页珍藏版)》请在冰豆网上搜索。
西电数据库基础结课作业
摘要
人事管理是现代企业管理中重要的组成部分。
随着数据库技术的迅速发展,企业人事管理数据库系统为企业人事管理提供了高效,可靠的支持,它能够为存储,查询人事数据提供充足的信息和快捷的查询手段。
本管理系统的设计结合企业人事管理制度,经过网络查询总结需求分析,采用SQLSERVER2005数据库承载人事管理中的所有信息,使用VisualStudio2010作为开发平台,运用MFC开发界面,ODBC技术实现系统界面与SQLSERVER数据库连接,实现了简单的人事管理系统功能,可以对企业人事管理中的员工,部门,员工职务调动,奖惩,考勤,工资等管理信息进行添加,删除,修改,查找,实现企业人事管理自动化,方便使用者对企业人事数据进行管理。
关键词:
人事管理系统SQLSERVER2005数据库SQL语句数据库设计
一.引言:
人事管理是有关人事方面的计划,组织,指挥,协调,信息和控制等一系列管理工作的总称。
通过科学的方法,正确的用人原则和合理的管理制度,协调人与人、人与事、人与组织的关系,谋求对工作人员的体力、心力和智力做最适当的利用与最高的发挥,并保护其合法的利益。
随着经济的发展,企业竞争也越来越激烈。
如何提高员工效率,成为企业
面临的一个重要问题。
如今计算机技术高速发展,信息化迅速蔓延,一个现代化的企业想要生存和发展,必须跟上信息化的步伐,用先进的信息化技术来为企业的管理节约成本、制定规划。
而人才作为企业生存和发展的根本,在企业的管理中始终占有着重要的地位。
对企业的人才进行良好的人事管理既有助于企业高层和人事管理人员动态、及时地掌握企业的人事信息,制定人才招聘和发展规划,也有利于企业优化改革,精简机构,最终实现人事管理的信息化建设。
二.需求分析:
为了达到更高的效益,现在企业对员工的管理效率越来越重视。
在一个企
业中,人员规模巨大,工作地点分散,人事管理所涉及的信息数据繁多复杂,特别是对于大型企业,所以就需要一个管理系统来协助HR处理这些繁杂的信息。
如从几千甚至几万个员工中查找一位员工的信息,通过自动化的管理系统仅需单击一下鼠标就可以了,这样可以大大提高效率。
(1)业务分析:
1.员工信息管理:
员工统一编号,信息还包括姓名、所属部门、性别、职位、身份证号。
2.部门管理:
各部门同一编号,每一部门信息还包括部门名称、部门描述、部门负责任信息。
3.员工职务调动管理:
同样对公司员工的职务进行统一编号;登记员工调动前后的具体职务,以及调动时间。
4.奖惩管理:
根据每个员工的编号登记奖惩原因和奖惩金额及奖惩月份。
5.考勤管理:
根据员工编号,登记员工每个月的全勤,出差,请假时日和加班迟到早退信息。
6.工资管理:
对所有员工的每笔工资进行编号,记录工资记录表。
(2)功能需求分析:
根据一般人事管理的特点,需实现以下功能:
1.登录功能。
2.员工信息查询、修改功能。
3.员工职务调动信息查询、修改功能。
4.员工奖惩、考勤、工资信息查询及管理功能。
5.员工企业部门信息查询及管理功能。
三.系统界面设计:
通过ODBC技术实现系统界面与SQLSERVER数据库连接
四.数据库设计:
(1)概念设计:
整体E-R图:
(2)逻辑设计:
把E-R图转换成关系模式:
1.部门(部门编号+部门名称+部门简介+部门负责人);部门编号为主码
2.员工信息(员工编号+姓名+性别+民族+生日+政治面貌+文化程度+婚姻状况+籍贯+身份证号+工作证号+办公电话+手机号码+部门编号+职务+状态+工资+备注)员工编号为主码,部门编号为外码
3.职务调动信息(调动编号+员工编号+调动前职务+调动后职务+调动日期+批复部门号)调动编号为主码,员工编号为外码
4.奖惩信息(奖惩编号+员工编号+奖励事由+奖励金额+处罚事由+处罚金额)奖惩编号为主码+员工编号为外码
5.考勤信息(考勤月份+员工编号+全勤天数+出差天数+病假天数+事假天数+旷工天数+迟到时间+早退时间+…)考勤月份为主码,员工编号为外码
6.工资信息(工资编号+员工编号+基本工资+奖励金额+处罚金额+考勤月份)PS:
工资编号为主码,员工编号和考勤月份为外码
7.管理员信息(用户名+密码+用户类型)用户名为主码;
(2)物理设计:
1.具体表的结构设计:
部门:
编号
字段名称
数据结构
约束条件
1
部门编号
int
Notnullprimarykey
2
部门名称
varchar(40)
Notnull
3
部门职能描述
Varchar(400)
null
4
部门负责人编号
Char(3)
Notnull
用户管理:
编号
字段名称
数据结构
约束条件
1
用户名
Varchar(40)
Notnullprimarykey
2
密码
Varchar(40)
Notnull
3
用户类型(1-系统管理员,2-普通用户
tinyint
Notnull
家庭关系:
编号
说明
数据结构
约束条件
1
编号
tinyint
Notnullprimarykey
2
员工编号
int
Notnull
3
姓名
Varchar(50)
Null
4
性别
Char
(2)
Null
5
年龄
tinyint
Null
6
与本人关系
Varchar(20)
Null
7
工作单位
Varchar(40)
null
工作经历:
编号
说明
数据结构
约束条件
1
编号
tinyint
Notnullprimarykey
2
员工编号
int
Notnull
3
开始日期
Char(10)
null
4
终止日期
Char(10)
null
5
学校/单位名称
Varchar(50)
null
6
职务
Varchar(20)
null
员工:
编号
字段名称
数据结构
约束条件
1
员工编号
Char(4)
Notnullprimarykey
2
姓名
Varchar(50)
Notnull
3
性别
Char
(2)
null
4
民族
varchar(40)
null
5
生日
datetime
null
6
政治面貌
varchar(40)
null
7
文化程度
varchar(40)
null
8
婚姻状况
varchar(20)
null
9
籍贯
varchar(60)
null
10
身份证号
varchar(20)
null
11
办公电话
varchar(30)
null
12
手机号码
varchar(30)
null
13
部门编号
int
null
14
职务
varchar(20)
null
15
员工状态(1-在职,2-兼职,3,试用,4-离职,5-退休)
tinyint
null
员工调动:
编号
字段名称
数据结构
约束条件
1
调动编号
Char
(2)
Notnullprimarykey
2
员工编号
Char(4)
Notnull
3
调动前职务
Varchar(20)
Null
4
调动后职务
Varchar(20)
null
5
调动日期
Datetime
Null
6
批复部门编号
int
Notnull
奖惩:
编号
字段名称
数据结构
约束条件
1
奖惩编号
Char
(2)
Notnullprimarykey
2
员工编号
Char(4)
Notnull
3
奖励事由
Varchar(200)
Null
4
奖励金额
smallint
Null
5
处罚事由
Varchar(200)
Null
6
处罚金额
smallint
null
考勤:
编号
字段名称
数据结构
约束条件
1
考勤编号
Char(3)
Notnullprimarykey
2
考勤月份
Datetime
Notnull
3
员工编号
int
Notnull
4
全勤天数
Decimal(4,1)
Null
5
出差天数
Decimal(4,1)
Null
6
病假天数
Decimal(4,1)
Null
7
事假天数
Decimal(4,1)
Null
8
旷工天数
Decimal(4,1)
Null
9
法定休假天数
Decimal(4,1)
Null
10
迟到时间(分)
Tinyint
Null
11
早退时间(分)
Tinyint
Null
12
一类加班天数(法定节假日加班)
Int
Null
13
二类加班天数(周六或周日加班)
Int
Null
14
三类加班天数(日常加班)
Int
Null
工资:
编号
字段名称
数据结构
约束条件
1
工资编号
Char(3)
Notnullprimarykey
2
员工编号
Char(4)
Notnull
3
基本工资
money
Null
4
考勤月份
Datetime
Notnull
5
奖励金额
money
Null
6
处罚金额
money
null
2.T-SQL命令方式创建数据库文件、表、索引、联系和主键、外键等约束:
(1)创建数据库
)createdatabaseHrSys
ALTERDATABASEHrSyS
ADDFILE
(
NAME=HrSys_dat2,
FILENAME='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\HrSys_dat2.ndf'
SIZE=5MB,
MAXSIZE=100MB,
FILEGROWTH=5MB
)
LOGON
(
NAME='HrSys_LOG',
FILENAME='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\HrSys_log.ldf',
SIZE=3,
MAXSIZE=20,
FILEGROWTH=1
)
(2)创建表
useHrSys
createtable部门
(
部门编号intprimarykey,
部门名称varchar(40)notnull,
部门职能描述varchar(400),
部门负责人编号char(4)notnull,
)
createtable员工
(
员工编号char(4)primarykey,
姓名varchar(50)notnull,
性别char
(2),
民族varchar(40),
生日varchar(20),
政治面貌varchar(40),
文化程度varchar(40),
婚姻状况varchar(20),
籍贯varchar(60),
身份证号varchar(20),
办公电话varchar(30),
手机号码varchar(40),
部门编号intnotnull,
职务varchar(20),
状态tinyint,
工资decimal(9,2)
)
createtable考勤
(
考勤编号intprimarykey,
考勤月份datetimenotnull,
员工编号char(4)notnull,
全勤天数Decimal(4,1),
出差天数Decimal(4,1),
病假天数Decimal(4,1),
事假天数Decimal(4,1),
旷工天数Decimal(4,1),
法定休假日Decimal(4,1),
迟到时间Tinyint,
早退时间Tinyint,
法定假日加班Decimal(4,1),
周末加班Decimal(4,1),
日常加班Decimal(4,1),
)
createtable员工调动
(
调动编号char
(2)primarykey,
员工编号char(4)notnull,
调动前职务varchar(20),
调动后职务varchar(20),
调动日期char(10),
批复部门编号int
)
createtable工资
(
工资编号char(3)primarykey,
员工编号char(4)notnull,
基本工资money,
考勤月份datetimenotnull,
奖励金额money,
处罚金额money,
)
altertable工资
add总共资as基本工资+奖励金额-处罚金额
createtable用户管理
(
用户名varchar(40)PRIMARYKEY,
密码varchar(40)NOTNULL,
用户类型tinyintNOTNULL
)
insertintoUsersvalues('Admin','8888',1)
createtable奖惩
(
奖惩编号char(10)primarykey,
员工编号char(4)notnull,
奖励事由varchar(200),
奖励金额smallint,
处罚事由varchar(200),
处罚金额smallint,
)
reatetable家庭关系
(
家庭编号char
(2)primarykey,
员工编号char(4)notnull,
姓名varchar(50)notnull,
性别char
(2),
年龄tinyint,
与本人关系varchar(20),
工作单位varchar(40)
)
createtable工作经历
(
编号tinyintprimarykey,
员工编号char(4)notnull,
开始日期Char(10),
终止日期Char(10),
学校/单位名称Varchar(50),
职务Varchar(20)
)
3.创建索引
4.修改表来创建外键关系和约束
5.利用T-SQL命令增加、删除、修改数据
向表中增加属性列
修改、添加和删除数据
更新工资表的结果为
6.利用T-SQL命令进行数据的检索和统计
投影和选择
多表连接
选择在技术部或企划部的员工姓名和所在部门名称
选择总共资在4000元以上的员工编号,姓名,职务,工资和考勤月份信息
选择有信息存在员工表,家庭关系表,工资表的员工的编号、姓名、籍贯、家庭关系、与本人关系、基本工资信息
分组统计与HAVING
统计每个部门的男女人数
select部门编号,性别,count(*)as人数from员工
groupby部门编号,性别
选择基本工资在2500以上的员工
SELECT员工编号,avg(基本工资)FROM工资
groupby员工编号
havingavg(基本工资)>2500
子查询
选择没有信息在家庭关系表中的员工信息
SELECT*
FROM员工
WHEREnotEXISTS(SELECT*
FROM家庭关系
WHERE家庭关系.员工编号=员工.员工编号)
select员工编号,姓名,生日,籍贯,身份证号,职务,办公电话
from员工
whereEXISTS(SELECT*
FROM工作经历
WHERE员工.员工编号=工作经历.员工编号)
查询结果保存
select姓名,职务,办公电话,手机号码,调动前职务
intoB_INfo
from员工,员工调动
where员工.员工编号=员工调动.员工编号
select*fromB_INfo
7.利用SQL命令创建数据库视图
(1)基于单表的
建立视图员工常用信息
CREATEVIEW员工常用信息(员工编号,姓名,职位,办公电话,手机号码,部门编号)
AS
SELECT员工编号,姓名,职务,办公电话,手机号码,部门编号
FROMdbo.员工
sp_helptext员工常用信息
(2)包含多表连接的
建立视图员工考勤信息,员工基本信息考勤情况
CREATEVIEW员工考勤信息(员工姓名,职位,办公电话,旷工天数,事假天数,病假天数)
AS
SELECT姓名,职务,办公电话,旷工天数,事假天数,病假天数
FROMdbo.员工,dbo.考勤
WHERE(datename(yy,考勤月份)='2012')
sp_helptext员工考勤信息
(3)包含统计运算的
建立视图view1,查询所有职工的职工号、姓名、部门名和工资,并按部门名顺序排列;
createviewview1
as
selecttop50员工.员工编号,员工.姓名,部门.部门名称,工资.总工资
from员工,部门,工资
whereyear(考勤月份)='2011'
orderby部门名称
sp_helptextview1
建立视图view2,查询所有员工的员工编号、姓名和平均工资;
createviewview2
as
select员工.员工编号,员工.姓名,avg(基本工资)as平均工资from员工,工资
where员工.员工编号=工资.员工编号
GROUPBY员工.员工编号,员工.姓名
sp_helptextview2
(4)利用SQL对视图进行查询
8.对视图进行插入、删除、修改数据操作
插入:
删除:
修改:
9.编写一个自定义函数,将一个字符串作为自变量,返回颠倒顺序的字符串
带参数的函数,通过员工编号返回员工信息
createfunction员工情况(@个人编号varchar(4))
returnstable
as
return(select姓名,职务,办公电话
from员工
where员工编号=@个人编号)
select*from员工情况('4002')
五.评价与总结
人事管理系统是非常通用的管理信息系统,是企事业单位实现办公自动化的前提和基础。
一个公司要正常运作必定有一个健全的人事管理系统,来管理员工的信息,包括员工编号、姓名、性别、民族工资及奖惩考勤情况。
除此之外,系统还供查询个人和公共信息,对员工信息进行更改或删除,可以提高公司内部员工管理的工作效率,本人事管理系统能够满足部分实际工作中的需要和日常人事事务的处理,但还有许多不足。
人事管理工作种类繁多,还可根据实际需要添加合同管理,保险管理等模块。
通过本次数据库基础结课作业对人事管理系统的实施,是我对数据库技术及系统开发有了更深的认识,了解了SQLSERVER数据库的基本操作,学会了开发过程中开发平台与数据库的连接技术。
由于对管理系统设计开发缺乏经验,在对本次人事系统设计开发过程中没有把握好开发目标,工作量安排不合理,完成质量不高,给了我极大的教训。
总之,此次作业收获良多,是一次快乐的体验。