任务分派信息管理系统

任务分派信息管理系统
[问题描述]
参考办公室任务分派工作的相关信息需求,提供任务,员工,任务执行等信息的管理功
能。
[实现要求]
能够根据员工的技能和空闲情况来分派任务。并能够对每月的员工的任务执行情况进行
统计。要用数据结构来存储数据,不要用数据库或者hashmap,treemap,就用链表那些基础数据结构(不要用arraylist类这种,要直接写链表)
[选作内容]
GUI界面实现。(可以不做,直接控制台菜单输出也可以)

仅供参考:

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

public class TaskManagementSystem {

    public static void main(String[] args) {
        // 创建任务列表
        List < Task > tasks = new ArrayList < Task > ();
        // 创建员工列表
        List < Employee > employees = new ArrayList < Employee > ();

        Scanner scanner = new Scanner(System. in);
        while (true) {
            // 输出菜单
            System.out.println("1. 添加任务");
            System.out.println("2. 添加员工");
            System.out.println("3. 分派任务");
            System.out.println("4. 查看员工完成的任务");
            System.out.println("5. 退出");
            System.out.print("请输入选项: ");

            // 读取用户输入
            int option = scanner.nextInt();
            scanner.nextLine(); // 读取换行符

            if (option == 1) {
                // 添加任务
                System.out.print("请输入任务名称: ");
                String name = scanner.nextLine();
                System.out.print("请输入任务描述: ");
                String description = scanner.nextLine();
                System.out.print("请输入任务所需技能: ");
                String skills = scanner.nextLine();
                Task task = new Task(name, description, skills);
                tasks.add(task);
                System.out.println("任务已添加"); } else if (option == 2) {
                // 添加员工
                System.out.print("请输入员工名字: ");
                String name = scanner.nextLine();
                System.out.print("请输入员工技能: ");
                String skills = scanner.nextLine();
                Employee employee = new Employee(name, skills);
                employees.add(employee);
                System.out.println("员工已添加"); } else if (option == 3) {
                // 分派任任务
                System.out.print("请输入任务名称: ");
                String taskName = scanner.nextLine();
                System.out.print("请输入员工名字: ");
                String employeeName = scanner.nextLine();
                // 查找任务和员工
                Task task = null;
                Employee employee = null;
                for (Task t: tasks) {
                    if (t.getName().equals(taskName)) {
                        task = t;
                        break;}
                }
                for (Employee e: employees) {
                    if (e.getName().equals(employeeName)) {
                        employee = e;
                        break;}
                }

                // 分派任务
                if (task != null & & employee != null) {
                    if (task.assignToEmployee(employee)) {
                        System.out.println("任务已分派");} else {
                        System.out.println("员工技能不足,无法分派");}
                } else {
                    System.out.println("任务或员工不存在");}
            } else if (option == 4) {
                // 查看员工完成的任务
                System.out.print("请输入员工名字: ");
                String employeeName = scanner.nextLine();

                // 查找员工
                Employee employee = null;
                for (Employee e: employees) {
                    if (e.getName().equals(employeeName)) {
                        employee = e;
                        break;}
                }

                // 查看员工完成的任务
                if (employee != null) {
                    List < Task > completedTasks = employee.getCompletedTasks();
                    if (completedTasks.isEmpty()) {
                        System.out.println("员工还没有完成任务");} else {
                        System.out.println("员工完成的任务: ");
                        for (Task t: completedTasks) {
                            System.out.println(t.getName());}
                    }
                } else {
                    System.out.println("员工不存在");}
            } else if (option == 5) {
                // 退出
                break;} else {
                System.out.println("无效的选项");}
        }
        scanner.close();}
}

// 任务类


class Task {
    private String name
    private String description
    private String skills
    private int progress
    // 任务完成进度(百分比)
    private Employee assignedEmployee
    // 分派的员工
    public Task(String name, String description, String skills) {
        this.name = name
        this.description = description
        this.skills = skills
        this.progress = 0
        this.assignedEmployee = null
    }

    // 分派任务给员工
    public boolean assignToEmployee(Employee employee) {
        // 检查员工是否有足够的技能
        if (!employee.hasSkills(skills)) {
            return false
        }
        // 检查员工是否空闲
        if (!employee.isAvailable()) {
            return false
        }
        // 分派任务
        this.assignedEmployee = employee
        employee.setAvailability(false)
        return true
    }

