`
xizhenyin
  • 浏览: 53061 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

类设计基础-------雇员工资统计

阅读更多

      

      两类雇员,一种是合同雇员,他们的每月工资基本是固定的;而另一类是计时雇员,他们的薪水则与其工作了多少小时来计算。在每月发放工资前,公司的会计会求出所有员工的工资总额,然后到银行取出对应的数额准备发放工资。
设计系统,求每月员工的工资总和。

 

       本题中雇员分为合同雇员和即时雇员。首先要找出他们的相同的地方:名字,取得工资;不同的是小时工有工时,合同工为每月的固定工资,二者在计算工资总和方式也不一样。

 

       把共性的东西放在抽象类里,分别定义合同工类和计时工类从抽象类里继承。

 

 

 基类 雇员类

package com.xzy;
/**
 * 基类 雇员类
 * @author xizhenyin
 *
 */
public abstract class Employee {
    protected String name;
    
    
    
	public abstract int getSalary();
    
	
}

 

 

合同工类:

package com.xzy;
/**
 * 合同工类
 * @author xizhenyin
 *
 */
public class ContractEmployee extends Employee{
    private int salary;
    
    public ContractEmployee(String name,int salary){
    	this.name=name;
    	this.salary = salary;
    }
    
    @Override
	public int getSalary() {
		// TODO Auto-generated method stub
		return salary;
	}
    
    public  String toString(){
		return  "正式工"+" "+name +"  "+ getSalary();
	}
	
}

 

 

计时工类:

package com.xzy;
/**
 * 小时工类
 * @author xizhenyin
 *
 */
public class HourEmployee extends Employee{
    private static final int each = 30; //每小时工资
    private int hours;
    
    public HourEmployee(String name,int hours){
    	this.name=name;
    	this.hours = hours;
    }
	@Override
	public int getSalary() {
		// TODO Auto-generated method stub
		return each*hours;
	}
    
	public  String toString(){
		return "小时工"+" "+name +"  "+ getSalary();
	}
	


}

 

 

统计类:

package com.xzy;

import java.util.ArrayList;
import java.util.List;
/**
 * 
 * @author xizhenyin
 *
 */
public class Caculator {
    List<Employee> emps ;
    
    public Caculator(){
    	emps = new ArrayList<Employee>();
    }
    
    public void addEmployees(Employee em){
    	emps.add(em);
    	
    }
    
    //计算总工资
    public int sumSalary(){
    	int sum=0;
    	for(Employee e:emps){
    		sum = sum + e.getSalary();
    	}
    	return sum;
    }
    
    
    public void printInfo(){
    	for(Employee e:emps){
    		System.out.println(e);
    	}
    }
    
	public static void main(String[] args) {
		Caculator ca = new Caculator();
	
		//加入正式工
		ca.addEmployees(new ContractEmployee("Jack",1200));
		ca.addEmployees(new ContractEmployee("Dawi",2000));
		ca.addEmployees(new ContractEmployee("Lily",2455));
		ca.addEmployees(new ContractEmployee("Lucy",2200));
		ca.addEmployees(new ContractEmployee("Miil",2500));
		ca.addEmployees(new ContractEmployee("Mydi",2400));
		
		
		//加入小时工
		ca.addEmployees(new HourEmployee("Bill",4));
		ca.addEmployees(new HourEmployee("Milu",6));
		ca.addEmployees(new HourEmployee("Cidy",3));
		ca.addEmployees(new HourEmployee("Honey",2));
		ca.addEmployees(new HourEmployee("Pipo",3));
		
		ca.printInfo();
		System.out.println();
		System.out.println("合计"+ca.sumSalary());
		

	}

}

  

 

运行结果:

 

正式工 Jack  1200
正式工 Dawi  2000
正式工 Lily  2455
正式工 Lucy  2200
正式工 Miil  2500
正式工 Mydi  2400
小时工 Bill  120
小时工 Milu  180
小时工 Cidy  90
小时工 Honey  60
小时工 Pipo  90

合计13295


      两个类ContractEmployee和HourEmployee都有自己工资计算方法,但必须实现父类规定实现的getSalary函数,这使得变化隐藏在接口背后,一方面便于修改而适于变化,另一方面也使外界计算工资总额的代码得以简化。

1
0
分享到:
评论

相关推荐

    小型公司工资管理系统设计__c++课程设计.pdf

    小型公司工资管理系统设计__c++课程设计 通过分析给定的文件信息,我们可以总结出以下几个知识点: 1.课程设计目的: * 要求学生达到熟练掌握c++语言的基本知识和技能 * 基本掌握面向对象程序设计的基础思路和...

    《C++程序设计》课程设计指导书

    《C++程序设计》课程设计指导书主要涵盖了两个项目,分别是小型公司工资管理系统的设计和学生成绩统计管理系统的设计,旨在深化学生对C++语言的理解,尤其是类的概念、封装和继承,以及系统开发的整个流程。...

    公司工资管理系统

    ### 公司工资管理系统知识点解析 ...通过定义合适的结构体和类,以及合理的功能设计,能够满足中小型企业对于员工工资管理的基本需求。此外,通过对链表的操作,使得系统具有较好的扩展性和灵活性。

    ”小型公司工资管理系统设计“c++课程设计.doc

    - **程序流程图**:流程图展示了从基础雇员类到各个派生类的关系,以及系统的主要操作步骤。 - **程序代码**:示例代码中包含了类定义、数据输入、输出格式化和功能调用的框架。例如,Employee类定义了基本的员工...

    课程设计——小型公司工资管理系统.doc

    - **类结构**:设计了一个基础雇员类`Employee`,并根据员工类型派生出`Tech`(技术员)、`Seller`(销售员)、`Manager`(经理)和`XManager`(销售经理)类。所有基类都是虚基类,便于多态性操作。 - **数据输入**:使用...

    09信息与计算科学专业面向对象课程设计任务书

    - 使用继承构建类结构(雇员类作为虚基类,教师类和工人类作为派生类)。 - 输出职工信息。 - 运算符重载。 - 平均年龄计算与年龄分布柱状图显示。 **题目3: 公司工资管理系统** - **设计要求**:管理公司各类...

    php雇员管理

    - **报表与统计**:提供各种数据分析报告,如员工出勤率、工资总额等。 - **通知与消息**:系统可以发送提醒或公告,保持团队之间的有效沟通。 6. **开发框架与最佳实践** 虽然这个系统可能是基于原始PHP代码...

    C++课程设计-人员信息管理系统源码.doc

    4.课程设计原理:面向对象程序分析与设计、类的灵活运用、继承和派生、多态技术、模板技术、异常处理等5.课程设计内容:某小型公司,需要存储管理公司雇员的编号、姓名、级别、月薪等信息,通过面向对象技术来实现...

    C++职工工资管理系统

    1. **掌握基础知识**: 综合运用在《C++程序设计》和《数据结构》中所学的知识。 2. **实践能力**: 能够使用C++语言编写初等程度的软件。 3. **具体目标**: 开发一个职工工资管理系统。 **课题分析**: - **系统定位...

    小型公司的工资管理系统 (论文)

    - **类层次结构**:类之间可能存在继承关系,例如,经理和技术员可能都继承自一个更通用的“雇员”类,这样可以共享一些通用的属性和行为。 - **封装**:类的属性通常被设置为保护或私有的,只通过公共的成员函数...

    C++课程设计汇本指导与题目.doc

    - 设计4种类型的员工类,实现工资计算、数据录入、统计、打印和备份功能。 - 要求使用菜单驱动,包含数据录入、统计、打印、备份和退出选项。 - 工资计算依据不同岗位,如经理、技术员、销售员、销售经理。 - ...

    1C++程序设计实习报告.doc

    本实习报告主要围绕着一个小型公司工资管理系统的开发,采用C++编程语言,旨在培养学生实际编程和系统设计能力。系统针对四种不同类型的员工——经理、技术员、销售员和销售经理,实现了数据输入、统计、打印、备份...

    寝室专用小空调

    - 知识点3:类的继承与派生 - 设计中用到雇员类作为基类,派生出技术员、销售员、经理和销售经理等子类,体现了类的继承关系。 - 知识点4:虚基类 - 使用虚基类可以避免在继承层次中出现多次继承同一基类的情况,...

    CC++课程设计指导书

    4. 设计类的层次结构,包括基础的雇员类,以及派生出的技术员类、经理类、销售员类和销售经理类。 5. 系统应包含一个主菜单,用于选择不同的功能,如数据录入、统计、打印、备份和退出。 **二、学生成绩统计管理...

    java数据库工资管理系统

    在构建工资管理系统时,Java提供了稳定的基础框架,保证了程序的稳定运行和良好的可维护性。 数据库方面,Java通常与SQL(Structured Query Language)结合,用于处理和查询关系型数据库。SQL是用于管理和操作...

    C++面向对象-课程设计题目(2018版).docx

    3. **雇员工资支付软件**:创建一个抽象基类`Employee`,派生出不同类型的员工类,如`Worker`、`Salesman`、`Manager`和`Floater`,实现多态计算工资,强化面向对象的抽象和继承概念。 4. **旅馆住宿管理软件**:...

    程序设计课程设计任务书.doc

    在雇员管理系统中,可能需要设计一个类体系,包括基本雇员类和不同类型的派生类,如小时工、计件工、老板和销售员,计算他们的工资。 通过这样的课程设计,学生能够将理论知识应用于实际问题,锻炼软件开发能力,为...

    C++小型企业工资管理系统

    2. **薪资计算**:Salary类负责薪资的计算,可以包含基本工资、奖金、扣除项等字段,并设计算法处理加班、绩效等复杂因素。为了适应不同企业的薪资制度,该类应具备一定的扩展性。 3. **考勤统计**:Attendance类...

Global site tag (gtag.js) - Google Analytics