关于Java基础部分知识的综合应用之成员调度系统的项目

好久没更新了,咱继续

这是view

package windows;


import service.SunmmaryOperation1;
import service.SunmmaryOperation2;
import tools.CommonUse;
import tools.SelectsException;

import java.util.Scanner;

/**
 * @author Mark-Z
 * @version 1.1.1
 * @date 2021/11/11
 * @implNote ---->第二代横空出世(更新说明)<br>
 *                  1.加入换行显得更加有步骤感<br>
 *                  2.减少多余变量,改为形参<br>
 *                  3.修复添加人员后,选项4不能删除人员的异常<br>
 *                  4.增加各种细节<br>
 *                  5.唯一不足的是没有增加多个列表的创建与相关操作<br>
 *                  附:请期待下个版本的更新
 */
public class windows {
    static String MENU = """ 
            -----------------------------------MENU------------------------------------------
            ·············关于团队···············    ··················关于开发团队··············
            1.--------显示团队列表                   5.-----------display开发团队成员
            2.--------创建团队列表并进行添加           6.-----------add开发团队成员
            3.--------进行单个添加人员的操作           7.-----------delete开发团队成员
            4.--------删除团队列表人员或删表
            ················································································
                                               8.exit
                                               9.MENU
            ---------------------------------------------------------------------------------
            """;
    private static Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) {
        System.out.println("**********************************主界面******************************************");
        System.out.println(windows.MENU);
        try {
            do {
                switch (CommonUse.getNumber()) {
                    case 3 -> {
                        SunmmaryOperation1.getInstance().setSinglePerson();
                    }
                    case 5 -> {
                        SunmmaryOperation2.getInstance().display(SunmmaryOperation2.getInstance().getFalseObjects2());
                    }
                    case 1 -> {
                        //已有团队列表,显示它们的各种信息,以及被调用后再次显示的状态
                        /*
                        使用对象数组来保存他们的信息:
                                job-id,name,age,Real-time-status(Free-time,Busyness,On holiday),
                                Wage,Position(Programmer,Designer,Architect,)
                         */
                        boolean lean = SunmmaryOperation1.getInstance().check();
                        if (lean) {
                            SunmmaryOperation1.getInstance().display2(SunmmaryOperation1.getInstance().getFalseObjects());
                        }
                        if (!lean) {
                            System.out.println("团队列表不存在,请在主界面选项2创建并添加!");
                        }
                    }
                    case 2 -> {
                        SunmmaryOperation1.getInstance().exist();
                    }
                    case 6 -> {
                        //add开发团队成员,通过已有团队列表,从中抽取人员加入开发团队
                        /*
                        使用开发团队数组来保存加入人员的信息:
                                Real-time-status(Free-time,Busyness,On holiday)这些状态要改变,
                                已有团队列表中的人员相应的减少
                         */
                        SunmmaryOperation2.getInstance().add();
                    }
                    case 4 -> {
                        System.out.println("选择1进行删表,选择2进行单个人员的删除操作: ");
                        int i = scanner.nextInt();
                        try {
                            if (i == 1) {
                                SunmmaryOperation1.getInstance().setDelete();
                            } else if (i == 2) {
                                SunmmaryOperation1.getInstance().setDeleteMember();
                            } else {
                                throw new SelectsException("无法识别该指令!!!");
                            }
                        } catch (SelectsException e) {
                            System.out.println(e.getMessage());
                        }
                        //                    SunmmaryOperation1.getInstance().setDelete();
                    }
                    case 7 -> {
                        //delete开发团队成员,成员退出开发团队,相应的状态信息改变
                        /*
                        根据开发团队列表来delete
                         */
                        SunmmaryOperation2.getInstance().delete();
                    }
                    case 8 -> {
                        CommonUse.getExit();
                    }
                    case 9 -> {
                        System.out.println(windows.MENU);
                    }
                    default -> throw new RuntimeException("控制台不在状态,请重试!");
                }
                System.out.println("Tips:输入数字9来获取菜单");
                CommonUse.getAwaitEnter();
                System.out.println();
            } while (true);
        } catch (RuntimeException runtimeException) {
            System.out.println(runtimeException.getMessage());
        }
    }
}

service的两个服务类

package service;

import member.Factory;
import member.FalseObject;
import tools.CommonUse;

