1、资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。数据库类课程设计系统开发报告学 号: 姓 名: 邢小迪 题 目: 企业员工薪资管理 指导教师: 王红梅 提交时间: 6月01日 计算机科学与应用系 目 录一 绪论二 员工薪资管理系统概述1l 现状分析1l 系统目标2l 系统特点3三 员工薪资管理系统数据库设计3l 需求分析 3l 数据库物理结构分析 4l 数据库概念结构设计 6l 数据库逻辑结构设计9四 员工薪资管理系统数据库功能模块的创立12五 总结21l 体会21l 参考文献22一 绪论 随着计算机技术的飞速发展和经济体制改革的不断深入, 传统企业管理方法、 手段以及工作效率已不能
2、适应新的发展需要, 无法很好地完成员工工资管理工作。提高公司企业管理水平的主要途径是更新管理者的思想, 增强对管理活动的科学认识。基于SQLserver数据库技术建立一个通用工资管理系统, 该系统为提供了查询、 增加记录、 删除等功能, 功能比较的齐全, 并对工资进行了统计如津贴管理、 报表统计等。基本上能满足管理员和公司的要求。 此次数据库课程设计的主要设计如下: 原理分析、 程序设计过程、 程序实现和程序调试以及数据库的设计。 需求分析、 概要结构设计、 逻辑结构设计、 物理结构设计和数据库的实施和维护。二 员工薪资管理系统概述1、 现状分析 随着企业人员数量增加, 企业的工资管理工作也变
3、得越来越复杂。早期的工资统计和发放都是使用人工方式处理纸质材料, 不但花费财务人员大量的时间且不易保存, 往往由于个人的因素抄写不慎或计算疏忽, 出现工资发放错误的现象。早期工资管理多采取纸质材料和具有较强的时间限制。随着中国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善, 各个行业都在积极使用现代化的手段, 不断改进服务质量, 提高工作效率, 这些都在很大程度上给企业提出越来越严峻的挑战, 对企业体系无论是在行政职能、 企业管理水平以及优质服务上都提出更高的要求。建设一个科学高效的信息管理系统是解决这一问题的必由之路。企业内部财务管理是该企业运用现代化技术创造更多更高的
4、经济效益的主要因素之一。工资管理作为企业内部的一种财务管理也是如此, 由于企业职工人数较多, 每一位职工的具体实际情况也不尽相同, 各项工资条款的发放, 如果没有一个完整的管理系统对企业和员工的工作都带来许多的不便。基于以上原因, 企业工资管理系统使用电脑安全保存、 快速计算、 全面统计, 实现工资管理的系统化、 规范化、 自动化。2、 系统目标 员工薪资管理系统的主要目的是利用计算机对员工的各种工资信息进行日常的管理, 如查询、 修改、 添加、 删除以及存储等, 迅速准确地完成各种工资信息的统计计算和汇总工作, 针对系统服务对象的具体要求, 设计了企业工资管理系统。企业工资管理系统主要有以下
5、几大功能: (1)对单位人员的变动进行处理。一个单位的职工不会是一成不变的, 总是在不断的变化: 有调出、 有调入、 也有职工在本单位内部调动。因此, 设计系统是应考虑到这些情况。 (2)对职工的工资进行计算、 修改。能够对职工的工资档案进行个别、 部分和批量修改, 同时, 能对各职工的工资进行计算, 即计算基本工资、 岗位工资及实发金额等。 (3)查询统计功能。要求即能够单项查询, 比如查看某个职工的工资情况等; 也能够多项查询, 比如某个部门所有的员工的工资信息。 ( 4) 对用户管理功能。一个系统的应用有管理员和普通用户, 她们对系统的权限受到限制。3、 系统特点 (1) 本系统使工资管
6、理基本实现了信息化, 系统设计的各种查询要求代替了原来了人工查询, 即节省了人力, 又减轻了员工的工作量, 最重要的是由计算机操作, 能够提高数据的准确性, 避免人为的错误, 方便管理。 (2) 本系统设置了系统数据备份功能, 定期的系统备份能够在数据库受到意外的或有意的破坏的情况下, 系统得以恢复, 减少损失。 (3) 本系统的界面设计简洁明了, 采用了流行的菜单设计, 对于不是计算机专业的管理人员, 只需阅读操作说明书, 就能方便的使用本系统。三 员工薪资管理系统数据库设计1、 需求分析 本系统定位于中小型单位, 暂时考虑单机环境下的实现; 本系统采用会员式管理, 每个属于该单位的职工都有
7、一个属于自己的用户名和密码, 经过该用户名和密码就能够登陆系统执行基于自己权限范围内的操作, 系统功能应包括员工基本信息的输入输出与修改、 各部门的基本信息输入修改、 员工工资的基本情况、 总工资的计算、 统计分析。员工能够经过此系统查询自己本月的基本工资, 福利, 奖金以及出去失业保险可住房公积金后的工资。该工资管理系统主要是由基本资料、 工资登记、 工资查询、 系统管理几个部分组成的, 主要用于单位工资发放管理。( 1) 基本资料包括员工基本资料和部门的基本资料: 员工基本资料: 能够输入该员工的编号、 姓名、 性别、 出生日期、 位于哪个部门、 所处的职业。部门基本资料: 能够输入部门的
8、编号、 名称 。( 2) 工资登记包括工资登记和清数据: 能够录入员工本月的基本工资、 奖金福利、 失业保险和住房公积金, 能够清除以前的数据。( 3) 工资查询包括员工工资汇总查询。( 4) 分类查询包括按部门查询和按日期查询。2、 数据库物理结构分析2.1 设计策略由于该系统主要用于员工的工资管理, 其中工资的录入、 计算、 扣除与查询, 人员的增删减是主要功能, 因此应用程序主要就是实现这几个功能。2.2 系统总体结构图员工工资管理系统员工信息录入部门信息录入员工工资查询员工总工资计算系统管理员工子系统登录验证部门信息修改工资统计个人资料工资查询2.3系统详细设计说明 员工基本信息表员工
9、的创立; 部门基本信息表科室的创立; 员工工资基本信息表工资的创立3、 数据库概念结构设计数据库概念设计是整个数据库设计的关键。根据用户需求设计数据库的概念, 数据模型。我们首先要将现实世界中的客观对象首先抽象为不依赖任何具体机器的信息结构, 这种信息结构不是DBMS支持的数据模型, 而是概念级模型。然后再把概念模型转换为具体机器上DBMS支持的数据模型。概念模型是对现实世界的抽象和概括。它真实, 充分地反映了现实世界中的事物和事物之间的联系, 能满足用户对数据的处理要求。由于其简洁、 明晰、 独立于机器, 很容易理解, 因此能够用概念模型和不熟悉计算机的用户交换意见, 使用户能积极参与数据库
10、的设计工作。概念模型易于变动, 还很容易向各种数据模型转换。概念模型的基本概念涉及的主要有7个, 分别为实体、 属性、 码、 域、 实体型、 实体集、 联系。ER图是概念模型最常见的表示方法, 在ER图中: 1) 用长方形表示实体型, 在框内写上实体名。2) 用菱形表示实体间的联系, 菱形框内写上联系名, 用无向边把菱形分别与有关实体相连, 在无向边旁标上联系的类型。若实体间的联系也具有属性, 则把属性和菱形也用无向边连上。 员工实体关系图( 图1) 员工员工号姓 名性 别职 业所属部门年龄 部门实体关系图( 图2) 部 门部门编号名 称部 门部门编号名 称 工资实体关系图( 图3) 奖励工资
11、住房公积金福利补贴失业保险基本工资工资日期 部门员工实体关系图( 图4) 部 门部门员工员 工 员工工资实体关系图( 图5) 员工员工工资工资4、 数据库逻辑结构设计 4.1 根据上述概念模型设计得出的ER图, 我们能够得出系统中涉及的主要实体有3个, 其结构如下: 1、 员工( 员工工号, 姓名、 性别、 出生日期、 部门代码和职业) 2、 部门( 部门代码, 部门名称) 3、 工资( 员工工号, 姓名, 日期, 基本工资, 奖励工资, 福利补贴, 住房公积金, 失业保险) 4.2 实体间的联系工资管理系统中实体之间有6个联系, 其关系如下: 1、 具有1关系: 员工和奖金的关系是1: N,
12、 N个职位相同的员工具有相同的奖金基数。 2、 工薪关系: 员工和工资单的关系是1: N, 每个员工每个月都有一张工资单。 3、 属于关系: 员工和部门的关系是N: 1, 一个部门能够有多个员工。 4、 聘用关系: 员工和职业的关系是N: 1, 一个职务能够聘用多个员工。 5、 设置关系: 部门和职业的关系是M: N, 一个部门能够设置多个职务, 相同的职务也能够设置在多个部门。 根据以上逻辑结构分析我们能够知道:一个部门有多个员工, 每个员工都有工资, 工资又由基本工资等组成, 其关系模式为: 员工编号( 主键) 姓名性别出生日期部门代码 ( 外键) 职业部门号( 主键) 部门名称员工工号(
13、 主键) 姓名基本工资福利补贴奖励工资失业保险住房公积金日期表、 视图汇总视图/表名类型说明员工基本表集中保存员工的基本信息科室基本表集中存放单位各部门的信息工资基本表存放员工工资的基本信息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 c
14、har(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),-
15、姓名g char(10),- - 基本工资money,- 福利补贴money,- 奖励工资money,- 失业保险money,- 住房公积金money,- 日期datetime ,- constraint c1 check (基本工资+福利补贴+奖励工资-失业保险-住房公积金=3000)-GO 2 录入员工表, 工资表, 科室表的数据然后查询表USE ygxzGOINSERT 科室VALUES(0001,经理室)INSERT 科室VALUES(0002,财务科)INSERT 科室VALUES(0003,技术科)INSERT 科室VALUES(0004,销售科)GO SELECT *FROM 科
16、室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,李飞,女,19
17、91-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 工
18、资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,李飞,2
19、500,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,14
20、0, -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)
21、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_ygon 员工instead of
22、deleteasbegindelete 工资where 员工工号g in (select 员工工号y from deleted) delete 员工where 员工工号y in (select 员工工号y from deleted) end delete 员工where 员工工号y=1110003goSELECT *FROM 工资 SELECT *FROM 员工I4 视图查询表中的信息create view Y01( 员工工号y,姓名y,性别,职业,部门名称,出生日期,基本工资,福利补贴,奖励工资,失业保险,住房公积金)asselect 员工工号y,姓名y,性别,职业,部门名称,出生日期,基本
23、工资,福利补贴,奖励工资,失业保险,住房公积金from 员工,工资,科室where 员工工号y=员工工号g;查询职工总人数select count(distinct 员工工号y) 职工总人数from Y01-查询部门总数-select count(distinct 部门名称) as 科室-from y015 存储过程的创立1) 、 创立存储过程查询每个员工的实际发放工资USE ygxzGOCREATE PROCEDURE 员工工号y_实际工资员工工号y char(10)=%ASBEGIN SELECT 员工工号y,姓名y,部门代码y,职业,基本工资+福利补贴+奖励工资-失业保险-住房公积金as
24、 实际工资,日期FROM 员工,工资WHERE员工工号y=员工工号g and 员工工号g=员工工号yEND执行存储过程员工工号y_实际工资execute 员工工号y_实际工资11100112) 、 创立存储过程查询每个员工的扣除工资-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_扣除工资-exe
25、cute 员工工号y_扣除工资11100113) 、 创立存储过程查询各部门的人数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(
26、*) 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 部门_工资00026) 、
27、创立存储过程按职业查询工资USE ygxzGOCREATE PROCEDURE 职业_工资职业 nchar(20)=%ASBEGINselect 员工工号y,姓名g,职业,基本工资+福利补贴+奖励工资-失业保险-住房公积金as 实际工资from 员工,工资,科室where 员工工号y=员工工号g and 部门代码k=部门代码y and 职业=职业end执行存储过程职业_工资execute 职业_工资销售专员五 总结1、 体会此次课程设计给我的体会有以下几点: 一、 看似简单, 其实不然以前没有过课程设计的经验, 作为第一次课程设计课, 我抱着试试看的态度去写, 一开始看了只有这么几个模块是心里
28、挺高兴的, 可是当我真真正正地去把一个操作写成功时, 很多意想不到的情况发生了。有时候会为了一个操作不能调试成功而整个晚上都不能去安心做其它的作业。二、 冷静沉着、 兢兢业业编程是一个很繁琐的过程, 要考虑到很多错误转移情况, 在这期间会有很多以前不曾想过的问题出现, 次数多了, 不免会有觉得做不下去的感觉。可是我从中发现, 只要一步一步调试、 静下心来看待问题, 再复杂再微小的问题都会迎刃而解, 当一个程序被调试出来时, 那时的快乐相比与任何困难都值得的。三、 立足程序、 回归书本在着手写程序时觉得思路一片混乱, 无意间出现的问题会不知道怎么解决。这时, 需要回归书本, 书本是前人总结的经验, 几乎所有情况都会有解决方法。只有把书本”吃透”, 在遇到问题是才会反应快。最后我要感谢我的同窗同学, 在此次课程设计过程中与她们探讨深究, 使我受益颇多, 在此, 我表示衷心的感谢. 2、 参考文献1 申时凯, 戴祖诚等 数据库原理与技术( SQLserver ) 清华大学出版社, 2 王珊, 萨师煊 数据库系统概论M 高等教育出版社, 3 郑阿奇等 SQLserver实用教程M 电子工业出版社,