Java面向对象练习题 企业人事管理系统

题目:

完成一个企业人事管理系统,
    该系统中包含两个实体类:员工(Emp),部门(Dept),
        两个类中分别包含以下属性:
员工(工号,姓名,性别,职位,年龄,月薪,部门)
部门(编号,部门名,部门介绍,分机号)
要求实现以下功能:
完成部门的创建,添加3个部门
    向各个部门中添加若干员工
    查询所有的员工信息和所在的部门信息
    根据员工工号显示员工信息
    修改指定工号员工的薪资
    根据部门号查询出门中的所有员工
1、根据类的特征给类进行属性的添加
2、根据类的行为,处理增删改查相关的操作
   需要先定义一个接口,然后根据接口的内容指定抽象方法
3、创建操作类(DAO)相关的类来进行数据和逻辑的处理
   还需要使用集合进行数据的存储,修改,删除,查询操作
   重点:
        集合只能在一个类中,不能到处创建集合,
        要保证所有的方法都操作的是菜单栏中的集合
4、对每一个方法要进行充分的测试,每写一个方法就要测试功能是否完善

 员工实体类:

package cn.java.dto;

/**
 * 员工类
 */
public class Emp {
    //工号
    private String eid;
    //姓名
    private String name;
    //性别
    private String sex;
    //职位
    private String job;
    //年龄
    private int age;
    //月薪
    private double salary;
    //部门
    private Dept dept;

    public Emp() {
    }

    public Emp(String eid, String name, String sex, String job, int age, double salary, Dept dept) {
        this.eid = eid;
        this.name = name;
        this.sex = sex;
        this.job = job;
        this.age = age;
        this.salary = salary;
        this.dept = dept;
    }

    public String getEid() {
        return eid;
    }

    public void setEid(String eid) {
        this.eid = eid;
    }

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getJob() {
        return job;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getSalary() {
        return salary;
    }

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

    public Dept getDept() {
        return dept;
    }

    public void setDept(Dept dept) {
        this.dept = dept;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "eid='" + eid + '\'' +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", job='" + job + '\'' +
                ", age=" + age +
                ", dept=" + dept +
                '}';
    }
}

 部门实体类

package cn.java.dto;

/**
 * 部门类
 */
public class Dept {
    //编号
    private String did;
    //部门名
    private String dname;
    //部门介绍
    private String introduce;
    //分机号
    private String tel;

    public Dept() {
    }

    public Dept(String did, String dname, String introduce, String tel) {
        this.did = did;
        this.dname = dname;
        this.introduce = introduce;
        this.tel = tel;
    }

    public String getDid() {
        return did;
    }

    public void setDid(String did) {
        this.did = did;
    }

    public String getDname() {
        return dname;
    }

    public void setDname(String dname) {
        this.dname = dname;
    }

    public String getIntroduce() {
        return introduce;
    }

    public void setIntroduce(String introduce) {
        this.introduce = introduce;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    @Override
    public String toString() {
        return "部门编号 = '" + did + '\'' +
                ", 部门名称 = '" + dname + '\'' +
                ", 部门简介 = '" + introduce + '\'' +
                ", 部门分机号 = '" + tel + '\'' +
                '}';
    }
}

 接口

package cn.java.dao;

public interface Base<T> {

    public T add(Object o);

    public int delete(Object o);

    public void update(Object o);

    public void find();

    public void findAll(Object o);
}

员工实现类: 

package cn.java.dao.impl;



import cn.java.dao.Base;
import cn.java.dto.Dept;
import cn.java.dto.Emp;

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

/**
 * 员工类的操作类
 */
public class EmpDao implements Base<Emp> {
    Scanner scanner = new Scanner(System.in);

