资源描述
《数据库类课程设计》
系统开发报告
学 号:
姓 名: 邢小迪
题 目: 公司员工薪资管理
指引教师: 王红梅
提交时间: 6月01日
计算机科学与应用系
目 录
一 绪论
二 员工薪资管理系统概述·······························1
l 现状分析········································1
l 系统目的········································2
l 系统特点········································3
三 员工薪资管理系统数据库设计·························3
l 需求分析 ·······································3
l 数据库物理构造分析 ····························4
l 数据库概念构造设计 ····························6
l 数据库逻辑构造设计····························9
四 员工薪资管理系统数据库功能模块创立···········12
五 总结·············································21
l 体会·········································21
l 参照文献·····································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)
员工
员工—工资
工资
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 建立员工表,工资表,科室表
--USE ygxz
--GO
--CREATE TABLE 科室
--(部门代码k char (10) PRIMARy KEY,
-- 部门名称char (30) NOT NULL)
--GO
--CREATE TABLE 员工
--(员工工号y char (10) PRIMARy KEY,
-- 姓名y char(10) not null,
-- 性别 char(2) constraint Y3 check (性别in ('男','女')),
-- 出生日期datetime,
-- 部门代码y char (10)foreign key (部门代码y) references 科室(部门代码k),
-- 职业char (20))
--GO
--CREATE TABLE 工资
--(
-- 员工工号g char (10)primary key ,
--constraint Y1 check (员工工号g between '1110000' and '1111111'),
--foreign key(员工工号g) references 员工(员工工号y),
-- 姓名g char(10),
--
-- 基本工资money,
-- 福利补贴money,
-- 奖励工资money,
-- 失业保险money,
-- 住房公积金money,
-- 日期datetime ,
-- constraint c1 check (基本工资+福利补贴+奖励工资-失业保险-住房公积金<=3000))
--
--GO
2 录入员工表,工资表,科室表数据然后查询表
USE ygxz
GO
INSERT 科室
VALUES('0001','经理室')
INSERT 科室
VALUES('0002','财务科')
INSERT 科室
VALUES('0003','技术科')
INSERT 科室
VALUES('0004','销售科')
GO
SELECT *
FROM 科室
USE ygxz
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 员工
USE ygxz
GO
INSERT 工资
VALUES ('1110001','张毅','','200','300','100','240','-05-15')
INSERT 工资
VALUES ('1110002','张尔','','200','300','100','240','-05-15')
INSERT 工资
VALUES ('1110003','张三','1800','200','200','100','240','-05-15')
INSERT 工资
VALUES ('1110004','李四','1800','200','200','100','240','-05-15')
INSERT 工资
VALUES ('1110005','李梦','1800','200','200','100','240','-05-15')
INSERT 工资
VALUES ('1110006','李飞','2500','200','400','100','240','-05-15')
INSERT 工资
VALUES ('1110007','王梦','2100','200','400','100','240','-05-15')
INSERT 工资
VALUES ('1110008','邢梦','2100','200','400','100','240','-05-15')
INSERT 工资
VALUES ('1110009','武阳','2100','200','400','100','240','-05-15')
INSERT 工资
VALUES ('1110010','无双','2700','100','300','200','240','-05-15')
INSERT 工资
VALUES ('1110011','霸气','','200','400','100','140','-05-15')
INSERT 工资
VALUES ('1110012','吴淑敏','2200','200','400','100','240','-05-15')
INSERT 工资
VALUES ('1110013','吴飞扬','2250','100','400','100','240','-05-15')
INSERT 工资
VALUES ('1110014','邢小迪','2750','200','400','100','440','-05-15')
INSERT 工资
VALUES ('1110015','朱鸿儒','2100','200','300','100','240','-05-15')
INSERT 工资
VALUES ('1110016','熊朝辉','2100','200','300','100','240','-05-15')
INSERT 工资
VALUES ('1110017','吴飞扬','2100','200','300','100','240','-05-15')
INSERT 工资
VALUES ('1110018','杨亚迪','2140','200','300','100','240','-05-15')
INSERT 工资
VALUES ('1110019','李敏','2100','200','300','100','240','-05-15')
INSERT 工资
VALUES ('1110020','郭佳','2440','200','300','100','240','-05-15')
GO
SELECT *
FROM 工资
3 运用触发器删除表中信息
create trigger del_yg
on 员工
instead of delete
as
begin
delete 工资where 员工工号g in (select 员工工号y from deleted)
delete 员工where 员工工号y in (select 员工工号y from deleted)
end
delete 员工
where 员工工号y='1110003'
go
SELECT *
FROM 工资
SELECT *
FROM 员工
I
4 视图查询表中信息
create view Y01( 员工工号y,姓名y,性别,职业,部门名称,出生日期,基本工资,福利补贴,奖励工资,失业保险,住房公积金)
as
select 员工工号y,姓名y,性别,职业,部门名称,出生日期,基本工资,福利补贴,奖励工资,失业保险,住房公积金
from 员工,工资,科室
where 员工工号y=员工工号g;
查询职工总人数
select count(distinct 员工工号y) 职工总人数
from Y01
--查询部门总数
--select count(distinct 部门名称) as 科室
--from y01
5 存储过程创立
1)、创立存储过程查询每个员工实际发放工资
USE ygxz
GO
CREATE PROCEDURE 员工工号y_实际工资
@员工工号y char(10)='%'
AS
BEGIN
SELECT 员工工号y,姓名y,部门代码y,职业,基本工资+福利补贴+奖励工资-失业保险-住房公积金as 实际工资,日期
FROM 员工,工资
WHERE员工工号y=员工工号g and 员工工号g=@员工工号y
END
执行存储过程员工工号y_实际工资
execute 员工工号y_实际工资'1110011'
2)、创立存储过程查询每个员工扣除工资
----USE ygxz
----GO
----CREATE PROCEDURE 员工工号y_扣除工资
----@员工工号y char(10)='%'
----AS
----BEGIN
----SELECT 员工工号y,姓名y,部门代码y,职业,失业保险+住房公积金as 扣除工资,日期
----FROM 员工,工资
----WHERE 员工工号y=员工工号g and 员工工号g=@员工工号y
----END
--
----执行存储过程员工工号y_扣除工资
----execute 员工工号y_扣除工资'1110011'
3)、创立存储过程查询各部门人数
USE ygxz
GO
CREATE PROCEDURE 部门_人数
@部门代码 char(10)='%'
AS
BEGIN
select 部门名称,count(*) as 总人数
from 员工,科室
where 部门代码k= 部门代码y and 部门代码y=@部门代码
group by 部门名称;
END
执行存储过程部门_人数
execute 部门_人数'0003'
4)、创立存储过程查询各职业人数
USE ygxz
GO
CREATE PROCEDURE 职业_人数
@职业 char(10)='%'
AS
BEGIN
select 职业,count(*) as 总人数
from 员工
where 职业=@职业
group by 职业
END
执行存储过程职业_人数
execute 职业_人数'销售专人'
5)、创立存储过程按部门查询工资
USE ygxz
GO
CREATE PROCEDURE 部门_工资
@部门代码 char(10)='%'
AS
BEGIN
select 员工工号y,姓名g,部门名称,职业,基本工资+福利补贴+奖励工资-失业保险-住房公积金as 实际工资
from 员工,工资,科室
where 部门代码k=部门代码y and 员工工号y=员工工号g and 部门代码y like @部门代码
end
执行存储过程部门_工资
execute 部门_工资'0002'
6)、创立存储过程按职业查询工资
USE ygxz
GO
CREATE PROCEDURE 职业_工资
@职业 nchar(20)='%'
AS
BEGIN
select 员工工号y,姓名g,职业,基本工资+福利补贴+奖励工资-失业保险-住房公积金as 实际工资
from 员工,工资,科室
where 员工工号y=员工工号g and 部门代码k=部门代码y and 职业=@职业
end
执行存储过程职业_工资
execute 职业_工资'销售专人'
五 总结
1、 体会
本次课程设计给我体会有如下几点:
一、看似简朴,其实否则
此前没有过课程设计经验,作为第一次课程设计课,我抱着试试看态度去写,一开始看了只有这样几种模块是心里挺高兴,但是当我真真正正地去把一种操作写成功时,诸多意想不到状况发生了。有时候会为了一种操作不能调试成功而整个晚上都不能去安心做其她作业。
二、 冷静沉着、兢兢业业
编程是一种很繁琐过程,要考虑到诸多错误转移状况,在这期间会有诸多此前不曾想过问题浮现,次数多了,不免会有觉得做不下去感觉。但是我从中发现,只要一步一步调试、静下心来看待问题,再复杂再微小问题都会迎刃而解,当一种程序被调试出来时,那时高兴相比与任何困难都值得。
三、 立足程序、回归课本
在着手写程序时觉得思路一片混乱,无意间浮现问题会不懂得怎么解决。这时,需要回归课本,课本是前人总结经验,几乎所有状况都会有解决办法。只有把课本“吃透”,在遇到问题是才会反映快。
最后我要感谢我同窗同窗,在本次课程设计过程中与她们探讨深究,使我受益颇多,在此,我表达衷心感谢.
2、参照文献
[1] 申时凯,戴祖诚等 数据库原理与技术(SQLserver).清华大学出版社,
[2] 王珊,萨师煊 数据库系统概论[M] .高等教诲出版社,
[3] 郑阿奇等 SQLserver实用教程[M] .电子工业出版社,
展开阅读全文