import java.util.Scanner;

/**
 * @author Mark-Z
 * @version 0.0.1
 * @date 2021/11/8
 * @implNote 将三类人员添加进人员列表
 */
public class SunmmaryOperation1 {
    //    private static Fulfillment[] fulfillments;
    private static FalseObject[] falseObjects;
    /*
    这里就做个演示,在没有显示继承的情况下,类都默认继承超类,但是这些类都没有重写其中的方法而且没有意义方法也不能重写
    拿他来作为父类引用也无济于事。
    相应的我们可以提供一个我们自己写的伪超类(FalseObjects),这三个类继承于这个父类,在父类中提供三个类中必要的方法(干脆把父类变成抽象类)。
    那他来作为对象数组的类型,调用时也就有多态性的体现,大大降低代码的重复性
     */
    private static SunmmaryOperation1 sunmmaryOperation1;
    private Scanner scanner = new Scanner(System.in);

    //    {
//        this.fulfillments = new Fulfillment[100];
//    }
    private SunmmaryOperation1() {

    }

    public static SunmmaryOperation1 getInstance() {
        if (sunmmaryOperation1 == null) {
            return sunmmaryOperation1 = new SunmmaryOperation1();
        }
        return sunmmaryOperation1;
    }

//    public void display1() {
//        String information = "工号\t\t\t名字\t\t\t年龄\t\t\t实时状态\t\t\t工资\t\t\t职位\n";
//        System.out.println("----------------------------------团队列表----------------------------------");
//        //这里的代码显得非常冗余,其实三中对象所属的类都可已继承来实现多态性,
//        //用一个父类如Object类来做对象数组
//        //只是这里我用的接口来做对象数组,存放它的实现类,其实也大可不必,太冗余了,提供另一种写法display2,因为我前面用的都是
//        //接口型的对象数组,所以就来个演示
//        for (int i = 0; i < getFulfillment().length; i++) {
//            if (getFulfillment()[i] instanceof Programmer) {
//                Programmer programmer = (Programmer) getFulfillment()[i];
//                information += "" + programmer.getJobId() + "\t\t\t" + programmer.getName() + "\t\t\t" + programmer.getAge()
//                        + "\t\t\t" + programmer.getRealTimeStatus() + "\t\t"
//                        + programmer.getWage() + "\t\t" + programmer.getPOSITION() + "\n";
//            }
//            if (getFulfillment()[i] instanceof Architect) {
//                Architect architect = (Architect) getFulfillment()[i];
//                information += "" + architect.getJobId() + "\t\t\t" + architect.getName() + "\t\t\t" + architect.getAge()
//                        + "\t\t\t" + architect.getRealTimeStatus() + "\t\t"
//                        + architect.getWage() + "\t\t" + architect.getPOSITION() + "\n";
//            }
//            if (getFulfillment()[i] instanceof Designer) {
//                Designer designer = (Designer) getFulfillment()[i];
//                information += "" + designer.getJobId() + "\t\t\t" + designer.getName() + "\t\t\t" + designer.getAge()
//                        + "\t\t\t" + designer.getRealTimeStatus() + "\t\t"
//                        + designer.getWage() + "\t\t" + designer.getPOSITION() + "\n";
//            }
//        }
//        System.out.println(information);
//        System.out.println("----------------------------------显示完毕----------------------------------");
//    }

    public FalseObject[] getFalseObjects() {
        return falseObjects;
    }

    public void setFalseObjects(int i) {
        falseObjects = new FalseObject[i];
        SunmmaryOperation2.getInstance().falseObjects2 = new FalseObject[i];
    }

    //定义必要的检测操作
    public boolean check() {
        if (SunmmaryOperation1.getInstance().getFalseObjects() != null) {
            if (SunmmaryOperation1.getInstance().getFalseObjects().length != 0) {
                System.out.println("团队列表检测完成,可以进行更多的操作!");
                return true;
            }
            System.out.println("团队泪飙中没有任何成员!!");
        }else if (SunmmaryOperation1.getInstance().getFalseObjects() == null){
            System.out.println("团队列表不存在,请创建!");
            return false;
        }
        return false;
    }

