java UML图的应用以及解法

任务:
需要使⽤ Java 设计和实现部⻔员⼯和项⽬ (DEP) 系统。该系统帮助公司管理员⼯和项⽬。相
关主题包括接⼝、抽象、多态性和⽂件 I/O。
DEP 系统帮助公司管理部⻔、员⼯和项⽬。程序启动时,系统从⽂本⽂件加载部⻔、员⼯、项⽬和⼯作数据。然后
程序显⽰⼀个菜单,以便⽤⼾可以选择要做什么。
DEP的UML类图如下。您可以在 UML 类图中添加新的类、⽅法和属性,但不能修改或删除任何现有的类、属性
和⽅法。您的 java 实现必须与 UML 类图⼀致。
执⾏
任务
⽤⼾可以选择显⽰有关所有部⻔、员⼯、项⽬或⼯作的信息。⽤⼾可以添加新部⻔、新员⼯、新项
⽬或新的信息⼯作。⽤⼾可以将更新的数据保存到⽂本⽂件中。

img

创建一个Department类,该类包含部门的名称和ID属性,以及一个方法来获取和设置这些属性。

public class Department {
    private String name;
    private int id;

    public Department(String name, int id) {
        this.name = name;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public int getId() {
        return id;
    }

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

    public void setId(int id) {
        this.id = id;
    }
}

创建一个Employee类,该类包含员工的姓名、ID、部门和职位属性,以及一个方法来获取和设置这些属性。

public class Employee {
    private String name;
    private int id;
    private Department department;
    private String position;

    public Employee(String name, int id, Department department, String position) {
        this.name = name;
        this.id = id;
        this.department = department;
        this.position = position;
    }

    public String getName() {
        return name;
    }

    public int getId() {
        return id;
    }

    public Department getDepartment() {
        return department;
    }

    public String getPosition() {
        return position;
    }

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

    public void setId(int id) {
        this.id = id;
    }

    public void setDepartment(Department department) {
        this.department = department;
    }

    public void setPosition(String position) {
        this.position = position;
    }
}

创建一个Project类,该类包含项目的名称、ID、开始日期和结束日期属性,以及一个方法来获取和设置这些属性。

public class Project {
    private String name;
    private int id;
    private Date startDate;
    private Date endDate;

    public Project(String name, int id, Date startDate, Date endDate) {
        this.name = name;
        this.id = id;
        this.startDate = startDate;
        this.endDate = endDate;
    }

    public String getName() {
        return name;
    }

    public int getId() {
        return id;
    }

    public Date getStartDate() {
        return startDate;
    }

    public Date getEndDate() {
        return endDate;
    }

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

    public void setId(int id) {
        this.id = id;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }
}

创建一个Work类,该类包含员工、项目、开始日期和结束日期属性,以及一个方法来获取和设置这些属性。

public class Work {
    private Employee employee;
    private Project project;
    private Date startDate;
    private Date endDate;

    public Work(Employee employee, Project project, Date startDate, Date endDate) {
        this.employee = employee;
        this.project = project;
        this.startDate = startDate;
        this.endDate = endDate;
    }

    public Employee getEmployee() {
        return employee;
    }

    public Project getProject() {
        return project;
    }

    public Date getStartDate() {
        return startDate;
    }

    public Date getEndDate() {
        return endDate;
    }

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

    public void setProject(Project project) {
        this.project = project;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }
}

创建一个DEPSystem类,该类包含一个ArrayList来存储部门、员工、项目和工作数据,以及方法来加载和保存数据,显示菜单和处理用户输入。

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

public class DEPSystem {
    private ArrayList<Department> departments;
    private ArrayList<Employee> employees;
    private ArrayList<Project> projects;
    private ArrayList<Work> works;

    public DEPSystem() {
        departments = new ArrayList<>();
        employees = new ArrayList<>();
        projects = new ArrayList<>();
        works = new ArrayList<>();
    }

    public void load() {
        // 从文本文件加载数据
    }

    public void save() {
        // 将数据保存到文本文件
    }

    public void showMenu() {
        System.out.println("DEP System Menu:");
        System.out.println("1. Show all departments");
        System.out.println("2. Show all employees");
        System.out.println("3. Show all projects");
        System.out.println("4. Show all works");
        System.out.println("5. Add new department");
        System.out.println("6. Add new employee");
        System.out.println("7. Add new project");
        System.out.println("8. Add new work");
        System.out.println("9. Save data");
        System.out.println("0. Exit");
    }