    /**
     * 添加员工信息
     * @param o
     * @return
     */
    @Override
    public Emp add(Object o) {
        Object[] objects = (Object[]) o;
        ArrayList<Emp> emps = (ArrayList<Emp>) objects[0];//员工集合
        ArrayList<Dept> depts = (ArrayList<Dept>) objects[1];//部门集合获取
        String eid = "";
        for(;;){
            System.out.println("请输入员工编号:");
            eid = scanner.next();
            boolean flag = true;
            for (int i = 0; i < emps.size(); i++){
                if(emps.get(i).getEid().equals(eid)){
                    System.out.println("员工工号不能重复");
                    flag = false;
                }
            }
            if(flag){
                break;
            }else{
                System.out.println("请重新输入");
            }
        }
        System.out.println("请输入员工姓名:");
        String name = scanner.next();
        String sex = "";
        for (;;){
            System.out.println("请输入员工性别(1、男 2、女):");
            int num = scanner.nextInt();
            if(num == 1){
                sex = "男";
                break;
            }else if(num == 2){
                sex = "女";
                break;
            }else{
                System.out.println("请选择你正确的性别");
            }
        }

        System.out.println("请输入员工职业:");
        String job = scanner.next();
        System.out.println("请输入员工年龄:");
        int age = scanner.nextInt();
        System.out.println("请输入员工月薪:");
        double salary = scanner.nextDouble();
        System.out.println("序号\t编号\t名称\t");
        for(int i = 0; i < depts.size(); i++){
                System.out.println((i + 1)
                        + "\t" + depts.get(i).getDid()
                        + "\t" + depts.get(i).getDname());
        }
        System.out.println("----------------------------------");
        Dept dept = null;
        for (;;){
            System.out.println("请输入员工部门:");
            int index = scanner.nextInt();
            if(index >= 1 && index <= depts.size()){
                dept = depts.get(index - 1);
                break;
            }
        }
        Emp emp = new Emp(eid,name,sex,job,age,salary,dept);
        return emp;
    }

    /**
     * 删除员工
     * @param o
     * @return
     */
    @Override
    public int delete(Object o) {
        //将传过来的部门信息进行强制转换
        ArrayList<Emp> emps = (ArrayList<Emp>)o;
        int index = -1;
        //将所有的员工信息获取到
        System.out.println("请问你要删除的员工的工号是哪个:");
        String eid = scanner.next();
        for(int i = 0; i < emps.size(); i++){
            if(eid.equals(emps.get(i).getEid())){
                index = i;
            }
        }
        return index;
    }


    /**
     * 修改员工信息
     * @param o
     */
    @Override
    public void update(Object o) {
        Object[] arr = (Object[]) o;
        ArrayList<Emp> emps = (ArrayList<Emp>)arr[0];
        ArrayList<Dept> depts = (ArrayList<Dept>)arr[1];

        System.out.println("请输入你要修改的员工的编号:");
        String eid = scanner.next();
        boolean flag = false;
        int index = -1;
        for (int i = 0; i < emps.size(); i++){
            if(eid.equals(emps.get(i).getEid())){
                flag = true;
                index = i;
            }
        }
        if(flag){
            System.out.println("请输入你要修改的员工职位:");
            emps.get(index).setJob(scanner.next());
            System.out.println("请输入你要修改的员工年龄:");
            emps.get(index).setAge(scanner.nextInt());
            for(int i = 0; i < depts.size(); i++){
                System.out.println(depts.get(i));
            }
            System.out.println("请输入你要修改的员工部门的id:");
            String did = scanner.next();
            for(int i = 0; i < depts.size(); i++){
                if(did.equals(depts.get(i).getDid())){
                    emps.get(index).setDept(depts.get(i));
                }
            }
        }else{
            System.out.println("你输入的员工信息是错误的,请重新输入");
            update(o);
        }
    }

    @Override
    public void find() {

    }

    /**
     * 查询所有的员工
     * @param o
     */
    @Override
    public void findAll(Object o) {
        ArrayList<Emp> emps = (ArrayList<Emp>)o;
        //遍历所有的员工信息
        for (int i = 0; i < emps.size(); i++){
            System.out.println(emps.get(i));
        }
    }

    /**
     * 修改员工工资
     * @param emps
     */
    public void updateByEid(ArrayList<Emp> emps) {
        System.out.println("请输入你要修改的员工的工号:");
        String eid = scanner.next();
        for(int i = 0; i < emps.size(); i++){
            if (eid.equals(emps.get(i).getEid())) {
                System.out.println("工号:" + emps.get(i).getEid() + "\t"
                        + "姓名:" + emps.get(i).getName() + "\t"
                        + "工资:" + emps.get(i).getSalary() + "元");
                System.out.println("请问你要将其工资修改为多少?");
                double salary = scanner.nextDouble();
                emps.get(i).setSalary(salary);
                System.out.println("修改之后的员工薪资为");
                System.out.println("工号:" + emps.get(i).getEid() + "\t"
                        + "姓名:" + emps.get(i).getName() + "\t"
                        + "工资:" + emps.get(i).getSalary() + "元");
            }
        }

    }

