当前位置:首页 > 学习笔记 > Java教程 > Java项目:员工管理系统(运用数组、面向对象)老师示范

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

刘广法2022年03月21日 13:36:38Java教程14400
 Java项目:员工管理系统(运用数组、面向对象)老师示范-第1张图片-刘广法IT博客

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

}


本文作者:刘广法,转载注明出处。

扫描二维码推送至手机访问。

版权声明:本文由刘广法博客发布,如需转载请注明出处。

本文链接:https://liuguangfa.com/java/132.html

分享给朋友:

“ Java项目:员工管理系统(运用数组、面向对象)老师示范” 的相关文章

使用eclipse进行文件的导入和导出

使用eclipse进行文件的导入和导出

该说不说,学会这个项目可以省很多的事情,刘广法可以用这个方法借鉴同学的项目,可以进行参考、借鉴、以及抄作业。一、使用eclipse进行项目的导出:1、使用eclipse进行项目的导出第一步:找到所在的项目工作空间,如果你知道的话,可以直接打开文件进行打包发送给你的好友,如果想要知道项目工作空间如何修...

java教程 第三节:基本数据类型和运算符

一、算术运算符+:加-:减*:乘/:除%:取余例如:a+b、a-b、a*b、a/b、a%b当两个操作数都为整数时,结果必定为整数。当其中一个操作数为小数时,则为小数除。去余数,通常是一对正正整取余数,事实上,对小数和负数一样取余数。小数(浮点数)在计算机中不是精确存在的,并不是精确存在的。二、比较运...

java学习:Java流程控制语句的相关测试题

第一题:将所有包含3的三位数整数相加求和。103 131 133 301类似。public static void main(String[] args) { int n = 100;// 从n开始三位数...

eclipse 自动提示功能的实现

eclipse 自动提示功能的实现

之前用的版本都是有提示的,最近安装的最新版没有提示,今天就设置让自动提示出来第一步:windows”->"preferences",弹出preferences设置窗口。第二步:在preferences中找到Java,依次展开列表"Editor"->...

用Java实现打印各种图形总结篇(矩形、平行四边形、三角形、菱形)

1、用Java实现打印矩形(长方形、正方形): public static void main(String[] args) { for (int y = 0; y < ...

Java学习 第五节:break和continue关键字

break和continue关键字break:表示中断,退出。退出当前一层循环。一旦break,后面的语句将不会得到执行。continue:中断本次循环,直接进行下一次的循环。continue后面的语句将不会得到执行。...

Java练习:将数组中的元素首尾调换

数组课堂练习:将数组中的元素首尾调换 public static void main(String[] args) { // 数组课堂练习:将数组中的元素首尾调换 int[] a = { ...

Java教程第七节:选择排序法和和冒泡排序法

选择法排序:分为若干轮比较,每一轮找出一个最大值。刘广法整理思路:假设有数组{ 1, 2, 3, 5, 98, 24, 6, 456, 14 },假设第一个数字最大,然后从第二个开始依次和第一个比,如...

Java练习:定义一共整数数组a,b,两个数组,判断两个数组中的重复的元素以及重复次数

Java课后作业:定义一共整数数组a,b,两个数组,判断两个数组中的重复的元素以及重复次数问题1:判断两个数组中重叠的元素?问题2:重叠的元素都重叠了几次,进行排序输出?本题关键:去重(验证之前是否验证过此数)、排序,(冒泡排序法和选择排序法)、关键字break 和continue 的使用 //&n...

Java教程 第八节:方法

定义方法:返回值类型 函数名称(函数列表){       // 函数体,可以执行代码,可以是0行或者多行。}我们常见的 main 方法就是一个在Java中最常见的方法:public static viod main(String []arg...

Java练习:定义一个函数,计算两个整数的最大公约数

Java面试题:定义一个函数,计算两个整数的最大公约数本题关键点:最大的公约数能够被两个数都整除的数 public static void main(String[] args) { // 定义一个函数,计算两个整数的最大公约数...

Java练习:递归的实操

Java练习:递归的实操

Java学习:递归的实操递归就是直接或者间接调用滋生。需要注意的就是,一定要有一个判断条件让这个死循环结束。Java学习递归实操训练一:利用递归算出10的阶乘:此方法是常规方法:<主要用作和下面用递归的对比> public static void main(...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。