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

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

刘广法2022年03月21日 13:36:38Java教程9450
 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教程 第四节:流程控制语句总结

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

eclipse 自动提示功能的实现

eclipse 自动提示功能的实现

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

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

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

Java练习:百钱百鸡利用Java进行实现

今有100块钱,需要购买100只鸡,已知鸡的价格是:公鸡5元,母鸡3元,小鸡三只元,问:需要购买多少只公鸡、母鸡、小鸡?Java实现百鸡百钱的方法一: public static void main(String[] args) { for&n...

Java教程 第六节:数组

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

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

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

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

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

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

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

关于Math.random();的说明

关于Math.random();的关系:一、随机产生某区间的数:int (Math.random() * (最大值 - 最小值) + 最小值)一、Math.random(); 在Java中式产生随机产生 [0,1) 之间的数创建一个方法:返回一个m~n 的值,包括m 但不包括 n ,如果返回 -1...

Java教程 第九节:字符串

创建字符串:// 创建字符串 String sString = "我是字符串"; String sString2 = "我是字符串2"; String sString3&nb...

Java教程 第十节:面向对象的基础

面向对象基础:Java是一门面向对象的语言。c语言是一门面向过程的语言。面向过程:就是把问题分解成一步一步的进行完成。面向对象:把问题分解成不同的对象承担不同的职责。类和类的关系:1、has a:AhasB,包含关系,聚合关系。2、is a:AisB:继承关系,或者实现接口。3、use a:Ause...

Java练习:面向对象的对应练习题

Java练习:面向对象的对应练习题创建有20个学生对象,每个学生有不同的名字和性别、考试成绩。给这20个学生随机的考试成绩。使用面向对象的思想。题目1:统计这20个学生的平均分,男生的平均分,女生的平均分。题目2:按照考试成绩,对这个20个学生进行排序方法一:刘广法自己的方法(比较难)Clazz类(...

发表评论

访客

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