数据库课程设计企业人事管理系统Word文档格式.docx
《数据库课程设计企业人事管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据库课程设计企业人事管理系统Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
本系统对计算机的硬件环境有一定的要求,对计算机的操作系统、内存、主频、外设等都有最低要求,如果低于这个要求将影响到本系统的正常运行。
机关和事业单位的人事信息管理目前还完全以传统的人工管理方式进行管理,耗时多,效率低下并且极容易出现错误。
由于认为失误而造成有形和无形的经济损失时间层出不穷,我们也无法估算出所造成损失的总额。
而利用计算机来实现人事管理以成为适应当今人事管理的方式。
开发一套能满足人事信息管理的软件是十分必要的,实现人事管理的自动化,在减少由于认为失误而造成损失的同时,也可以是认识信息管理部门减少许多费用支出,如实现自动化管理后可以精简人员,减少工资支出等。
由上述三方面的分析可以看出,本系统的开发时机已经成熟,从多种角度考虑开发此系统都是可行的,并且也是十分必要的。
安全性、完整性分析
数据库的安全性是指保护数据库,以防止非法使用所造成的数据泄露、更改或破坏。
安全性问题有许多方面,在法律、社会、伦理方面,例如请求查询信息的人是否有合法的权利;
法律控制方面,例如计算机机房或者中断是否应该加锁或用其他方法保护;
政策方面,确定存取原则允许哪些用户存取哪些数据;
运行于技术方面,使用口令时,如何使口令保持秘密;
操作系统安全性方面,在主存储器和数据文件用过后,操作系统是否把它们的内容清除掉。
安全性控制的方法有用户的标识和鉴定,存取控制,定义视图,数据加密和审计等,在本系统中的安全性体现在用户的标识和鉴定,例如在登陆界面时,首先会输入账户名称,系统内部记录着所有合法用户的标识,每次用户要求进入系统时,由系统进行核实,通过鉴定后才提供机器上对数据库的使用权。
当你不是该系统的合法用户时,则账号是错误的就无法进入该系统。
就用户存取权限控制而言,在系统登陆界面时会选择是一般用户登陆还是管理员登陆,当为一般用户登陆时,只能查询员工信息和部门信息,而不能对其进行管理。
当以管理员身份登陆时不仅仅可以查询部门和员工的基本信息,也可以对其进行添加、删除、修改等操作。
需求分析
调查本地的企业,根据企业的具体情况分析、设计和实现企业人事管理系统。
其主要功如下:
1、人事档案管理:
户口状况、政治面貌、生理状况、合同管理等。
2、考勤、加班、出差管理。
3、人事变动:
新进员工登记、员工离职登记、人事变更记录。
4、考核奖惩。
5、员工培训。
6、系统维护:
操作员管理、权限设置等。
系统模块设计
3.数据库设计
数据字典
系统数据流图
数据库概念设计
数据库E—R图:
数据库逻辑设计
由数据库E-R图,可得以下关系:
员工(员工编号,姓名,性别,政治面貌,出生日期,部门,职位,身份证号,民族)
加班(加班编号,员工编号,加班起始,加班结束)
出差(出差编号,员工姓名,出差起始,出差结束)
考勤(考勤编号,员工编号,考勤日期,上班时间,下班时间)
奖惩(奖惩编号,员工编号,奖惩方式,奖惩原因,奖惩日期)
职务调动(调动编号,员工编号,调往部门,调往职位,调动日期)
合同(合同编号,员工编号,合同起始,合同到期)
新员工(登记编号,员工编号,到港日期,部门,职位)
员工离职(离职编号,员工编号,部门,职位,离职日期)
薪资管理(薪资编号,员工编号,基本工资,总工资,发薪日期)
管理员(管理员编号,管理员姓名,管理员密码)
数据库物理设计
数据库物理设计阶段的任务是根据具体的计算机系统的特点,为给定的数据库系统确定合理的存储结构和存取方法。
所谓的“合理”有两个含义:
一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度要体现在后者。
(1)存储结构
确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。
将日志文件和数据库对象分别放在不同的磁盘,可以改进系统的性能,提高系统的安全性。
所以,系统应将日志文件和数据文件存放在不同的磁盘上。
(2)评价物理结构
数据库物理结构设计过程中需要对时间效率,空间效率,维护代价和各种用户需求进行权衡,其结果可以产生多种方案,因此要从中选择一个最优的方案。
评价物理结构的方法依赖于所选用的DBMS,主要是定量估算各种方案的存储空间,存储时间和维护代价,对估算结果进行权衡,选择一个较优的物理结构。
4.系统的实现与调试
建立企业人事管理系统数据库
createdatabasemm
on
(name=mmdat,
filename='
E:
\Study\SQL\mydata\'
size=100,
maxsize=300,
filegrowth=10)
logon
(name=mmlog,
size=50,
maxsize=150,
filegrowth=10%)
建立了数据库的各基本表
建立员工表:
createtable员工表(
员工编号char(4)primarykey,
姓名char(10)notnull,
性别char
(2)check(性别in('
男'
'
女'
)),
出生日期char(16),
身份证号char(32)notnull,
民族char(16)default'
汉'
职位char(16),
部门char(16),
政治面貌char(10)
);
建立新员工表:
createtable新员工表(
登记编号char(4)primarykey,
员工编号char(4),
部门char(16),
职位char(16),
入职日期char(16),
foreignkey(员工编号)references员工表(员工编号)
建立离职表:
createtable离职表(
离职编号char(4)primarykey,
离职日期char(16),
foreignkey(员工编号)references员工表(员工编号)
建立人事表:
createtable人事表(
调动编号char(4)primarykey,
调后部门char(16),
调后职位char(16),
调动日期char(16),
建立合同表:
createtable合同表(
合同编号char(4)primarykey,
合同起始char(16),
合同到期char(16),
建立奖惩表:
createtable奖惩表(
奖惩编号char(4)primarykey,
奖惩原因varchar(50),
奖惩方式char(10),
奖惩日期char(16),
建立加班表:
createtable加班表(
加班编号char(4)primarykey,
加班起始char(16),
加班结束char(16),
建立出差表:
createtable出差表(
出差编号char(4)primarykey,
出差起始char(16),
出差结束char(16),
建立考勤表:
createtable考勤表(
考勤编号char(4)primarykey,
员工编号char(4),
考勤日期char(16),
上班时间char(16),
下班时间char(16),
建立薪资表:
createtable薪资表(
薪资编号char(4)primarykey,
基本工资char(10),
总工资char(10),
发薪日期char(16),
建立管理员表:
createtable管理员(
管理员编号char(4)primarykey,
管理员姓名char(10),
管理员密码char(8)
插入数据
(1)
(2)
(3)
(4)
(5)
(6)
(7)
建立索引
createindex员工表_姓名_indexon员工表(姓名)
createindex奖惩管理表_奖惩方式_indexon奖惩表(奖惩方式)
createindex薪资表_总工资_indexon薪资表(总工资)
视图
(1)建立一个视图,反映员工姓名及工资情况。
createview员工_工资
as
select员工表.姓名,薪资表.*
from员工表,薪资表
where员工表.员工编号=薪资表.员工编号
(2)建立一个视图,反应管理员信息
createview系统管理员信息(编号,姓名,密码)
as
select管理员编号,管理员姓名,管理员密码
fromdbo.管理员
存储过程
1、创建存储过程proc1用于查看所有信息
createprocproc1
select*from员工表,管理员,人事表
execproc1
2、设计存储过程,实现根据传递参数(员工编号和部门编号)查询指定员工的部门名称。
createprocproc4
@员工编号char(10),
@编号char(10)
asselect企业员工.员工编号,姓名,部门.编号,部门.部门名称
from企业员工,部门
where企业员工.员工编号=部门.员工编号and企业员工.员工编号=@员工编号
and部门.编号=@编号
execproc4'
0001'
001'
触发器
(1)关键操作,在工资表里添加一条新的记录,实发工资会自动更新新的数据。
定义这个触发器名称为insert_工资。
代码如下:
createtriggerinsert_工资on薪资表forinsert
declare@ichar(20)
declare@bbint
set@i=case
when@bb=0001then'
实发工资'
when@bb=0002then'
end
print@i
(2)员工新调入
进行员工新调入操作是在员工信息表中添加一条新的记录,可以为员工信息表设计一个Insert触发器,当员工信息表执行Insert操作后自动更改出部门信息表相应记录的数据。
定义这个触发器名称为staff_insert。
其代码如下:
createtriggerstaff_inserton员工
forinsert
asif(selectcount(*)
from部门,inserted,工资
where部门.部门人数=inserted.部门人数and工资.工号=inserted.工号)=0
rollbacktransaction
go
主要的查询SQL语句
(1)查询编号为1的员工姓名
selectdistinct姓名
from员工表
where员工编号=‘1’;
(2)查询工资编号为1的基本工资
select基本工资
from薪资表
where薪资编号=‘1’;
(3)查询14:
00点开始加班的人
select员工编号
from加班表
where加班起始=’14:
00’
(4)统计基本工资大于2000的人数
selectcount(基本工资)as人数
where基本工资>
2000
(5)统计企业中经理的人数
selectcount(职位)as人数
where职位='
经理'
5.思考与总结
通过此次人事资源管理系统的数据库的课程设计,真正达到了学与用的结合,增强了我们对数据库方面应用的理解,对自己今后参与开发数据库系统积累了不少经验,这次的课程设计,让我明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。
2周的设计使我和同学的关系更进一步了,有什么不懂的大家在一起商量,听听不同的看法,从中更好的理解知识,我觉得这样的课程设计特别有价值和实践意义。
在实验过程中,从建立数据开始,对于据库设计理念及思想上有更高的认识,从需求分析,到概念设计和逻辑设计,E-R图的表示,数据流图的创建,懂得了不少有关数据库开发过程中的知识,在实验中建表,及其关系模式,关系代数的建立及理解,增强了自己在数据库中应用SQL语言的灵活性,在学习过程中,我也能过上网查了不少资料,也看了一些别人设计的人事资源管理信息系统的设计报告,学以致用,完成了这份自己的报告,从中在学到用,从用又到学,不断修改,系统更新。
虽然不能达到完善系统,但也做到了尽善尽美,加强理论学习对完善系统会有很多帮助,不管怎么说,对这次做的课程设计自己觉得还算满意。
6.参考文献
1.王珊,萨师煊.数据库系统概论(第四版).北京:
高等教育出版社
2.孙春来.SQLServer中文版编程基础.上海:
电子工业出版社,2008:
195-210
3.知寒工作室.SQLServer2000案例教程.北京:
机械工业出版社,2007:
619-625
4.徐建平,赵永.SQLServer2000基础教程.北京:
机械工业出版社出版,2006:
51-69