Java员工管理系统(控制台输出)

今天上午看完阅兵,爽,解放军太帅了!虽然现在是个小鲜肉横行的时代,但国家危亡的关键时刻还是得靠军人和社会的中流砥柱。

还有在网上看到“叠被子、走方队能把敌人叠死、走死吗”,“三十年来还不是只敢抗议,连仗都不敢打”之类的话真的是很气愤,有些人不管国家做的对与错,他都能找出一万条理由来喷,对于这种喷子,我们真的是很难理解他们的世界。

战争不值得炫耀,和平才是军人最大的荣耀!


不哔哔了,员工管理系统要求如下:

通过面向对象的编程思想,实现员工信息的增删改查,存储结构为数组。限定数组长度为100。

实现页面:

Java员工管理系统(控制台输出)_第1张图片

Java员工管理系统(控制台输出)_第2张图片

Java员工管理系统(控制台输出)_第3张图片

Java员工管理系统(控制台输出)_第4张图片

工程目录结构:

Java员工管理系统(控制台输出)_第5张图片
1.Employee基类

/**
 * @author 李广亮
 *
 */
public class Employee {

    /**
     * 成员属性:ID、姓名、职务、请假天数、基本工资
     */
    private String ID;
    private String name;
    private String job;
    private int holiday;
    private double salary;

    /**
     * 计算工资
     */
    public double sunSalary(double salary, int holiday) {
        return salary - (salary/30) * holiday;
    }

    /**
     * get和set方法
     */
    public String getID() {
        return ID;
    }

    public void setID(String iD) {
        ID = iD;
    }

    public String getName() {
        return name;
    }

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

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public int getHoliday() {
        return holiday;
    }

    public void setHoliday(int holiday) {
        this.holiday = holiday;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    /**
     * toString()方法
     */
    public String toString() {
        return "编号:" + ID + ", 姓名:" + name + ", 职务" + job
                + ", 请假天数:" + holiday + ", 工资:" + salary;
    }

}

2.普通员工类CommonEmployee

public class CommonEmployee extends Employee {

    /**
     * 普通员工工资
     * 在基本工资的基础上增加10%的工作餐,50%的岗位补助,200元住房补助
     * @param 工资
     * @param 请假天数
     */
    @Override
    public double sunSalary(double salary, int holiday) {
        double sum = salary + salary*0.1 + salary*0.5 + 200;
        return sum - sum/30 * holiday;
    }   

}

3.经理ManagerEmployee

public class ManagerEmployee extends Employee {

    /**
     * 经理工资
     * 在基本工资的基础上增加20%的工作餐,50%的岗位补助,500元住房补助
     * @param 工资
     * @param 请假天数
     */ 
    @Override
    public double sunSalary(double salary, int holiday) {
        double sum = salary + salary*0.2 + salary*0.5 + 500;
        return sum - sum/30 * holiday;
    }

}

4.懂事DirectorEmployee

public class ManagerEmployee extends Employee {

    /**
     * 经理工资
     * 在基本工资的基础上增加20%的工作餐,50%的岗位补助,500元住房补助
     * @param 工资
     * @param 请假天数
     */ 
    @Override
    public double sunSalary(double salary, int holiday) {
        double sum = salary + salary*0.2 + salary*0.5 + 500;
        return sum - sum/30 * holiday;
    }

}

5.业务逻辑类TestEMD

/**
 * @author 李广亮
 *
 */
public class TestEMD {

    /**
     * len代表数组的当前下标
     */
    static int len = -1;
    static Employee[] emp = new Employee[100];
    static Scanner sc = new Scanner(System.in);

    /**
     * 增加新雇员
     */
    public void addEmployee() {
        Employee em = null;
        System.out.println("---增加员工---");

        System.out.print("请输入员工编号:");
        String id = sc.next();
        System.out.print("请输入员工姓名:");
        String name = sc.next();

        System.out.print("请输入员工职务(员工、经理、懂事):");
        String job = sc.next();     
        System.out.print("请输入员工请假天数:");
        int holiday = sc.nextInt();

        System.out.print("请输入员工基本工资:");
        double salary = sc.nextDouble();

        //在此作一下逻辑判断,根据job的不同,创建不同的Employee子类
        if(job.equals("员工")) {
            em = new CommonEmployee();
        } else if(job.equals("经理")) {
            em = new ManagerEmployee();
        } else if(job.equals("懂事")) {
            em = new DirectorEmployee();
        } else {
            System.out.println("输入不正确!");
        }

        em.setID(id);       
        em.setName(name);       
        em.setJob(job);     
        em.setHoliday(holiday);     
        em.setSalary(salary);
        //len先加1后使用,变为emp[0]
        emp[++len] = em;
        printEmployee(emp[len]);
        System.out.println("添加成功!");
    }

