数据库课程设计报告 - 范文中心

数据库课程设计报告

02/23

《数据库类课程设计》

系统开发报告

学 号: 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)

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 (基本工资+福利补贴+奖励工资-失业保险-住房公积金

2 录入员工表,工资表,科室表的数据然后查询表

USE ygxz GO

INSERT 科室

V ALUES ('0001' , ' 经理室' ) INSERT 科室

V ALUES ('0002' , ' 财务科' ) INSERT 科室

V ALUES ('0003', ' 技术科' ) INSERT 科室

V ALUES ('0004' , ' 销售科' ) GO

SELECT * FROM 科室

USE ygxz GO

INSERT 员工

V ALUES ('1110001' , ' 张毅' , ' 男' , '1991-01-01' , '0003' , ' 工程师' ) GO

INSERT 员工

V ALUES ('1110002' , ' 张尔' , ' 男' , '1991-02-01' , '0003' , ' 工程师' ) INSERT 员工

V ALUES ('1110003' , ' 张三' , ' 男' , '1991-02-02' , '0003' , ' 助理工程师' ) INSERT 员工

V ALUES ('1110004' , ' 李四' , ' 女' , '1991-04-02' , '0003' , ' 助理工程师' ) NSERT 员工

V ALUES ('1110005' , ' 李梦' , ' 女' , '1992-04-02' , '0003' , ' 助理工程师' ) INSERT 员工

V ALUES ('1110006' , ' 李飞' , ' 女' , '1991-04-02' , '0002' , ' 会计' ) NSERT 员工

V ALUES ('1110007' , ' 王梦' , ' 女' , '1992-04-02' , '0002' , ' 助理会计' ) NSERT 员工

V ALUES ('1110008' , ' 邢梦' , ' 女' , '1992-04-02' , '0002' , ' 助理会计' ) INSERT 员工

V ALUES ('1110009' , ' 武阳' , ' 男' , '1992-05-02' , '0002' , ' 助理会计' ) INSERT 员工

V ALUES ('1110010' , ' 无双' , ' 男' , '1993-05-02' , '0001' , ' 副经理' ) INSERT 员工

V ALUES ('1110011' , ' 霸气' , ' 男' , '1992-05-02' , '0001' , ' 秘书' ) SELECT * FROM 员工

USE ygxz GO

INSERT 工资

V ALUES ('1110001' , ' 张毅' , '2000' , '200' , '300' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110002' , ' 张尔' , '2000' , '200' , '300' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110003' , ' 张三' , '1800' , '200' , '200' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110004' , ' 李四' , '1800' , '200' , '200' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110005' , ' 李梦' , '1800' , '200' , '200' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110006' , ' 李飞' , '2500' , '200' , '400' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110007' , ' 王梦' , '2100' , '200' , '400' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110008' , ' 邢梦' , '2100' , '200' , '400' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110009' , ' 武阳' , '2100' , '200' , '400' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110010' , ' 无双' , '2700' , '100' , '300' , '200' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110011' , ' 霸气' , '2000' , '200' , '400' , '100' , '140' , '2013-05-15' ) INSERT 工资

V ALUES ('1110012' , ' 吴淑敏' , '2200' , '200' , '400' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110013' , ' 吴飞扬' , '2250' , '100' , '400' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110014' , ' 邢小迪' , '2750' , '200' , '400' , '100' , '440' , '2013-05-15' ) INSERT 工资

V ALUES ('1110015' , ' 朱鸿儒' , '2100' , '200' , '300' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110016' , ' 熊朝辉' , '2100' , '200' , '300' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110017' , ' 吴飞扬' , '2100' , '200' , '300' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110018' , ' 杨亚迪' , '2140' , '200' , '300' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110019' , ' 李敏' , '2100' , '200' , '300' , '100' , '240' , '2013-05-15' ) INSERT 工资

V ALUES ('1110020' , ' 郭佳' , '2440' , '200' , '300' , '100' , '240' , '2013-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] 申时凯,戴祖诚等 数据库原理与技术(SQLserver2005).清华大学出版社,2010

[2] 王珊,萨师煊 数据库系统概论[M] .高等教育出版社,2012

[3] 郑阿奇等 SQLserver实用教程[M] .电子工业出版社,2011


相关内容

  • 哈夫曼树课程设计
    中南林业科技大学 课程设计报告 设计名称: 数据结构课程设计 姓 名: 王昆 学 号: 20094282 专业班级: 2009级软件工程 系 (院): 计算机与信息工程学院 设计时间: 2010~2011学年第二学期 设计地点: 电子信息楼 ...
  • 超市库存管理软件设计
    沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:软件综合课程设计 课程设计题目:超市库存管理软件设计 院(系):计算机学院 专 业:计算机科学与技术 班 级: 学 号: 姓 名: 指导教师: 说明:结论(优秀.良好.中等.及格.不及 ...
  • 数据库课程设计教学大纲
    <数据库课程设计>教学大纲 课程编号 :0300609 课程名称 :<数据库课程设计> 课程性质:实践必修课 适用专业 :信息管理与信息系统 学 分:1 学分 周 数:1周 先修课程 :<C 语言>, & ...
  • [软件工程]优秀课程建设总结报告
    <软件工程>优秀课程建设总结报告 在德州学院<软件工程>优质课程建设的工作中,我们课程组全体成员认识到<软件工程>是计算机软件专业的一门核心基础课程,搞好这门课程的建设,对于提高计算机科学与技术专业学生的 ...
  • 大学生计算机基础实验报告
    < 大学计算机基础>课程 实验报告手册 学院 年级 专业 姓名 学号 任课教师 上机地点 (以上由学生填写) 实验教师(签字) 西南大学计算机与信息科学学院 计算机基础教育系 年 月 日 一. 实验说明 本课程实验分为一般性实验 ...
  • 数据库员工薪资管理系统课设
    课程设计(论文)任务书 院 专业 一.课程设计(论文) 题目 员工薪资管理系统 二.课程设计(论文) 工作自 2016 年 6 月 13 日起至 2016 年 6月 17 日止 三.课程设计(论文) 地点: 软件工程实训中心 四.课程设计( ...
  • [电动工具检验与测试]课程标准
    <电动工具检验与测试>课程标准 课程代码: 建议课时数: 110 学分:6 适用专业:机械制造与自动化(电动工具)专业 先修课程:<电工电子技术应用>.<材料应用与处理>.<质量管理>.< ...
  • 物料需求计划编制指导书
    吉林化工学院 生产计划与控制课程设计报告 (工业工程专业) 教 学 院 机电工程学院 专业班级 工程00801 学生姓名 王滨义 学生学号 08440106 目 录 第1章 课程设计目的和要求........................ ...
  • 逻辑表达式课程设计报告
    中北大学 课程设计报告 学期 学 院: 信息与通信工程学院 专 业: 电子信息科学与技术 学 生 姓 名: 向 伟 学 号: 1505044245 课程设计题目: 逻辑表达式的合理性判断 起 迄 日 2016年 12 月 12 日-2016 ...
  • 图书馆系统课程设计报告(20**年)
    课程设计 设计人专业 软件工程 年级 设计人学号 [1**********]1姓名 吴翼佳 成绩 设 计 题 目 集美大学图书馆借阅管理系统 设计人学号 [1**********]4姓名 吴树森 成绩 设计人学号 姓名 设计人学号 姓名 成 ...