《数据库类课程设计》系统开发报告学号: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、数据库物理结构分析设计策略由于该系统主要用于员工的工资管理,其中工资的录入、计算、扣除与查询,人员的增删减是主要功能,所以应用程序主要就是实现这几个功能。
系统总体结构图系统详细设计说明①员工基本信息表[员工]的创建;②部门基本信息表[科室]的创建;③员工工资基本信息表[工资]的创建3、数据库概念结构设计数据库概念设计是整个数据库设计的关键。
根据用户需求设计数据库的概念,数据模型。
我们首先要将现实世界中的客观对象首先抽象为不依赖任何具体机器的信息结构,这种信息结构不是DBMS支持的数据模型,而是概念级模型。
然后再把概念模型转换为具体机器上DBMS支持的数据模型。
概念模型是对现实世界的抽象和概括。
它真实,充分地反映了现实世界中的事物和事物之间的联系,能满足用户对数据的处理要求。
由于其简洁、明晰、独立于机器,很容易理解,因此可以用概念模型和不熟悉计算机的用户交换意见,使用户能积极参与数据库的设计工作。
概念模型易于变动,还很容易向各种数据模型转换。
概念模型的基本概念涉及的主要有7个,分别为实体、属性、码、域、实体型、实体集、联系。
E-R图是概念模型最常用的表示方法,在E-R图中:1)用长方形表示实体型,在框内写上实体名。
2)用菱形表示实体间的联系,菱形框内写上联系名,用无向边把菱形分别与有关实体相连,在无向边旁标上联系的类型。
若实体间的联系也具有属性,则把属性和菱形也用无向边连上。
员工实体——关系图(图1)部门实体——关系图(图2)工资实体——关系图(图3)部门——员工实体关系图(图4)员工——工资实体关系图(图5)4、数据库逻辑结构设计根据上述概念模型设计得出的E—R图,我们可以得出系统中涉及的主要实体有3个,其结构如下:1、员工(员工工号,姓名、性别、出生日期、部门代码和职业)2、部门(部门代码,部门名称)3、工资(员工工号,姓名,日期,基本工资,奖励工资,福利补贴,住房公积金,失业保险)实体间的联系工资管理系统中实体之间有6个联系,其关系如下:1、具有1关系:员工和奖金的关系是1:N,N个职位相同的员工具有相同的奖金基数。
2、工薪关系:员工和工资单的关系是1:N,每个员工每个月都有一张工资单。
3、属于关系:员工和部门的关系是N:1,一个部门可以有多个员工。
4、聘用关系:员工和职业的关系是N:1,一个职务可以聘用多个员工。
5、设置关系:部门和职业的关系是M:N,一个部门可以设置多个职务,相同的职务也可以设置在多个部门。
根据以上逻辑结构分析我们可以知道:一个部门有多个员工,每个员工都有工资,工资又由基本工资等组成,其关系模式为:表、视图汇总完整性约束:基本表[员工]基本表[科室]基本表[工资]四员工薪资管理系统数据库功能模块的创建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)) ----GO2 录入员工表,工资表,科室表的数据然后查询表USE ygxzGOINSERT科室VALUES('0001','经理室')INSERT科室VALUES('0002','财务科')INSERT科室VALUES('0003','技术科')INSERT科室VALUES('0004','销售科')GOSELECT*FROM科室USE ygxzGOINSERT员工VALUES('1110001','张毅','男','1991-01-01','0003','工程师') GOINSERT员工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 ygxzGOINSERT工资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') GOSELECT*FROM工资3 运用触发器删除表中的信息create trigger del_ygon员工instead of deleteasbegindelete工资where员工工号g in(select员工工号y from deleted) delete员工where员工工号y in(select员工工号y from deleted) enddelete员工where员工工号y='1110003'goSELECT*FROM工资SELECT*FROM员工I4 视图查询表中的信息create view Y01(员工工号y,姓名y,性别,职业,部门名称,出生日期,基本工资,福利补贴,奖励工资,失业保险,住房公积金)asselect员工工号y,姓名y,性别,职业,部门名称,出生日期,基本工资,福利补贴,奖励工资,失业保险,住房公积金from员工,工资,科室where员工工号y=员工工号g;查询职工总人数select count(distinct员工工号y)职工总人数from Y01--查询部门总数--select count(distinct 部门名称) as 科室--from y015 存储过程的创建1)、创建存储过程查询每个员工的实际发放工资USE ygxzGOCREATE PROCEDURE员工工号y_实际工资@员工工号y char(10)='%'ASBEGINSELECT员工工号y,姓名y,部门代码y,职业,基本工资+福利补贴+奖励工资-失业保险-住房公积金as实际工资,日期FROM员工,工资WHERE员工工号y=员工工号g and员工工号g=@员工工号yEND执行存储过程员工工号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 ygxzGOCREATE PROCEDURE部门_人数@部门代码char(10)='%'ASBEGINselect部门名称,count(*)as总人数from员工,科室where部门代码k=部门代码y and部门代码y=@部门代码group by部门名称;END执行存储过程部门_人数execute部门_人数'0003'4)、创建存储过程查询各职业的人数USE ygxzGOCREATE PROCEDURE职业_人数@职业char(10)='%'ASBEGINselect职业,count(*)as总人数from员工where职业=@职业group by职业END执行存储过程职业_人数execute职业_人数'销售专员'5)、创建存储过程按部门查询工资USE ygxzGOCREATE PROCEDURE部门_工资@部门代码char(10)='%'ASBEGINselect员工工号y,姓名g,部门名称,职业,基本工资+福利补贴+奖励工资-失业保险-住房公积金as实际工资from员工,工资,科室where部门代码k=部门代码y and员工工号y=员工工号g and部门代码y like @部门代码end执行存储过程部门_工资execute部门_工资'0002'6)、创建存储过程按职业查询工资USE ygxzGOCREATE PROCEDURE职业_工资@职业nchar(20)='%'ASBEGINselect员工工号y,姓名g,职业,基本工资+福利补贴+奖励工资-失业保险-住房公积金as实际工资from员工,工资,科室where员工工号y=员工工号g and部门代码k=部门代码y and职业=@职业end执行存储过程职业_工资execute职业_工资'销售专员'五总结1、体会此次课程设计给我的体会有以下几点:一、看似简单,其实不然以前没有过课程设计的经验,作为第一次课程设计课,我抱着试试看的态度去写,一开始看了只有这么几个模块是心里挺高兴的,但是当我真真正正地去把一个操作写成功时,很多意想不到的情况发生了。