    public void display2(FalseObject[] falseObjects) {
        int j = 0;
        String information = "工号\t\t\t名字\t\t\t年龄\t\t\t实时状态\t\t\t工资\t\t\t职位";
        System.out.println("-------------------------------------团队列表-------------------------------------");
        System.out.println(information);
        j = CommonUse.getJ(falseObjects, j);
        System.out.println();
        System.out.println(">>>现有人数为:" + j +"(人)<<<\t\t\t"+">>>团队人数容量为:"+falseObjects.length+"(人)<<<");
        System.out.println("-------------------------------------显示完毕-------------------------------------");
        System.out.println();
    }

    public void exist() {
        if (SunmmaryOperation1.getInstance().getFalseObjects() == null) {
            System.out.print("列表为空值,是否进行创建(1-创建,2-取消): ");
            int i = scanner.nextInt();
            if (i == 1) {
                creat();
            } else if (i == 2) {
                System.out.println("中途退出!!!");
            }
        }else {
            System.out.println("已存在表单,不可重复进行创建!-->请期待下个版本");
        }
        System.out.println();
    }

    public void creat() {
        System.out.print("是否创建人员列表(1-创建,2-取消): ");
        int s1 = scanner.nextInt();
        try {
            if (s1 == 1) {
                System.out.println(">>>>>>>>>>>>>>>创建人员列表中<<<<<<<<<<<<<<<<");
                System.out.print("请输入要创建人员列表的人数大小: ");
                int i1 = scanner.nextInt();
                setFalseObjects(i1);
                setAddMember1();
            } else if (s1 == 2) {
                System.out.println(">>>>>>>>>>>>>>>>>>退出中<<<<<<<<<<<<<<<<<<<<");
                CommonUse.getAwaitEnter();
            } else {
                throw new RuntimeException("该指令不在考虑范围内!");
            }
        } catch (RuntimeException runtimeException) {
            System.out.println(runtimeException.getMessage());
        }
        System.out.println();
    }

    //添加人员
    public void setAddMember1() {
        System.out.print("默认创建(1)/自定义创建(2): ");
        int i2 = scanner.nextInt();
        if (i2 == 1) {
            System.out.println("请输入默认创建的人员的类型及个数");
            System.out.print("人员类型:");
            String type = scanner.next();
            System.out.print("人员个数:");
            int number = scanner.nextInt();

            if (number > 0 & number <= getFalseObjects().length) {
                for (int i = 0; i < getFalseObjects().length; i++) {
                    getFalseObjects()[i] = Factory.getADP(type);
                    number--;
                    if (number == 0) {
                        break;
                    }
                }
                /*
                这些sout用来检测的
                 */
//                System.out.println(getFulfillment()[0]);
//                System.out.println(getFulfillment()[1]);
//                System.out.println(getFulfillment()[2]);
//                System.out.println(getFulfillment()[3]);
//                System.out.println(getFulfillment()[4]);
            } else {
                System.out.println("人员个数小于或者等于零,或者个数大于列表的容量,无法进行创建!");
                System.out.println(">>>>>>>>>>>>>>>>>创建失败<<<<<<<<<<<<<<<<<<<");
                return;
            }
        } else if (i2 == 2) {
            System.out.println("-------------现在进入自定义创建-------------");
            System.out.print("你想创建多少个: ");
            int i = scanner.nextInt();
            if (i <= getFalseObjects().length) {
                if (setAddMember2(i)) {
                    System.out.println("---------------自定义创建成功--------------");
                    System.out.println();
                } else if (!setAddMember2(i)) {
                    System.out.println(">>>>>>>>>>>>>>>>>自定义创建失败<<<<<<<<<<<<<<<<<<<");
                    System.out.println("原因:自定义创建的人员个数等于或小于零");
                    System.out.println();
                    return;
                }
            } else {
                System.out.println(">>>>>>>>>>>>>>>>>自定义创建失败<<<<<<<<<<<<<<<<<<<");
                System.out.println("原因:预备创建的人员个数大于列表的容量");
                System.out.println();
                return;

            }
        }
        System.out.println(">>>>>>>>>>>>>>>>>创建完成<<<<<<<<<<<<<<<<<<<");
        CommonUse.getAwaitEnter();
        System.out.println();
    }

