JAVA面向对象编程---综合项目练习

该程序实现了一个软件公司的员工外派功能,包括普通开发人员和项目经理。员工有姓名、年龄、外包价格、工作经验或项目管理经验等属性,并根据外派天数计算折扣后的费用。用户可以选择外派的员工类型、工作经验或项目管理经验,以及外派天数,程序会返回外派的员工信息及所需费用。
摘要由CSDN通过智能技术生成

某软件公司可以外派开发人员,该软件公司有两个角色:普通开发人员和项目经理,他们都有共同的属性:“姓名”、“年龄”和“外包价”。普通开发人员有自己特有的属性“工作经验”,项目经理有自己特有的属性“项目管理经验”。人员外派价格超过一定时间会有一定折扣。编写程序完成对人员的外派。外包公司人员具体信息如表所示。

职称个人信息外包价格(天)折扣价
开发人员姓名"王明",年龄23,工作年限1年30030-60天九折,超过60天八折
姓名"李松",年龄24,工作年限2年400
姓名"贾岗",年龄25,工作年限3年500
姓名"赵林",年龄26,工作年限4年600
项目经理姓名"王东",年龄29,工作年限6年80030-60天八折,超过60天七折
姓名"肖用",年龄31,工作年限8年1000
package miandui;

/**
 * @Author:张金贺
 * @Date:2022/6/24 2:16
 * @Version 1.0
 */
public abstract class Employee {
    private String name;
    private int age;
    private double price;//外包价格

    public abstract double calprice(int days);


    public Employee(String name, int age, double price) {
        this.name = name;
        this.age = age;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}
package miandui;

/**
 * @Author:张金贺
 * @Date:2022/6/24 2:18
 * @Version 1.0
 */
public class Developer extends Employee {
    private int workjingyan;//工作经验

    public Developer(String name, int age, double price, int workjingyan) {
        super(name, age, price);
        this.workjingyan = workjingyan;
    }

    public int getWorkjingyan() {
        return workjingyan;
    }

    public void setWorkjingyan(int workjingyan) {
        this.workjingyan = workjingyan;
    }

    @Override
    public double calprice(int days) {
        if (days>60){
            return this.getPrice()*days*0.8;
        }else if (days>30){
            return this.getPrice()*days*0.9;
        }else {
            return this.getPrice()*days;
        }
    }
}
package miandui;

/**
 * @Author:张金贺
 * @Date:2022/6/24 2:23
 * @Version 1.0
 */
public class Manager extends Employee{
    private int managerjingyan;

    public int getManagerjingyan() {
        return managerjingyan;
    }

    public void setManagerjingyan(int managerjingyan) {
        this.managerjingyan = managerjingyan;
    }

    public Manager(String name, int age, double price, int managerjingyan) {
        super(name, age, price);
        this.managerjingyan = managerjingyan;
    }

    @Override
    public double calprice(int days) {
        if (days>60){
            return this.getPrice()*days*0.7;
        }else if (days>30){
            return this.getPrice()*days*0.8;
        }else {
            return this.getPrice()*days;
        }
    }
}
package miandui;

/**
 * @Author:张金贺
 * @Date:2022/6/24 2:27
 * @Version 1.0
 */
public class EmployeeOPeration {
    Employee [] employees=new Employee[6];//放软件公司所有员工
    //将所有的员工对象放入数组
    public void init(){
        employees[0]=new Developer("王明",23,300,1);
        employees[1]=new Developer("李松",24,400,2);
        employees[2]=new Developer("贾岗",25,500,3);
        employees[3]=new Developer("赵林",26,600,4);
        employees[4]=new Manager("王东",29,800,6);
        employees[5]=new Manager("肖用",31,1000,8);
    }
//    外派员工的方法
//    工作经验年限
//    项目管理年限
    public Employee expatriate(int workjingyan,int managerjingyan){
        Employee employee=null;
        for (Employee emp : employees) {
            if (emp instanceof Developer){
                Developer developer=(Developer)emp;
                if (developer.getWorkjingyan()==workjingyan){
                    employee=developer;
                    break;
                }
            }else{
                    Manager manager=(Manager)emp;
                    if (manager.getManagerjingyan()==managerjingyan){
                        employee=manager;
                        break;
                    }
                }
            }
        return employee;
    }
}
package miandui;

import java.util.Scanner;

/**
 * @Author:张金贺
 * @Date:2022/6/24 2:41
 * @Version 1.0
 */
public class OperationMgr {
    public static void main(String[] args) {
        int workjingyan=0;//工作经验年限
        int managerjingyan=0;//项目管理年限
        System.out.println("------欢迎光临软件公司------");
        System.out.println("请选择要外派的工程师类型");
        System.out.println("1.开发人员\t2.项目经理");
        Scanner sc=new Scanner(System.in);
        int choose =sc.nextInt();
        if (choose==1){
            System.out.println("请选择开发人员的工作年限:");
            System.out.println("1.1年 2.2年 3.3年 4.4年");
            workjingyan=sc.nextInt();
        }else {
            System.out.println("请选择项目经理的管理经验年限:");
            System.out.println("1.6年 2.8年");
            managerjingyan=sc.nextInt()==1?6:8;
        }
        System.out.println("请选择需要外派的天数:");
        int days=sc.nextInt();
        EmployeeOPeration operation =new EmployeeOPeration();
        operation.init();//初始化数据
        Employee emp = operation.expatriate(workjingyan, managerjingyan);//外派工程师
        System.out.println("外派的工程师名字为:"+emp.getName());
        System.out.println("需要支付的费用为:"+emp.calprice(days));

    }
}

以下为题目的重复:

某软件公司可以外派开发人员,该软件公司有两个角色:普通开发人员和项目经理,他们都有共同的属性:“姓名”、“年龄”和“外包价”。普通开发人员有自己特有的属性“工作经验”,项目经理有自己特有的属性“项目管理经验”。人员外派价格超过一定时间会有一定折扣。编写程序完成对人员的外派。外包公司人员具体信息如表所示。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java张金贺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值