Java-项目开发团队分配管理软件

第一部分:项目说明

一、需求说明

1、该软件实现以下功能:

a、软件启动时,首先进入登录界面进行注册和登录功能。

b、当登陆成功后,进入菜单,首先就可以对开发人员账户和密码进行修改。

c、然后可以对开发人员进行增删改操作

d、人员添加成功后,根据菜单提示,基于现有的公司成员,组建一个开发团队以开发一个新的项目。

e、组建过程包括将成员插入到团队中,或从团队中删除某成员,还可以列出团队中现有成员的列表,开发团队成员包括架构师、设计师和程序员。

f、团队组建成功,则可以进入项目模块,添加项目,分配开发团队进行开发。

二、系统功能结构

三、系统流程图

三、软件设计结构

com.team.view    模块为主控模块,负责菜单的显示和处理用户操作
com.team.service  模块为实体对象( Employee 及其子类如程序员等)的管理模块, NameListService TeamService 类分别用各自的数组来管理公司员工和开发团队成员对象 ProjectService 是对项目的操作对象类
domain 模块为 Employee 及其子类等 JavaBean 类所在的包

四、模块说明

1、用户注册和登录模块

定义一个 LoginView
实现注册方法
如果没有账户则需要注册
如果有账号则直接进行登录
实现登录功能
判断用户输入的值是否正确
如果正确则进入软件菜单
如果错误则重新输入,限制次数只有 5 次,超过次数则程序停止,重新启动
实现修改用户密码功能
可以实现对用户名,密码,或者两者都可以进行修改即可。

2、开发人员管理模块

1、domain包中的接口和类

接口:

接口

方法

Equipment-电子设备

String getDescription()

实现类:

实现类

属性

PC-台式电脑

Model-机器型号

Display-显示器名称

NoteBook-笔记本电脑

Model-机器型号

Price-价格

Printer-打印机

Type-机器类型

Name-名字

实体类

实体类

属性

继承关系

Employee:雇员

Idnameagesalary

父类

Programmer:程序员

int memberId:用来记录成员加入开发团队中的Id
boolean status:
项目中的人员状态,先赋值为true,当添加到团队时为false

Equipment equipment: 程序员及其子类,均会领用某种电子设备(Equipment)

继承Employee

Designer:设计师

Double bonus:奖金

继承Programmer

Architect:架构师

Int stock:公司奖金的股票数量

继承Designer

2、service包中在NameListservice类中完成功能操作(就是管理公司的员工) 

a、实现员工的添加(根据职业添加(无,程序员,设计师,架构师))

b、实现员工的修改(至少修改员工的姓名,年龄,工资)

c、实现员工的删除(注意员工id需要动态显示,也就是删除后,员工id需要更新)

d、实现员工的查看 (显示所有数据)

NameListService类的设计

employees:ArrayList<Employess>:用来装员工的数据集合

getAllEmployees ()方法:获取当前所有员工

返回:包含所有员工集合

getEmployee(id : int)方法:获取指定ID的员工对象

参数:指定员工的ID

返回:指定员工对象

异常:找不到指定的员工则抛出自定义的异常。

service子包下提供自定义异常类:TeamException

另外,可根据需要自行添加其他方法或重载构造器

3、开发团队调度模块

3.1需求说明:

(1)、团队界面显示公司成员的列表(这些是默认值,请在开发人员管理模块中实现),如下:

(2)、如果添加操作因某种原因失败,将显示类似以下信息(失败原因视具体原因而不同):

1-团队列表  2-添加团队成员  3-删除团队成员 4-退出   请选择(1-4)2

---------------------添加成员---------------------

请输入要添加的员工ID2

添加失败,原因:该员工已是某团队成员

按回车键继续...

  失败信息包含以下几种:  (需要抛出自定义异常)

成员已满,无法添加
该成员不是开发人员,无法添加
该员工已在本开发团队中
该员工已是某团队成员
团队中至多只能有一名架构师(以下判断可借用 instanceof 进行判断)
团队中至多只能有两名设计师
团队中至多只能有三名程序员

(3)、当选择“添加团队成员”菜单时,将执行从列表中添加指定(通过ID)成员到开发团队的功能:

1-团队列表  2-添加团队成员  3-删除团队成员  4-退出   请选择(1-4)2

---------------------添加成员---------------------

请输入要添加的员工ID2

添加成功

按回车键继续...

(4)、添加成功后,按回车键将重新显示主界面。

开发团队人员组成要求:

最多一名架构师
最多两名设计师
最多三名程序员

(5)、当选择“删除团队成员”菜单时,将执行从开发团队中删除指定(通过TeamID)成员的功能:

1-团队列表  2-添加团队成员  3-删除团队成员 4-退出   请选择(1-4)3

---------------------删除成员---------------------

请输入要删除员工的TID1

确认是否删除(Y/N)y

删除成功

按回车键继续...

  删除成功后,按回车键将重新显示主界面。

(6)、当选择“团队列表”菜单时,将列出开发团队中的现有成员,例如:

1-团队列表  2-添加团队成员  3-删除团队成员 4-退出   请选择(1-4)1

--------------------团队成员列表---------------------

TDI/ID  姓名    年龄      工资       职位      奖金        股票

 2/4     刘强东   24      7300.0    程序员

 3/2     马化腾   32      18000.0  架构师   15000.0  2000

 4/6     任志强   22      6800.0    程序员

 5/12   杨致远   27      600.0      设计师   4800.0

-----------------------------------------------------

3.2参考实现

(1)、TeamService类的设计:管理开发团队成员对象

TeamService类的设计

counter: int = 1counter为静态变量,用来为开发团队新增成员自动生成团队中的唯一ID,即memberId。(提示:应使用增1的方式)

MAX_MEMBER: final int = 5:表示开发团队最大成员数

team: Programmer[] = new Programmer[MAX_MEMBER]:用来保存当前团队中的各成员对象 (也可以用一个新的集合)

total: int = 0:记录团队成员的实际人数

getTeam(): Programmer[]:返回当前团队的所有对象,返回:包含所有成员对象的数组,数组大小与成员人数一致

addMember(e:Employee)throws TeamException: void :向团队中添加成员

    • 参数:待添加成员的对象
    • 异常:添加失败, TeamException中包含了失败原因

