java实现、项目开发团队分配管理软件

目标:

模拟实现一个基于文本界面的《项目开发团队分配管理软件》 熟悉Java面向对象的高级特性,进一步掌握编程技巧和调试技巧 主要涉及以下知识点: 类的继承性和多态性 对象的值传递、接口 static和final修饰符 特殊类的使用:包装类、抽象类、内部类 异常处理 Java基本语法和流程控制 数组,ArrayList集合。

该软件实现以下功能:

软件启动时,首先进入登录界面进行注册和登录功能。 当登陆成功后,进入菜单,首先就可以对开发人员账户和密码进行修改。 然后可以对开发人员进行增删改操作 人员添加成功后,根据菜单提示,基于现有的公司成员,组建一个开发团队以开发一个新的项目。 组建过程包括将成员插入到团队中,或从团队中删除某成员,还可以列出团队中现有成员的列表,开发团队成员包括架构师、设计师和程序员。 团队组建成功,则可以进入项目模块,添加项目,分配开发团队进行开发。

 

 

 

具体实现:

1.View包

IndexView类实现:
public class IndexView {
     LoginView loginview = new LoginView();
     NameListService namelistservice = new NameListService();
     TeamService teamservice = new TeamService();
     TeamView teamview = new TeamView();
     ProjectService projectservice = new ProjectService();
    public static void main(String[] args) {
        IndexView indexView = new IndexView();
        indexView.menu(); //进入主界面进行账号密码注册登入
    }
    public void menu(){
        Scanner sc = new Scanner(System.in);
        System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
        System.out.println("@                                 @");
        System.out.println("@ 欢迎来到项目开发团队分配管理软件   @");
        System.out.println("@                                 @");
        System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
        System.out.println("*\n*\n*\n*\n");
        System.out.println("*------------请您先登入------------*");
        TSUtility.readReturn(); // 按返回键继续
        try {
            loginview.login();// 进入登入界面
        } catch (InterruptedException e) {

            e.printStackTrace();
        }
        boolean loopFlag = true;
        while (loopFlag){
            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("请选择:");
            char ch = TSUtility.readMenuSelectionPro(); //输入(1-5)的数字
            switch (ch){
                case '1' :
                    try {
                        loginview.update();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    break;
                case '2' :
                    try {
                        namelistservice.showEmployee();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    char ch2 =0;
                    boolean loopFlagSec = true;
                    while (loopFlagSec){
                        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("请选择:");
                        ch2 = TSUtility.readMenuSelectionPro();//输入1-5之间的数字
                        switch (ch2){
                            case '1' :
                                try {
                                    namelistservice.addEmployee();
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }
                                break;
                            case '2' :
                                try {
                                    namelistservice.showEmployee();
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }
                                break;

                            case '3' :

                                try {
                                    namelistservice.readInt();
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }
                                break;
                            case '4' :
                                namelistservice.delEmployee();

                                break;
                            case '5' :
                                System.out.println("确定要退出吗Y/N");
                                char yn = TSUtility.readConfirmSelection();
                                if(yn =='Y'){
                                    loopFlagSec = false;
                                    break;
                                }

                            default:
                                System.out.println("输入有误!请重新输入!");
                                break;
                        }

                    }
                    break;
                case '3' :
                    char ch3 = 0;
                    boolean flag = true;
                    while (flag){
                        System.out.println("&&&&&&&&&&&&&&&");
                        System.out.println("&             &");
                        System.out.println("& 团队调度界面 &");
                        System.out.println("&             &");
                        System.out.println("&&&&&&&&&&&&&&&");
                        System.out.println();
                        System.out.print("1.添加团队 ");
                        System.out.print("2.查看团队 ");
                        System.out.print("3.删除团队 ");
                        System.out.print("4.退出 ");
                        System.out.print("请选择:");

                        ch3 = TSUtility.readMenuSelectionPro();
                        switch (ch3){
                            case '1':

                                try {

                                    teamview.enterMainMenu();
                                } catch (TeamException e) {
                                    e.printStackTrace();
                                }
                                System.out.println();
                            case '2':
//                                tv.method();
                                if(teamview.array.size() == 0){
                                    System.out.println("当前还没有团队,请先添加");
                                }
                                else {
                                    for ( int i=0 ; i <teamview.array.size(); i++){
                                        System.out.println("----------第"+(i+1)+"团队成员列表----------");
                                        System.out.println("TDI/ID\t姓名\t年龄\t工资\t职位\t奖金\t股票");
                                        teamservice.show2(teamview.array.get(i));
                                    }
                                }
                                break;
                            case '3' :
                                System.out.println("需要删除第几团队哪?");
                                int num = TSUtility.readInt();
                                if(num > teamview.array.size() || num < 0 || teamview.array.size() == 0){
                                    System.out.println("你输入的这个团队不存在");
                                }else{
                                    System.out.println("确定要删除吗(Y/N):");
                                    char ch4 =TSUtility.readConfirmSelection();
                                    if(ch4 == 'Y'){
                                        teamview.array.remove(--num);
                                        System.out.println("删除成功");
                                    }
                                }
                                break;
                            case '4' :
                                System.out.println("确定要退出吗(Y/N):");
                                char ch5 = TSUtility.readConfirmSelection();
                                if( ch5 == 'Y'){
                                    flag = false;
                                }
                                break;
                            default:
                                System.out.println("请输入1-4");
                        }

                    }
                    break;
                case '4' :
                    char ch04 = 0;
                    boolean flag2 =true;
                    while (flag2){
                        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("请选择(1-5):");
                        ch04 =TSUtility.readMenuSelectionPro();
                        switch (ch04){
                            case '1' :
                                try {
                                    projectservice.consider();
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }

                                break;
                            case '2' :

                                if(teamview.array.size() ==0){
                                    System.out.println("还没有团队,请先创建");
                                    break;
                                }

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

                                    System.out.println("当前团队成员:");
                                    teamservice.show2(teamview.array.get(i));  //将集合中的数组遍历出来
                                    if(projectservice.pro.size()-1 < i){
                                        System.out.println("项目不足");
                                        break;
                                    }
                                    System.out.println("该团队命名为:");
                                    String st = sc.nextLine();
                                    projectservice.pro.get(i).setTeamName(st);
                                    projectservice.pro.get(i).setStatus(true);
                                    projectservice.pro.get(i).setTeam(teamview.array.get(i));

                                }
                                if(projectservice.pro.size() > teamview.array.size()){
                                    System.out.println("团队不足,有待未分配的项目");
                                }

                                System.out.println("分配完成");
                                break;
                            case '3' :

                                try {
                                    projectservice.showPro();
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }

                                break;
                            case '4' :

                                projectservice.delPro();
                                break;
                            case '5' :
                                System.out.println("确定要退出吗(Y/N)");
                                char ch5 = TSUtility.readConfirmSelection();
                                if(ch5 == 'Y'){
                                    flag2 = false;
                                }
                                break;
                        }
                    }
                    break;
                case '5' :
                    System.out.println("确定要退出系统吗(Y/N)");
                    char ch5 = TSUtility.readConfirmSelection();
                    if(ch5 == 'Y'){
                        System.exit(0);
                    }
                    break;
                default:
                    System.out.println("你输入的信息有误");
                    break;

            }
        }

    }

}

 

LoginView类的实现:
public class LoginView {
    private String userName = "";
    private String password = "";
    public void regist() throws InterruptedException {  //注册界面
        TSUtility.loadSpecialEffects();
        Scanner sc = new Scanner(System.in);
        System.out.println("开始注册:");
        System.out.println("请输入用户名(4字符内):");
        String userName = TSUtility.readKeyBoard(4, false);
        this.userName = userName;
        System.out.println("请输入密码(8字符内):");
        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("@@@@@@@@@@@@@@@@@@@@@");
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入您的用户名(4字符内)");
                String userName  = TSUtility.readKeyBoard(4, false);
                System.out.println("请输入您的密码(8字符内)");
                String password = TSUtility.readKeyBoard(8, false);

                if(this.userName.length() == 0 || this.password.length() == 0 ){
                    System.out.println("未检测到您的账号,请您先注册!");
                    regist(); //进入注册界面
                }
                else if(this.userName.equals(userName) && this.password.equals(password)){
                    TSUtility.loadSpecialEffects();
                    System.out.println("登入成功");
                    flag = false;
                }else{
                    if (count <=0){
                        System.out.println("登入次数不足!系统将自动退出");
                        return;
                    }else{
                        System.out.println("登入失败!您输入的用户名或密码不匹配");
                        count -- ;
                        System.out.println("您还有"+count+"次机会");
                    }
                }
            }
        }
        public void update() throws InterruptedException {
            Scanner sc = new Scanner(System.in);
            boolean flag = true;
            while (flag){
                System.out.println("@@@@@@@@@@@@@@@@@@@@@@");
                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. 退出");
                String n = sc.next();
                if( n.equals("1")){
                    System.out.println("新的用户名为(4字符内):");
                    this.userName = TSUtility.readKeyBoard(4, false);
                    System.out.println("修改成功");
                    flag = false;
                }else if (n.equals("2")){
                    System.out.println("新的用户密码为(8字符内):");
                    this.password = TSUtility.readKeyBoard(8, false);
                    System.out.println("修改成功");
                    flag = false;
                }else if ( n.equals("3")){
                    System.out.println("新的用户名为(4字符内):");
                    this.userName = TSUtility.readKeyBoard(4, false);
                    System.out.println("新的用户密码为(8字符内):");
                    this.password = TSUtility.readKeyBoard(8, false);
                    System.out.println("修改成功");
                    flag = false;
                }else if (n.equals("4")){
                    System.out.println("退出中");
                    TSUtility.loadSpecialEffects();
                    flag = false;
                }else{
                    System.out.println("输入有误,请输入与(1-4)");
                }
            }
        }
}

 

