数据库工资管理系统报告和代码大全

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据库原理及应用课程设计报告题目:工资管理系统所在学院:信息工程学院班级:学号:姓名:指导教师:2014年1月2日目录一、概述二、需求分析三、概念设计四、逻辑设计五、系统实现六、小结一、概述在工资管理中,需要从公司管理方式以及实际情况中提取相关信息,以反映工资管理情况。传统的手工操作方式,易发生数据丢失,统计错误,劳动强度高,且速度慢。使用计算机可以高速,快捷地完成以上工作。避免重复劳动,规范工资管理行为,从而提高了管理效率和水平。让人们的效率大大提高.不难想象,正是资讯的迅速发展使得人们从过去繁复的手工劳作中得以解脱,从而使这种服务在现在才可能迅速普及。同时,编写一套完整的工资管理系统的任务就显得尤为重要。本课程设计共分为四大模块:1.系统数据初始化2.工基本信息数据的输入、修改、删除;3.员工个人信息及工资表的查询;4,员工工资的计算;二、需求分析本系统主要用于员工基本信息的管理,对员工以及其他信息的添加、修改、删除、查询等基本操作。对于数据库的保护有数据备份和数据恢复的功能。针对这些要求,设计本月工资信息管理系统。该系统主要包括职工信息、工资级别和工资金额、公司福利表等。⒈员工基本状况包括员工号、员工姓名、性别、所在部门、工资级别、工资等级等。2.工资级别和工资金额包括工资等级、工资额。3.企业部门及工作岗位信息包括部门名称、工作岗位名称、工作岗位工资等。4.工龄和工资金额包括工龄及对应工资额。5.公司福利表包括福利名称、福利值。本系统概念设计思想:1.对公司软硬件调查,从实际环境出发,以便充分利用公司现在资源,提高系统开发水平和应用效果。2.了解公司的需要及相关方面的规定,根据需要做出符合要求的软件,并达到操作过程中的直观、方便、实用、安全等要求。3.将系统按模块分工到人,提高效率,且模块化设计便于系统功能的各种组合和修改及日后的维护。4.系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改等操作。图1.1系统功能模块图工资管理系统系统模块工资生成模块津贴管理模块考勤管理模块员工管理模块图2.1第一层数据流图修改职工信息删除职工记录输入职工基本信息职工表添加操作修改操作删除操作用户查询操作职工号数据库操作操作数据系统操作工资信息考勤信息进入基本界面职工信息津贴管理图2.3工资的信息载入图2.4考勤的信息载入修改考勤信息删除考勤信息输入考勤基本信息考勤表添加操作修改操作删除操作查询操作用户修改工资信息删除工资信息输入工资基本信息工资表添加操作修改操作删除操作查询操作图2.5津贴的信息载入图2.6信息查询及管理的流程图三、概念设计修改津贴信息删除津贴信息输入津贴基本信息津贴表添加操作修改操作删除操作查询操作用户职工管理员进入系统进入员工(工资,考勤,津贴)表职工表工资表考勤表津贴表进行录入,修改,删除,查询操作分析前面的系统功能要求,需要一个表来存储和管理员工信息,使系统能够接受员工原始的各项数据,以实现数据录入、查询或统计员工信息等功能。员工是本系统的第一个实体。为了能实现查询和统计部门内员工情况等功能,必须有一个表来存储和管理所有部门的信息。部门是本系统的第二个实体。工资是以员工工作情况来制定的。需要建立一个表来记录各种工资、津贴、扣款的信息。它主要为各种查询和统计功能提供工资数据。工资是第3个实体。据此可以绘出工资管理系统数据库的E-R图如下:1NMM1实体属性列表如下:实体属性员工工号姓名性别年龄籍贯身份证号婚姻状况学历部门名称工种工龄职务等级部门部门名称部门负责人部门人数工号工资年月岗位工资部门员工工资工作获得工资岗位补贴出勤天数加班工时加班天数加班类别加班工资病假扣款事假扣款其他扣款应发工资实发工资四、逻辑设计将数据库的概念模型转换为关系模型:实体转换成的关系模式有:员工(工号,姓名,性别,年龄,籍贯,身份证号,婚姻状况,学历,部门名称,工种,工龄,职务等级)部门(部门编号,部门名称,部门负责人,部门人数)获得(工号,姓名)工资(工号,工资年月,岗位工资,岗位补贴,出勤天数,加班工时,加班工资,加班天数,加班类别,病假扣除,事假扣除,其它扣除,应发工资,实发工资)因为,员工与工资是1:N的关系,所以各关系模式为:员工(工号,姓名,性别,年龄,籍贯,身份证号,婚姻状况,学历,部门名称,工种,工龄,职务等级)部门(部门名称,部门负责人,部门人数)工资(工号,工资年月,岗位工资,岗位补贴,出勤天数,加班工时,加班工资,加班天数,加班类别,病假扣除,事假扣除,其它扣除,应发工资,实发工资)带下划线的属性为各关系模式的外码,字体为粗体的属性为各关系模式的主码。关系规范式:工资管理系统∈1NF每个属性均不可再分五、系统实现5界面截图5.1主界面5.2登录界面5.3管理员管理工资界面5.4信息录入,修改,删除,查询界面5.5职工信息查询界面5.6职工密码修改界面六、小结通过这次的课程设计实验,我发现自己对数据库课程的兴趣有了很大提高,而且对课本的知识更加的了解并有了一定的掌握,通过实验我懂得了如何创建索引、视图、存储过程以及触发器。以前不懂为何要创建触发器、视图等,现在终于知道它们的优点了。在自己没做数据库课程设计以前,总是觉得自己什么都不懂什么都不会,但是现在做出来了,所以我觉得自己还是有能力做一些实际操作方面的东西。我相信以后通过自己自学其它课程,我一定会做出一个更好的数据库通过课程设计让我有机会把知识学以至用,而不单是停留在理论的基础上,为以后的学习和工作提供了宝贵的经验,打下了坚实的基础,虽然课程设计时间短暂,但对我来说过的很充实,更重要的是学到了很多书本上没有的东西,提高了自己的动手能力.在此过程中又学到了许多未知的代码,大大的充实了自己的知识.数据库代码CREATEDATABASE工资管理库ONPRIMARY(NAME=工资管理库,FILENAME='D:\工资管理库_data.mdf',SIZE=4MB,MAXSIZE=6MB,FILEGROWTH=2MB)LOGON(NAME='工资管理库_log',FILENAME='D:\工资管理库.ldf',SIZE=1MB,MAXSIZE=25MB,FILEGROWTH=10%)createtable部门(部门名称CHAR(50)NOTNULLprimarykey,部门负责人CHAR(50)NOTNULL,部门人数CHAR(50));createtable员工(工号CHAR(50)NOTNULLprimarykey,姓名CHAR(50)NOTNULL,性别CHAR(2)DEFAULT'男'CHECK(性别IN('男','女')),年龄CHAR(10)NOTNULL,籍贯VARCHAR(50)NOTNULL,身份证号CHAR(50)UNIQUENOTNULL,婚姻情况CHAR(50),学历CHAR(50),部门名称CHAR(50)NOTNULL,工种CHAR(50),工龄CHAR(4)NOTNULL,职务等级CHAR(50));CREATETABLE工资(工号char(50)notnullprimarykey,工资年月char(50)notnull,岗位工资decimalnotnull,岗位补贴decimal,出勤天数decimalnotnull,加班工时decimal,加班工资decimal,加班天数decimal,加班类别char(50),病假扣款decimal,事假扣款decimal,其他扣款decimal,应发工资decimal,实发工资decimalnotnull,foreignkey(工号)references员工(工号));altertable工资addconstraintCK_gonghocheck(工号0);createtable系统用户(用户名char(50)primarykey,用户权限char(50),用户密码char(10),)createtable工龄工资(工龄char(4)primarykey,工龄工资float(8)notnull);createtable员工登陆密码(工号CHAR(50)primarykey,密码char(6),foreignkey(工号)references员工(工号));altertable员工登陆密码addconstraintCK_gonghcheck(工号0);(三)视图(1)查询员工工资情况建立一个视图,反映员工姓名及工资情况。CREATEVIEW员工_工资ASSELECT员工.姓名,工资.*FROM员工,工资WHERE员工.工号=工资.工号(四)存储过程(1)指定员工工资情况的查询定义一个名为stsffCost的存储过程,该存储过程以以工资年月(@staffgongzi)、出勤天数(@staffchuqin)、加班工资(@staffjiaban)、应发工资(@staffying)、实发工资(@staffshi)为输入参数返回指定员工工资信息的存储过程。stsffCost代码如下:CREATEPROCEDUREstaffCost@staffgongzidecimal,@staffchuqindecimal,@staffjiabandecimal,@staffyingdecimal,@staffshidecimalASSELECT*FROM工资WHERE工资年月=@staffgongziAND出勤天数=@staffchuqinAND加班工资=@staffjiabanAND应发工资=@staffyingAND实发工资=@staffshiGO(2)指定范围的员工的信息查询。以员工工号、部门编号为输入参数返回指定员工基本信息的存储过程,要求输入部分员工信息查询员工全部信息。定义一个名为stsffInfo的存储过程,该存储过程以员工工号(@staffNum)、部门编号(@bmNum)作为输入参数,存储过程返回查询到的结果集。satffInfo的定义代码如下:CREATEPROCEDUREstaffInfo@staffNumVARCHAR(50)='%',@bmNumVARCHAR(50)='%'ASSELECT*FROM员工,部门WHERE员工.部门名称=部门.部门名称AND((员工.工号LIKE@staffNumVARCHAR(50)+'%')AND(部门编号LIKE@bmNumVARCHAR(50)+'%'))GO(3)统计指定年份各部门每个月份的工资总额。以年份为输入参数,以总工资金额为输出参数,产生该年度12个月份的每部门工资统计的存储过程。定义该存储过程名为bmMonhSum,输入参数为@ThisYear,实现代码如下:CREATEPROCEDUREbmMonthSum@ThisYearCHAR(10)ASSELECTDATEPART(MM,工资年月)AS员工工资月份,SUM(实发工资)AS部门人数FROM员工,工资,部门WHERE员工.工号=工资.工号AND员工.部门名称=部门.部门名称ANDDATEPART(YYYY,工资年月)=@ThisYearGROUPBYDATEPART(MM,工资年月)GO(五)触发器(1)关键操作,在工资表里添加一条新的记录,实发工资会自动更新新的数据。定义这个触发器名称为insert_工资。代码如下:createtriggerinsert_工资on工资forinsertasdeclare@ichar(20)declare@bbintset@i=casewhen@bb=0001then'实发工资'when@bb=0002then'实发工资'endprint@i(2)员工新调入进行员工新调入操作是在员工信息表中添加一条新的记录,可以为员工信息表设计一个Insert触发器,当员工信息表执行Insert操作后自动更改出部门信息表相应记录的数据。定义这个触发器名称为staff_insert。其代码如下:CREATETRIGGERstaff_insertON员工FORINSERTASIF(SELECTCOUNT(*)FROM部门,inserted,工资

1 / 55
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功