    /*
    自定义创建人员
     */
    public boolean setAddMember2(int i) {
        if (i <= 0) {
            return false;
        }
        int k = 1;
        for (int j = 0; j <= i; j++) {
            boolean p = CommonUse.method(j,k);
            ++k;
            if (p){
                System.out.print("是否继续(1/2): ");
                int number = scanner.nextInt();
                if (number == 1) {
                    CommonUse.getAwaitEnter();
                } else if (number == 2) {
                    return true;
                }
            }else{
                System.out.println("内部异常,无法完成操作!");
                return false;
            }
        }
        return true;
    }

    //删除团队列表中的人员(根据工号来删除)
    public void setDeleteMember() {
        if (SunmmaryOperation1.sunmmaryOperation1.check()) {
            System.out.print("你想删除谁(工号): ");
            int jobId = scanner.nextInt();
            /*
            Exception in thread "main" java.lang.NumberFormatException: For input string: "未知"
             */
            //工号
            if (jobId > 0) {
                for (int i = 0; i < SunmmaryOperation1.falseObjects.length; i++) {
                    //这里还可以搞个限定条件,也就是把null相关的空行排除在外
                    if (SunmmaryOperation1.getInstance().getFalseObjects()[i]
                    !=null && SunmmaryOperation1.falseObjects[i].getJobId() == jobId) {
                        falseObjects[i] = null;
                        fillInTheBlanks(i);
                        for (int k = 0;k<SunmmaryOperation2.getInstance().getFalseObjects2().length;k++){
                            if (SunmmaryOperation2.getInstance().getFalseObjects2()[k] != null && SunmmaryOperation2.getInstance().getFalseObjects2()[k].getJobId() == i){
                                SunmmaryOperation2.getInstance().getFalseObjects2()[k] = null;
                                System.out.println("删除成功!");
                                break;
                            }
                        }
                        break;
                    }
    //                }else if (SunmmaryOperation1.falseObjects[i].getJobId() !=jobId1){
    //                    System.out.println("没有该工号的人员!");
    //
    //                }
                }
                //名字
            }
//            else if (jobId.length() > 0) {
//                for (int i = 0; i < SunmmaryOperation1.falseObjects.length; i++) {
//                    if (SunmmaryOperation1.falseObjects[i].getName().equals(jobId)) {
//                        number = i;
//                        falseObjects[i] = null;
//                        fillInTheBlanks();
//                        break;
//                    }
//                }
//                System.out.println("删除成功!");
//            }
            else {
                System.out.println("无法识别该指令!!!");
            }
        }
        CommonUse.getAwaitEnter();
        System.out.println();
    }

    //直接删表
    public void setDelete() {
        System.out.println("此操作不可撤销!");
        System.out.print("是否决定删除该团队成员列表,输入yes删除,任意键取消操作: ");
        String yes = scanner.next();
        if (yes.equals("yes")) {
            SunmmaryOperation1.falseObjects = null;
            SunmmaryOperation2.getInstance().setFalseObjects2();
            System.out.println("删除成功!");
        }
        CommonUse.getAwaitEnter();
        System.out.println();
    }

    //先判断团队列表满了没有,是则提示人满【或者重新建表(本版本不支持扩容操作,下个版本直接加个超父类的对象数组)】
    //没满则可以进行单个添加的操作
    private int getNumber = 0;
    public void setSinglePerson() {
        if (SunmmaryOperation1.getInstance().check()){
            for (int i = 0; i < falseObjects.length; i++) {
                if (getFalseObjects()[i] == null) {
                    getNumber++;
                    /*
                    用当前的数组长度减去获取的空位数就能得到当前要从哪里开始添加人数的下标
                    也可以写在for循环外面。空位置为零的话,也就不会进入while循环
                    不为零的话,getSubscript是会进行更新的
                     */
//                    getSubscript = falseObjects.length-getNumber;
                }
            }
            int getSubscript = falseObjects.length - getNumber;//效率更高
            if (getNumber == 0) {
            /*
            可以有覆盖操作
             */
                System.out.println("现在团队列表人员已满,无法进行添加!!");
                CommonUse.getAwaitEnter();
                return;
            }
            System.out.println("现在团队列表有" +getNumber+"个空位");
            CommonUse.getAwaitEnter();
            loop:
            while(true){
                System.out.print("是否继续(1.继续/2.退出): ");
                int j = scanner.nextInt();
                if (j == 1){
                    System.out.println("现在进行添加操作");
                    System.out.println("--------------------添加人员--------------------");
                    boolean k = CommonUse.getEnd();
                    if (k){
                        loop2:
                        for (;;){
                            int o = 0;
                            for (int r = getSubscript +1; r<=falseObjects.length; r++){
                                if (CommonUse.checkList(falseObjects)) {
                                     o += 1;
                                    boolean p = CommonUse.method(r,o);
                                    if (p){
                                        System.out.print("是否继续(1/2): ");
                                        int number = scanner.nextInt();
                                        if (number == 1) {
                                            CommonUse.getAwaitEnter();
                                        } else if (number == 2) {
                                            break loop2;
                                        }
                                    }else{
                                        System.out.println("内部异常,无法完成操作!");
                                        System.out.println("--------------------添加失败--------------------");
                                        break loop;
                                    }
                                }
                            }
                        }
                        System.out.println("--------------------添加成功--------------------");
                        break;
                    }else {
                        System.out.println("--------------------添加失败--------------------");
                        System.out.println("原因:二级中途推出");
                        break;
                    }
                }else if (j == 2){
                    System.out.println("--------------------添加失败--------------------");
                    System.out.println("原因:一级中途退出");
                    break;
                }
            }
            getNumber = 0;
        }
    }