TeamView类实现:
public class TeamView {
    private int listSvc;
    private int teamSvc;
    NameListService nls = new NameListService();
    TeamService ts = new TeamService();
    public ArrayList<Programmer[]> array = new ArrayList<>();
    public void enterMainMenu () throws TeamException {//添加团队
        boolean flog = true;
        while (flog){
            System.out.println("----------开发团队调度软件----------");
            try {
                nls.showEmployee();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("------------------------------------");

            System.out.print("1-团队列表 ");
            System.out.print("2-添加团队成员 ");
            System.out.print("3-删除团队成员 ");
            System.out.print("4-退出 ");
            System.out.print("请选择(1-4):");
            char ch = TSUtility.readMenuSelectionPro();
            if( ch == '1'){
                Programmer[] team = ts.getTeam();
                System.out.println("----------团队成员列表----------");
                if(team.length ==0){
                    System.out.println("当前团队中没有成员,请先添加!!");
                    break;
                }
                ts.show(team);
            }else if(ch == '2'){
                System.out.println("--------添加成员--------");
                System.out.println("请输入需要添加人员的ID:");
                Scanner sc = new Scanner(System.in);
                int num = sc.nextInt()-1;
                Employee employee;
                employee= nls.getEmployees().get(num); // 将集合中的信息传递给方法
                ts.addMember(employee);
                System.out.println("添加成功");
                TSUtility.readReturn();// 按回车键继续
                continue;
            }
            else if (ch == '3'){
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入需要删除人员的id");
                int num2 = TSUtility.readInt();//输入一个两位数字
                ts.removeMember(num2);

                /*if( num2 > nls.employees.size() ||num2 < 0|| nls.employees.size() ==0){
                    System.out.println("您输入的Id不存在");
                    break;
                }
                System.out.println("确定删除该成员吗(Y/N)");
                char nu = readConfirmSelection();
                if(nu == 'Y'){
                    ts.removeMember(--num2);
                    System.out.println("删除成功");
                }
                System.out.println("删除失败");*/

            }else if (ch == '4'){
                System.out.println("确定要退出吗(Y/N):");
                char c =readConfirmSelection();
                if(c == 'Y'){
                    Programmer[] team = ts.getTeam();
                    array.add(team);
                    ts.clearTeam();
                    flog = false;
                }
            }else{
                System.out.println("你输入的信息有误");
            }
        }
    }
}
TSUtility类实现:
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.service包

NameListService类实现:
public class NameListService {
    public NameListService() {
    }
    //放员工信息的集合
    public ArrayList<Employee> employees = new ArrayList<>();
    private int count = 1;
    TSUtility TSUtility = new TSUtility();
   {//初始化
       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 Printer("华硕", "三星 17寸"), 8000));
       employees.add(new Architect(++count, "杨元庆", 35, 6500, new NoteBook("针式", "爱普生20k"), 15500, 1200));
       employees.add(new Designer(++count, "史玉柱", 27, 7800, new Printer("惠普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 Printer("惠普m6", "5800"), 3000));
   }
   public ArrayList<Employee> getEmployees(){ //得到所有员工集合
       return employees;
   }
    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 int method(){
       boolean bo =true;
        int age = 0;
        while (bo){
            age = TSUtility.readInt();
            if(age <18){
                try{
                    throw new TeamException("输入有误,请输入值大于18");
                }catch(TeamException e){
                    e.printStackTrace();
                    System.out.println("请重新输入:");
                }
            }else {
                bo = false;
            }
        }
        return age;
    }
    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 s =String.valueOf(TSUtility.readMenuSelection());
        if(s.equals("1")){
        // 无职位employees.add(new Employee(count, "马云 ", 22, 3000));
            System.out.println("`当前雇员职位分配为:无`");
            System.out.println("请输入当前雇员的姓名:");
            String name = TSUtility.readKeyBoard(4, false);
            System.out.println("请输入当前雇员的年龄:");
            int age =method(); //获取到 18 -100内的年龄
            System.out.println("请输入当前雇员的工资:");
            double salary = TSUtility.readDouble();
            employees.add(new Employee(++count, name,age,salary));
            System.out.println("人员添加成功!");
            TSUtility.readReturn();
        }
            else if(s.equals("2")){
            //程序员employees.add(new Programmer(++count, "李彦宏", 23, 7000, new PC("戴尔", "NEC 17寸")));
            System.out.println("`当前雇员职位分配为:程序员`");
            System.out.println("请输入当前雇员的姓名:");
            String name = TSUtility.readKeyBoard(4, false);
            System.out.println("请输入当前雇员的年龄:");
            int age = method(); //获取到 18 -100内的年龄
            System.out.println("请输入当前雇员的工资:");
            double salary = TSUtility.readDouble();
            System.out.println("请为他分配一台配置比较好的台式电脑");
            PC pc = new PC();
            employees.add(new Programmer(++count,name,age,salary,pc.addPC()));
            System.out.println("人员添加成功");
            TSUtility.readReturn();
        }else if(s.equals("3")){
        //设计师employees.add(new Designer(++count, "雷军 ", 50, 10000, new Printer("激光", "佳能2900"), 5000));
            System.out.println("`当前雇员职位分配为:设计师`");
            System.out.println("请输入当前雇员的姓名:");
            String name = TSUtility.readKeyBoard(4, false);
            System.out.println("请输入当前雇员的年龄:");
            int age = method(); //获取到 18 -100内的年龄
            System.out.println("请输入当前雇员的工资:");
            double salary = TSUtility.readDouble();
            System.out.println("请为他分配一台配置比较好的台式电脑");

            System.out.println("请输入当天雇员的奖金:");
            double bonus = TSUtility.readDouble();
            PC pc = new PC();
            employees.add(new Designer(++count,name,age,salary,pc.addPC(),bonus));
            System.out.println("人员添加成功");
        }else {
        //架构师   employees.add(new Architect(++count, "马化腾", 32, 18000, new NoteBook("联想T4", "6000"), 60000, 5000));
            System.out.println("`当前雇员职位分配为:架构师`");
            System.out.println("请输入当前雇员的姓名:");
            String name = TSUtility.readKeyBoard(4, false);
            System.out.println("请输入当前雇员的年龄:");
            int age = method(); //获取到 18 -100内的年龄
            System.out.println("请输入当前雇员的工资:");
            double salary = TSUtility.readDouble();
            System.out.println("请为他分配一台配置比较好的台式电脑");
            System.out.println("请输入当天雇员的奖金:");
            double bonus = TSUtility.readDouble();
            System.out.println("请输入当前雇员的股票:");
            int num = TSUtility.readstock();
            PC pc = new PC();
            employees.add(new Architect(++count,name,age,salary,pc.addPC(),bonus,num));
            System.out.println("人员添加成功!");
            TSUtility.readReturn();
        }
    }
    public void readInt() throws InterruptedException{ //修改界面//员工的修改 (目前只修改姓名,年龄,工资即可)
        System.out.println("请输入需要修改人员的ID");
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        boolean flag = false;
        for (int i =0; i <employees.size(); i ++ ){
            Employee emp = employees.get(i);     什么意思?????
            if( employees.get(i).getId() == num){
                System.out.println("姓名:"+emp.getName()+"更改为:");
                String name = TSUtility.readString(4, emp.getName());
                System.out.println("年龄:"+emp.getAge()+"更改为:");
                int age = method(); //获取到 18 -100内的年龄
//                int age = Integer.parseInt(TSUtility.readString(2,emp.getAge()+""));
                System.out.println("工资:"+emp.getSalary()+"更改为:");
                double salary =Double.parseDouble(TSUtility.readString(10, emp.getSalary()+""));
                emp.setName(name);
                emp.setAge(age);
                emp.setSalary(salary);
                flag = true;
            }
        }
        if(flag){
            System.out.println("修改成功");
        }else {
            try{
            throw new TeamException("该员工不存在");
            }catch (TeamException e){
                e.printStackTrace();
            }
        }
    }
    public void delEmployee(){ //删除方法
       boolean flay = false;
        System.out.println("请输入需要删除人员的ID");
        int num =TSUtility.readInt();//输入一个两位数字
        for (int i =0 ; i <employees.size(); i++){
            if(employees.get(i).getId() == num){
                employees.remove(i);
                flay = true;
                for (i = num; i <= employees.size(); i++) {  为什么要有这一步 ???
                    employees.get(i - 1).setId(employees.get(i - 1).getId() - 1);
                }
            }
        }
        if(flay){
            System.out.println("删除成功");
            count --;
        }else{
            try{
                throw new TeamException("该员工不存在");
            }catch(TeamException e){
                e.printStackTrace();
            }
        }
    }
}

 

ProjectService类实现:
public class ProjectService extends Project {
    TSUtility tsu = new TSUtility();
    public ArrayList<Project> pro = new ArrayList<>(); //用来存项目的集合
    private int count = 1; //添加项目的标号
    public int getCount() {
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }
//    {
//        pro.add(new Project(count,"小米官网","开发完成类似于小米官网的web项目",
//                null,null,false));
//        pro.add(new Project(++count,"公益在线商城","开发一个中国最大的在线公益电子商城",
//                null,null,false));
//        pro.add(new Project(++count,"博客系统","Java博客系统,让每一个有故事的人更好地表达想法",
//                null,null,false));
//        pro.add(new Project(++count,"心灵圣地","让每个饱受生活沧桑的人有个驻足的地方",
//                null,null,false));
//    }
    public void consider() throws InterruptedException {  // 添加项目
        System.out.println("项目参考----------------------------------------------");
        System.out.println("1.小米官网:开发完成类似于小米官网的web项目");
        System.out.println("2.公益在线商城:开发一个中国最大的在线公益电子商城");
        System.out.println("3.博客系统:Java博客系统,让每一个有故事的人更好地表达想法");
        System.out.println("4.心灵圣地:让每个饱受生活沧桑的人有个驻足的地方");
        System.out.println("------------------------------------------------------");
        TSUtility.readReturn(); // 按返回键继续
        System.out.println("请输入你想添加的项目:");
        Scanner sc = new Scanner(System.in);
        char num = TSUtility.readMenuSelection();//输入1-4
        TSUtility.loadSpecialEffects(); // 请稍等加载中
        boolean bo = true;
        while (bo){
            if(num == '1'){
//                pjs.pro.add(new Project(pjs.getCount(),"小米官网","开发完成类似于小米官网的web项目",
//                        null,null,false));
                bo = false;
                {pro.add(new Project(count,"小米官网","开发完成类似于小米官网的web项目",
                null,null,false));
                }

            }else if(num == '2'){
                /*pjs.pro.add(new Project(pjs.getCount()+1,"公益在线商城","开发一个中国最大的在线公益电子商城",
                        null,null,false));*/
                pro.add(new Project(++count,"公益在线商城","开发一个中国最大的在线公益电子商城",
                null,null,false));
                bo = false;

            }else if(num == '3'){
                /*pjs.pro.add(new Project(pjs.getCount()+1,"博客系统","Java博客系统,让每一个有故事的人更好地表达想法",
                        null,null,false));*/
                pro.add(new Project(++count,"博客系统","Java博客系统,让每一个有故事的人更好地表达想法",
                null,null,false));
                bo = false;
            }else if (num =='4'){
                /*pjs.pro.add(new Project(pjs.getCount()+1,"心灵圣地","让每个饱受生活沧桑的人有个驻足的地方",
                        null,null,false));*/
                pro.add(new Project(++count,"心灵圣地","让每个饱受生活沧桑的人有个驻足的地方",
                null,null,false));
                bo = false;
            }
        }
        System.out.println("添加成功");
    }
    public void showPro() throws InterruptedException { //查看项目当前状态
        TSUtility.loadSpecialEffects(); // 请稍等加载中
        if(pro.size() == 0){
            System.out.println("还没有项目,请先添加");
            return;
        }
        for (int i =0 ; i <pro.size(); i++){
            if(!pro.get(i).getStatus()){
            System.out.println("项目{项目号='"+pro.get(i).getProld()+"'项目名='"+pro.get(i).getProjectName()+
                    "', 项目描述='"+pro.get(i).getDesName()+".',开发团队名称='"+pro.get(i).getTeamName()+
                    "',开发状态="+pro.get(i).getStatus()+"}");
            System.out.println("项目【"+pro.get(i).getProjectName()+"】---> 未被开发!");

            }else {
                System.out.println("项目【"+pro.get(i).getProjectName()+"】---> "+"正在被团队"+
                        pro.get(i).getTeamName()+" 开发中!");
            }
        }
    }
    public void addProject(){ //新项目添加
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入新项目名称:");
        String projectName = sc.next();
        System.out.println("请输入新项目简介:");
        String desName = sc.next();

        pro.add(new Project(++count,projectName,desName,null,null,false));
        System.out.println("添加成功");
        tsu.readReturn();
    }
    public void dealingPro(Programmer[] team){//项目分配团队开发

        for( Programmer n: team){
            if(n instanceof Architect){
                Architect a = (Architect)n;
                System.out.println(a);
            }else if( n instanceof Designer){
                Designer d = (Designer)n;
                System.out.println(d);
            }else{
                System.out.println(n);
            }
        }
    }
    public void delPro(){// 删除选择的项目
        System.out.println("需要删除项目几?");
        Scanner sc = new Scanner(System.in);
        char nu1 = TSUtility.readMenuSelection();
        int nu2 = Integer.parseInt(String.valueOf(nu1))  ;
        if(nu2 >pro.size() || pro.size() == 0||nu2 <0){
            System.out.println("没有找到该项目");
            return;
        }
        int nu = nu2 -1;
        pro.remove(nu);
        System.out.println("删除成功");
    }
}
TeamService类实现:
public class TeamService {
    //用于自动生成团队成员的memberId
    private static int counter = 1;
    //团队人数上限
    private final int MAX_MEMBER = 5;
    //保存当前团队成员
    private Programmer[] team = new Programmer[MAX_MEMBER];
    //团队实际人数
    private int total = 0;