removeMember(memberId: int) throws TeamException: void :从团队中删除成员

    • 参数:待删除成员的memberId
    • 异常:找不到指定memberId的员工,删除失败

另外,可根据需要自行添加其他方法或重载构造器

(2)、TeamView类的设计:负责菜单的显示和处理用户操作

TeamView类的设计

listSvc: NameListService = new NameListService()

teamSvc: TeamService = new TeamService()

其他(可根据自己需要加其他属性)

供类中的方法使用

enterMainMenu ()方法:主界面显示及控制方法。

以下方法仅供enterMainMenu()方法调用:

listAllEmployees(): void ---以表格形式列出公司所有成员

getTeam():void--显示团队成员列表操作

addMember(): void --实现添加成员操作

deleteMember(): void-- 实现删除成员操作

main(args: String[]) : void

其他(可根据自己需要加其他方法)

4、项目开发管理模块

service 包中完成项目操作类 ProjectService 的创建

ProjectService类的设计

pro: Arraylist<Project> --用来存项目的集合

count: int = 1 --添加项目的标号

addProject()--新项目添加

dealingPro (Programmer[] team) --项目分配团队开发

showPro() --查看项目当前状态

delPro(int id)-- 删除选择的项目

其他还需要的方法属性可自行添加

最后在view包中编写项目程序运行主界面类IndexView

将前面4个模块的内容装在一起,并运行软件,操作基本功能,调试bug,项目开发完成。

第二部分:具体代码实现

一、domain包

1、Equipment接口

package com.team.domain;

public interface Equipment {
    String getDescription();
}

2、 PC implements Equipment

package com.team.domain;

import com.team.view.TSUtility;

public class PC implements Equipment{
    private String model;//机器型号
    private String display;//显示器名称

    public PC() {
        super();
    }

    public PC(String model, String display) {
        super();
        this.model = model;
        this.display = display;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public String getDisplay() {
        return display;
    }

    public void setDisplay(String display) {
        this.display = display;
    }

    public PC  addPC()
    {
        System.out.println("请输入需要配置的台式电脑的型号:");
        String model = TSUtility.readKeyBoard(10, false);
        System.out.println("请输入需要配置的台式电脑的显示器名称:");
        String display = TSUtility.readKeyBoard(10, false);
        System.out.println("设备添加成功!");
        return new PC(model, display);
    }

    @Override
    public String getDescription() {
        return model+"("+display+")";
    }

}

3、NoteBook implements Equipment

package com.team.domain;

import com.team.view.TSUtility;

public class NoteBook implements Equipment{
    private String model;//机器型号
    private double price;//价格

    public NoteBook() {
        super();
    }

    public NoteBook(String model, double price) {
        super();
        this.model = model;
        this.price = price;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public NoteBook addNoteBook(){
        System.out.println("请输入需要配置的笔记本电脑的型号:");
        String model= TSUtility.readKeyBoard(10,false);
        System.out.println("请输入需要配置的笔记本电脑的价格:");
        Double price=TSUtility.readDouble();
        System.out.println("设备添加成功!");
        return new NoteBook(model,price);
    }

    @Override
    public String getDescription() {
        return model+"("+price+")";
    }
}

4、Printer implements Equipment

package com.team.domain;

import java.util.Scanner;

public class Printer implements Equipment {
    private String type;//机器类型
    private String name;//打印机名字

    public Printer() {
        super();
    }

    public Printer(String name, String type) {
        super();
        this.name = name;
        this.type = type;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public Printer addPrinter() {
        System.out.println("请输入新配置的打印机的名称:");
        Scanner sc = new Scanner(System.in);
        String name = sc.next();
        System.out.println("请输入新配置的打印机的类型:");
        String type = sc.next();
        return new Printer(name, type);
    }


    @Override
    public String getDescription() {
        return name+"("+type+")";
    }
}

5、Employee父类

package com.team.domain;

public class Employee {
    private int id;
    private String name;
    private int age;
    private double salary;

    public Employee() {
    }

    public Employee(int id, String name, int age, double salary) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }


    //protected修饰,同一个包中可以访问,不同包不能访问
    protected String getDetails() {
        //将id,name,age,salary属性与\t连接起来生成字符串,就是表头了
        return id + "\t" + name + "\t" + age+ "\t\t" +salary;
    }

    @Override
    public String toString() {
        return getDetails();
    }
}

6、Programmer extends Employee

package com.team.domain;
/*
* 程序员
* */
public class Programmer extends Employee{
    private int memberId;//用来记录成员加入开发团队中的Id
    private boolean status = true;//项目中的人员状态,先赋值为true,当添加到团队时为false
    private Equipment equipment;
    private boolean hasProject;//团队是否已经被分配项目

    public Programmer() {
    }

    public Programmer(int id, String name, int age,
                      double salary, Equipment equipment) {
        super(id, name, age, salary);
        this.equipment = equipment;
    }

    public Boolean getStatus() {
        return status;
    }

    public void setStatus(Boolean status) {
        this.status = status;
    }




    public Equipment getEquipment() {
        return equipment;
    }

    public void setEquipment(Equipment equipment) {
        this.equipment = equipment;
    }

    public int getMemberId() {
        return memberId;
    }


    public boolean isHasProject() {
        return hasProject;
    }

    public void setHasProject(boolean hasProject) {
        this.hasProject = hasProject;
    }

    public void setMemberId(int memberId) {
        this.memberId = memberId;
    }

    protected String getMemberDetails() {
        return getMemberId() + "/" + getDetails();
    }

    public String getDetailsForTeam() {
        return getMemberDetails() + "\t程序员";
    }

    @Override
    public String toString() {
        return getDetails() + "\t程序员\t" + status + "\t\t\t\t\t" + equipment.getDescription() ;
    }


}

7、Designer extends Programmer

package com.team.domain;
/*
* 设计师
* */
public class Designer extends Programmer {
    private double bonus;//奖金

    public Designer() {
    }

    public Designer(int id, String name, int age, double salary, Equipment equipment, double bonus) {
        super(id, name, age, salary, equipment);
        this.bonus = bonus;
    }

    public double getBonus() {
        return bonus;
    }

    public void setBonus(double bonus) {
        this.bonus = bonus;
    }

