资源描述:
《超假罚款计算模块》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第13章超假罚款模块大连理工大学电子音像出版社出版模块业务13.1系统业务有的公司规定:员工有事可以请假,一年之内,事假不超过3天(含3天),每超过一天从工资中扣50元;病假不超过7天(含7天),每超过一天扣30元;婚假不超过7天(含7天),每超过一天扣60元;女员工产假不超过100天(含100天),每超过一天扣40元。设计测试用例13.2设计测试用例基础知识综合应用13.3基础知识综合应用13.3.1存储过程应用存储过程名称输入参数执行结果GetDepName无查找部门表中部门编号、部门名称GetEmpName部门名称根据传入的该部门名称查找该部门所有员工号和员工姓名GetLeaveN
2、ame无获取员工请假类型表的所有数据LeaveRecordPROC员工编号、请假类型号、开始日期、结束日期等在请假登记(LeaveRecord)表中插入员工的请假数据EmpLeaveWage无分组计算出每个员工超假罚款总额存储过程GetDepName13.3.1.1存储过程GetDepName从部门Department表中找出两列,部门编号DepartmentID,部门名称DepartmentName.代码如下:createprocGetDepNameasselectDepartmentID,DepartmentNamefromDepartment存储过程GetEmpName13.3.1
3、.2存储过程GetEmpName功能是根据从外部传入一个部门的部门名称,在表Department中根据部门名称查找部门号,在表Employee中根据部门号查找该部门的员工姓名。代码如下:createPROCEDURE[dbo].[GetEmpName](--从外部传入一个部门的部门名称数@DepNamevarchar(20))ASBEGIN--在表Department中根据部门名称,查找部门号;--在表Employee中根据部门号查找该部门的员工姓名;selectEmpID,EmployeeNamefromEmployeewhereDepartmentIDin(selectDepartm
4、entIDfromdbo.DepartmentwhereDepartmentName=@DepName)END存储过程GetLeaveName13.3.1.3存储过程GetLeaveName-获取请假的类型名称createprocGetLeaveNameas--选择请假类型表所有的列selectLeaveTypeID,LeaveType,LeaveDay,LeaveMoneyfromLeaveType存储过程LeaveRecordPROC13.3.1.4存储过程LeaveRecordPROC其功能是往请假登记(LeaveRecord)表中插入数据createprocLeaveRecord
5、PROC(@EmpIDINT,@LeaveTypeINT,@BeginDatedatetime,@EndDatedatetime,@Remarkvarchar(50),@checkedDaysfloat)asbeginINSERTINTOLeaveRecord(EmpID,LeaveType,BeginDate,EndDate,Remark,Days,checkedDays)VALUES(@EmpID,@LeaveType,@BeginDate,@EndDate,@Remark,datediff(dd,@BeginDate,@EndDate),@checkedDays)End存储过程Em
6、pLeaveWage13.3.1.5存储过程EmpLeaveWage其功能是计算员工超假罚款CREATEPROCEmpLeaveWageasselectEmployeeNameas员工姓名,sum(dbo.LeaveWage(BeginDate,EndDate,LeaveType))请假罚款fromdbo.LeaveRecordLRJOINdbo.EmployeeEYONLR.EmpID=EY.EmpIDgroupbyEmployeeName注意,在这个存储过程中调用了一个自定义函数LeaveWage标量函数应用13.3.2标量函数应用标量函数是用户自定义函数的一种,函数是由一个或多个T
7、ransact-SQL语句组成的子程序,可用于封装代码以便重新使用。下面的自定义函数的作用就是:输入请假开始时间、请假结束时间、请假类型,计算出请假扣款额。详解见第17章标量函数定义。泛型应用13.3.3泛型应用13.3.3.1泛型列表GetDepName在类Department中有一个泛型列表,其功能:用存储过程GetDepName从数据表Department中取获取系部编号DepartmentID和系部名称DepartmentN