《VC#.NET数据库应用程序设计 课件第13章 超假罚款计算模块》由会员分享,可在线阅读,更多相关《VC#.NET数据库应用程序设计 课件第13章 超假罚款计算模块(20页珍藏版)》请在金锄头文库上搜索。
1、第13章 超假罚款模块,大连理工大学 出版,模块业务,13.1系统业务 有的公司规定:员工有事可以请假,一年之内,事假不超过3天(含3天),每超过一天从工资中扣50元;病假不超过7天(含7天),每超过一天扣30元; 婚假不超过7天(含7天), 每超过一天扣60元;女员工产假不超过100天(含100天),每超过一天扣40元。,设计测试用例,13.2设计测试用例,基础知识综合应用,13.3基础知识综合应用 13.3.1存储过程应用,存储过程GetDepName,13.3.1.1存储过程GetDepName 从部门Department表中找出两列,部门编号DepartmentID,部门名称Depar
2、tmentName. 代码如下: create proc GetDepName as select DepartmentID,DepartmentName from Department,存储过程GetEmpName,13.3.1.2存储过程GetEmpName 功能是根据从外部传入一个部门的部门名称,在表Department中根据部门名称查找部门号,在表Employee中根据部门号查找该部门的员工姓名。代码如下: create PROCEDURE dbo.GetEmpName ( -从外部传入一个部门的部门名称数 DepName varchar(20) ) AS BEGIN -在表Depar
3、tment中根据部门名称,查找部门号; -在表Employee中根据部门号查找该部门的员工姓名; select EmpID,EmployeeName from Employee where DepartmentID in(select DepartmentID from dbo.Department where DepartmentName=DepName) END,存储过程GetLeaveName,13.3.1.3存储过程GetLeaveName -获取请假的类型名称 create proc GetLeaveName as -选择请假类型表所有的列 select LeaveTypeID,Le
4、aveType,LeaveDay,LeaveMoney from LeaveType,存储过程LeaveRecordPROC,13.3.1.4存储过程LeaveRecordPROC 其功能是往请假登记(LeaveRecord) 表中插入数据 create proc LeaveRecordPROC ( EmpID INT, LeaveType INT, BeginDate datetime, EndDate datetime, Remark varchar(50), checkedDays float ) as begin INSERT INTO LeaveRecord(EmpID,LeaveT
5、ype,BeginDate,EndDate,Remark,Days,checkedDays) VALUES(EmpID,LeaveType,BeginDate,EndDate,Remark,datediff(dd,BeginDate,EndDate),checkedDays) End,存储过程EmpLeaveWage,13.3.1.5存储过程EmpLeaveWage 其功能是计算员工超假罚款 CREATE PROC EmpLeaveWage as select EmployeeName as 员工姓名,sum(dbo.LeaveWage(BeginDate,EndDate,LeaveType)
6、 请假罚款 from dbo.LeaveRecord LR JOIN dbo.Employee EY ON LR.EmpID=EY.EmpID group by EmployeeName 注意,在这个存储过程中调用了一个自定义函数 LeaveWage,标量函数应用,13.3.2 标量函数应用 标量函数是用户自定义函数的一种,函数是由一个或多个 Transact-SQL 语句组成的子程序,可用于封装代码以便重新使用。下面的自定义函数的作用就是:输入请假开始时间、请假结束时间、请假类型,计算出请假扣款额。详解见第17章标量函数定义。,泛型应用,13.3.3 泛型应用 13.3.3.1泛型列表Get
7、DepName 在类Department中有一个泛型列表,其功能:用存储过程GetDepName从数据表Department中取获取系部编号DepartmentID和系部名称DepartmentName,把两列的值存放到泛型列表ListDep中, ListDep作为整个方法的返回值。IList GetDepName()中的数据用于绑定界面中“请假人单位”组合框。,泛型列表GetEmpName,13.3.3.2泛型列表GetEmpName 在Employee类有一泛型列表GetEmpName(),其功能是从外部传入部门名称,找到该部门人所有员工。 在类与类之间进行信息交换时,采用了构造方法传值的
8、方式。,泛型列表GetLeaveName,13.3.3.3泛型列表GetLeaveName 在类LeaveType中有一个泛型列表GetLeaveName,其功能是从请假数据表LeaveType中查找请假编号、请假类型、请假天数、超假罚金。用声明的泛型列表对象ListLT装载从数据库读取的值,而整个GetLeaveName的返回值也是泛型列表对象ListLT的值。,反射应用,13.3.4 反射应用 13.3.4.1用反射获取类Department中字段 13.3.4.2用反射获取类Employee中字段 13.3.4.3用反射获取类LeaveType中字段 用反射获取请假类LeaveType中
9、字段,存进数组propertyLeave中去。代码如下: public PropertyInfo GetLeaveColumn() LeaveType LT = new LeaveType(); PropertyInfo propertyLeave = LT.GetType().GetProperties(); return propertyLeave; ,超假罚款模块实现,13.4超假罚款模块实现 13.4.1插入员工请假信息 13.4.1.1设计UML 图,单元测试,13.4.1.6单元测试,生成测试项目,13.4.1.6.2选择输出项目,打开测试视图,13.4.1.6.4 打开测试视图,测试结果,