    public String getDetailsForTeam() {
        return getMemberDetails() + "\t设计师\t" + getBonus();
    }

    @Override
    public String toString() {
        return getDetails() + "\t设计师\t" + getStatus() + "\t" +
                getBonus() +"\t\t\t" + getEquipment().getDescription();
    }



}

8、Architect extends Designer

package com.team.domain;

public class Architect extends Designer{
    private int stock;//公司奖金的股票数量

    public Architect(int stock) {
        this.stock = stock;
    }

    public Architect(int id, String name, int age, double salary, Equipment equipment, double bonus, int stock) {
        super(id, name, age, salary, equipment, bonus);
        this.stock = stock;
    }

    public int getStock() {
        return stock;
    }

    public void setStock(int stock) {
        this.stock = stock;
    }

    @Override
    public String toString() {
        return getDetails() + "\t架构师\t" + getStatus() + "\t" +
                getBonus() + "\t" + getStock() + "\t" + getEquipment().getDescription();
    }
}

9、Project 

package com.team.domain;

public class Project {
    private int proId;//项目号
    private String projectName;//项目名称
    private String desName;//项目描述名称
    Programmer[] team = new Programmer[5];
    private String teamName;//开发团队名称
    private boolean status;

    public Project() {
    }

    public Project(int proId, String projectName, String desName, Programmer[] team, String teamName, boolean status) {
        this.proId = proId;
        this.projectName = projectName;
        this.desName = desName;
        this.team = team;
        this.teamName = teamName;
        this.status = status;

    }

    public int getProId() {
        return proId;
    }

    public void setProId(int proId) {
        this.proId = proId;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public String getDesName() {
        return desName;
    }

    public void setDesName(String desName) {
        this.desName = desName;
    }

    public Programmer[] getTeam() {
        return team;
    }

    public void setTeam(Programmer[] team) {
        this.team = team;
    }

    public String getTeamName() {
        return teamName;
    }

    public void setTeamName(String teamName) {
        this.teamName = teamName;
    }

    public boolean isStatus() {
        return status;
    }

    public void setStatus(boolean status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return "项目{" +
                "项目号=" + proId +
                ", 项目名='" + projectName + '\'' +
                ", 项目描述='" + desName + '\'' +
                ", 开发团队名称='" + teamName + '\'' +
                ", 开发状态=" + status +
                '}';
    }

    public String getProName() {
        return getProjectName() + "-》" + getDesName();
    }
}

二、service包

1、NameListService

package com.team.service;

import com.team.domain.*;
import com.team.view.TSUtility;

import java.util.ArrayList;

public class NameListService {
    //用来装员工的数据集合
    private ArrayList<Employee> employees = new ArrayList<>();

    //添加员工的id
    private int count = 1;

    //初始化默认值
    {
        employees.add(new Employee(count, "马云 ", 22, 3000));
        employees.add(new Architect(++count, "马化腾", 32, 18000, new NoteBook("联想T4", 6000), 60000, 5000));
        employees.add(new Programmer(++count, "李彦宏", 23, 7000, new PC("戴尔", "NEC 17寸")));
        employees.add(new Programmer(++count, "刘强东", 24, 7300, new PC("戴尔", "三星 17寸")));
        employees.add(new Designer(++count, "雷军 ", 50, 10000, new Printer("激光", "佳能2900"), 5000));
        employees.add(new Programmer(++count, "任志强", 30, 16800, new PC("华硕", "三星 17寸")));
        employees.add(new Designer(++count, "柳传志", 45, 35500, new PC("华硕", "三星 17寸"), 8000));
        employees.add(new Architect(++count, "杨元庆", 35, 6500, new Printer("针式", "爱普生20k"), 15500, 1200));
        employees.add(new Designer(++count, "史玉柱", 27, 7800, new NoteBook("惠普m6", 5800), 1500));
        employees.add(new Programmer(++count, "丁磊 ", 26, 6600, new PC("戴尔", "NEC17寸")));
        employees.add(new Programmer(++count, "张朝阳 ", 35, 7100, new PC("华硕", "三星 17寸")));
        employees.add(new Designer(++count, "杨致远", 38, 9600, new NoteBook("惠普m6", 5800), 3000));
    }

    //得到所有员工数据集合
    public ArrayList<Employee> getAllEmployees() {

        return employees;
    }

    //得到当前员工
    public Employee getEmployee(int id) throws TeamException {

        for (int i = 0; i < employees.size(); i++) {

            if (employees.get(i).getId() == id) {
                return employees.get(i);
            }
        }
        throw new TeamException("该员工不存在");
    }

