数据库课程设计报告.docx
- 文档编号:5214546
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:22
- 大小:200.27KB
数据库课程设计报告.docx
《数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告.docx(22页珍藏版)》请在冰豆网上搜索。
数据库课程设计报告
《数据库类课程设计》
系统开发报告
学号:
111007133
姓名:
邢小迪
题目:
企业员工薪资管理
指导教师:
王红梅
提交时间:
2013年6月01日
计算机科学与应用系
一绪论
二员工薪资管理系统概述·······························1
●现状分析········································1
●系统目标········································2
●系统特点········································3
三员工薪资管理系统数据库设计·························3
●需求分析·······································3
●数据库物理结构分析····························4
●数据库概念结构设计····························6
●数据库逻辑结构设计····························9
四员工薪资管理系统数据库功能模块的创建···········12
五总结·············································21
●体会·········································21
●参考文献·····································22
一绪论
随着计算机技术的飞速发展和经济体制改革的不断深入,传统企业管理方法、手段以及工作效率已不能适应新的发展需要,无法很好地完成员工工资管理工作。
提高公司企业管理水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。
基于 SQL server数据库技术建立一个通用工资管理系统,该系统为提供了查询、增加记录、删除等功能,功能比较的齐全,并对工资进行了统计如津贴管理、报表统计等。
基本上能满足管理员和公司的要求。
此次数据库课程设计的主要设计如下:
原理分析、程序设计过程、程序实现和程序调试以及数据库的设计。
需求分析、概要结构设计、逻辑结构设计、物理结构设计和数据库的实施和维护。
二员工薪资管理系统概述
1、现状分析
随着企业人员数量增加,企业的工资管理工作也变得越来越复杂。
早期的工资统计和发放都是使用人工方式处理纸质材料,不仅花费财务人员大量的时间且不易保存,往往由于个人的因素抄写不慎或计算疏忽,出现工资发放错误的现象。
早期工资管理多采取纸质材料和具有较强的时间限制。
随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求。
建设一个科学高效的信息管理系统是解决这一问题的必由之路。
企业内部财务管理是该企业运用现代化技术创造更多更高的经济效益的主要因素之一。
工资管理作为企业内部的一种财务管理也是如此,由于企业职工人数较多,每一位职工的具体实际情况也不尽相同,各项工资条款的发放,如果没有一个完整的管理系统对企业和员工的工作都带来许多的不便。
基于以上原因,企业工资管理系统使用电脑安全保存、快速计算、全面统计,实现工资管理的系统化、规范化、自动化。
2、系统目标
员工薪资管理系统的主要目的是利用计算机对员工的各种工资信息进行日常的管理,如查询、修改、添加、删除以及存储等,迅速准确地完成各种工资信息的统计计算和汇总工作,针对系统服务对象的具体要求,设计了企业工资管理系统。
企业工资管理系统主要有以下几大功能:
(1)对单位人员的变动进行处理。
一个单位的职工不会是一成不变的,总是在不断的变化:
有调出、有调入、也有职工在本单位内部调动。
因此,设计系统是应考虑到这些情况。
(2)对职工的工资进行计算、修改。
可以对职工的工资档案进行个别、部分和批量修改,同时,能对各职工的工资进行计算,即计算基本工资、岗位工资及实发金额等。
(3)查询统计功能。
要求即可以单项查询,比如查看某个职工的工资情况等;也可以多项查询,比如某个部门所有的员工的工资信息。
(4)对用户管理功能。
一个系统的应用有管理员和普通用户,他们对系统的权限受到限制。
3、系统特点
(1)本系统使工资管理基本实现了信息化,系统设计的各种查询要求代替了原来了人工查询,即节省了人力,又减轻了员工的工作量,最重要的是由计算机操作,可以提高数据的准确性,避免人为的错误,方便管理。
(2)本系统设置了系统数据备份功能,定期的系统备份可以在数据库受到意外的或有意的破坏的情况下,系统得以恢复,减少损失。
(3)本系统的界面设计简洁明了,采用了流行的菜单设计,对于不是计算机专业的管理人员,只需阅读操作说明书,就能方便的使用本系统。
三员工薪资管理系统数据库设计
1、需求分析
本系统定位于中小型单位,暂时考虑单机环境下的实现;
本系统采用会员式管理,每个属于该单位的职工都有一个属于自己的用户名和密码,通过该用户名和密码就可以登陆系统执行基于自己权限范围内的操作,系统功能应包括员工基本信息的输入输出与修改、各部门的基本信息输入修改、员工工资的基本情况、总工资的计算、统计分析。
员工可以通过此系统查询自己本月的基本工资,福利,奖金以及出去失业保险可住房公积金后的工资。
该工资管理系统主要是由基本资料、工资登记、工资查询、系统管理几个部分组成的,主要用于单位工资发放管理。
(1)基本资料包括员工基本资料和部门的基本资料:
员工基本资料:
可以输入该员工的编号、姓名、性别、出生日期、位于哪个部门、所处的职业。
部门基本资料:
可以输入部门的编号、名称。
(2)工资登记包括工资登记和清数据:
可以录入员工本月的基本工资、奖金福利、失业保险和住房公积金,可以清除以前的数据。
(3)工资查询包括员工工资汇总查询。
(4)分类查询包括按部门查询和按日期查询。
2、数据库物理结构分析
2.1设计策略
由于该系统主要用于员工的工资管理,其中工资的录入、计算、扣除与查询,人员的增删减是主要功能,所以应用程序主要就是实现这几个功能。
2.2系统总体结构图
2.3系统详细设计说明
①员工基本信息表[员工]的创建;
②部门基本信息表[科室]的创建;
③员工工资基本信息表[工资]的创建
3、数据库概念结构设计
数据库概念设计是整个数据库设计的关键。
根据用户需求设计数据库的概念,数据模型。
我们首先要将现实世界中的客观对象首先抽象为不依赖任何具体机器的信息结构,这种信息结构不是DBMS支持的数据模型,而是概念级模型。
然后再把概念模型转换为具体机器上DBMS支持的数据模型。
概念模型是对现实世界的抽象和概括。
它真实,充分地反映了现实世界中的事物和事物之间的联系,能满足用户对数据的处理要求。
由于其简洁、明晰、独立于机器,很容易理解,因此可以用概念模型和不熟悉计算机的用户交换意见,使用户能积极参与数据库的设计工作。
概念模型易于变动,还很容易向各种数据模型转换。
概念模型的基本概念涉及的主要有7个,分别为实体、属性、码、域、实体型、实体集、联系。
E-R图是概念模型最常用的表示方法,在E-R图中:
1)用长方形表示实体型,在框内写上实体名。
2)用菱形表示实体间的联系,菱形框内写上联系名,用无向边把菱形分别与有关实体相连,在无向边旁标上联系的类型。
若实体间的联系也具有属性,则把属性和菱形也用无向边连上。
员工实体——关系图(图1)
部门实体——关系图(图2)
部门
部门编号
名称
工资实体——关系图(图3)
部门——员工实体关系图(图4)
员工——工资实体关系图(图5)
员工
员工—工资
工资
1
m
4、数据库逻辑结构设计
4.1根据上述概念模型设计得出的E—R图,我们可以得出系统中涉及的主要实体有3个,其结构如下:
1、员工(员工工号,姓名、性别、出生日期、部门代码和职业)
2、部门(部门代码,部门名称)
3、工资(员工工号,姓名,日期,基本工资,奖励工资,福利补贴,住房公积金,失业保险)
4.2实体间的联系
工资管理系统中实体之间有6个联系,其关系如下:
1、具有1关系:
员工和奖金的关系是1:
N,N个职位相同的员工具有相同的奖金基数。
2、工薪关系:
员工和工资单的关系是1:
N,每个员工每个月都有一张工资单。
3、属于关系:
员工和部门的关系是N:
1,一个部门可以有多个员工。
4、聘用关系:
员工和职业的关系是N:
1,一个职务可以聘用多个员工。
5、设置关系:
部门和职业的关系是M:
N,一个部门可以设置多个职务,相同的职务也可以设置在多个部门。
根据以上逻辑结构分析我们可以知道:
一个部门有多个员工,每个员工都有工资,工资又由基本工资等组成,其关系模式为:
员工编号
(主键)
姓名
性别
出生日期
部门代码(外键)
职业
部门号(主键)
部门名称
员工工号(主键)
姓名
基本
工资
福利
补贴
奖励工资
失业保险
住房公积金
日期
表、视图汇总
视图/表名
类型
说明
员工
基本表
集中保存员工的基本信息
科室
基本表
集中存放单位各部门的信息
工资
基本表
存放员工工资的基本信息
4.3完整性约束:
基本表[员工]
基本表[科室]
基本表[工资]
四员工薪资管理系统数据库功能模块的创建
1建立员工表,工资表,科室表
--USEygxz
--GO
--CREATETABLE科室
--(部门代码kchar(10)PRIMARyKEY,
--部门名称char(30)NOTNULL)
--GO
--CREATETABLE员工
--(员工工号ychar(10)PRIMARyKEY,
--姓名ychar(10)notnull,
--性别char
(2)constraintY3check(性别in('男','女')),
--出生日期datetime,
--部门代码ychar(10)foreignkey(部门代码y)references科室(部门代码k),
--职业char(20))
--GO
--CREATETABLE工资
--(
--员工工号gchar(10)primarykey,
--constraintY1check(员工工号gbetween'1110000'and'1111111'),
--foreignkey(员工工号g)references员工(员工工号y),
--姓名gchar(10),
--
--基本工资money,
--福利补贴money,
--奖励工资money,
--失业保险money,
--住房公积金money,
--日期datetime,
--constraintc1check(基本工资+福利补贴+奖励工资-失业保险-住房公积金<=3000))
--
--GO
2录入员工表,工资表,科室表的数据然后查询表
USEygxz
GO
INSERT科室
VALUES('0001','经理室')
INSERT科室
VALUES('0002','财务科')
INSERT科室
VALUES('0003','技术科')
INSERT科室
VALUES('0004','销售科')
GO
SELECT*
FROM科室
USEygxz
GO
INSERT员工
VALUES('1110001','张毅','男','1991-01-01','0003','工程师')
GO
INSERT员工
VALUES('1110002','张尔','男','1991-02-01','0003','工程师')
INSERT员工
VALUES('1110003','张三','男','1991-02-02','0003','助理工程师')
INSERT员工
VALUES('1110004','李四','女','1991-04-02','0003','助理工程师')
NSERT员工
VALUES('1110005','李梦','女','1992-04-02','0003','助理工程师')
INSERT员工
VALUES('1110006','李飞','女','1991-04-02','0002','会计')
NSERT员工
VALUES('1110007','王梦','女','1992-04-02','0002','助理会计')
NSERT员工
VALUES('1110008','邢梦','女','1992-04-02','0002','助理会计')
INSERT员工
VALUES('1110009','武阳','男','1992-05-02','0002','助理会计')
INSERT员工
VALUES('1110010','无双','男','1993-05-02','0001','副经理')
INSERT员工
VALUES('1110011','霸气','男','1992-05-02','0001','秘书')
SELECT*
FROM员工
USEygxz
GO
INSERT工资
VALUES('1110001','张毅','2000','200','300','100','240','2013-05-15')
INSERT工资
VALUES('1110002','张尔','2000','200','300','100','240','2013-05-15')
INSERT工资
VALUES('1110003','张三','1800','200','200','100','240','2013-05-15')
INSERT工资
VALUES('1110004','李四','1800','200','200','100','240','2013-05-15')
INSERT工资
VALUES('1110005','李梦','1800','200','200','100','240','2013-05-15')
INSERT工资
VALUES('1110006','李飞','2500','200','400','100','240','2013-05-15')
INSERT工资
VALUES('1110007','王梦','2100','200','400','100','240','2013-05-15')
INSERT工资
VALUES('1110008','邢梦','2100','200','400','100','240','2013-05-15')
INSERT工资
VALUES('1110009','武阳','2100','200','400','100','240','2013-05-15')
INSERT工资
VALUES('1110010','无双','2700','100','300','200','240','2013-05-15')
INSERT工资
VALUES('1110011','霸气','2000','200','400','100','140','2013-05-15')
INSERT工资
VALUES('1110012','吴淑敏','2200','200','400','100','240','2013-05-15')
INSERT工资
VALUES('1110013','吴飞扬','2250','100','400','100','240','2013-05-15')
INSERT工资
VALUES('1110014','邢小迪','2750','200','400','100','440','2013-05-15')
INSERT工资
VALUES('1110015','朱鸿儒','2100','200','300','100','240','2013-05-15')
INSERT工资
VALUES('1110016','熊朝辉','2100','200','300','100','240','2013-05-15')
INSERT工资
VALUES('1110017','吴飞扬','2100','200','300','100','240','2013-05-15')
INSERT工资
VALUES('1110018','杨亚迪','2140','200','300','100','240','2013-05-15')
INSERT工资
VALUES('1110019','李敏','2100','200','300','100','240','2013-05-15')
INSERT工资
VALUES('1110020','郭佳','2440','200','300','100','240','2013-05-15')
GO
SELECT*
FROM工资
3运用触发器删除表中的信息
createtriggerdel_yg
on员工
insteadofdelete
as
begin
delete工资where员工工号gin(select员工工号yfromdeleted)
delete员工where员工工号yin(select员工工号yfromdeleted)
end
delete员工
where员工工号y='1110003'
go
SELECT*
FROM工资
SELECT*
FROM员工
I
4视图查询表中的信息
createviewY01(员工工号y,姓名y,性别,职业,部门名称,出生日期,基本工资,福利补贴,奖励工资,失业保险,住房公积金)
as
select员工工号y,姓名y,性别,职业,部门名称,出生日期,基本工资,福利补贴,奖励工资,失业保险,住房公积金
from员工,工资,科室
where员工工号y=员工工号g;
查询职工总人数
selectcount(distinct员工工号y)职工总人数
fromY01
--查询部门总数
--selectcount(distinct部门名称)as科室
--fromy01
5存储过程的创建
1)、创建存储过程查询每个员工的实际发放工资
USEygxz
GO
CREATEPROCEDURE员工工号y_实际工资
@员工工号ychar(10)='%'
AS
BEGIN
SELECT员工工号y,姓名y,部门代码y,职业,基本工资+福利补贴+奖励工资-失业保险-住房公积金as实际工资,日期
FROM员工,工资
WHERE员工工号y=员工工号gand员工工号g=@员工工号y
END
执行存储过程员工工号y_实际工资
execute员工工号y_实际工资'1110011'
2)、创建存储过程查询每个员工的扣除工资
----USEygxz
----GO
----CREATEPROCEDURE员工工号y_扣除工资
----@员工工号ychar(10)='%'
----AS
----BEGIN
----SELECT员工工号y,姓名y,部门代码y,职业,失业保险+住房公积金as扣除工资,日期
----FROM员工,工资
----WHERE员工工号y=员工工号gand员工工号g=@员工工号y
----END
--
----执行存储过程员工工号y_扣除工资
----execute员工工号y_扣除工资'1110011'
3)、创建存储过程查询各部门的人数
USEygxz
GO
CREATEPROCEDURE部门_人数
@部门代码char(10)='%'
AS
BEGIN
select部门名称,count(*)as总人数
from员工,科室
where部门代码k=部门代码yand部门代码y=@部门代码
groupby部门名称;
END
执行存储过程部门_人数
execute部门_人数'0003'
4)、创建存储过程查询各职业的人数
USEygxz
GO
CREATEPROCEDURE职业_人数
@职业char(10)='%'
AS
BEGIN
select职业,count(*)as总人数
from员工
where职业=@职业
groupby职业
END
执行存储过程职业_人数
execute职业_人数'销售专员'
5)、创建存储过程按部门查询工资
USEygxz
GO
CREATEPROCEDURE部门_工资
@部门代码char(10)='%'
AS
BEGIN
select员工工号y,姓名g,部门名称,职业,基本工资+福利补贴+奖励工资-失业保险-住房公积金as实际工资
from员工,工资,科室
where部门代码k=部门代码yand员工工号y=员工工号gand部门代码ylike@部门代码
end
执行存储过程部门_工资
execute部门_工资'0002'
6)、创建存储过程按职业查询工资
USEygxz
GO
CREATEPROCEDURE职业_工资
@职业nchar(20)='%'
AS
BEGIN
select员工工号y,姓名g,职业,基本工资+福利补贴+奖励工资-失业保险-住房公积金as实际工资
from员工,工资,科室
where员工工号y=员工工号gand部门代码k=部门代码yand职业=@职业
end
执行存储过程职业_工资
execute职业_工资'销售专员'
五总结
1、体会
此次课程设计给我的体会有以下几点:
一、看似简单,其实不然
以前没有过课程设计的经验,作为第一次课程设计课,我抱着试试看的态度去写,一开始看了只有这么几个模块是心里挺高兴的,但是当我真真正正地去把一个操作写成功时,很多意想不到的情况发生了。
有时候会为了一个操作不能调试成功而整个晚上都不能去安心做其他的作业。
2、冷静沉着、兢兢业业
编程是一个很繁琐的过程,要考虑到很多错误转移情况,在这期间会有很多以前不曾想过的问题出现,次数多了,不免会有觉得做不下去的感觉。
但是我从中发现,只要一步一步调试、静下心来看待问题,再复杂再微小的问题都会迎刃而解,当一个程序被调试出来时,那时的快乐相比与任何困难都值得的。
3、立足程序、回归
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 报告