狐鱼的随从 2022-12-30 19:30 采纳率: 33.3%
浏览 69
已结题

任务分派信息管理系统

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

  • 写回答

4条回答 默认 最新

  • |__WhoAmI__| 2022-12-30 20:24
    关注

    仅供参考:

    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;}
    }
    

    望采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 1月8日
  • 已采纳回答 12月31日
  • 创建了问题 12月30日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么