公司职员薪水管理系统(List)

集合初步完成下面的功能需求
做公司职员薪水管理系统,完成以下功能
1,当有新员工时,将加入该管理系统
2,根据员工号,显示该员工信息
3,可以显示所有员工的信息
4,可以修改员工的薪水
5,当员工离职时,从该系统中删除该员工
6,可以将员工按薪水高低排序(思考)
7,统计员工的平均工资,最高和最低工资

第一步:既然是员工管理系统,我们就先来写一个员工类Employee.java

/** 

* @author Hercules

* @version 创建时间:2020年1月10日 下午2:56:52 

* 员工类

*/
public class Employee {
      
	private int eNo;       //员工号
	
	private String name;        //员工名字
	
	private double salary;      //员工薪水

	
	//而后是两个构造函数一个无参的一个带参的
	public Employee() {
		super();      //这里有一个super()是因为java所有的类都继承自Object类
	}
	
	public Employee(int eNo, String name, double salary) {
		super();
		this.eNo = eNo;
		this.name = name;
		this.salary = salary;
	}
	
	//添加get set方法

	public int geteNo() {
		return eNo;
	}

	public void seteNo(int eNo) {
		this.eNo = eNo;
	}

	public String getName() {
		return name;
	}

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

	public double getSalary() {
		return salary;
	}

	public void setSalary(double salary) {
		this.salary = salary;
		
	}
    
	
	/*重写这个类的toString方法,我在上面提到过java所有的类
	 * 都继承自Object这个类,而toString方法正是这个类中的方法,
	 * 所以所有的类都有toString方法,在我们需要把该类转换为String
	 * 类型的时候会调用这个方法,例如在我们调用System.out.println();
	 * 的时候,输出该类的时候会调用这个方法。当然这只是其中一例
	 * 还有更多的例子。
	 * 
	 * */
	public String toString() {
		return String.format("Employee [eNo=" + eNo + ", name=" + name + ", salary=%6.2f]", salary);
	}
}

有了员工类当然一定要有管理员工的类:Manager.java

/** 

* @author Hercules

* @version 创建时间:2020年1月10日 下午3:11:50 

* 管理员工的类

*/

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Manager {
    //存放所有员工的集合
	private List<Employee> employees = new ArrayList<Employee>();
	
	/*这里要着重分析一下,首先我们用的是ArrayList存储员工,这个东西是有序的可以重复的,所以为保证员工号的唯一性,
	 * 这里用一个静态的变量来记录员工号。
	 * */
	private static int no = 0;  //不知道大家学过数据库没有,这里就是自增长类型的员工号了。
	
	//添加员工
	public void addEmployee(Employee employee) {
		no++;             //每添加一个no就自增一次
		employee.seteNo(no);
		employees.add(employee); //调用ArrayList的add方法
	}
	
	//根据员工号查找员工
	public Employee showEmployee(int no) {
		Employee e = null;
		for(Employee employee: employees) {
			if(employee.geteNo() == no) {
				e = employee;
				break;
			}
		}
		return e;
	}
	
	//显示所有员工信息
	public void showAllEmployee() {
		for(Employee employee:employees) {
			//这里我们直接调用toString方法就可以直接打印相关信息
			System.out.println(employee.toString());
		}
	}
	
	//修改员工薪水
	public void updateEmployeeSalary(int no,double salary) {
		Employee e = showEmployee(no);
		if(e == null) {
			System.out.println("查无此人,无法修改薪水");
			return;
		}
		else {
			Scanner scanner = new Scanner(System.in);
			System.out.println("此人现在的薪水为"+e.getSalary());
			System.out.println("请输入您想要修改的数值");
			double newSalary = scanner.nextDouble();
			
			e.setSalary(newSalary);
		}
	}
	
	//员工离职撤出系统
	public void remove(int no) {
		Employee e = showEmployee(no);
		if(e == null) {
			System.out.println("查无此人");
			return;
		}
		employees.remove(e);
	}
	
	//员工从高到低排序,自己也可以反过来从低到高排序
	public void sort() {
		for(int i = 0;i < employees.size()-1;i++) {//循环轮次
			for(int j = 0;j < employees.size()-1-i;j++) { //循环比较次数
				if(employees.get(j).getSalary() < employees.get(j+1).getSalary()) {
					//冒泡排序
					Employee e = employees.get(j);
					employees.set(j, employees.get(j+1));
					employees.set(j+1, e);
				}
			}
		}
	}
	
	//查找工资最高的人,既然上面已经有排序函数,则下面就可很方便的得出条件
	public Employee getMaxSalary() {
		sort();
		return employees.get(0);
	}
	//工资最低的人,return
	public Employee getMinSalary() {
		sort();
		return employees.get(employees.size() - 1);
	}
	
	//平均工资
	public void avg() {
		double z = 0;
		for(Employee employee:employees) {
			z += employee.getSalary();
		}
		double a = z/employees.size();
		System.out.println("平均工资为"+a);
	}
}

接下来我们再来写一个测试类:Test.java

/** 

* @author Hercules

* @version 创建时间:2020年1月10日 下午4:09:07 

* 类说明 

*/
public class Test {
	 public static void main(String[] args) {
		 
		 Manager manager = new Manager();
		 
		 for(int i = 0;i<10;i++) {
			 Employee employee = new Employee(i,"张三"+i,Math.random()*10000);
			 manager.addEmployee(employee);
		 }
		 
		 manager.showAllEmployee();
		 System.out.println("上面为排序前");
		 //排序展示
		 manager.sort();
		 manager.showAllEmployee();
		 
		 //返回最大的工资的人
		 System.out.println("最高工资的人的数据为");
		 System.out.println(manager.getMaxSalary().toString());
	 }
}

在这里插入图片描述
好了这是一个用list完成的员工管理系统,我下面的博客还会用Map再完成一次,到时候又会有很多新的东西。

发布了64 篇原创文章 · 获赞 2 · 访问量 848

猜你喜欢

转载自blog.csdn.net/cdut2016/article/details/103924591