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

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

刘广法2022年03月21日 13:36:38Java教程6230
 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/

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

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

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

分享给朋友:

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

Java教程 第二节:基本数据类型与变量

一、关键词在java中有特殊含义的一些词,比方说 public class 等。break;break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。break 跳出最里层的循环,并且继续执行该循环下面的语句。二、标识符起唯一标识作用的,类似我们自己的姓名,学校中的学号,公司中的工...

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

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

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

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

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

Java教程 第四节:流程控制语句总结

流程控制语句:一、顺序结构顺序结构:按照写代码的顺序 一次执行二、分支结构1、if语句if(条件){     语句块 }2、if...else...语句if(条件){     语句块 }else{  ...

eclipse删除工作空间的详细步骤(图解)

eclipse删除工作空间的详细步骤(图解)

上一次我修改添加eclipce的工作空间,但只我的eclipce上有两个工作空间,今天我想删除一个第一步: Window > Preferences > General > startup and shutdown -->workspace这就是删除eclipse的...

eclipse 自动提示功能的实现

eclipse 自动提示功能的实现

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

eclipse的快捷键功能

eclipse的快捷键功能

有一些快捷键是可以修改的,具体修改过程如图下:修改快捷的详细步骤:1、使用快捷键调出快捷键列表进行查看:快捷键列表调用:shift + ctrl + L2、window->preferences->general->keys(或直接搜索keys)快捷键列表:shuft + ctrl...

Java练习:从控制台输入一个年份,统计输入的年份到现在一共多少天?

从控制台输入一个年份,统计输入的年份到现在一共多少天?注意事项:1、平年365天,闰年十366天。2月份平年28天,2月份闰年29年。2、今年2022年3月14日3、闰年判断:能够被四百整数;能被4整数但不能被100整数public static void main(S...

Java练习:打印出所有3位数的素数

课堂练习:打印出所有3位数的素数。素数:只能被1和其本身整除的数 public static void main(String[] args) { // 打印三位数的素数,素数只能被1和本身整数的数。 for (int...

Java教程 第六节:数组

数组数组:简单来说,就是一组相同数据类型的数。float[] score = new float[6];索引或者下标:必须是整数,不能为负。最大下标等于数组长度-1。float[0],就是float类型数据score的第一个项。数组的下标结合循环,可以简化对批...

Java练习:控制台输入十个成绩,编程对这些成绩取平均值,并判断出成绩最大值和成绩最小值

有控制台输入十个成绩,编程对这些成绩取平均值,并判断出成绩最大值和成绩最小值 public static void main(String[] args) { // 有控制台输入十个成绩,编程对这些成绩取平均值,并判断出成绩最大值和成...

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

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

发表评论

访客

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