综合项目:项目开发团队分配管理软件

目录

导语

前言

项目介绍

项目涉及知识点

项目结构示意

系统流程示意

设计结构示意

项目需求说明

项目难点代码演示

♣  展示所有员工

♣  添加员工到开发团队 

♣  项目随机分配给团队 

总结


导语

        作为一名非科班出身的无基础java初学者。我会在这里记录我的学习过程及心得分享,希望会对你们想要入行的小伙伴有所帮助,多一个参考的点。 
        其次希望我的分享能对同样是初学者的你能有所帮助。
        同时我也想以此激励自己学习,如果有志同道合的小伙伴就最好啦。大家一起进步! 
        最后,若您有自己的想法或者觉得我的讲述有问题,需要补充或改正的,欢迎在下方留言互相讨论!!

前言

        博主作为无基础的小白,这个项目写的可谓是呕心沥血。写好代码并不代表项目就完成了,还得运行代码去测试。博主写这个项目用的时间大概是4-5天,该Bug用了3天。其实Bug数量可能也不多,大概7-8个,但是作为第一次实践去解决Bug,对于小白来说可太折磨了。但是坚持完成后,能感觉到对自己的提升是非常大的。

 

项目介绍

        项目涉及知识点

                1.类的继承性和多态性
                2.对象的值传递、接口
                3.static 和 final 修饰符
                4.特殊类的使用:包装类、抽象类、内部类
                5.异常处理
                6.Java基本语法和流程控制
                7.数组,ArrayList集合

         项目结构示意

                项目四大模块:

                        1.用户注册和登录
                        2.开发人员管理
                        3.开发团队调度管理
                        4.开发项目管理

                

        系统流程示意

 

         设计结构示意

                

         项目需求说明

                