    //员工的增加
    public void addEmployee() throws InterruptedException {
        System.out.println("请输入需要添加的雇员的职位:");
        System.out.println("1(无职位)");
        System.out.println("2(程序员)");
        System.out.println("3(设计师)");
        System.out.println("4(架构师)");
        String c = String.valueOf(TSUtility.readMenuSelection());
        if (c.equals("1")) {
            //无职位 new Employee(count++,"马云 ",22,3000)
            System.out.println("`当前雇员职位分配为:无`");
            System.out.println("请输入当前雇员的姓名:");
            String name = TSUtility.readKeyBoard(4, false);
            System.out.println("请输入当前雇员的年龄:");
            int age = TSUtility.readInt();
            System.out.println("请输入当前雇员的工资:");
            Double salary = TSUtility.readDouble();
            Employee employee = new Employee(++count, name, age, salary);
            employees.add(employee);
            System.out.println("人员添加成功!");
            TSUtility.readReturn();
        } else if (c.equals("2")) {
            //程序员 new Programmer(count++,"张朝阳 ",35,7100,new PC("华硕","三星 17寸"))
            System.out.println("`当前雇员职位分配为:程序员`");
            System.out.println("请输入当前雇员的姓名:");
            String name = TSUtility.readKeyBoard(4, false);
            System.out.println("请输入当前雇员的年龄:");
            int age = TSUtility.readInt();
            System.out.println("请输入当前雇员的工资:");
            Double salary = TSUtility.readDouble();
            System.out.println("请为当前程序员配一台好的台式电脑:");
            PC pc = new PC().addPC();
            Programmer programmer = new Programmer(++count, name, age, salary, pc);
            employees.add(programmer);
            System.out.println("人员添加成功!");
            TSUtility.readReturn();
        } else if (c.equals("3")) {
            //设计师 new Designer(count++,"史玉柱",27,7800,new NoteBook("惠普m6",5800),1500)
            System.out.println("`当前雇员职位分配为:设计师`");
            System.out.println("请输入当前雇员的姓名:");
            String name = TSUtility.readKeyBoard(4, false);
            System.out.println("请输入当前雇员的年龄:");
            int age = TSUtility.readInt();
            System.out.println("请输入当前雇员的工资:");
            Double salary = TSUtility.readDouble();
            System.out.println("请为当前设计师配一台好的笔记本电脑:");
            NoteBook noteBook = new NoteBook().addNoteBook();
            System.out.println("请输入当前设计师的奖金:");
            Double bonus = TSUtility.readDouble();
            Designer designer = new Designer(++count, name, age, salary, noteBook, bonus);
            employees.add(designer);
            System.out.println("人员添加成功!");
            TSUtility.readReturn();

        } else {
            //架构师 new Architect(count++,"杨元庆",35,6500,new Printer("针式","爱普生20k"),15500,1200)
            System.out.println("`当前雇员职位分配为:架构师`");
            System.out.println("请输入当前雇员的姓名:");
            String name = TSUtility.readKeyBoard(4, false);
            System.out.println("请输入当前雇员的年龄:");
            int age = TSUtility.readInt();
            System.out.println("请输入当前雇员的工资:");
            Double salary = TSUtility.readDouble();
            System.out.println("请为当前架构师配一台好的打印设备:");
            Printer printer = new Printer().addPrinter();
            System.out.println("请输入当前架构师的奖金:");
            Double bonus = TSUtility.readDouble();
            System.out.println("请输入当前架构师的股票:");
            Integer stock = TSUtility.readstock();
            Architect architect = new Architect(++count, name, age, salary, printer, bonus, stock);
            employees.add(architect);
            System.out.println("人员添加成功!");
            TSUtility.readReturn();
        }
    }

    //员工的删除
    public void delEmployee(int id)  {

        boolean flag = false;
        for (int i = 0; i < employees.size(); i++) {
            if (employees.get(i).getId() == id) {
                employees.remove(i);
                for (i = id; i <= employees.size(); i++) {
                    employees.get(i - 1).setId(employees.get(i - 1).getId() - 1);
                }
                flag = true;
            }
        }
        if (flag) {
            System.out.println("删除成功!");
            count--;
        } else {
            try {
                throw new TeamException("该员工不存在");
            } catch (TeamException e) {

            }
        }

    }

    //员工的查看
    public void showEmployee() throws InterruptedException {
        TSUtility.loadSpecialEffects();
        System.out.println("ID\t 姓名\t年龄\t 工资\t 职位\t 状态\t 奖金\t 股票\t 领用设备");
        for (int i = 0; i < employees.size(); i++) {
            System.out.println(" " + employees.get(i));
        }
    }

    //员工的修改 (目前只修改姓名,年龄,工资即可)
    public void modifyEmployee(int id) throws  InterruptedException {
        boolean flag = false;
        for (int i = 0; i < employees.size(); i++) {
            Employee emp = employees.get(i);
            if (employees.get(i).getId() == id) {
                System.out.print("姓名(" + emp.getName() + "):");
                String name = TSUtility.readString(4, emp.getName());
                System.out.print("年龄(" + emp.getAge() + "):");
                int age = Integer.parseInt(TSUtility.readString(2,emp.getAge()+""));
                System.out.print("工资(" + emp.getSalary() + "):");
                double salary =Double.parseDouble(TSUtility.readString(10, emp.getSalary()+""));
                emp.setName(name);
                emp.setAge(age);
                emp.setSalary(salary);
                employees.set(i,emp);
                flag = true;
            }
        }
        if (flag) {
            System.out.println("修改成功!");
        } else {
            try {
                throw new TeamException("该员工不存在");
            } catch (TeamException e) {
               // e.printStackTrace();
            }
        }
    }
}

2、 TeamException extends Exception

package com.team.service;

public class TeamException extends Exception{
    public TeamException(){
    }

    public TeamException(String meassge){
        System.out.println(meassge);
    }
}

3、TeamService

package com.team.service;

import com.team.domain.Architect;
import com.team.domain.Designer;
import com.team.domain.Employee;
import com.team.domain.Programmer;

public class TeamService {
    private static int counter=1;
    //团队人数上限
    private final int MAX_MEMBER = 5;
    //保存当前团队成员
    private Programmer[] team = new Programmer[MAX_MEMBER];
    //团队实际人数
    private int total = 0;

    private boolean flag;

    public boolean isFlag() {
        return flag;
    }

    public void setFlag(boolean flag) {
        this.flag = flag;
    }


    public TeamService() {
        super();
    }

    //返回team中所有程序员构成的数组
    public Programmer[] getTeam() {
        Programmer[] team = new Programmer[total];
        for (int i = 0; i < total; i++) {
            team[i] = this.team[i];
        }
        return team;
    }

    //初始化当前团队成员数组
    public void clearTeam() {
        team = new Programmer[MAX_MEMBER];
        counter = 1;
        total = 0;
        this.team = team;
    }

    //增加团队成员
    public void addMember(Employee e) throws TeamException {
        int numOfArch = 0, numOfDsgn = 0, numOfPrg = 0;
        for (int i = 0; i < total; i++) {
            if (team[i] instanceof Architect) {
                numOfArch++;
            } else if (team[i] instanceof Designer) {
                numOfDsgn++;
            } else if (team[i] instanceof Programmer) {
                numOfPrg++;
            }
        }
        if (total >= MAX_MEMBER) {
            throw new TeamException("成员已满,无法添加");
        }
        if (!(e instanceof Programmer)) {
            throw new TeamException("该成员不是开发人员,无法添加");
        }
        Programmer p = (Programmer) e;

        if (isExist(p)) {
            throw new TeamException("该员工已在本团队中");
        }
        if (!p.getStatus()) {
            throw new TeamException("该员工已是某团队成员");
        }
        if (p instanceof Architect) {
            if (numOfArch >= 1) {
                throw new TeamException("团队中至多只能有一名架构师");
            }
        } else if (p instanceof Designer) {
            if (numOfDsgn >= 2) {
                throw new TeamException("团队中至多只能有两名设计师");
            }
        } else if (p instanceof Programmer) {
            if (numOfPrg >= 3) {
                throw new TeamException("团队中至多只能有三名程序员");
            }
        }
        //添加到数组
        p.setStatus(false);
        p.setMemberId(counter++);
        team[total++] = p;
    }