    // 任务完成
    public void complete() {
        progress = 100
        assignedEmployee.setAvailability(true)
        assignedEmployee.addCompletedTask(this)
    }

    public String getName() {
        return name
    }

    public String getDescription() {
        return description
    }

    public String getSkills() {
        return skills
    }

    public int getProgress() {
        return progress
    }

    public Employee getAssignedEmployee() {
        return assignedEmployee
    }
}


// 员工类


class Employee {
    private String name;
    private String skills;
    private boolean availability; // 空闲状态
    private List < Task > completedTasks; // 完成的任务列表
    public Employee(String name, String skills) {
        this.name = name;
        this.skills = skills;
        this.availability = true;
        this.completedTasks = new ArrayList < Task > ();}

    // 检查员工是否有指定的技能
    public boolean hasSkills(String requiredSkills) {
        String[] requiredSkillsArray = requiredSkills.split(",");
        for (String requiredSkill: requiredSkillsArray) {
            if (!skills.contains(requiredSkill)) {
                return false;}
        }
        return true;}

    // 设置员工的空闲状态
    public void setAvailability(boolean availability) {
        this.availability = availability;}

    // 检查员工是否空闲
    public boolean isAvailable() {
        return availability;}

    // 添加完成的任务
    public void addCompletedTask(Task task) {
        completedTasks.add(task);}

    // 获取完成的任务列表
    public List < Task > getCompletedTasks() {
        return completedTasks;}
    public String getName() {
        return name;}

    public String getSkills() {
        return skills;}
}

望采纳。

看起来有点复杂,大兄弟。得加价 哈哈

Java模拟禅道的团队任务分配管理系统
借鉴下,非常详细
https://blog.csdn.net/weixin_59661960/article/details/125542874

需要定义若干类来描述你的系统中的对象。这些类应该包括:
1.任务类(Task):该类应该包含任务的名称、描述、分配给的员工、任务的状态(未开始、进行中、已完成)等属性。

2.员工类(Employee):该类应该包含员工的名字、技能、空闲情况(是否空闲)、已分配的任务等属性。

3.任务管理类(TaskManager):该类应该负责管理员工和任务的信息,包括分配任务、查询员工的任务执行情况等功能。

本地简单编写了参考代码,以下是类图:

img

下面是相应的 Java 代码实现:


import java.util.List;

// 任务类
class Task {
    private String name;
    private String description;
    private Employee employee;
    private TaskStatus status;

    public Task(String name, String description) {
        this.name = name;
        this.description = description;
        this.status = TaskStatus.NOT_STARTED;
    }

    public String getName() {
        return name;
    }

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

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Employee getEmployee() {
        return employee;
    }

    public void setEmployee(Employee employee) {
        this.employee = employee;
    }

    public TaskStatus getStatus() {
        return status;
    }

    public void setStatus(TaskStatus status) {
        this.status = status;
    }
}

// 员工类
class Employee {
    private String name;
    private List<String> skills;
    private boolean isFree;
    private List<Task> tasks;

    public Employee(String name, List<String> skills) {
        this.name = name;
        this.skills = skills;
        this.isFree = true;
    }

    public String getName() {
        return name;
    }

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

    public List<String> getSkills() {
        return skills;
    }

    public void setSkills(List<String> skills) {
        this.skills = skills;
    }

    public boolean isFree() {
        return isFree;
    }

    public void setFree(boolean free) {
        isFree = free;
    }

    public List<Task> getTasks() {
        return tasks;
    }

    public void setTasks(List<Task> tasks) {
        this.tasks = tasks;
    }
}

// 任务状态枚举类
enum TaskStatus {
    NOT_STARTED, IN_PROGRESS, FINISHED
}

// 任务管理类
class TaskManager {
    private List<Task> tasks;
    private List<Employee> employees;

    public void assignTask(Task task, Employee employee) {
        // 为任务分配员工
        task.setEmployee(employee);
        // 修改员工的空闲状态
        employee.setFree(false);
        // 修改任务的状态
        task.setStatus(TaskStatus.IN_PROGRESS);
    }

    public TaskStatus getTaskStatus(Task task) {
        return task.getStatus();
    }

    public Employee getEmployee(Task task) {
        return task.getEmployee();
    }
}