    public void team(){
    }
    public void show( Programmer[] team){
        System.out.println("id\t姓名\t年龄\t工资\t职位\t状态\t奖金\t股票\t领用设备");
        for(Programmer n: team){
            if( n instanceof  Architect){
                Architect a = (Architect)n;  //向下转型
                System.out.println( a.getMemberId() +"/" +a);
            }else if (n instanceof  Designer){
                    Designer d = (Designer)n;
                    System.out.println( d.getMemberId() + "/" +d);
            }else {
                System.out.println(n.getMemberId() + "/" + n);
            }
        }
    }
    public  void show2(Programmer[] team){
        for(Programmer n: team){
            if( n instanceof  Architect){
                Architect a = (Architect)n;  //向下转型
                System.out.print( a.getMemberId() +"/"+ a.getId()+"\t\t");
                System.out.println(a.getName()+"\t"+ a.getAge()+"\t\t"+
                        a.getSalary()+"\t"+"架构师\t"+a.getBonus()+"\t"+a.getStock());
            }else if (n instanceof  Designer){
                Designer d = (Designer)n;
                System.out.print( d.getMemberId() +"/"+ d.getId()+"\t");
                System.out.println(d.getName()+"\t"+ d.getAge()+"\t\t"+
                        d.getSalary()+"\t"+"设计师\t"+d.getBonus()+"\t");
            }else {
                System.out.print( n.getMemberId() +"/"+ n.getId()+"\t");
                System.out.println(n.getName()+"\t"+ n.getAge()+"\t\t"+
                        n.getSalary()+"\t"+"程序员\t");
            }
        }
        System.out.println("-------------------------------");
    }
    //返回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 {
    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("该员工已是某团队成员");
    }
    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 (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("团队中至多只能有三名程序员");}
    }
    //添加到数组