    private boolean isExist(Employee e) {
        for (int i = 0; i < total; i++) {
            if (team[i].getId() == e.getId())
                return true;
        }
        return false;
    }

    //删除指定memberId的程序员
    public void removeMember(int memberId) throws TeamException {
        int n = 0;
        //找到指定memberId的员工,并删除
        for (n = 0; n < total; n++) {
            if (team[n].getMemberId() == memberId) {
                team[n].setStatus(true);
                break;
            }
        }
        //如果遍历一遍,都找不到,则报异常
        if (n == total)
            throw new TeamException("找不到该成员,无法删除");
        //后面的元素覆盖前面的元素
        for (int i = n + 1; i < total; i++) {
            team[i - 1] = team[i];
        }
        team[--total] = null;
    }
}

4、ProjectService

package com.team.service;

import com.team.domain.Programmer;
import com.team.domain.Project;
import com.team.view.TSUtility;

import java.util.ArrayList;
import java.util.Random;

public class ProjectService {

    //用来存储项目的集合
    private ArrayList<Project> pro = new ArrayList<>();
    //添加项目的编号
    private int count = 1;
    private boolean flag;

    //添加项目
    public void addProject() throws InterruptedException {
        System.out.println("项目参考:--------------------------------------------------");
        System.out.println("1.小米官网:开发完成类似于小米官网的web项目.");
        System.out.println("2.公益在线商城:猫宁Morning公益商城是中国公益性在线电子商城.");
        System.out.println("3.博客系统:Java博客系统,让每一个有故事的人更好的表达想法!");
        System.out.println("4.在线协作文档编辑系统:一个很常用的功能,适合小组内的文档编辑。");
        System.out.println("------------------------------------------------------------");
        TSUtility.readReturn();
        System.out.println("请输入你想添加的项目 ");
        char c = TSUtility.readMenuSelection();
        switch (c) {
            case '1':
                Project p1 = new Project();
                p1.setProId(count++);
                p1.setProjectName("小米官网");
                p1.setDesName("开发完成类似于小米官网的web项目.");
                pro.add(p1);
                TSUtility.loadSpecialEffects();
                System.out.println("已添加项目:" + p1.getProName());
                break;
            case '2':
                Project p2 = new Project();
                p2.setProId(count++);
                p2.setProjectName("公益在线商城");
                p2.setDesName("猫宁Morning公益商城是中国公益性在线电子商城.");
                pro.add(p2);
                TSUtility.loadSpecialEffects();
                System.out.println("已添加项目:" + p2.getProName());
                break;
            case '3':
                Project p3 = new Project();
                p3.setProId(count++);
                p3.setProjectName("博客系统");
                p3.setDesName("Java博客系统,让每一个有故事的人更好的表达想法!");
                pro.add(p3);
                TSUtility.loadSpecialEffects();
                System.out.println("已添加项目:" + p3.getProName());
                break;
            case '4':
                Project p4 = new Project();
                p4.setProId(count++);
                p4.setProjectName("在线协作文档编辑系统");
                p4.setDesName("一个很常用的功能,适合小组内的文档编辑。");
                pro.add(p4);
                TSUtility.loadSpecialEffects();
                System.out.println("已添加项目:" + p4.getProName());
                break;
            default:
                System.out.println("项目不存在");
                break;
        }
    }

    //给项目分配团队
    public void dealingPro(Programmer[] team) {
        for (Project project : pro) {
            boolean status = project.isStatus();
            if (!status) {
                System.out.println("当前团队有人员:");
                for (int i = 0; i < team.length; i++) {
                    System.out.println(team[i]);
                }
                System.out.println("请为当前团队创建一个团队名称:");
                String teamName = TSUtility.readKeyBoard(6, false);


                    project.setTeamName(teamName);
                    project.setTeam(team);
                    project.setStatus(true);
                    for (Programmer programmer : team) {
                        programmer.setHasProject(true);
                    }
                    // pro.set(ranNum, project);
                    System.out.println("项目" + project.getProjectName() + "正在被" + project.getTeamName() + "开发中");
                break;
            }
        }
    }




        /*//随机分配项目
        Random ra = new Random();
        int ranNum = ra.nextInt(pro.size());
        Project project = this.pro.get(ranNum);
        while (project.isStatus()) {
            ranNum = ra.nextInt(pro.size());
            project = this.pro.get(ranNum);
            if (project.isStatus()) {
                break;
            }
        }*/




    //查看目前项目情况
    public void showPro() throws InterruptedException {
        TSUtility.loadSpecialEffects();
        for (int i = 0; i < pro.size(); i++) {
            System.out.println(pro.get(i));
            if (!pro.get(i).isStatus()) {
                System.out.println("项目未被开发!");
            } else {
                System.out.println("项目" + "" + pro.get(i).getProjectName() + "" + "正在被" + "" + pro.get(i).getTeamName() + "开发");
            }
        }
    }

    //删除选择的项目
    public void delPro(int id) {
        boolean flag = false;
        for (int i = 0; i < pro.size(); i++) {
            if (pro.get(i).getProId() == id) {
                if (pro.get(i).isStatus()) {
                    System.out.println("删除失败");
                } else {
                    pro.remove(i);
                    for (i = id; i <= pro.size(); i++) {
                        pro.get(i - 1).setProId(pro.get(i - 1).getProId() - 1);
                    }
                }
                flag = true;
            }
        }
        if (flag) {
            System.out.println("删除成功!");
            count--;
        } else {
            try {
                throw new TeamException("该项目不存在");
            } catch (TeamException e) {
                System.out.println(e.getMessage());
              //  e.printStackTrace();
            }
        }
    }

    //得到所有项目数据集合
    public ArrayList<Project> getAllPro() {
        return pro;
    }

}

三、view包

1、TSUtility 工具类

package com.team.view;

import java.util.Random;
import java.util.Scanner;

public class TSUtility {
    private static Scanner scanner = new Scanner(System.in);

