欢迎交流
题目如下:
现在有一个公司的工资发放制度程序。每个人的底薪都是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