//    System.out.println("已经执行1");
    p.setStatus(false);
    p.setMemberId(counter++);
    team[total++] = p;
//    System.out.println("已经执行2");
}
    private boolean isExist(Programmer p) {
        for (int i = 0; i < total; i++) {
            if (team[i].getId() == p.getId()) return true;
        }
        return false;
    }
    //删除指定memberId的程序员
    public void removeMember(int memberId) throws TeamException {
        int n = 0;
        //找到指定memberId的员工,并删除
        for (; 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;
    }
}

domain包

Equipment接口实现:
public interface Equipment {
    String getDescription();
}
Employee类实现:
public class Employee {
    private int id;
    private String name;
    private int age;
    private double salary;
    public Employee() {
    }
    public Employee(int id){
        this.id = id;
    }
    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;
    }

    public String getDetails(){

        return id + "\t" + name + "\t" + age+ "\t\t" +salary;
    }
    @Override
    public String toString() {
        return getDetails();
    }
}
Programmer类实现:
public class Programmer extends Employee {//程序员
    private int memberId;
    private boolean  status = true; //状态
    private Equipment equipment;
    public Programmer() {
    }
    public Programmer(int id, String name, int age, double salary, Equipment equipment) {
        super(id, name, age, salary);

        this.equipment = equipment;
    }
    public int getMemberId() {
        return memberId;
    }

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

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

    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();
    }
}
Designer类实现:
public class Designer extends Programmer{// 设计师
    private double bonus; //奖金
    public Designer() {
    }
    public Designer(double bonus) {
        this.bonus = bonus;
    }
    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;
    }

    @Override
    public String toString() {
        return getDetails() +"\t设计师\t" + getStatus() +
                "\t"+getBonus() +"\t\t\t" +getEquipment().getDescription();
    }
}
Architect类实现:
public class Architect extends Designer{ //架构师
    private int stock;
    public Architect() {
    }
    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();
    }
}
PC类实现:
public class PC implements Equipment{
    private String model; //机器型号
    private String display; //显示器名称
    public PC() {
    }
    public PC(String model, String display) {
        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 + ")";
    }
}
Printer类实现:
public class Printer extends PC{
    public Printer() {
    }