    /**
     * 根据部门名称来查询员工
     * @param emps
     */
    public void findByDname(ArrayList<Emp> emps) {
            for(int i = 0; i < emps.size(); i++){
                System.out.println((i + 1) + "\t"+emps.get(i).getDept().getDname());
            }
            System.out.println("请输入你要查询的部门:");
                String dname = scanner.next();
                for(int i = 0; i < emps.size(); i++){
                    if(dname.equals(emps.get(i).getDept().getDname())){
                        System.out.println(emps.get(i));
                    }
            }
    }

    /**
     * 根据员工id查询员工信息
     * @param emps
     */
    public void findByEid(ArrayList<Emp> emps) {
        System.out.println("请输入你要查询的员工的工号:");
        String eid = scanner.next();
        for(int i = 0; i < emps.size(); i++){
            if(eid.equals(emps.get(i).getEid())){
                System.out.println(emps.get(i));
            }
        }
    }
}

部门实现类

package cn.java.dao.impl;

import cn.java.dao.Base;
import cn.java.dto.Dept;


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

/**
 * 部门类的操作类
 */
public class DeptDao implements
        Base<Dept> {
    Scanner scanner = new Scanner(System.in);

    /**
     * 添加部门信息
     * @param o
     * @return
     */
    @Override
    public Dept add(Object o) {
        ArrayList<Dept> depts = (ArrayList<Dept>)o;
        findAll(o);
        System.out.println("请输入部门编号:");
        String did = "";
        for(;;){
            did = scanner.next();
            boolean flag = true;
            for (int i = 0; i < depts.size(); i++){
                if(depts.get(i).getDid().equals(did)){
                    System.out.println("部门编号不能重复");
                    flag = false;
                }
            }
            if(flag){
                break;
            }else{
                System.out.println("请重新输入");
            }
        }
        System.out.println("请输入部门名称:");
        String dname = "";
        for(;;){
            dname = scanner.next();
            boolean flag = true;
            for (int i = 0; i < depts.size(); i++){
                if(depts.get(i).getDname().equals(dname)){
                    System.out.println("部门名称不能重复");
                    flag = false;
                }
            }
            if(flag){
                break;
            }else{
                System.out.println("请重新输入");
            }
        }
        System.out.println("请输入部门介绍:");
        String introduce = scanner.next();
        System.out.println("请输入部门分机号:");
        String tel = scanner.next();

        Dept dept = new Dept(did,dname,introduce,tel);
        return dept;
    }

    /**
     * 删除部门信息
     * 删除之前需要先确定部门中是否有员工 如果还有员工,就不能删除部门信息
     *
     * 1、查询部门中是否还有员工,如果还有员工就将员工信息或者员工信息删除
     * 2、如果部门中还有员工,但是删除部门信息之后,员工信息的部门一栏就没有了
     *    更改所有没有部门员工的部门信息
     * @param o
     */
    @Override
    public int delete(Object o) {
        //将传过来的部门信息进行强制转换
        ArrayList<Dept> depts = (ArrayList<Dept>)o;
        int index = -1;
        //将所有的部门信息获取到
        for (int i= 0; i < depts.size(); i++){
            System.out.println(depts.get(i).getDname());
        }
        System.out.println("请问你要删除的部门信息是哪个:");
        String dname = scanner.next();
        for(int i = 0; i < depts.size(); i++){
            if(dname.equals(depts.get(i).getDname())){
                index = i;
            }
        }
        return index;
    }

    /**
     * 修改部门的信息
     * @param o
     */
    @Override
    public void update(Object o) {
        ArrayList<Dept> depts = (ArrayList<Dept>)o;
        System.out.println("以下是所有的部门相关信息:");
        //遍历所有的部门信息
        findAll(o);

        System.out.println("请输入你要修改的部门的编号:");
        String did = scanner.next();
        boolean flag = false;
        int index = -1;
        for (int i = 0; i < depts.size(); i++){
            if(did.equals(depts.get(i).getDid())){
                flag = true;
                index = i;
            }
        }
        if(flag){
            System.out.println("请输入你要修改的部门名称:");
            depts.get(index).setDname(scanner.next());
            System.out.println("请输入你要修改的部门介绍:");
            depts.get(index).setIntroduce(scanner.next());
            System.out.println("请输入你要修改的部门分机号:");
            depts.get(index).setTel(scanner.next());
        }else{
            System.out.println("你输入的部门信息是错误的,请重新输入");
            update(o);
        }
    }

    @Override
    public void find() {

    }

    /**
     * 查询所有的部门
     * @param o
     */
    @Override
    public void findAll(Object o) {
        ArrayList<Dept> depts = (ArrayList<Dept>)o;
        //遍历所有的部门信息
        for (int i = 0; i < depts.size(); i++){
            System.out.println(depts.get(i));
        }
    }


}

菜单类 

package cn.java.testDept;

import cn.java.dao.impl.DeptDao;
import cn.java.dao.impl.EmpDao;
import cn.java.dto.Dept;
import cn.java.dto.Emp;


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

/**
 * 菜单类
 * 数据相关的信息放在菜单类中
 */
public class Menu {
    ArrayList<Emp> emps = new ArrayList<Emp>();
    ArrayList<Dept> depts = new ArrayList<Dept>();
    DeptDao deptDao = new DeptDao();
    EmpDao empDao = new EmpDao();
    Scanner scanner = new Scanner(System.in);

