有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

EmployeeManager的java设计数据结构

问题是设计员工/经理系统的结构

1)员工属于经理

2)一名经理有多名员工

3)经理也可能属于经理

4)员工只有一名经理

设计数据结构,使其支持以下操作:删除员工/经理、晋升(员工成为经理)

任何编程语言都可以

注意:我不想要代码。只要口头解释就可以了


共 (4) 个答案

  1. # 1 楼答案

    我想说的是,首先找出实体(你已经有了,员工和经理)。 现在根据您的约束找出关系:

    Manager to Employee (one to many)

    Employee to Manager (one to one)

    员工可以是经理

    选项

    1. 有一名Class员工“拥有”(关联)List
    2. 在员工自身中有员工(作为经理,Employee reportsTo)的引用

    以上两个选项中的疼痛区域: 选项#1如果删除经理,则员工列表将成为孤儿(没有经理的员工) 选项#2如果希望看到单个经理下的所有员工,则需要遍历所有员工以获取经理employeeID

    期待其他答案

  2. # 2 楼答案

    你只需要一张桌子:

    CREATE TABLE employees (
    id integer NOT NULL,
    name varchar(50) DEFAULT NULL,
    manager_id integer DEFAULT NULL,
    PRIMARY KEY (id)
    )
    

    此表有一个对自身的引用(manager_id->;id)

    如果记录在“manager_id”字段中有空值,那么它就是一个顶级管理者。所有其他记录都应该在“manager_id”字段中有一些值,这是对PrimaryKey字段“id”的引用

  3. # 4 楼答案

    我的第一个想法是使用employee作为基类,使用属性manager作为指向manager对象(以及其他必要属性,如'id')的指针,使用类manager,继承自employee,并带有指向员工的指针列表

    这可以包装在一个模型中,其中包含所有员工/经理的列表,以及诸如“提升(员工)”之类的方法。Employee还可以有一个类似于“promote”的方法,它返回一个manager对象。manager类可以有一个带employee参数的构造函数

    更新(C#代码):

    public class Employee
    {
    
        public string ID;
        public Manager Manager;
    
        public Manager promote() { return new Manager(this); }
    
        public Employee() { }
    
    }
    
    public class Manager : Employee
    {
    
        public List<Employee> Employees;
    
        public Manager() { }
        public Manager(Employee employee) {...}
    
    }
    
    public class EmployeeModel
    {
    
        private List<Employee> employees;
        public List<Employee> Employees { get { return this.employees; } }
    
        public void addEmployee(...) {...}
        public void removeEmployee(...) {...}
        public void promoteEmployee(...) {...}
    
    }
    

    就像这样