资源预览内容
第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
第9页 / 共24页
第10页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第12章 员工基本工资 组成模块大连理工大学电子音像出版社 出版2学习目标 理解三层架构得基本思想; 根据业务逻辑分析需求; 把需求进行细化、分解, 搭建标准三层架构的基本框架; 理解三层架构中各层的相互引用的知识; 理解工厂层和接口层在整个架构体系中的作用; 能分步骤实现三层架构的代码。3业务逻辑分析 在学校中有三种工资的计算方法。首先, 所有职务都有基本工资。包括学院的领导 、教师、行政人员、保卫人员。除了基本 工资,有两种职务工资还有其它组成部分 :教师,要领取课时费;保卫,要领取值 班津贴,而且保卫的值班津贴要分白班和 夜班,因为白班和夜班的津贴额是不一样 的。所有工资发放都按月计算。 4设计测试用例 测试用例要求。 输入:员工流水号(员工号)、发放工资 的年、发放工资的月。 输出:员工的具体职务、员工在此年此月 的基本工资(三个组成部分的明细)、课 时费、值班津贴。 5设计测试用例 界面输入:输入 数据程序计 算输出 数据界面输出:员工号年月基本工资课时费(教师)值班津贴(保卫)6需求的细化与设计 分析职务工资和学历工资 员工的职务工资由员工的具体职务确定。 所以我们要得到职务工资数,首先要得到 员工的职务是什么。这些信息都储存在数 据库的职务工资表(Duty)中。 7需求的细化与设计 分析学历工资员工的学历工资由员工的学历高低确定。 所以我们要得到学历工资数,首先要得到 员工的学历是什么。这些信息都储存在数 据库的学历表(Title)中 但是在我们的用例设计中,我们输入的是 员工号码,而不是输入的学历编号和职务 编号,所以,还必须通过员工号码得到职 务编号和学历编号。这个逻辑是操作的员 工表(Employee) 8需求的细化与设计 分析学历工资 EmpID(员工流 水号)DutyID(职务编号)TitleID (学历编号)BasicWage(职务工资)TitleWage(学历工资)9需求的细化与设计 分析奖惩金额 奖惩就是在基本工资之外,该月对员工的 奖励或者因为员工违反了学校的纪律,对 员工的扣除金额。和前面讲的职务、学历 工资不同,奖惩每月是不固定的,也许没 有,也许有,而且还有多条奖惩记录。关 于员工的奖惩信息,储存在奖惩记录表( IncentivePenalty)中。 10需求的细化与设计 分析课时费和值班津贴 如果职务是教师等教学人员,则要计算教 师的课时费。就是教师每上一节课都有一 定的费用;课时费信息,储存在课时计算 表(SchoolTime) 。 通过EmpID(员工流水号)和SchoolYear (年)、SchoolMonth(月)得到该年月 这个员工的SchoolTimes(上课节数)。 该月课时费每节课金额该月上课节数。11需求的细化与设计 分析值班津贴 如果是保安等保卫人员,他们是24小时轮换值班 ,每值一次班,都有一定的津贴,而且白班和夜 班津贴不相同。值班津贴信息储存在津贴计算表 (SubSidy) 。 通过EmpID(员工流水号)和SubSidyYear(年 )、SubSidyMonth(月)得到该年月这个员工 的SubSidyNight(夜班次数)和SubSidyDay( 白班次数)。 该月值班津贴白班金额该月白班数夜班金额 该月夜班数。12标准三层架构的基本框架 PAMS:表现层所有的窗体界面。 BLL:逻辑层由表现层直接调用,通过逻辑层去调用接口层中的方法 DALFactory:工厂层在工厂层中定义配置信息,利用反射的技术, 决定在IDAL(接口层)中所定义的方法是由哪一个DAL(数据层) 来实现。如果使用的是SQL Server数据库,IDAL(接口层)中的方 法,就由SQLServerDAL来实现;如果要使用Access数据库,就由 AccessDAL来实现接口层中的方法。 IDAL:接口层定义完成任务所需要的方法。 SQLServerDAL:数据层实现IDAL层中定义的方法。所有的数据库 操作语句都写在次层中。可以定多个DAL(数据层)。如果是使用 SQL Server数据库,可以命名为SQLServerDAL,如果是Access数 据库,就可以命名为AccessDAL。 Model:实体层作为数据的载体传递信息,类似结构变量。13添加每层之间的引用关系 PAMS:BLL、Model、SQLServerDAL BLL:DALFactory、IDAL、ModelDAL Factory:IDAL、Model IDAL:Model SQLServerDAL:IDAL、Model Model:无14实现工资计算程序 界面设计 15实现工资计算的业务逻辑 分析职务工资的过程我们知道,职务工资 的计算要涉及到两张表,职务工资表(Duty) 和员工表(Employee)。在界面输入员工流 水号以后,首先要通过员工表(Employee) 得到DutyID(职务编号),然后再把 DutyID(职务编号)作为输入值,通过职 务工资表(Duty)得到BasicWage(职务工资) 。 16计算职务工资Model层 因为涉及到员工表和职务表,我们需要分 别针对这两个表建两个实体类:Duty.cs和 Employee.cs,在实体类中都是成员变量 和与成员变量对应的属性。大家可以注意 到,成员变量和属性都是和相关的数据库 表的字段对应的。这方面的内容,在前几 章我们已经详细讲解过。17计算职务工资IDAL层 在员工的接口类中,我们添加了一个方法 “PAMS.Model.Employee GetModel(int EmpID)”,它作 用是:输入员工号码,返回的一个员工的实体对象。为什 么这里我们没有把这个方法写成是:输入员工号码,返回 员工的职务ID,来直接满足我们的操作要求呢? 我们的目的是为了提高程序代码的适用性。在这个功能中 ,我们需要得到员工的职务号码,在下一个功能中,我们 又要得到员工的学历号码。也许以后还需要得到员工的职 称号码。所以,当遇到由一个表的主键得到其它字段值的 操作的时候,就直接返回一个实体。而不需要为每一个字 段的返回又去单独写一个方法。18计算职务工资DAL层 员工数据库操作实现类的代码:SQLServerDAL 层的EmployeeAccess.cs 职务数据库操作实现类的代码:SQLServerDAL 层的DutyAccess.cs 我们在数据层中,是为了实现在接口层的类中所 定义的方法。在接口层中我们定义的得到实体对 象的方法,就需要在这里具体实现。19计算职务工资 DALFactory层和BLL层 这里我们把工厂层(DALFactory)和逻辑层(BLL)放 在一起讲。逻辑层的作用是:实例化接口层(IDAL), 从而调用接口类中的操作方法。工厂层的作用是:在逻辑 层实例化接口层的时候,由工厂层来决定接口层中定义的 接口,由哪一个DAL来实现。如果是使用SQL Server数 据库,自然使用我们定义的SQLServerDAL,如果我们的 数据库平台要换成Oracle,那只要在程序上加写一个 OracleDAL,然后在工厂层中修改一下配置参数就可以使 用了。 通过这样的方法,实现了程序操作和数据库平台的无关性 ,把数据层的操作从程序中分离出来。而其中起控制作用 的就是工厂层。20计算职务工资表现层我们通过表现层来输入数据,输出结果。 计算职务工资,需要的输入值就是员工号 。通过前面的分析,我们知道应该分成两 个步骤,首先通过员工号得到职务号码, 然后再通过职务号码得到职务工资。其中 第一个过程操作的是员工表,第二个过程 操作的是职务表。 21计算职务工资表现层 EmpID(员工流水 号)DutyID(职务编号 )BasicWage(职务工资)DutyID(职务编号 )过程二过程一22实现工资计算的表现层的程序完善 表现层中的自定义方法和方法类 GetConfigValue(int ConID)得到配置信息:课时费、值 班津贴GetDutyNameByEmpID得到职务名称 GetDutyWageByEmpID得到职务工资 GetSubSidyByEmpID得到值班次数 GetSumIncPenDisByEmpID得到奖惩金额合计 GetSumSchoolTimesByEmpID得到上课次数 GetTitleWageByEmpID得到学历工资 SalaryComputeMethod(int id, string year, string month)构造函数,传入员工号、年、月23表现层中方法调用 我们通过最后对表现层的方法类中方法的调用实现最后的 操作目的:指定员工的某年某月的工资计算。 1通过对方法类SalaryComputeMethod的实例化,通 过构造函数传入外部参数: SalaryComputeMethod scm = new SalaryComputeMethod(empID, year, month); /实例化工资计算方法类,传入了这个类中构造函数需要 的三个参数:员工号、年、月 2调用对象的方法,计算基本工资 3判断职务,精细课时费和值班津贴的计算24标准三层架构的总结 标准三层架构各层间的访问过程 1传入值,将值进行类型转换 2创建BLL层的对象,通过对象访问BLL层的方法调用BLL层 3BLL层方法中取得数据访问层的实例,实例化IDAL层的接口对象,然后返 回IDAL层传入值所查找的内容的方法 4通过工厂层的选择,访问指定DAL层,返回一个完整的调用DAL层的结果 给 BLL层 5到此要调用DAL层,DAL层完成赋值Model层的对象值为空,给定一个参 数,调用sql层的sqlhelper的方法,读出每个字段的数据赋值给以定义为空的 Model层的对象 6sqlhelper执行sql命令,返回一个指定连接的数据库记录集,在这里需要 应用参数类型,提供位打开连接命令执行做好准备 7返回Model层把查询得到的一行记录值赋值给sql层的引入的Model层的 对象,然后把这个对象返回给BLL 8回到界面层的BLL层的方法调用,把得到的对象值返回,在前台显示给界 面
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号