    /**
     * 主菜单
     */
    public void menu(){
        System.out.println("请输入你要执行的操作(1、部门 2、员工 0、退出):");
        int num = scanner.nextInt();
        switch (num){
            case 1:
                deptMenu();
                break;
            case 2:
                empMenu();
                break;
            case 0:
                System.exit(0);
                break;
                default:
                    System.out.println("输入指令错误请重新输入");
                    menu();
                    break;
        }
    }

    /**
     * 部门菜单
     */
    public void deptMenu(){
        System.out.println("--------------------------------------------");
        System.out.println("1、添加部门信息");
        System.out.println("2、修改部门信息");
        System.out.println("3、查询所有的部门");
        System.out.println("4、删除部门");
        System.out.println("5、回到上一级菜单");
        System.out.println("请输入你对部门的操作:");
        int num = scanner.nextInt();
        switch (num){
            case 1:
                depts.add(deptDao.add(depts));
                deptMenu();
                break;
            case 2:
                deptDao.update(depts);
                deptMenu();
                break;
            case 3:
                deptDao.findAll(depts);
                deptMenu();
                break;
            case 4:
                try {
                    int index = deptDao.delete(depts);
                    depts.remove(index);
                } catch (ArrayIndexOutOfBoundsException e) {
                    System.out.println("没有找到你要删除的部门");
                    deptMenu();
                }
                deptMenu();
                break;
            case 5:
                menu();
                break;
                default:
                    System.out.println("输入指令有误请重新输入");
                    deptMenu();
                    break;

        }
    }

    /**
     * 员工菜单
     */
    public void empMenu(){
        System.out.println("--------------------------------------------");
        System.out.println("1、添加员工信息");
        System.out.println("2、修改员工信息");//修改 职位 年龄 部门 不修改薪资
        System.out.println("3、查询所有的员工");//除了 薪资
        System.out.println("4、根据工号删除员工信息");
        System.out.println("5、根据工号修改员工工资");
        System.out.println("6、根据部门查询所有的员工");
        System.out.println("7、根据工号查询员工信息");
        System.out.println("8、回到上一级菜单");
        System.out.println("请输入你对员工的操作:");
        int num = scanner.nextInt();
        switch (num){
            case 1:
                //使用数组存储两个集合,并且将数组以对象的形式传到参数中去
                Object[] objects = {emps,depts};
                emps.add(empDao.add(objects));
                empMenu();
                break;
            case 2:
                Object[] object = {emps,depts};
                empDao.update(object);
                empMenu();
                break;
            case 3:
                empDao.findAll(emps);
                empMenu();
                break;
            case 4:
                try {
                    int index = empDao.delete(emps);
                    emps.remove(index);
                } catch (ArrayIndexOutOfBoundsException e) {
                    System.out.println("没有找到你要删除的员工工号");
                    deptMenu();
                }
                empMenu();
                break;
            case 5:
                empDao.updateByEid(emps);
                empMenu();
                break;
            case 6:
                empDao.findByDname(emps);
                empMenu();
                break;
            case 7:
                empDao.findByEid(emps);
                empMenu();
                break;
            case 8:
                menu();
                break;
            default:
                break;
        }
    }
}

测试类

package cn.java.testDept;

import java.util.HashMap;
import java.util.LinkedHashMap;

public class Test {
    public static void main(String[] args) {
        Menu menu=new Menu();
        menu.menu();

    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猿king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值