    public static char readMenuSelection() {
        char c;
        for (; ; ) {
            String str = readKeyBoard(1, false);
            c = str.charAt(0);
            if (c != '1' && c != '2' &&
                    c != '3' && c != '4') {
                System.out.print("选择错误,请重新输入:");
            } else break;
        }
        return c;
    }
    public static char readMenuSelectionPro() {
        char c;
        for (; ; ) {
            String str = readKeyBoard(1, false);
            c = str.charAt(0);
            if (c != '1' && c != '2' &&
                    c != '3' && c != '4' && c != '5') {
                System.out.print("选择错误,请重新输入:");
            } else break;
        }
        return c;
    }


    public static void readReturn() {
        System.out.print("按回车键继续...");
        readKeyBoard(100, true);
    }

    public static int readInt() {
        int n;
        for (; ; ) {
            String str = readKeyBoard(2, false);
            try {
                n = Integer.parseInt(str);
                break;
            } catch (NumberFormatException e) {
                System.out.print("数字输入错误,请重新输入:");
            }
        }
        return n;
    }
    public static int readstock() {
        int n;
        for (; ; ) {
            String str = readKeyBoard(6, false);
            try {
                n = Integer.parseInt(str);
                break;
            } catch (NumberFormatException e) {
                System.out.print("数字输入错误,请重新输入:");
            }
        }
        return n;
    }
    public static Double readDouble() {
        Double n;
        for (; ; ) {
            String str = readKeyBoard(6, false);
            try {
                n = Double.parseDouble(str);
                break;
            } catch (NumberFormatException e) {
                System.out.print("数字输入错误,请重新输入:");
            }
        }
        return n;
    }

    public static char readConfirmSelection() {
        char c;
        for (; ; ) {
            String str = readKeyBoard(1, false).toUpperCase();
            c = str.charAt(0);
            if (c == 'Y' || c == 'N') {
                break;
            } else {
                System.out.print("选择错误,请重新输入:");
            }
        }
        return c;
    }
    public static String readString(int limit, String defaultValue) {
        String str = readKeyBoard(limit, true);
        return str.equals("")? defaultValue : str;
    }

    public static String readKeyBoard(int limit, boolean blankReturn) {
        String line = "";

        while (scanner.hasNextLine()) {
            line = scanner.nextLine();
            if (line.length() == 0) {
                if (blankReturn) return line;
                else continue;
            }

            if (line.length() < 1 || line.length() > limit) {
                System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
                continue;
            }
            break;
        }

        return line;
    }
    public static void loadSpecialEffects() throws InterruptedException {
        System.out.println("请稍等:");
        for (int i1 = 1; i1 <= 100; i1++) {
            System.out.print("加载中:" + i1 + "%");
            Thread.sleep(new Random().nextInt(25) + 1);
            if (i1 == 100) {
                Thread.sleep(50);
            }
            System.out.print("\r");
        }
    }
}

2、 LoginView

package com.team.view;

import java.util.Scanner;

/*
 * @date:2024.9.13
 * @description:项目的登录和注册
 * */
public class LoginView {
    //首先给定属性:登录用户和密码
    private String userName = "";
    private String password = "";

    //注册功能
    public void regist() throws InterruptedException {
        TSUtility.loadSpecialEffects();
        System.out.println("开始注册:");
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的注册账户名称:");
        String userName = TSUtility.readKeyBoard(4, false);
        this.userName = userName;
        System.out.println("请输入你的注册密码:");
        String password = TSUtility.readKeyBoard(8, false);
        this.password = password;
        System.out.println("注册成功!请登录!");
    }

    //登录功能
    public void login() throws InterruptedException {
        //登录失败的次数限制
        int count = 5;
        boolean flag = true;
        while (flag) {
            System.out.println("********************🐱");
            System.out.println("***   <登录界面>   ***");
            System.out.println("***     (:      ***🐱");
            System.out.println("********************🐱");

            System.out.println("请输入你的登录账户名称:");
            String userName = TSUtility.readKeyBoard(4, false);
            System.out.println("请输入你的登录密码:");
            String password = TSUtility.readKeyBoard(8, false);
            //未注册
            if (this.userName.length() == 0 || this.password.length() == 0 || count <= 0) {
                count = 5;
                System.out.println("未检测到您的账号,请您先注册!");
                regist();
            }
            //已注册
            //正常登录
            else if (this.userName.equals(userName) && this.password.equals(password)) {
                TSUtility.loadSpecialEffects();
                System.out.println("登陆成功!欢迎您:" + userName);
                flag = false;
            } else {
                if (count <=0) {
                    System.out.println("登录次数不足!退出!");
                    login();
                    return;
                } else {
                    count--;
                    System.out.println("登录失败!用户名或密码不匹配!");
                    System.out.println("登录次数还剩" + count + "次,请重新输入:");
                }
            }
        }
    }

    //修改功能
    public void update() throws InterruptedException {
        boolean flag = true;
        while (flag) {
            System.out.println("********************🐱");
            System.out.println("***   <修改界面>   ***");
            System.out.println("***     (:      ***🐱");
            System.out.println("********************🐱");

            System.out.println("请输入你需要修改的类型:");
            System.out.println("1(修改用户名)");
            System.out.println("2(修改密码名)");
            System.out.println("3(修改用户名和密码名)");
            System.out.println("4(不修改,退出)");
            Scanner sc = new Scanner(System.in);
            String options = sc.next();
            if (options.equals("1")) {
                System.out.println("请输入你的修改的账户名称:");
                String userName = TSUtility.readKeyBoard(4, false);
                this.userName = userName;
                System.out.println("修改成功!");
            } else if (options.equals("2")) {
                System.out.println("请输入你的修改密码:");
                String password = TSUtility.readKeyBoard(8, false);
                this.password = password;
                System.out.println("修改成功!");
            } else if (options.equals("3")) {
                System.out.println("请输入你的修改的账户名称:");
                String userName = TSUtility.readKeyBoard(4, false);
                this.userName = userName;
                System.out.println("请输入你的修改密码:");
                String password = TSUtility.readKeyBoard(8, false);
                this.password = password;
                System.out.println("修改成功!");
            }
            else if (options.equals("4")) {
                System.out.println("退出中");
                TSUtility.loadSpecialEffects();
                flag = false;
            }
            else  {
                System.out.println("输入错误!请输入“1”或者“2”或者“3”或者“4”:");
            }
        }
    }
}

3、TeamView

package com.team.view;

import com.team.domain.Employee;
import com.team.domain.Programmer;
import com.team.domain.Project;
import com.team.service.NameListService;
import com.team.service.TeamException;
import com.team.service.TeamService;

import java.util.ArrayList;

public class TeamView {
    private TeamService teamSvc = new TeamService();
    private NameListService listSvc = new NameListService();

