集合初步完成下面的功能需求
做公司职员薪水管理系统,完成以下功能
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再完成一次,到时候又会有很多新的东西。