    /**
     * 删除员工
     */
    public void deleteEmployee() {
        System.out.println("------删除员工------");
        System.out.println("---请输入员工姓名:---");
        //设置一个boolean类型的flg标志,若查找不到则为false
        boolean flg = false;
        String name = sc.next();
        for(int i=0; i<=len; i++) {
            //若查找成功,则把emp[i]数组后面的指针往前移一位,覆盖掉当前的指向对象
            if(emp[i].getName().equals(name)) {
                printEmployee(emp[i]);
                for(int j=i; j<=len; j++) {
                    emp[j] = emp[j+1];
                }
                //前移后,最后一位置空,len--
                emp[len] = null;
                len--;
                System.out.println("删除成功!");
                flg = true;
                break;
            }           
        }
        if(!flg) {
            System.out.println("查无此人,请重新输入:");
            deleteEmployee();
        }
    }
    /**
     * 修改雇员信息
     * @param args
     * @return 
     */
    public void updateEmployee() {
        System.out.println("------修改员工------");
        System.out.println("---请输入员工姓名:---");
        //设置一个boolean类型的flg标志,若查找不到则为false
        boolean flg = false;
        String name = sc.next();
        for(int i=0; i<=len; i++) {
            if(emp[i].getName().equals(name)) {
                printEmployee(emp[i]);
                System.out.println("---请按照提示输入修改信息---");
                System.out.print("请输入员工编号:");
                emp[i].setID(sc.next());
                System.out.print("请输入员工姓名:");
                emp[i].setName(sc.next());
                System.out.print("请输入员工职务(员工、经理、懂事):");
                emp[i].setJob(sc.next());
                System.out.print("请输入员工请假天数:");
                emp[i].setHoliday(sc.nextInt());
                System.out.print("请输入员工基本工资:");
                emp[i].setSalary(sc.nextDouble());
                //修改完成后打印一下
                printEmployee(emp[i]);
                System.out.println("修改成功!");
                flg = true;
                break;
            }           
        }
        if(!flg) {
            System.out.println("查无此人,请重新输入:");
            updateEmployee();
        }
    }
    /**
     * 根据姓名查找雇员信息
     * @param args
     */
    public void findEmployee() {
        System.out.println("------查找员工------");
        System.out.println("---请输入员工姓名:---");
        //设置一个boolean类型的flg标志,若查找不到则为false
        boolean flg = false;
        String name = sc.next();
        for( int i=0; i<=len; i++) {
            if(emp[i].getName().equals(name)) {
                printEmployee(emp[i]);
                System.out.println("查找成功!");
                flg = true;
                break;
            }           
        }
        if(!flg) {
            System.out.println("查无此人,请重新输入:");
            findEmployee();
        }
    }

    /**
     * 打印雇员信息
     * @param args
     */
    public void printEmployee(Employee em) {        
        System.out.print(" 编号: " + em.getID());
        System.out.print(" 姓名: " + em.getName());
        System.out.print(" 职务: " + em.getJob());
        System.out.print(" 请假天数 : " + em.getHoliday());
        //参数:1.基本工资 2.请假天数
        double sum = em.sunSalary(em.getSalary(), em.getHoliday());
        System.out.println(" 工资:" + sum);
    }

    public static void main(String[] args) {

        TestEMD te = new TestEMD();

        //开始界面
        System.out.println("|----------------|");
        System.out.println("|-----1. 增加 -----|");
        System.out.println("|-----2. 删除 -----|");
        System.out.println("|-----3. 修改 -----|");
        System.out.println("|-----4. 查询 -----|");
        System.out.println("|-----0. 退出 -----|");
        System.out.println("|----------------|");

        //业务选择
        label : while(true) {
            System.out.println("请选择业务:");
            int select = sc.nextInt();
            switch (select) {
            case 1: //添加新雇员
                te.addEmployee();
                break;
            case 2: //删除雇员
                te.deleteEmployee();
                break;
            case 3: //修改雇员信息
                te.updateEmployee();
                break;
            case 4: //根据姓名查找雇员信息
                te.findEmployee();
                break;
            case 0: //退出
                System.out.println("退出成功!");
                break label;

            default:
                System.out.println("您输入的数字不正确!");
                break;
            }
        }
    }

}

你可能感兴趣的:(JAVA,开发)