数据库SQLserver工资管理系统或人力资源管理系统.docx
《数据库SQLserver工资管理系统或人力资源管理系统.docx》由会员分享,可在线阅读,更多相关《数据库SQLserver工资管理系统或人力资源管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
数据库SQLserver工资管理系统或人力资源管理系统
课程设计报告
课程设计题目:
工资管理系统
专业:
软件工程
班级:
1121803
姓名:
张传伟
学号:
201120180334
指导教师:
周华清
2012年12月5日
一、实验目的:
1.通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决并能设计一个实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高学生的分析问题和解决问题的能力以及学生的动手能力。
2.掌握各种算法语言和各种应用,对SQL的功能数据定义,数据查询,数据操纵,数据控制进行全方面的了解。
3掌握数据库设计的任务,内容,特点,和方法步骤。
对SQLServer2000的高级应用进行系统的了解,学习Transact—SQL程序设计对存储结构,和触发器进行学习应用.
二、课程设计要求:
1.对各个系统进行系统功能需求分析
2.数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的设计,画出数据库的E—R图
3。
设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定
4。
通过企业管理器或是查询分析器实现各个二维关系.
5.根据系统功能需求设计相应的查询视图
6.要求根据系统功能需求建立存储过程
7.根据功能需求建立相应的触发器以保证数据的一致性
8。
通过建立用户和权限分配实现数据库一定的安全性。
三.实验题目
工资管理系统数据库的设计与实现
描述:
设计一个工资管理系统,实现下列功能:
1.工资信息的维护(包括录入,修改和删除);
2。
工资信息的核算和统计;
3.工资信息的报表输出;
四.试验时间地点
星期
节次
一
二
三
四
五
1—2
软—301/303/305
软—301/303/305
3—4
软—301/303/305
软-301/303/305
5—6
软-301/303/305
软—301/303/305
软-301/303/305
7-8
软—301/303/305
9—10
11-12
五.实验思路
首先了解该实验的具体要求,进行系统需求分析收集数据库的信息和处理要求并加以规格化和分析;而后进行概念结构设计阶段,设计ER图统筹各种关系表达用户的要求;随后进行逻辑结构设计,将概念模型转化为某个DBMS所支持的数据模型,并加以优化;然后便是进行物理结构设计并且进行数据库的实施,编写代码,调试应用程序;最后进行数据库的运行与维护,对数据库进行性能测试转储恢复维护,并且整理文档,进行数据备份.
六.需求分析:
首先我国目前运用计算机管理工资系统虽然已经有了很大的发展,但还不成熟,还没有普及到各行各业,仍有上升发展的空间。
其次,运用数据库进行工资人员管理比成为以后发展的趋势,所以通过数据库进行有效的管理势在必行
七.ER图与关系模式
局部ER图:
全局ER图:
关系模式:
员工信息(员工号,姓名,性别,年龄)
部门信息(员工号,部门,职位)
工资信息(员工号,基本工资,奖金,罚金,最终工资)
八.表的信息
G表:
A表:
S表:
九.主要代码实现
createdatabasejob-—创建数据库job
on
(name=job_data,
filename=’D:
\jobdata。
mdf',
size=20,
maxsize=50,
filegrowth=5)
logon
(name=job_log,
filename='D:
\jobdata。
ldf',
size=10,
maxsize=25,
filegrowth=5)
usejob
createtableS——创建表S
(snochar(6),--员工编号
snchar(8),—-员工姓名
sexchar
(2),-—性别
ageint)-—年龄
createtableA--创建表A
(snochar(6),
zwchar(16),——职务
deptchar(10))-—所在部门
createtableG——创建表G
(snochar(6),
jbenint,—-基本工资
jiangint,——奖金
faint,——罚金
gendint)--最终工资
createtriggerde_s—-创建触发器de_s
onS
fordelete
as
declare@snochar(20)
declare@snchar(20)
declare@sexchar(20)
declare@ageint
select@sno=snofromdeleted
select@sn=snfromdeleted
select@sex=sexfromdeleted
select@age=agefromdeleted
deletefromSwheresno=@snoandsn=@snandsex=@sexandage=@age
execsp_helpde_s—-执行查看触发器de_s
createtriggerde_a-—创建触发器de_a
onA
fordelete
as
declare@snochar(20)
declare@zwchar(20)
declare@deptchar(20)
select@sno=snofromdeleted
select@zw=zwfromdeleted
select@dept=deptfromdeleted
deletefromAwheresno=@snoandzw=@zwanddept=@dept
execsp_helpde_a--查看触发器de_a
createtriggerin_s--创建触发器in_s
onS
forinsert
as
declare@snochar(20)
declare@snchar(20)
declare@sexchar(20)
declare@ageint
select@sno=snofromdeleted
select@sn=snfromdeleted
select@sex=sexfromdeleted
select@age=agefromdeleted
insertintoS(sno,sn,sex,age)
values(@sno,@sn,@sex,@age)
execsp_helpin_a——执行触发器in_s
createtriggerin_a——创建触发器in_a
onA
forinsert
as
declare@snochar(20)
declare@zwchar(20)
declare@deptchar(20)
select@sno=snofromdeleted
select@zw=zwfromdeleted
select@dept=deptfromdeleted
insertintoA(sno,zw,dept)
values(@sno,@zw,@dept)
execsp_helpin_a-—执行触发器in_a
createtriggerin_g-—创建触发器in_g
onG
forinsert
as
declare@snochar(20)
declare@jbenint
declare@jiangint
declare@faint
declare@gendint
select@sno=snofromdeleted
select@jben=jbenfromdeleted
select@jiang=jiangfromdeleted
select@fa=fafromdeleted
select@gend=gendfromdeleted
insertintoG(sno,jben,jiang,fa,gend)
values(@sno,@jben,@jiang,@fa,@gend)
execsp_helpin_g--查看触发器in_g
createtriggerup_s-—创建触发器up_s
onS
forupdate
as
declare@sno1char(20)
declare@sn1char(20)
declare@sex1char(20)
declare@age1int
declare@sno2char(20)
declare@sn2char(20)
declare@sex2char(20)
declare@age2int
updateSsetsno=@sno1wheresno=@sno2
updateSsetsn=@sn1wheresn=@sn2
updateSsetsex=@sex1wheresex=@sex2
updateSsetage=@age1whereage=@age2
execsp_helpup_s—-查看触发器up_s
createtriggerup_g——创建触发器up_g
onG
forupdate
as
declare@sno1char(20)
declare@jben1int
declare@jiang1int
declare@fa1int
declare@gend1int
declare@sno2char(20)
declare@jben2int
declare@jiang2int
declare@fa2int
declare@gend2int
updateGsetsno=@sno1wheresno=@sno2
updateGsetjben=@jben1wherejben=@jben2
updateGsetjiang=@jiang1wherejiang=@jiang2
updateGsetfa=@fa1wherefa=@fa2
updateGsetgend=@gend1wheregend=@gend2
execsp_helpup_g—-查看触发器up_g
droptriggerde_s——删除触发器de_s
droptriggerde_a——删除触发器de_a
droptriggerin_s—-删除触发器in_s
droptriggerin_a--删除触发器in_a
droptriggerin_g——删除触发器in_g
droptriggerup_s——删除触发器up_s
droptriggerup_g—-删除触发器up_s
createprocedureinserts—-创建存储过程inserts插入S表相关信息
(
@snochar(20),
@snchar(20),
@sexchar(20),
@ageint)
As
insertintoSvalues(@sno,@sn,@sex,@age)
execinserts@sno=’0011',@sn=’孙俪',@sex='女',@age=’26'
createprocedureinserta—-创建存储过程inserta插入A表相关信息
(
@snochar(20),
@zwchar(20),
@deptchar(20))
as
insertintoAvalues(@sno,@zw,@dept)
execinserta@sno='0011',@zw=’人事经理',@dept=’人事部’
createprocedureinsertg-—创建存储过程insertg插入G表相关信息
(
@snochar(6),
@jbenint,
@jiangint,
@faint,
@gendint)
as
insertintoGvalues(@sno,@jben,@jiang,@fa,@gend)
execinsertg@sno=’0011',@jben=5300,@jiang=2600,@fa=1300,@gend=6600
createprocedureupdates--创建存储过程updates修改S表相关信息
(
@snchar(20),
@ageint)
as
updateSsetage=@agewheresn=@sn
execupdates@age=’34',@sn=’周杰伦’
createprocedureupdateg——创建存储过程updateg修改G表相关信息
(
@snochar(20),
@jbenint,
@jiangint,
@faint,
@gendint)
as
updateGsetjben=@jben,jiang=@jiang,fa=@fa,gend=@gendwheresno=@sno
execupdateg@jben=’3400’,@jiang=’2300',@fa=’250’,@gend='6450’,@sno='0010'
createproceduredeletea—-创建存储过程deletea删除A表相关信息
(
@snochar(20))
as
deletefromAwheresno=@sno
execdeletea@sno='0011'
createproceduredeletes--创建存储过程deletes删除S表相关信息
(
@snochar(20))
as
deletefromSwheresno=@sno
execdeletes@sno='0011'
dropprocedureinserts-—删除存储过程inserts
dropprocedureinserta
dropprocedureinsertg
dropprocedureupdates
dropproceduredeletea
dropproceduredeletes
dropprocedureupdateg
-—查看公司内工资超过5000的员工信息
selectS.sno,sn,dept,zw,gend
fromS,A,G
where(S.sno=A.snoandA.sno=G。
sno)and(gend〉=5000)
--查看公司人数
selectcount(*)
fromS
—-创建视图显示
createviewsub_S--创建视图sub_s
as
selectsno,sn,sex,age
fromS
select*fromsub_S
createviewsub_A--创建视图sub_a
as
selectsno,zw,dept
fromA
select*fromsub_A
createviewsub_G--创建视图sub_g
as
selectsno,jben,jiang,fa,gend
fromG
select*fromsub_G
createviewincome
as
selectS。
sno,sn,dept,zw,gend
fromS,A,G
where(S.sno=A.snoandA。
sno=G。
sno)and(gend〉=5000)
select*frombigincome
createviewincome
as
selectS。
sno,sn,sex,age,dept,zw,jben,jiang,fa,gend
fromS,A,G
where(S。
sno=A.snoandA.sno=G.sno)
select*fromincome
dropviewsub_S--删除视图sub_s
dropviewsub_A
dropviewsub_G
dropviewbigincome
dropviewincome
十.实验总结
此系统要求的基本功能已实现,在功能的实现上本系统可能还存在很多欠缺的地方,序代码较为繁琐也是本程序有所欠缺的地方,如果能再完善一下的话,程序的一些功能可能很容易就能实现。
工资管理系统是一个非常典型的数据库管理系统,它主要进行工资管理及一些基本的数据管理。
本系统包括:
工资管理、人员信息的更新、工资的删除、工资的修改。
工资管理系统是数据库应用的一个典型实例。
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程。
在这次的试验设计让我明白了许多原先不明买的地方,受益匪浅。
十一.试验心得
回顾起此次课程设计,至今我们仍感慨颇多,我做的是工资管理系统,从理论到实践,在三天的的日子里可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识.通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。
在设计的过程中难免会遇到过各种各样的问题,然而在遇到问题时通过自己的努力探索不仅学会了知识而且自己的水平也得到了提高.
在看了很多参考书之后,才发现,我们学的只是冰山一角,要想学好,还差得很远,通过这次课程设计懂得了,必须静心去学习去钻研.在接下来的日子里我会努力学习专业知识,努力的去实现自己的目标做一名软件工程师!