项目难点代码演示

       ♣  展示所有员工

                

 if (allEmployees.get(i) instanceof Architect) {
    System.out.println((allEmployees.get(i).getId(listSvc, allEmployees.get(i)) + 1)
    + "\t" + allEmployees.get(i).getName()
    + "\t " + allEmployees.get(i).getAge()
    + "\t" + allEmployees.get(i).getSalary()
    + "\t" + "架构师"
    + "\t" + ((Architect) allEmployees.get(i)).isStatus()
    + "\t" + ((Architect) allEmployees.get(i)).getBonus()
    + "\t" + ((Architect) allEmployees.get(i)).getStock()
    + "\t\t" + ((Architect) allEmployees.get(i)).getEquipment().getDescription());

} else if (allEmployees.get(i) instanceof Designer) {
     System.out.println((allEmployees.get(i).getId(listSvc, allEmployees.get(i)) + 1)
    + "\t" + allEmployees.get(i).getName()
    + "\t\t" + allEmployees.get(i).getAge()
    + "\t" + allEmployees.get(i).getSalary()
    + "\t" + "设计师"
    + "\t" + ((Designer) allEmployees.get(i)).isStatus()
    + "\t" + ((Designer) allEmployees.get(i)).getBonus()
    + "\t\t\t" + ((Designer) allEmployees.get(i)).getEquipment().getDescription());
} else if (allEmployees.get(i) instanceof Programmer) {
     System.out.println((allEmployees.get(i).getId(listSvc, allEmployees.get(i)) + 1)
    + "\t" + allEmployees.get(i).getName()
    + "\t\t" + allEmployees.get(i).getAge()
    + "\t" + allEmployees.get(i).getSalary()
    + "\t" + "程序员"
    + "\t" + ((Programmer) allEmployees.get(i)).isStatus()
    + "\t\t\t\t\t" + ((Programmer) allEmployees.get(i)).getEquipment().getDescription());
} else{
     System.out.println((allEmployees.get(i).getId(listSvc, allEmployees.get(i)) + 1)
    + "\t" + allEmployees.get(i).getName()
    + "\t\t" + allEmployees.get(i).getAge()
    + "\t" + allEmployees.get(i).getSalary());
    }

        ♣  添加员工到开发团队 

        if (team.size() == MaxMember) {
            throw new TeamException("成员已满,无法添加");
        }
        if (!(employee instanceof Programmer)) {
            throw new TeamException("该成员不是开发人员,添加失败");
        } else {
            Programmer programmer = (Programmer) employee;
            if (!(programmer.isStatus())) {
                for (int i = 0; i < team.size(); i++) {
                    if (team.get(i).getId(n, team.get(i)) == programmer.getId(n,programmer)) {
                        throw new TeamException("成员已在本开发团队中");
                    }
                }

                throw new TeamException("成员已在某开发团队中");
            }
            if (employee instanceof Architect) {
                int a = 0;
                for (int i = 0; i < team.size(); i++) {
                    if (team.get(i) instanceof Architect) {
                        a++;
                    }
                }
                if (a >= 1) {
                    throw new TeamException("团队中至多只能有一名架构师");
                } else {
                    team.add(programmer);
                    programmer.setMumberId(team.indexOf(programmer) + 1);
                    programmer.setStatus(false);
                }
            } else if (employee instanceof Designer) {
                int a = 0;
                for (int i = 0; i < team.size(); i++) {
                    if (team.get(i) instanceof Architect) {

                    }else if (team.get(i) instanceof Designer){
                        a++;
                    }else {}
                }
                if (a >= 2) {
                    throw new TeamException("团队中至多只能有两名设计师");
                } else {

                    team.add(programmer);
                    programmer.setMumberId(team.indexOf(programmer) + 1);
                    programmer.setStatus(false);
                }

            } else {
                int a = 0;
                for (int i = 0; i < team.size(); i++) {
                    if (team.get(i) instanceof Programmer) {
                        a++;
                    }
                }
                if (a >= 3) {
                    throw new TeamException("团队中至多只能有三名程序员");
                } else {

                    team.add(programmer);
                    programmer.setMumberId(team.indexOf(programmer) + 1);
                    programmer.setStatus(false);
                }
            }
        }
    }

        ♣  项目随机分配给团队 

          

   Project p = new Project(t);
        ArrayList<ArrayList<Programmer>> proteam = p.getProteam();
        ArrayList<String> teamNames = new ArrayList<>();
        if (proteam.size() == 0) {
            System.out.println("暂无可分配团队");
        } else {
            System.out.println("当前有" + proteam.size() + "个团队");
            Scanner sc = new Scanner(System.in);
            for (int i = 0; i < proteam.size(); i++) {
                System.out.println("团队" + (i+1) + "成员:");
                for (int j = 0; j < proteam.get(i).size(); j++) {
                    System.out.println((proteam.get(i).get(j).getId(n,proteam.get(i).get(j))+1) + "\t" + proteam.get(i).get(j).getName() + "\t" + proteam.get(i).get(j).toString() + "\t" + proteam.get(i).get(j).getSalary());

                }
                System.out.println("请为当前团队创建一个名称");
                String teamName = sc.next();
                teamNames.add(teamName) ;

            }
            Random r = new Random();
            if (pro.size() == 0) {
                System.out.println("暂无项目可分配");
            } else if (pro.size() >= proteam.size()) {
                for (int i = 0; i < proteam.size(); i++) {
                    int a = r.nextInt(pro.size());
                    if (!pro.get(a).isProstatus()) {
                        pro.get(a).setTeam(proteam.get(i));
                        pro.get(a).setTeamName(teamNames.get(i));
                        pro.get(a).setProstatus(true);
                    } else {
                        i--;
                    }
                }
            } else {
                for (int i = 0; i < pro.size(); i++) {
                    int a = r.nextInt(pro.size());
                    if (!pro.get(a).isProstatus()) {
                        pro.get(a).setTeam(proteam.get(i));
                        pro.get(a).setTeamName(teamNames.get(i));
                        pro.get(a).setProstatus(true);
                    } else {
                        i--;
                    }
                }
            }
        }

    }

总结

        1.测试代码时老是遇到数据不互通的情况,即不同的对象在调用一个方法。所以写方法的时候,需要注意是否要设置一个形参来传入对象,并在该方法内使用传入的对象进行相应操作,来确保将来数据的互通,统一。
        2.打磨自己的过程是痛苦的,但宝剑锋从磨砺出,经历风雨才能见彩虹,必须有付出才会得到汇报。要耐住自己性子去学习。

  • 18
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值