某软件公司可以外派开发人员,该软件公司有两个角色:普通开发人员和项目经理,他们都有共同的属性:“姓名”、“年龄”和“外包价”。普通开发人员有自己特有的属性“工作经验”,项目经理有自己特有的属性“项目管理经验”。人员外派价格超过一定时间会有一定折扣。编写程序完成对人员的外派。外包公司人员具体信息如表所示。
职称 | 个人信息 | 外包价格(天) | 折扣价 |
开发人员 | 姓名"王明",年龄23,工作年限1年 | 300 | 30-60天九折,超过60天八折 |
姓名"李松",年龄24,工作年限2年 | 400 | ||
姓名"贾岗",年龄25,工作年限3年 | 500 | ||
姓名"赵林",年龄26,工作年限4年 | 600 | ||
项目经理 | 姓名"王东",年龄29,工作年限6年 | 800 | 30-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));
}
}
以下为题目的重复:
某软件公司可以外派开发人员,该软件公司有两个角色:普通开发人员和项目经理,他们都有共同的属性:“姓名”、“年龄”和“外包价”。普通开发人员有自己特有的属性“工作经验”,项目经理有自己特有的属性“项目管理经验”。人员外派价格超过一定时间会有一定折扣。编写程序完成对人员的外派。外包公司人员具体信息如表所示。