课程设计报告.docx
《课程设计报告.docx》由会员分享,可在线阅读,更多相关《课程设计报告.docx(18页珍藏版)》请在冰豆网上搜索。
课程设计报告
课程设计报告
课程设计题目:
人力资源管理系统数据库的设计与实现
专业:
软件工程
班级:
10211117
姓名:
刘新
学号:
1021111704
指导教师:
赵薇
2011年11月21日
目录
1、实验题目·········································
2、实验时间、地点·····································
3、实验目的············································
4、实验要求······································
5、实现思路·········································
6、实现过程·······································
7、实验总结······································
8、心得体会········································
一、实验题目
《人力资源管理系统数据库的设计与实现》
设计一个人力资源管理系统。
实现下列功能:
1、员工人事信息维护(包括信息录入,修改和删除等);
2、员工工资信息维护(包括信息录入,修改,删除和实发工资计算等);
3、员工综合信息(包括人事信息和工资信息)查询;
二、实验时间、地点
实验时间:
2011年11月21至2011年11月24日
实验地点:
软件楼505
三、实验目的
通过本次课程设计让我们能够综合运用所学的关系数据库原理知识。
巩固我们用SQL建数据库、建表对表的约束、查询、表的插入、修改、删除等技能。
用户权限,角色的创建和回收。
引、视图、规则、默认的创建、修改、绑定删除。
同时储存过程、触发器对表进行更深的管理。
并能设计一个实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高我们的分析问题和解决问题的能力以及我们的动手能力。
四、实验要求
1.对各个系统进行系统的功能需求分析
2.数据库设计分析阶段,进行校内关系的数据库需求分析,进行概念数据库的设计,画出数据库的E-R图(局部和整体E-R图)。
3.设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表,即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定。
4.通过企业管理器或是查询分析器实现各个二维关系(建议最好使用SQL代码实现),要求建立相关的索引。
5.根据系统功能需求设计相应的查询视图。
6.要求根据系统功能需求建立存储过程
7.根据功能需求建立相应的触发器以保证数据的一致性。
8.通过建立用户权限分配实现数据库的一定安全性。
五、实现思路
1、系统需求分析:
1)析人力资源管理活,明确用户的力资源管理目标:
调查组织机构的情况,包括该组织的部门组成情况,各部门的职务和任务;调查各部门的业务活动,包括各个部门输入输出的数据格式,加工处理这些数据的步骤、输入输出的部门等。
收集分析需求数据、确定系统边界。
明确系统的各种需求,包括人息求、处理需求、安全性和完整性的需求等。
2)、明确任务和要处理的对象:
1)人事信息维护(包括信息录入,修改和删除等);员工基本信息(employee):
包括员工号,姓名,性别,年龄,学历,住址,电话,出生年月
2)工资信息维护(包括信息录入,修改,删除和实发工资计算等);员工工资信息(pay,salary,additional):
包括员工号,基本工资,附加工质,应发工资,以及所交税,实发工资。
3)综合信息(包括人事信息和工资信息)查询;公司部门职务信息(class,workday,department):
包括员工号,员工的职位、部门、考勤信息和所属部门。
3)、数据字典
1)系统设计的数据项:
数据项名
类型
取值范围
长度
别名
含义说明
与其他数据的关系
eno
Char
0~1000000000
10
员工号
主键
En
Char
20
姓名
不许为空
Sex
Char
男、女
4
性别
男、女
Age
int
0~100
4
年龄
Edu
Char
10
教育程度
Addr
Char
40
地址
Tel
Char
15
电话
Birth
Smalldatetime
1900/1/1~2079/6/6
4
出生日期
默认1991、1、1
Sal
Float
8
应发工资
默认0
Addmoney+bscsal
Tax
Decimal
0~1
5
税率
0.15
Sal-(sal*tax)
Rlsal
Float
8
实发工资
默认0
Job
Char
20
职务
Cno
Char
10
部门号
主键
为职务外键
Cn
Char
30
部门名
不许为空
Tel
Char
15
部门电话
Addr
Char
40
部门地址
Bscsal
Float
1500~99999
8
基本工资
1500
Days
Int
0~31
4
出勤天数
0~31
addmoney
float
0.0~99999
8
附加工资
每天一百
2)用户信息所涉及的数据:
中文字段名
字段名
数据类型
长度
字段说明
用户帐号
liuxin
Char
21
密码
123
Char
20
权限
db_owner
Char
20
(1)数据结构
数据结构见下表:
数据结构编号
数据结构名
数据结构含义
组成
DS-1
employee
员工基本信息
eno,en,sex,age,edu,
addr,tel,birth,
DS-2
department
职位信息
Eno,job,cno
DS-3
class
部门信息
Cno,cn
DS-4
pay
员工工资信息
eno,sal,rlsal,tex
basicid,tax
DS-5
additional
补贴信息
enoddmoney
DS-6
salary
基本工资信息
Eno,bscsal
DS-7
workday
考勤信息
Eno,ays
六、实现过程
1.概念模型设计
员工基本信息的E-R图,如下图所示
基本工资和附加工资信息的E-R图,如下图所示
职务信息和考勤信息E-R图
部门信息E-R图
工资信息E-R图
2)全局E-R模型设计
3)系统流程
系统流程图,如下图所示:
2.逻辑设计阶段
将E-R图转换为关系模型
每个实体的属性如下:
员工:
employee(eno,ename,sex,age,edu,address,tel,birth)。
职位:
department(eno,job,cno)
部门:
class(cno,cn,tel,addr)
考勤:
workday(eno,days)
附加工资:
additional(eno,addmoney)
基本工资:
salary(eno,bscsal)
实发工资:
pay(eno,sal,rlsal,tax)
3.数据库实施
--创建和使用数据库
Createddatabase人力资源管理
use人力资源管理
--系统权限授予
execsp_addlogin'liuxin','123','人力资源管理',null
execsp_adduser'liuxin','liuxin','db_owner'
grantcreatetable
toliuxin
--对象权限的授予
grantselect
onemployee
topublic
1)表的建立
--志愿信息表创建
createtableemployee
(
enochar(10)primarykey,--将员工号定义为主键
enchar(20)notnull,
sexchar(4),--通过规则只能为男或女
ageint,--取值在0—100之间
educhar(10),
addrchar(40),
telchar(15),
birthsmalldatetime
)
--工资表的创建
createtablepay
(enochar(8)primarykey,
salfloat,--应发工资(通过触发器基本工资加上附加工资自动获得)
taxdecimal,--税率
rlsalfloat--实发工资(通过触发器基本工资加上附加工资减去缴税额自动获得)
)
--职位表的创建
createtabledepartment
(
enochar(8)primarykey,
jobchar(20),
cnochar(10)referencesclass(cno)—定义为部门表的外键
)
--部门表的创建
createtableclass
(
cnochar(10)primarykey,
cnchar(30)notnull,
telchar(15),
addrchar(40)
)
--基本工资
createtablesalary
(
enochar(10)primarykey,
bscsalfloat--基本工资默认为1500
)
--考勤表
createtableworkday
(
enochar(20)primarykey,
daysint–当插入天数时会自动计算出附加工资
)
--附加工资
createtableadditional
(
enochar(8)PRIMARYKEY,
addmoneyfloat--默认为0元,依据考勤天数自动获得,(每天一百元)
)
2)规则的创建
--创建规则:
性别限定
createrulesex_rule
as@sex='男'or@sex='女'
--创建规则:
年龄限定
createruleage_rule
as@age<=99and@age>=0
--绑定规则
execsp_bindrule'sex_rule','employee.sex'
execsp_bindrule'age_rule','employee.age'
3)默认的创建
createdefaultbirthday_def—默认出生日期的创建
as'1991-1-1'
createdefaultbasicsal_def—默认基本工资的创建
as'1500'
createdefaultadd_def—默认附加工资的创建
as'0'
createdefaultdays_def—默认出勤天数的创建
as'0'
createdefaulttax_def—默认税率的创建
as'0.15'
--默认的绑定
execsp_bindefaultadd_def,'additional.addmoney'
execsp_bindefaultbirthday_def,'employee.birth'
execsp_bindefaultdays_def,'workday.days'
execsp_bindefaulttax_def,'pay.tax'
execsp_bindefaultbasicsal_def,'salary.bscsal'
4)视图的创建
--员工信息视图:
包含员工的员工号、姓名、年龄、性别、学历、住址、联系电话、出生日期、职业部门
createviewview_employee
as
selectemployee.enoas员工号,employee.enas姓名,sexas性别,ageas年龄,eduas学历,employee.addras住址,employee.telas联系电话,birthas出生年月,department.jobas职位,as部门
fromemployee,department,class
whereemployee.eno=department.enoando=o
--工资信息视图:
包含了员工的姓名、应发工资、附加工资、基本工资、税率和实发工资
createviewview_pay
as
selectemployee.enas姓名,salas应发工资,rlsalas实发工资,addmoneyas附加工资,bscsalas基本工资,taxas税率
frompay,additional,salary,employee
whereemployee.eno=salary.enoandsalary.eno=pay.enoandpay.eno=additional.eno
--员工综合信息视图:
包含了员工的员工号、姓名、年龄、性别、学历、住址、联系电话、出生日期、职业部门、应发工资、附加工资、基本工资、税率和实发工资
createviewview_allinfo
as
selectemployee.enoas员工号,employee.enas姓名,sexas性别,ageas年龄,eduas学历,employee.addras住址,employee.telas联系电话,birthas出生年月,department.jobas职位,as部门,salas应发工资,rlsalas实发工资,addmoneyas附加工资,bscsalas基本工资,taxas税率,daysas考勤天数
fromsalary,additional,employee,pay,department,workday,class
whereemployee.eno=salary.enoandsalary.eno=pay.enoandpay.eno=additional.enoandadditional.eno=workday.enoandworkday.eno=department.enoando=o
5)存储过程的创建
--存储过程:
插入员工信息
同时保证了当在employee插入员工时,同时在salary,payadditional,workday,department表中也自动插入该员工号。
createprocedureinput_employee
(
@员工号char(10),
@姓名char(20),
@性别char(4),
@年龄int,
@学历char(10),
@住址char(40),
@电话char(15),
@生日smalldatetime
)
as
insertintoemployeevalues(@员工号,@姓名,@性别,@年龄,@学历,@住址,@电话,@生日)
insertintosalary(eno)values(@员工号)
insertintopay(eno)values(@员工号)
insertintoadditional(eno)values(@员工号)
insertintoworkday(eno)values(@员工号)
insertintodepartment(eno)values(@员工号)
--存储过程:
更新员工信息
createprocedureupdate_employee
(
@员工号char(10),
@姓名char(20),
@性别char(4),
@年龄int,
@学历char(10),
@住址char(40),
@电话char(15),
@生日smalldatetime
)
as
ifEXISTS(select*fromemployeewhereeno=@员工号)
BEGIN
updateemployee
seten=@姓名,sex=@性别,age=@年龄,edu=@学历,addr=@住址,tel=@电话,birth=@生日
where@员工号=employee.eno
END
else
print'不存在的员工'
--存储过程:
指定员工号删除信息同时也把salary,payadditional,workday,department表中的该员工信息删除。
createproceduredel_info
(
@员工号char(10)
)
as
delete
fromemployee
whereeno=@员工号
delete
frompay
whereeno=@员工号
delete
fromworkday
whereeno=@员工号
delete
fromdepartment
whereeno=@员工号
delete
fromadditional
whereeno=@员工号
delete
fromsalary
whereeno=@员工号
6)触发器的创建
--触发器:
确保修改一致性
createtriggeremp_tri
onemployee
forupdate
as
updateadditional
seteno=(selectenofrominserted)
whereeno=(selectenofromdeleted)
updateworkday
seteno=(selectenofrominserted)
whereeno=(selectenofromdeleted)
updatesalary
seteno=(selectenofrominserted)
whereeno=(selectenofromdeleted)
updatepay
seteno=(selectenofrominserted)
whereeno=(selectenofromdeleted)
updatedepartment
seteno=(selectenofrominserted)
whereeno=(selectenofromdeleted)
--触发器:
计算附加工资计,应发工资和实发工资
createtriggeradd_tri
onworkday
forupdate,insert
as
begin
updateadditional
setaddmoney=(selectdaysfrominserted)*100
whereeno=(selectenofrominserted)
updatepay
setsal=(selectbscsalfromsalarywhereeno=(selectenofrominserted))+(selectaddmoneyfromadditionalwhereeno=(selectenofrominserted))
whereeno=(selectenofrominserted)
updatepay
setrlsal=sal-sal*tax
whereeno=(selectenofrominserted)
end
4.数据的导入
取用Excel导入的方式录入数据。
这种录入方式方便快捷,适合大量数据的录入。
在用excel建表时表名要和要SQL定义一致。
表里面的数据要符合SQL的数据类型和约束。
5.数据库的运行
--设置考勤,自动给出额外工资
updateworkday
setdays=24
whereeno='01'
updateworkday
setdays=29
whereeno='02'
updateworkday
setdays=30
whereeno='03'
updateworkday
setdays=25
whereeno='04'
updateworkday
setdays=27
whereeno='05'
updateworkday
setdays=20
whereeno='06'
--查看员工信息表
七、实验总结
八、心得体会