    ArrayList<Programmer[]> teamList = new ArrayList<>();

    public ArrayList<Programmer[]> getManyTeam() throws TeamException {
        boolean flag = true;
        char key = 0;
        while (flag) {
            System.out.println("※※※※※※※※※※※");
            System.out.println("※  团队调度界面   ※");
            System.out.println("※※※※※※※※※※※");
            System.out.print("1-添加团队 2-查看团队 3-删除团队 4-退出   请选择(1-4):");
            key = TSUtility.readMenuSelection();
            System.out.println();
            switch (key) {
                case '1':
                    //列出公司所有成员
                    System.out.println("----------------------------------开发团队调度----------------------------------");
                    System.out.println("ID\t 姓名\t年龄\t\t 工资\t 职位\t 状态\t 奖金\t 股票\t 领用设备");
                    for (Employee emp : listSvc.getAllEmployees()) {
                        System.out.println(emp);
                    }
                    enterMainMenu();
                    break;
                case '2':
                    System.out.println("----------------团队列表-----------------");
                    for (Programmer[] team : teamList) {
                        for (int i = 0; i < team.length; i++) {
                            System.out.println(team[i]);
                        }
                        System.out.println("---------------------------------------");
                    }
                    break;
                case '3':
                    System.out.println("请输入想要删除第几个团队");
                    boolean flag1 = true;
                    while (flag1) {
                        int num = TSUtility.readInt();
                        if (num <= 0) {
                            System.out.println("输入错误,请重新输入:");
                            continue;
                        }
                        else if (num <= teamList.size()) {
                            System.out.print("确认是否删除(Y/N):");
                            char de = TSUtility.readConfirmSelection();
                            if (de == 'Y') {
                                //修改状态
                                Programmer[] t = teamList.get(num-1);
                                for (int i = 0; i < teamList.get(num-1).length; i++) {
                                    t[i].setStatus(true);
                                }
                                teamList.remove(num - 1);
                            }
                        } else {
                            System.out.println("没有该团队,请正常输入!" + "目前团队只有" + teamList.size() + "个");
                        }
                        flag1 = false;
                    }
                    break;
                case '4':
                    System.out.print("确认是否退出(Y/N):");
                    char yn = TSUtility.readConfirmSelection();
                    if (yn == 'Y') {
                        flag = false;
                    }
                    break;
                default:
                    break;
            }
        }
        return teamList;
    }

    public void enterMainMenu() throws TeamException {
        boolean loopFlagSec = true;
        char keySec2 = 0;
        do {
            System.out.println("------------------------------------------------------------------------------");
            System.out.print("1-团队列表  2-添加团队成员  3-删除团队成员  4-退出  请选择(1-4):");
            keySec2 = TSUtility.readMenuSelection();
            switch (keySec2) {
                case '1'://团队列表
                    TeamList();
                    break;
                case '2'://添加团队成员
                    AddTeam();
                    break;
                case '3'://删除团队成员
                    DelTeam();
                    break;
                case '4'://退出
                    System.out.print("确认是否退出(Y/N):");
                    char yn = TSUtility.readConfirmSelection();
                    if (yn == 'Y') {
                        teamList.add(teamSvc.getTeam());
                        teamSvc.clearTeam();
                        loopFlagSec = false;
                    }
                    break;
            }
        } while (loopFlagSec);
    }

    public void TeamList() {
        int count = 0;
        System.out.println("-------------------团队成员表-------------------");
        System.out.println("TID/ID\t 姓名\t年龄\t\t 工资\t 职位\t 状态\t 奖金\t 股票\t 领用设备");
        for (Employee employee : teamSvc.getTeam()) {
            count++;
            System.out.println(" " + count + "/" + employee + " ");
        }
    }

    public void AddTeam() throws TeamException {
        //列出公司所有成员
        System.out.println("-------------------------人员表-------------------------");
        System.out.println("ID\t 姓名\t年龄\t\t 工资\t 职位\t 状态\t 奖金\t 股票\t 领用设备");
        for (Employee emp : listSvc.getAllEmployees()) {
            System.out.println(emp);
        }
        System.out.println("----------添加团队成员----------");
        System.out.print("请输入添加的团队员工的ID:");
        int id = TSUtility.readInt();
        int ber = -1;//判断id是否存在
        for (int i = 0; i < listSvc.getAllEmployees().size(); i++) {
            if (listSvc.getAllEmployees().get(i).getId() == id) {
                ber = id;
                break;
            }
        }
        if (ber == -1) {
            System.out.println("不存在该id的开发人员!");
        } else {
            //获取集合中的元素信息
            Employee e = listSvc.getAllEmployees().get(id-1);
            teamSvc.addMember(e);
            System.out.println("添加成功");
        }
    }

    public void DelTeam() throws TeamException {
        System.out.println("----------删除团队成员----------");
        System.out.print("请输入删除团队员工的TID:");
        int removeId = TSUtility.readInt();
        teamSvc.removeMember(removeId);
        System.out.println("删除成功!");
    }

    public NameListService reTeamSvcObject(){
        return listSvc;
    }

}

4、indexView

package com.team.view;

import com.team.domain.Programmer;
import com.team.service.NameListService;
import com.team.service.ProjectService;
import com.team.service.TeamException;

import java.util.ArrayList;

public class indexView {
    /**
     * 颜色特效
     */
    public static final String ANSI_RESET = "\u001B[0m";
    public static final String ANSI_GREEN = "\u001B[32m";
    public static final String ANSI_YELLOW = "\u001B[33m";
    public static final String ANSI_PURPLE = "\u001B[35m";
    public static final String ANSI_BLUE = "\u001B[34m";
    public static final String ANSI_CYAN = "\u001B[36m";