    public void processInput(int choice) {
        switch (choice) {
            case 1:
                showDepartments();
                break;
            case 2:
                showEmployees();
                break;
            case 3:
                showProjects();
                break;
            case 4:
                showWorks();
                break;
            case 5:
                addDepartment();
                break;
            case 6:
                addEmployee();
                break;
            case 7:
                addProject();
                break;
            case 8:
                addWork();
                break;
            case 9:
                save();
                break;
            case 0:
                System.exit(0);
                break;
            default:
                System.out.println("Invalid choice");
                break;
        }
    }

    private void showDepartments() {
        for (Department department : departments) {
            System.out.println(department.getName() + " (" + department.getId() + ")");
        }
    }

    private void showEmployees() {
        for (Employee employee : employees) {
            System.out.println(employee.getName() + " (" + employee.getId() + ")");
        }
    }

    private void showProjects() {
        for (Project project : projects) {
            System.out.println(project.getName() + " (" + project.getId() + ")");
        }
    }

    private void showWorks() {
        for (Work work : works) {
            System.out.println(work.getEmployee().getName() + " worked on " + work.getProject().getName() + " from " + work.getStartDate() + " to " + work.getEndDate());
        }
    }

    private void addDepartment() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter department name: ");
        String name = scanner.nextLine();
        System.out.print("Enter department ID: ");
        int id = scanner.nextInt();
        scanner.nextLine();
        departments.add(new Department(name, id));
    }

    private void addEmployee() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter employee name: ");
        String name = scanner.nextLine();
        System.out.print("Enter employee ID: ");
        int id = scanner.nextInt();
        scanner.nextLine();
        System.out.print("Enter employee position: ");
        String position = scanner.nextLine();
        System.out.print("Enter department ID: ");
        int departmentId = scanner.nextInt();
        scanner.nextLine();
        Department department = findDepartmentById(departmentId);
        if (department == null) {
            System.out.println("Department not found");
            return;
        }
        employees.add(new Employee(name, id, department, position));
    }

    private void addProject() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter project name: ");
        String name = scanner.nextLine();
        System.out.print("Enter project ID: ");
        int id = scanner.nextInt();
        scanner.nextLine();
        System.out.print("Enter start date (yyyy-mm-dd): ");
        String startDateString = scanner.nextLine();
        Date startDate = parseDate(startDateString);
        System.out.print("Enter end date (yyyy-mm-dd): ");
        String endDateString = scanner.nextLine();
        Date endDate = parseDate(endDateString);
        projects.add(new Project(name, id, startDate, endDate));
    }

    private void addWork() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter employee ID: ");
        int employeeId = scanner.nextInt();
        scanner.nextLine();
        Employee employee = findEmployeeById(employeeId);
        if (employee == null) {
            System.out.println("Employee not found");
            return;
        }
        System.out.print("Enter project ID: ");
        int projectId = scanner.nextInt();
        scanner.nextLine();
        Project project = findProjectById(projectId);
        if (project == null) {
            System.out.println("Project not found");
            return;
        }
        System.out.print("Enter start date (yyyy-mm-dd): ");
        String startDateString = scanner.nextLine();
        Date startDate = parseDate(startDateString);
        System.out.print("Enter end date (yyyy-mm-dd): ");
        String endDateString = scanner.nextLine();
        Date endDate = parseDate(endDateString);
        works.add(new Work(employee, project, startDate, endDate));
    }

    private Department findDepartmentById(int id) {
        for (Department department : departments) {
            if (department.getId() == id) {
                return department;
            }
        }
        return null;
    }

    private Employee findEmployeeById(int id) {
        for (Employee employee : employees) {
            if (employee.getId() == id) {
                return employee;
            }
        }
        return null;
    }

    private Project findProjectById(int id) {
        for (Project project : projects) {
            if (project.getId() == id) {
                return project;
            }
        }
        return null;
    }

    private Date parseDate(String dateString) {
        // 解析日期字符串并返回Date对象
        return null;
    }
}

创建一个Main类,该类包含main方法,用于启动DEPSystem并显示菜单。

public class Main {
    public static void main(String[] args) {
        DEPSystem depSystem = new DEPSystem();
        depSystem.load();
        while (true) {
            depSystem.showMenu();
            Scanner scanner = new Scanner(System.in);
            System.out.print("Enter your choice: ");
            int choice = scanner.nextInt();
            scanner.nextLine();
            depSystem.processInput(choice);
        }
    }
}

PS:望采纳 谢谢!有什么问题随时可以问 学生不易!