《数据库类课程设计》系统开发报告学号:__________ 111007133 _____________姓名:_____________ 邢小迪 __________________题目企业员工薪资管理___________指导教师:__________ 王红梅 _________________提交时间:2013年6月01日_______________计算机科学与应用系目录一绪论二员工薪资管理系统概述•1现状分析•I系统目标・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 个职位相同的 员工具有相同的奖金基数。
都有一张工资单。
3、 属于关系:员工和部门的关系是 个员工。
4、 聘用关系:员工和职业的关系是 多个员工。
5、 设置关系:部门和职业的关系是置多个职务,相同的职务也可以设置在多个部门根据以上逻辑结构分析我们可以知道:一个部门有多个员 工,每个员工都有工资,工资又由基本工资等组成,其关系模式 为:2、工薪关系:员工和工资单的关系是1: N ,每个员工每个月N : 1,一个部门可以有多 N : 1,一个职务可以聘用 M : N ,一个部门可以设表、视图汇总4.3完整性约束:基本表[员工]基本表[工资]埶拥去刃」员工工号M char[lO^姓宿¥Hnar 〔 HD) in >l±0JCti^r[2)出生曰期 datetime部门代码# dnar f 1O^ ▽ 职业td-iar(2O^□员工工号口 dnar( 10)姓容9 char^ 10} 基本工黄mon 皂¥ 福利补贝占mio ney 漠赃1工施 money 块业保齢 moneY 住房公枳金 maney 曰期date tiren回回121厨回回匣基本表[科室]<rhsr[3O5XC 讦审EJ口列容藪蚂粪里处许空・・・.・』・・・《匕四员工薪资管理系统数据库功能模块的创建1 建立员工表,工资表,科室表--USE ygxz--GO --CREATE TABLE 科室--(部门代码 k char (10) PRIMARy KEY, --部门名称 char (30) NOT NULL) --GO数握狂字rc 讦仝cFidi c±o>Qo--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)) --GOmoneymoneymoney money datetime--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,奖励工資 失11好睑 住房公趣金-- 住房公积金money,--日期datetime ,-- constraint cl check (基本工资+福利补贴+奖励工资-失业保险-住房公积金<=3000))2 录入员工表,工资表,科室表的数据然后查询表USEygxzGOINSERT科室VALUES('0001','经理室')INSERT科室VALUES('0002','财务科')INSERT科室VALUES('0003','技术科')INSERT科室VALUES('0004','销售科')GOSELECT*FROM 科室部门代码k部门容称卜□001& -I 10002财务科・■・0003 技术科S 4 ■0004 誚毎科*7UWZUSEygxz GOINSERT 员工VALUES('1110001','张毅','男','1991-01-01' ,'0003','工程师') GOINSERT 员工VALUES('1110002':张尔','男','1991-02-01' INSERT 员工VALUES('1110003','张三','男','1991-02-02'INSERT 员工VALUES('1110004','李四','女','1991-04-02' NSERT 员工VALUES ('1110005','李梦','女','1992-04-02'INSERT 员工VALUES('1110006','李飞','女','1991-04-02'NSERT 员工VALUES ('1110007','王梦','女','1992-04-02'NSERT 员工VALUES ('1110008','邢梦','女','1992-04-02'INSERT 员工VALUES('1110009','武阳','男','1992-05-02' INSERT 员工VALUES ('1110010','无双':男' ,'1993-05-02' INSERT 员工VALUES ('1110011','霸气':男' ,'1992-05-02' SELECT* FROM 员工员工工号¥出生曰期 部门优码丫 剣 4►1110001弓臟1991/1/1 0:00:000003工程环[1111D0D21991/^/10:00:00 0003 工劉币11110Q03 张三 畀199 1/2/2C;WJ:QO0003助理工程师1L1D0O4 李四女1991/4/2 0:00100 0003助理工稗师111OQQ5 李梦199 2/4/2 0:CW :0a 0003助理工程师三1L10006李飞女1991/4/2 0:001000002 会计 11110D07199 2/4/2 0:00:0a0002 助理会T1110008女 199 2/4A 0:00:000002助理会,'0003','工程师') ,'0003','助理工程师') ,'0003','助理工程师') ,'0003','助理工程师'),'0002','会计') ,'0002','助理会计') ,'0002','助理会计') ,'0002','助理会计') ,'0001','副经理') ,'0001','秘书')11100K武阳1992/5/2 0:00:00 00021110010 无瑕畀1993/5/2 0:00;00 0001副轻理1L1DO11 1992/5/2 0:00:00 0001 貌书中二,c 1110012吴敬敏1989/5/2 0:00:00 0002财务专罠1110013 吴飞扬1983/5/2 0: Mt 00 00041L10D14男199 1/5/2 0:00:0口0001总经理〒* 1irr 1 *USEygxzGOINSERT 工资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工资员工工号g基本工资福利年卜站羹勵工熒尖业保瞪A ►1110001 张毅2000.0000 2000000 300.0000 LOO.OOQO 1110002 2000.0000 200.0000 300.0000 100.00001110003 张三1600, OOW 200.0000 200.0000 100.00001110004 李四lfiOO.OOOO 200.0000 200,0000 10 D. 00001110005 李梦isoo.oooo 200-0000 200-0000 Wg-QOQO1110006 李飞2500.0000 200.0000 ^oo.oooa LOD.OCOO1110007 2100.0000 200-0000 400.0000 ioo.oor*U 10003 邢梦2100.0000 200.0000 «0,0000 100.00(2 1110009武阳2100.0000 200.0000 qoo.oooo lOO.OOC^r¥11100 10 无双2700,0000 wo.oooa 300.0000 200.000i1110011 am2000.0000 200.0000 400.0000LOO.OOOl 中・1110012 吴淑敏2200, OOW 200.0000 400.0000 lOO.OOQO 1110013 吴飞扬2250.0000 100.0000 400,0000 too. 0000 H10014 邢小迪2750.0000 200-0000 ^00.0000WO-QOQO * 1rmWord 文档3运用触发器删除表中的信息create trigger del_ygon员工in stead 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 员工I山 mrxwis 至驻 七 1时対M 恥 恥网 onoi4视图查询表中的信息create view Y01(员工工号y,姓名y,性别,职业,部门名称,出生日期,基本工资,福利补贴,奖励工 资,失业保险,住房公积金) asselect 员工工号y ,姓名y ,性别,职业,部门名称,出生日期,基本工资,福利补贴,奖励工资,失业保 险,住房公积金 from 员工,工资,科室 where 员工工号 y=员工工号 g ; 查询职工总人数select count (distinet 员工工号 y ) 职工总人数 from Y01--查询部门总数 --select count(distinet 部门名称)as 科室--from y01二1纯果科室 1 [工]I5存储过程的创建1)、创建存储过程查询每个员工的实际发放工资USEygxz GOCREATEPROCEDURE 员工工号丫_实际工资 员工工号 y char (10)='%' ASJ 结果.J 消息2 3斗5灵工工号g 姓名g"iiitxMii"_"l 强談■ivi oSe1110004 mows 11100M200000 200 00 MOOO 1M.M 24^.00 15 00:00:00.™ 1SOT.00 200.00 2OT0D 1OT.&0 240.OT 2013-05-15 O&W OO.DOO 180000 2DOOO 2WJ 00 1OD.M240.04 ?013-[&15 50:00:00.000250000200.4M.0C100.M240.00MIS H DS-IBODOOM.OM *基本工福利补」奖励工.,光业保20DQOT 2D0 003«) DO 1W.M 仕馬公积…曰朗240.W 2013^35-15廷匚E 号y1 riiiowr・・・ w —!«irrnm2111(XW231110WM出生曰期1S91-01-&1 W K 000M19(91-Q2-&1 M :00:(K> 000 1^51-&44)2 &D 50 W.OTD0003工削币 0D03 工程师 0003 助理SELECT员工工号y,姓名y,部门代码y,职业,基本工资+福利补贴+奖励工资-失业保险-住房公积金as实际工资,日期FROM员工,工资WHERE员工工号y=员工工号g and 员工工号g =员工工号yEND执行存储过程员工工号『_实际工资execute员工工号y_实际工资'1110011'a结果口消息SZI^y姓钮部门代码y虑业买际工.日期1 pi 11 rail";菇气MM1 酗书2360.OT 2011-05-15 WMOO.OOO2)、创建存储过程查询每个员工的扣除工资——USE ygxz—GO----CREATE PROCEDURE 员工工号y_扣除工资----员工工号y char(10)='%'----AS一BEGIN----SELECT员工工号y,姓名y,部门代码y,职业,失业保险+住房公积金as扣除工资,日期----FROM 员工,工资----WHERE 员工工号y=员工工号g and 员工工号g=员工工号y----END----执行存储过程员工工号『_扣除工资----execute 员工工号y_扣除工资'1110011'圍结果总消息员工工号y姓钮部门代码>■职业扣E紅…日期pr-m ・rn-iin • ■ ■■ irnil・i —s、、1110011 | 密气0001 税书240 00 2013-05^1500;00;00 &(>01 I3)、创建存储过程查询各部门的人数USEygxzCREATEPROCEDURE 部门—人数部门代码char (10)='%'ASBEGINselect部门名称,count (*) as总人数from员工科室where部门代码k=部门代码y and部门代码y=部门代码group by部门名称;END执行存储过程部门_人数execute 部门_人数'0003'□结臬1部门容称immi ・rvini ■HBiimiari:总人数54)、创建存储过程查询各职业的人数USEygxzGOCREATEPROCEDURE 职业—人数职业char(10)='%'ASBEGINselect 职业,count (*) as 总人数from 员工where职业=职业group by 职业END执行存储过程职业_人数execute职业—人数'销售专员'5)、创建存储过程按部门查询工资USEygxz GOCREATEPROCEDURE 部门—工资 部门代码 char (10)='%' AS BEGINselect 员工工号y 姓名g,部门名称职业,基本工资+福利补贴+奖励工资-失业保险-住房公积 金as 实际工资 from 员工,工资,科室where 部门代码k=部门代码y and 员工工号y=员工工号g and 部门代码y like 部门代码 end执行存储过程部门_工资execute 部门—工资'0002'二I 结果由消息6) 、创建存储过程按职业查询工资USEygxz GOCREATEPROCEDURE 职业—工资 职业 nchar (20)='%' AS BEGINselect 员工工号y,姓名g,职业,基本工资+福利补贴+奖励工资-失业保险-住房公积金as 实际 工资 from 员工,工资,科室where 员工工号y=员工工号g and 部门代码k=部门代码y and 职业=职业 end执行存储过程职业_工资execute 职业—工资'销售专员'直 结果曲哨息 _______________________________________________________员工工号y实罰工資1i 1110013吴飞杨请售专员 2410W)员工工号y 姓勵部门名…职业 实际工费—Bine —nt M11Q0D6] 李飞27GO.-DO111CMXF7 王梦助理合计23fiOOO111MKB 财务料 助理会讣 23® 00 1110009財务科助理会计 23GQOO 1110012吴型硕 财箸科財势专员 3460.0012 3 4 521110015料g儒梢售专员2260.0031110016前朝擢甫售专员2260M41110017吴飞杨涓售专员2260.0051110013李敏消售专员2260.00五总结1、体会此次课程设计给我的体会有以下几点:一、看似简单,其实不然以前没有过课程设计的经验,作为第一次课程设计课,我抱着试试看的态度去写,一开始看了只有这么几个模块是心里挺高兴的,但是当我真真正正地去把一个操作写成功时,很多意想不到的情况发生了。