java中的对象数组

欢迎交流

题目如下:
现在有一个公司的工资发放制度程序。每个人的底薪都是3500,如果职位是普通员工就是只拿底薪,如果职位是组长那么就是+500=4000,如果职位是部门经理则薪水+1500=5000
如果是副总那么就是5500。所有的人员信息均需要手动录入添加。输出结果如下(此表是通过工资高低排序的)
--------------XX公司工资发放程序-----------
-----ID-----姓名-----------职位----------薪资
------1----小王-----------副总-----------5500
------2----小张-----------副总-----------5500
------3----小李-----------经理-----------5000
------4----小三-----------组长-----------4000
------5----小六-----------员工-----------3500
要求上面的表可以手动输入修改职位,例如将小三的职位修改为副总,那么此表就得按照工资的顺序重新排序。

解答如下:

package company;

public class EmployeeInfo {
	int id;
	String name;
	String power;
	int salary;
	public EmployeeInfo(int id, String name, String power) {
		this.id = id;
		this.name = name;
		this.power = power;
	}
	public EmployeeInfo() {
	}
	
	
	public void PowerAndSalary() {
		switch (power) {
		case "员工":
			this.salary = 3500;
			break;
		case "组长":
			this.salary = 4000;
			break;
		case "经理":
			this.salary = 5000;
			break;
		case "副总":
			this.salary = 5500;
			break;			
	}		
	}

	public String toString() {
		return id + "\t" + name + "\t" + power + "\t" + salary;
	}
	
	
}

package company;

public class EmployeeInfoBiz {
	EmployeeInfo arr[] = new EmployeeInfo[100];
	
	//往对象数组插入信息
	public void addArr(EmployeeInfo c) {
		for (int i = 0; i < arr.length; i++) {
			if(arr[i]==null) {
				arr[i] = c;
				break;
			}
		}
	}
	
	
	//使用冒泡排序,注意arr[j]!=null && arr[j+1] != null
	public void desc() {
		for (int i = 0; i < arr.length-1; i++) {	
			if(arr[i]!=null) {
				for (int j = 0; j < arr.length-1-i; j++) {	
					if(arr[j]!=null && arr[j+1] != null) {
						if(arr[j].salary < arr[j+1].salary) {
							EmployeeInfo t = arr[j];
							arr[j] = arr[j+1];
							arr[j+1] = t;	
						}	
					}
				}	
			}
		}
	}
	
	//打印数组
	public void show() {
		for (int i = 0; i < arr.length; i++) {
			if(arr[i]!=null) {
				System.out.println(arr[i].toString());
			}
		}
	}
	
	
	//改变职位所对应的薪资
	public void matchingSalary() {
		for (int i = 0; i < arr.length; i++) {
			if (arr[i]!=null) {
				arr[i].PowerAndSalary();
			}
		}
	}
	
	//修改职位
	public void changePower(String name,String wantPower) {
		for (int i = 0; i < arr.length; i++) {
			if (arr[i]!=null&&arr[i].name.equals(name)) {
				arr[i].power = wantPower;
				arr[i].PowerAndSalary();   //职位所对应的薪资也会改变
			}
		}
	}
	
}

测试类如下:

package company;

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		
		EmployeeInfo c1 = new EmployeeInfo(1, "小王", "副总");
		EmployeeInfo c2 = new EmployeeInfo(2, "小张", "副总");
		EmployeeInfo c3 = new EmployeeInfo(3, "小李", "经理");
		EmployeeInfo c4 = new EmployeeInfo(4, "小三", "组长");
		EmployeeInfo c5 = new EmployeeInfo(5, "小六", "员工");
		EmployeeInfoBiz cbz = new EmployeeInfoBiz();
		cbz.addArr(c1);
		cbz.addArr(c2);
		cbz.addArr(c3);
		cbz.addArr(c4);
		cbz.addArr(c5);
		cbz.matchingSalary();	//统一匹配职位对应的薪资
		
		System.out.println("修改前");
		cbz.show();   
		
		System.out.println("修改后");
		cbz.changePower("小三", "副总"); 
		cbz.desc();		//排序
		cbz.show(); 	
	}
}

运行结果如下:
修改前
1 小王 副总 5500
2 小张 副总 5500
3 小李 经理 5000
4 小三 组长 4000
5 小六 员工 3500
修改后
1 小王 副总 5500
2 小张 副总 5500
4 小三 副总 5500
3 小李 经理 5000
5 小六 员工 3500

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值