    //填空
    public void fillInTheBlanks(int number) {
        /*
        先判断删除的这个人的位置:
            如果后面有人,就把后面的人前移
            如果是最后一个人,就不操作
         */
        if (number != SunmmaryOperation1.falseObjects.length) {
            //这种写法没有考虑数组没有装满的情况下也会将null往前填
            int i = SunmmaryOperation1.falseObjects.length - (number + 1);
            for (int j = 0; j < i; j++) {
                falseObjects[number + j] = falseObjects[number + 1 + j];
            }
        }
    }
}
package service;

import member.*;
import tools.CommonUse;

import java.util.Scanner;

/**
 * @author Mark-Z
 * @version 0.0.1
 * @date 2021/11/8
 * @implNote 1.将人员列表中指定的成员添加进开发团队列表,<br>
 *           2.并将人员列表中相应的状态改变,Free-time,Busyness,On holiday--->3<br>
 */
public class SunmmaryOperation2 {
    FalseObject[] falseObjects2;
    private static SunmmaryOperation2 sunmmaryOperation2 = new SunmmaryOperation2();
    private static Scanner scanner = new Scanner(System.in);

    public FalseObject[] getFalseObjects2() {
        return falseObjects2;
    }

    public void setFalseObjects2(){
        this.falseObjects2 = null;
    }

    private SunmmaryOperation2() {

    }

    public static SunmmaryOperation2 getInstance() {
        return sunmmaryOperation2;
    }

    //显示开发团队列表
    public void display(FalseObject[] falseObjects2){
        if (check()){
            int j = 0;
            String information = "工号\t\t\t名字\t\t\t年龄\t\t\t实时状态\t\t\t工资\t\t\t职位";
            System.out.println("-------------------------------------开发团队列表-------------------------------------");
            System.out.println(information);
            j = CommonUse.displayUse(falseObjects2);
            System.out.println();
            System.out.println(">>>现有人数为:" + j +"(人)<<<\t\t\t"+">>>团队人数容量为:"+falseObjects2.length+"(人)<<<");
            System.out.println("---------------------------------------显示完毕--------------------------------------");
            System.out.println();
        }else{
            System.out.println("开发团队列表没有进行初始化,无法进行添加,请在主界面创建团队列表!");
        }
    }

    //检测
    public boolean check(){
        return falseObjects2 != null;
    }

