Java项目:员工管理系统(运用数组、面向对象)老师示范

Java项目之员工管理系统:
项目要求:
1、利用数组进行员工的增删改查功能
2、运用面向对象的思想
Employee (员工)类:
package com.situ; /** * 员工类 * * @author snow1k * @date 2022/03/21 */ public class Employee { private String id;// 工号 private String name;// 姓名 private String sex;// 性别 private int age;// 年龄 private String email;// 邮箱 public Employee(String id, String name, String sex, int age, String email) { this.id = id; this.name = name; this.sex = sex; this.age = age; this.email = email; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
EmployeeManager (员工管理器)类:
package com.situ; /** * 员工管理器 * * @author snow1k * @date 2022/03/21 */ public class EmployeeManager { private Employee[] employeeArray = new Employee[16]; private int count = 0;// 员工的数量 /** * 根据工号查询唯一员工 * * @param id * @return */ public Employee findEmployeeById(String id) { for (int i = 0; i < count; i++) { if (employeeArray[i].getId().equals(id)) { return employeeArray[i]; } } return null;// 表示未找到 } /** * 根据员工姓名查询 * * @param name * @return */ public Employee[] findEmployeeByName(String name) { Employee[] result = new Employee[5]; int count = 0; for (int i = 0; i < this.count; i++) { if (employeeArray[i].getName().equals(name)) { if (count >= result.length) { Employee[] newArray = new Employee[(int)(count * 1.5)]; for (int j = 0; j < count; j++) { newArray[j] = result[j]; } // 指向新的数组 result = newArray; } result[count] = employeeArray[i]; count++; } } // 返回值 Employee[] rtn = new Employee[count]; for (int i = 0; i < count; i++) { rtn[i] = result[i]; } return rtn;// 表示未找到 } /** * 添加员工 * * @param employee */ public void addEmployee(Employee employee) { if (count >= employeeArray.length) { int len = (int)(count * 1.5);// 扩充之后的数组的长度 // 新数组 Employee[] newArray = new Employee[len]; copyEmployee(newArray); } employeeArray[count] = employee; count++; } /** * 根据工号删除员工 * * @param id */ public boolean deleteEmployeeById(String id) { boolean found = false;// 是否找到匹配元素 int foundIdx = -1; for (int i = 0; i < count; i++) { Employee emp = employeeArray[i]; if (emp.getId().equals(id)) { found = true; foundIdx = i; break; } } if (foundIdx >= 0) { for (int i = foundIdx; i < count; i++) { if (i + 1 >= employeeArray.length) { employeeArray[i] = null; } else { employeeArray[i] = employeeArray[i + 1]; } } } return found; } /** * 把旧数组中的元素复制到新数组中 * * @param newArray */ private void copyEmployee(Employee[] newArray) { for (int i = 0; i < count; i++) { newArray[i] = employeeArray[i]; } employeeArray = newArray; } /** * 获取员工个数 * * @return */ public int getCount() { return count; } public Employee[] getEmployeeArray() { return employeeArray; } }
Application(程序执行入口)类:
package com.situ; public class Application { /** * 程序执行的入口 * * @param args */ public static void main(String[] args) { // 创建员工管理器 EmployeeManager manager = new EmployeeManager(); // 创建图形界面 SystemView view = new SystemView(manager); // 启动界面,开始对用户进行服务 view.start(); } }
SystemView(系统视图)类:
package com.situ; import java.util.Scanner; /** * 系统视图,和用户交互的ui界面 * * @author snow1k * @date 2022/03/21 */ public class SystemView { public Scanner scanner = new Scanner(System.in); public EmployeeManager manager; public SystemView(EmployeeManager manager) { super(); this.manager = manager; } // 启动界面 public void start() { while (true) { showMainMenu(); int choice = scanner.nextInt(); switch (choice) { case 1: { // 添加员工 showAddEmployeeMenu(); break; } case 2: { // 修改员工 showEditEmployeeMenu(); break; } case 3: { // 查询员工 showSearchEmployeeMenu(); break; } case 4: { // 删除员工 showDeleteEmployeeMenu(); break; } case 5: { // 退出系统 System.out.println("谢谢您使用本系统,欢迎下次再来"); return; } default: { System.out.println("输入有误,请重新输入"); } } } } /** * 显示主操作界面 */ private void showMainMenu() { System.out.println("*******************************************************************"); System.out.println("***************************思途员工管理系统************************"); System.out.println("******1.添加员工 2.修改员工 3.查询员工 4.删除员工 5.退出系统"); System.out.println("请选择您要进行的操作:"); } /** * 删除员工 */ private void showDeleteEmployeeMenu() { while (true) { System.out.println("请输入你要删除的员工编号:"); String choice = scanner.next(); // 删除员工 boolean success = manager.deleteEmployeeById(choice); if (success) { System.out.println("删除成功"); } else { System.out.println("查无此员工"); } System.out.println("是否继续删除?Y/N"); choice = scanner.next(); if (choice.toLowerCase().equals("y")) { continue; } else { break; } } } /** * 查询员工 */ private void showSearchEmployeeMenu() { while (true) { System.out.println("1.打印全部员工信息 2.根据工号查询 3.根据姓名查询"); int choice = scanner.nextInt(); switch (choice) { case 1: { // 打印全部员工信息 printEmployee(manager.getEmployeeArray()); break; } case 2: { // 根据工号查询 showSearchByIdMenu(); break; } case 3: { // 根据姓名查询 showSearchByNameMenu(); break; } } System.out.println("是否继续查询?Y/N"); String result = scanner.next(); if (result.toLowerCase().equals("y")) { continue; } else { break; } } } /** * 批量打印员工信息 * * @param employeeArray */ private void printEmployee(Employee[] employeeArray) { System.out.println("员工信息列表:"); for (int i = 0; i < employeeArray.length; i++) { Employee emp = employeeArray[i]; if (emp != null) { System.out.println(i + 1 + ". 工号:" + emp.getId() + " 姓名:" + emp.getName() + " 性别:" + emp.getSex() + " 年龄:" + emp.getAge() + " 邮箱:" + emp.getEmail()); } } } /** * 根据工号查询员工信息 */ private void showSearchByIdMenu() { while (true) { System.out.println("请输入您要查询的员工工号:"); String id = scanner.next(); // 找到要查询的员工 Employee emp = manager.findEmployeeById(id); if (emp == null) { System.out.println("系统中不存在您要查询的员工,请确认后重试"); } else { printEmployee(new Employee[] {emp}); } System.out.println("是否按工号继续查询?Y/N"); String choice = scanner.next(); if (choice.toLowerCase().equals("y")) { continue; } else { break; } } } /** * 根据员工姓名查询员工信息 */ private void showSearchByNameMenu() { while (true) { System.out.println("请输入您要查询的员工姓名:"); String name = scanner.next(); // 找到要查询的员工 Employee[] emps = manager.findEmployeeByName(name); if (emps == null || emps.length == 0) { System.out.println("系统中不存在您要查询的员工,请确认后重试"); } else { printEmployee(emps); } System.out.println("是否继续按姓名查询?Y/N"); String choice = scanner.next(); if (choice.toLowerCase().equals("y")) { continue; } else { break; } } } /** * 显示员工修改菜单 */ private void showEditEmployeeMenu() { while (true) { System.out.println("请输入您要修改的员工工号:"); String id = scanner.next(); // 找到要修改的员工 Employee emp = manager.findEmployeeById(id); if (emp == null) { System.out.println("系统中不存在您要修改的员工,请确认后重试"); } else { printEmployee(new Employee[] {emp}); // 换行 System.out.println(); System.out.println("请输出新的员工姓名:"); String name = scanner.next(); System.out.println("请输出新的员工性别:"); String sex = scanner.next(); System.out.println("请输出新的员工年龄:"); int age = scanner.nextInt(); System.out.println("请输出新的员工邮箱:"); String email = scanner.next(); emp.setName(name); emp.setSex(sex); emp.setAge(age); emp.setEmail(email); System.out.println("修改员工信息成功!"); } System.out.println("是否继续修改?Y/N"); String choice = scanner.next(); if (choice.toLowerCase().equals("y")) { continue; } else { break; } } } /** * 显示添加员工菜单 */ private void showAddEmployeeMenu() { while (true) { System.out.println("请输出员工编号:"); String id = scanner.next(); System.out.println("请输出员工姓名:"); String name = scanner.next(); System.out.println("请输出员工性别:"); String sex = scanner.next(); System.out.println("请输出员工年龄:"); int age = scanner.nextInt(); System.out.println("请输出员工邮箱:"); String email = scanner.next(); // 创建员工对象 Employee emp = new Employee(id, name, sex, age, email); manager.addEmployee(emp); System.out.println("员工添加成功"); System.out.println("是否继续添加?Y/N"); String choice = scanner.next(); if (choice.toLowerCase().equals("y")) { continue; } else { break; } } } }
本文作者:刘广法,转载注明出处。