    private LoginView loginVi = new LoginView();
    private TeamView teamVi = new TeamView();
    private NameListService nameListSer = teamVi.reTeamSvcObject();
    private ProjectService projectSer = new ProjectService();
    private ArrayList<Programmer[]> manyTeam=null;


    public  void menu() throws TeamException, InterruptedException {
        boolean loopFlag = true;
        char key = 0;

        System.out.println(ANSI_PURPLE);
        System.out.println("🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣");
        System.out.println("🔣                                  🔣");
        System.out.println("🔣    欢迎来到项目开发团队分配管理软件     🔣");
        System.out.println("🔣                                   🔣");
        System.out.println("🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣");
        System.out.println("🐕");
        System.out.println("🐕");
        System.out.println("🐕");
        System.out.println("🐕-----------<请您先进行登录>-------------🐕");
        TSUtility.readReturn();
       try {
            loginVi.login();
        } catch (InterruptedException e) {
            e.printStackTrace();
      }
            do {
                System.out.println(ANSI_RESET + ANSI_CYAN);
                System.out.println("🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣");
                System.out.println("🔣                                   🔣");
                System.out.println("🔣              ~软件主菜单~           🔣");
                System.out.println("🔣                                   🔣");
                System.out.println("🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣🔣");
                System.out.println("🐻1. <用户信息修改>                *");
                System.out.println("🐘2. <开发人员管理>                *");
                System.out.println("🦁3. <开发团队调度管理>             *");
                System.out.println("🐻4. <开发项目管理>                *");
                System.out.println("🦊5. <退出软件>                   *");
                System.out.println("⬇请选择:  ");
                System.out.print(ANSI_RESET);
                key = TSUtility.readMenuSelectionPro();

                switch (key) {
                    case '1':
                        try {
                            loginVi.update();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        break;
                    case '2':
                        try {
                            nameListSer.showEmployee();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        boolean loopFlagSec = true;
                        char keySec = 0;
                        do {
                            System.out.print(ANSI_RESET + ANSI_YELLOW);
                            System.out.println("🔣        ~开发人员管理主菜单~            🔣");
                            System.out.println("🐕1.     <开发人员的添加>           *");
                            System.out.println("🐖2.     <开发人员的查看>           *");
                            System.out.println("🐱3.     <开发人员的修改>           *");
                            System.out.println("🐂4.     <开发人员的删除>           *");
                            System.out.println("🐇5.     <退出当前菜单>             *");
                            System.out.println("⬇请选择:  ");
                            keySec = TSUtility.readMenuSelectionPro();
                            switch (keySec) {
                                case '1':
                                    nameListSer.addEmployee();
                                    break;
                                case '2':
                                    try {
                                        nameListSer.showEmployee();
                                    } catch (InterruptedException e) {
                                        e.printStackTrace();
                                    }
                                    break;
                                case '3':
                                    System.out.println("请输入需要修改的员工id:");
                                    int i = TSUtility.readInt();
                                    nameListSer.modifyEmployee(i);
                                    break;
                                case '4':
                                    System.out.println("请输入需要删除的员工id:");
                                    int j = TSUtility.readInt();
                                    nameListSer.delEmployee(j);
                                    break;
                                case '5':
                                    System.out.print("确认是否退出(Y/N):");
                                    char yn = TSUtility.readConfirmSelection();
                                    if (yn == 'Y') {
                                        loopFlagSec = false;
                                    }
                                    break;
                                default:
                                    System.out.println("输入有误!请重新输入!");
                                    break;
                            }
                        } while (loopFlagSec);
                        break;
                    case '3':
                        System.out.println(ANSI_BLUE);
                        try {
                            manyTeam = teamVi.getManyTeam();
                        } catch (TeamException e) {
                            System.out.println(e.getMessage());
                        }
                        TSUtility.readReturn();
                        break;
                    case '4':
                        boolean loopFlagThr = true;
                        char keyThr = 0;
                        do {
                            System.out.print(ANSI_RESET + ANSI_GREEN);
                            System.out.println("🔣      ~开发项目管理主菜单~            🔣");
                            System.out.println("🐕1.     <项目的添加>               *");
                            System.out.println("🐖2.     <项目分配开发团队>          *");
                            System.out.println("🐱3.     <项目的查看>               *");
                            System.out.println("🐂4.     <项目的删除>               *");
                            System.out.println("🐇5.     <退出当前菜单>             *");
                            System.out.println("⬇请选择:  ");
                            System.out.print(ANSI_RESET + ANSI_YELLOW);
                            keyThr = TSUtility.readMenuSelectionPro();
                            switch (keyThr) {
                                case '1':
                                    try {
                                        projectSer.addProject();
                                    } catch (InterruptedException e) {
                                        e.printStackTrace();
                                    }
                                    break;
                                case '2':
                                    if (manyTeam == null) {
                                        System.out.println("当前没有团队!");
                                    } else {
                                        for (Programmer[] pro : manyTeam) {
                                            if(!pro[0].isHasProject()){
                                                projectSer.dealingPro(pro);
                                            }
                                        }
                                    }
                                    break;
                                case '3':
                                    try {
                                        projectSer.showPro();
                                    } catch (InterruptedException e) {
                                        e.printStackTrace();
                                    }
                                    break;
                                case '4':
                                    System.out.println("请输入需要删除的项目id:");
                                    int j = TSUtility.readInt();
                                    projectSer.delPro(j);
                                    break;
                                case '5':
                                    System.out.print("确认是否退出(Y/N):");
                                    char yn = TSUtility.readConfirmSelection();
                                    if (yn == 'Y') {
                                        loopFlagThr = false;
                                    }
                                    break;
                                default:
                                    System.out.println("输入有误!请重新输入!");
                                    break;
                            }
                        } while (loopFlagThr);
                        break;
                    case '5':
                        System.out.print("确认是否退出(Y/N):");
                        char yn = TSUtility.readConfirmSelection();
                        if (yn == 'Y') {
                            loopFlag = false;
                        }
                        break;
                    default:
                        break;
                }
            } while (loopFlag);
        }

        public static void main (String[]args) throws TeamException, InterruptedException {

            new indexView().menu();
        }
    }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值