    //add开发团队成员并设置状态
    private FalseObject falseObject3;
    private FalseObject fa;
    private static int k = 0;
    public void add(){
        if (check() && CommonUse.checkList(falseObjects2) ){
            System.out.print("请选择你要添加的人员的工号:");
            int jobId = scanner.nextInt();
            for (int i = 0 ;i<SunmmaryOperation1.getInstance().getFalseObjects().length;i++){

                if (SunmmaryOperation1.getInstance().getFalseObjects()[i] != null){

                    if (jobId == SunmmaryOperation1.getInstance().getFalseObjects()[i].getJobId()){

                        if (SunmmaryOperation1.getInstance().getFalseObjects()[i] instanceof Programmer){
                             fa = Factory.getADP("P");
                        }else if (SunmmaryOperation1.getInstance().getFalseObjects()[i] instanceof Designer){
                            fa = Factory.getADP("D");
                        }else if (SunmmaryOperation1.getInstance().getFalseObjects()[i] instanceof Architect){
                            fa = Factory.getADP("A");
                        }
                        falseObject3 = SunmmaryOperation1.getInstance().getFalseObjects()[i];
                        setFeild(fa,falseObject3);
                        SunmmaryOperation1.getInstance().getFalseObjects()[i].setRealTimeStatus("Busyness");
                        break;
                    }
                }
            }

            for (int k = 0;k<SunmmaryOperation2.getInstance().getFalseObjects2().length;k++){
                if (SunmmaryOperation2.getInstance().getFalseObjects2()[k] == null){
                    getFalseObjects2()[k] = fa;
                    break;
                }
            }

            System.out.println("添加完成!");
        }else {
            System.out.println("开发团队列表没有进行初始化,无法进行添加,请在主界面创建团队列表!");
        }
        CommonUse.getAwaitEnter();
        System.out.println();
    }

    //delete开发团队成员并设置状态
    public void delete(){
        if (check()){
            System.out.println("请输入你想要删除的人员工号:");
            int j = scanner.nextInt();
            for(int i = 0;i< getFalseObjects2().length;i++){
                if (getFalseObjects2()[i] != null && j == getFalseObjects2()[i].getJobId()){
                    getFalseObjects2()[i]=null;
                    fillInTheBlanks(i);
                    for (int e = 0;e<SunmmaryOperation1.getInstance().getFalseObjects().length;e++){
                        if (j == SunmmaryOperation1.getInstance().getFalseObjects()[e].getJobId()){
                            SunmmaryOperation1.getInstance().getFalseObjects()[e].setRealTimeStatus("Free-time");
                            System.out.println("删除成功!");
                            break;
                        }
                    }
                    break;
                }
            }
        }else{
            System.out.println("开发团队列表没有进行初始化,无法进行删除,请在主界面创建团队列表!");
        }
        CommonUse.getAwaitEnter();
        System.out.println();
    }

    private void fillInTheBlanks(int number) {
        if (number != falseObjects2.length) {
            int i = falseObjects2.length - (number + 1);
            for (int j = 0; j < i; j++) {
                falseObjects2[number + j] = falseObjects2[number + 1 + j];
            }
        }
    }

    //提供一种公共的设置状态的方法  SunmmaryOperation1---SunmmaryOperation2
    //

    /**
     *
     * @param fa 成品
     * @param falseObject3 被复制
     */
    private void setFeild(FalseObject fa, FalseObject falseObject3) {
        fa.setJobId(falseObject3.getJobId());
        fa.setAge(falseObject3.getAge());
        fa.setName(falseObject3.getName());
        fa.setWage(falseObject3.getWage());
        fa.setRealTimeStatus("Free-time");
    }


}

这是工具类,用来复用方法

package tools;

import member.Factory;
import member.FalseObject;
import service.SunmmaryOperation1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.InputMismatchException;
import java.util.Scanner;

/**
 * @author Mark-Z
 * @version 0.0.1
 * @date 2021/11/7
 * @implNote 逻辑判断
 */
public class CommonUse {
    private static Scanner scanner = new Scanner(System.in);

