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