    public Printer(String model, String display) {
        super(model, display);
    }

    @Override
    public String getDescription() {
        return super.getModel() + "(" +super.getDisplay() + ")";
    }
}
NoteBook类实现:
public class NoteBook extends PC{
    public NoteBook() {
    }
    public NoteBook(String model, String display) {
        super(model, display);
    }
    @Override
    public String getDescription() {
        return super.getModel() + "(" + super.getDisplay() + ")";
    }
}
Project类实现:
public class Project {
    private int prold; //项目号
    private String projectName;//项目名称
    private String desName ;  // 项目描述
    private  Programmer[] team ; //开发团队
    private String teamName; //开发团队名称
    private boolean status;//开发状态 true为开发中,false为未开发中
    public Project() {
    }
    public Project(String teamName , boolean status){
        this.teamName = teamName;
        this.status = status;
    }
    public Project(int prold, String projectName, String desName,
                   Programmer[] team, String teamName, boolean status) {
        this.prold = prold;
        this.projectName = projectName;
        this.desName = desName;
        this.team = team;
        this.teamName = teamName;
        this.status = status;
    }
    public int getProld() {
        return prold;
    }

    public void setProld(int prold) {
        this.prold = prold;
    }

    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 getStatus() {
        return status;
    }
    public void setStatus(boolean status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return "Project{" +
                "prold=" + prold +
                ", projectName='" + projectName + '\'' +
                ", desName='" + desName + '\'' +
                ", team=" + Arrays.toString(team) +
                ", teamName='" + teamName + '\'' +
                ", status=" + status +
                '}';
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值