    //回车继续下一步
    public static void getAwaitEnter() {
        System.out.print("请按回车键继续......");
        try {
            new BufferedReader(new InputStreamReader(System.in)).readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //获取主界面输入的数字
    public static int getNumber() {
        while (true) {
            try {
                Scanner scanner1 = new Scanner(System.in);
                System.out.print("请输入指定的数字继续: ");
                return scanner1.nextInt();
            } catch (InputMismatchException inputMismatchException) {
                System.out.println("出错了!请输入数字!!");
            }
        }
    }

    //判断用户是否要退出本程序
    public static void getExit() {
        System.out.print("输入yes退出,任意键取消操作: ");
        String yn = scanner.next();
        if ("yes".equals(yn)) {
            System.out.println("**********************************已退出**********************************");
            System.exit(-1);
        }
    }

    //判断用户是否结束当前操作
    public static boolean getEnd() {
        System.out.println("输入数字1,取消当前操作--输入数字2继续当前操作:");
        int i = scanner.nextInt();
        if (i == 1) {
            return false;
        } else if (i == 2) {
            return true;
        } else {
            try {
                throw new SelectsException("无法识别该指令!");
            } catch (SelectsException e) {
                System.out.println(e.getMessage());
            }
        }
        return false;
    }

    //添加人员的方法
    public static boolean method(int j,int i) {

        System.out.println("·····················第" + (i) + "个人员·····················");
        FalseObject falseObject;
        System.out.print("请输入要创建的人员的职位[P-程序员,D-设计师,A-架构师]:");
        String type = scanner.next();
        try {
            if (type.equals("P") || type.equals("D") || type.equals("A")) {
                falseObject = Factory.getADP(type);
            } else {
                throw new RuntimeException("该类型无法创建!请检查输入的是否为大写字符!");
            }
        } catch (RuntimeException runtimeException) {
            System.out.println(runtimeException.getMessage());
            return false;
        }
        System.out.print("请输入工号:");
        int jobId = scanner.nextInt();
        assert falseObject != null;
        falseObject.setJobId(jobId);

        System.out.print("请输入姓名:");
        String name = scanner.next();
        falseObject.setName(name);

        System.out.print("请输入年龄: ");
        int age = scanner.nextInt();
        falseObject.setAge(age);

        System.out.print("请输入状态: ");
        String realtime = scanner.next();
        falseObject.setRealTimeStatus(realtime);

        System.out.print("请输入工资: ");
        int wage = scanner.nextInt();
        falseObject.setWage(wage);
        SunmmaryOperation1.getInstance().getFalseObjects()[j] = falseObject;
        System.out.println("···················第" + (i) + "个人员创建完毕·····················");
        return true;
    }

    //实时检测团队列表的容量
    public static boolean checkList(FalseObject[] falseObjects) {
        int qw = 0;
        for (int i = 0; i < falseObjects.length; i++) {
            if (falseObjects[i] == null) {
                qw++;
            }
        }
        if (qw == 0){
            System.out.println("现在团队列表人员已满,无法进行添加!!");
            CommonUse.getAwaitEnter();
            return false;
        }
        return true;
    }

    //复刻版
    public static int  displayUse(FalseObject[] falseObjects){
        int j = 0;
        j = getJ(falseObjects, j);
        return j;
    }

    public static int getJ(FalseObject[] falseObjects, int j) {
        for (FalseObject falseObject : falseObjects) {
            if (falseObject != null) {
                System.out.println(""
                        + falseObject.getJobId() + "\t\t\t"
                        + falseObject.getName() + "\t\t\t"
                        + falseObject.getAge() + "\t\t\t"
                        + falseObject.getRealTimeStatus() + "\t\t\t"
                        + falseObject.getWage() + "\t\t\t"
                        + falseObject.getPOSITION());
                j++;
            }
        }
        return j;
    }
}

这是自定义异常类

/*
 * Copyright (c) 2021. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
 * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
 * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
 * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
 * Vestibulum commodo. Ut rhoncus gravida arcu.
 */

package tools;

/**
 * @author Mark-Z
 * @version 0.0.1
 * @date 2021/11/6
 * @implNote 自定义的数字选择型异常类
 */
public class SelectsException extends Exception {
    static final long serialVersionUID = -24229948L;

    public SelectsException() {

    }

    public SelectsException(String message) {
        super(message);
    }
}

工厂类

package member;

public class Factory {
    public static FalseObject getADP(String type){
        return switch (type) {
            case "A" -> new Architect();
            case "P" -> new Programmer();
            case "D" -> new Designer();
            default -> null;
        };
    }
}

一个抽象的父类

package member;

public abstract class FalseObject {
    public abstract int getJobId();

    public abstract void setJobId(int jobId);

    public abstract String getName();

    public abstract void setName(String name);

    public abstract int getAge();

    public abstract void setAge(int age);

    public abstract String getRealTimeStatus();

    public abstract void setRealTimeStatus(String realTimeStatus);

    public abstract int getWage();

    public abstract void setWage(int wage);

    public abstract String getPOSITION();
}

一个接口

package member;


public interface Fulfillment {
    //遵循类优先原则
    public abstract int getWage();
}

后面还有三个子类,自行脑补,哈哈哈

请期待下一个版本。。。。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZJ_Mark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值